Closed zj1244 closed 5 years ago
自己调试后感觉应该是process_linux.go这个文件里的sock_fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_USER);出错,出错信息Protocol not supported。很奇怪为什么不重启的时候好好的,重启后就不行了。 版本: Linux localhost 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux Linux localhost.localdomain 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
我也遇到了这个问题,发现是由于syshook_execve.ko内核模块重启后,需要重新加载才能使用,而驭龙系统在自启动时没有重新加载syshook_execve.ko这个模块,导致无法监控进程,希望官方能在代码上解决这个问题。
[root@localhost ~]# cd /usr/yulong-hids/
[root@localhost yulong-hids]# ls
agent daemon data.zip nohup.out syshook_execve.ko
[root@localhost yulong-hids]# ps -ef|grep yulong
root 676 1 0 03:12 ? 00:00:00 /usr/yulong-hids/daemon -netloc 192.168.200.2
root 1384 676 0 03:12 ? 00:00:00 /usr/yulong-hids/agent 192.168.200.2
root 1457 1436 0 03:15 pts/0 00:00:00 grep --color=auto yulong
[root@localhost yulong-hids]# kill 676
[root@localhost yulong-hids]# insmod syshook_execve.ko
[root@localhost yulong-hids]# nohup ./daemon -netloc 192.168.200.2 &
经测试,在yulong-hids/agent/agent.go
的15行后面添加如下代码即可解决此问题
if runtime.GOOS == "linux" {
out, _ := common.CmdExec(fmt.Sprintf("lsmod|grep syshook_execve"))
if out == "" {
common.CmdExec(fmt.Sprintf("insmod %s/syshook_execve.ko", common.InstallPath))
}
}
需要导入如下package
import "runtime"
import "yulong-hids/daemon/common"
以上代码会使编译生成的agent体积增大1Mb左右,如果将其放在yulong-hids/daemon/daemon.go
的main函数开始位置,编译生成的daemon体积基本不变,也能解决问题,但重启后,daemon和agent进程会延迟两分钟左右才会启动,不知道是什么问题
正常安装好agent后,此时执行python s5.py在web端看到告警(功能正常),重启后,再次执行命令发现没有告警(功能异常),手动执行agent ip debug,发现出现如下错误: connect syshook netlink error 此时查看65530端口是open的,通过对比安装完agent和重启后的端口情况发现:重启后agent少开放了一个随机端口 刚安装完agent的端口情况(功能正常): udp 0 0 127.0.0.1:65530 0.0.0.0: 1780/agent
udp 0 0 0.0.0.0:59142 0.0.0.0: 1780/agent 重启后(功能异常): udp 0 0 127.0.0.1:65530 0.0.0.0:* 1186/agent
此现象在centos7和6.x都存在