心路
虽然现在有很多堡垒主机,可以记录SA或者其它部门在服务器上执行的命令,但是依旧有些东西记录不到。比如说1个月之前上传了一个脚本,或者二进制程序,现在执行一下删除了某些文件,过了一个月再想起来去追查,那么就有难度了。即使在服务器部署ossec之类的HIDS系统,由于性能的考虑,也不能在较短时间内做过多的轮询查询文件状态。这里介绍三个简单的办法,各有所长。
第一个最简单,替换shell。用perl之类的脚本语言写一个shell,替换bash,cshell,设置成用户的默认shell。在这个shell中对三处文件,修改文件等操作做一些记录,以后在追查的时候比较方便。好处是实现简单,风险低。缺点在于容易绕过,而且没法记录二进制程序对文件的操作。
第二个办法,写驱动hook系统调用,监控文件操作。这个方案的优缺点都很明显,优点是底层,不易绕过。缺点就是风险高,通用性也难以把握,开发难度也大,虽然新的linux kernel提供了kprobe等接口来方便做hook,实现起来总不会有用户态那么自如。而且有可能要升级kernel,为了这个目的升级kernel基本是不可能的。
第三个办法,就是使用inotify来监控文件变化。inotify是基于事件的监控,无需定时轮询文件状态,也无需做内核模块hook系统调用,简单可靠。比较好的实现是检测到文件变化时,同时记录下当前登陆的用户以及当前用户启动的进程。不过inotify,需要kernel 2.6.13以上支持,RHEL5默认是有的,其它系统不确定。我个人认为,这个是最好的一种实现。 |
|
|