ysrc / yulong-hids-archived

[archived] 一款实验性质的主机入侵检测系统
Other
2.15k stars 583 forks source link

安装agent后,重启后无法监控进程 #57

Closed zj1244 closed 5 years ago

zj1244 commented 6 years ago

正常安装好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都存在

zj1244 commented 6 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

icxcoffee commented 6 years ago

我也遇到了这个问题,发现是由于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 &

自写自启动脚本,在驭龙自启动之前加载syshook_execve.ko

icxcoffee commented 5 years ago

经测试,在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"
icxcoffee commented 5 years ago

以上代码会使编译生成的agent体积增大1Mb左右,如果将其放在yulong-hids/daemon/daemon.go的main函数开始位置,编译生成的daemon体积基本不变,也能解决问题,但重启后,daemon和agent进程会延迟两分钟左右才会启动,不知道是什么问题