Jul
1
在针对常规的入侵检测工作中,除了应用如之前提到的Tripwire和rpm等工具外,另一个常用的工具就是chkrootkit。它的使用非常简单,但却很重要。
一、原理
chkrootkit是用来监测 rootkit 是否被安装到当前系统中的工具。
所谓 rootkit ,是一类入侵者经常使用的工具。这类工具通常非常的隐秘、令用户不易察觉,通过这类工具,入侵者建立了一条能够常时入侵系统,或者说对系统进行实时控制的途径。所以,我们要用 chkrootkit 来定时监测系统,以保证系统的安全。
像Tripwire一样,chkrootkit也是“事后诸葛亮”,其只能针对系统可能的漏洞以及已经被入侵的部分进行分析。它并没有防止入侵的功能。
二、安装
在红旗上并没有自带chkrootkit工具,您可以用下面的官方网址下载:点击
也可以直接使用我已经编译好的rpm包:
※基于红旗DC 5.0 for x86系统平台
二、检测
使用非常简单:
如果发现有异常,会报出“INFECTED”字样。所以,也可如此运行:
※-n 表示不检测NFS挂载的目录
三、注意事项
1、定时检测
chkrootkit自带的脚本并没有包括定时检测部分,而考虑到该工具的作用。建议编写一个脚本,并加入计划任务中。
例如:
打包如下:
把脚本加入crontab中:
2、误报
其实,从上面的脚本已经发现,针对465端口做了一个过滤的判断。
原因是,chkrootkit在针对一个叫bindshell的rootkit工具进行检测的时候,可能会和系统中正常的smtps服务冲突。由于bindshell和smtps都是使用465端口,造成chkrootkit的误报。
※对于chkrootkit,它只是协助您检测,但最终问题原因,必须由管理员执行分析并解决
3、更安全的检测
对于非常重要的系统,单纯的依赖系统自身的定时检测是不足够的,建议增加:
四、其他
1、能否检测到的rootkit
0.47版的chkrootkit能否检测到下述的rootkit工具:
2、源码.src.rpm
3、参考文档
http://www.centospub.com/make/chkrootkit.html
一、原理
chkrootkit是用来监测 rootkit 是否被安装到当前系统中的工具。
所谓 rootkit ,是一类入侵者经常使用的工具。这类工具通常非常的隐秘、令用户不易察觉,通过这类工具,入侵者建立了一条能够常时入侵系统,或者说对系统进行实时控制的途径。所以,我们要用 chkrootkit 来定时监测系统,以保证系统的安全。
像Tripwire一样,chkrootkit也是“事后诸葛亮”,其只能针对系统可能的漏洞以及已经被入侵的部分进行分析。它并没有防止入侵的功能。
二、安装
在红旗上并没有自带chkrootkit工具,您可以用下面的官方网址下载:点击
也可以直接使用我已经编译好的rpm包:
下载文件
# rpm -ivh chkrootkit-0.47-1.i386.rpm
Preparing... #################################### [100%]
1:chkrootkit #################################### [100%]
Preparing... #################################### [100%]
1:chkrootkit #################################### [100%]
※基于红旗DC 5.0 for x86系统平台
二、检测
使用非常简单:
# chkrootkit -n
ROOTDIR is `/'
Checking `amd'... not infected
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `crontab'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
......
ROOTDIR is `/'
Checking `amd'... not infected
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `crontab'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
......
如果发现有异常,会报出“INFECTED”字样。所以,也可如此运行:
chkrootkit -n| grep 'INFECTED'
※-n 表示不检测NFS挂载的目录
三、注意事项
1、定时检测
chkrootkit自带的脚本并没有包括定时检测部分,而考虑到该工具的作用。建议编写一个脚本,并加入计划任务中。
例如:
引用
# cat chkrootkit.sh
#!/bin/bash
PATH=/usr/bin:/bin
TMPLOG=`mktemp`
# Run the chkrootkit
/usr/bin/chkrootkit > $TMPLOG
# Output the log
cat $TMPLOG | logger -t chkrootkit
# bindshe of SMTPSllHow to do some wrongs
if [ ! -z "$(grep 465 $TMPLOG)" ] && \
[ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i '/465/d' $TMPLOG
fi
# If the rootkit have been found,mail root
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root
#!/bin/bash
PATH=/usr/bin:/bin
TMPLOG=`mktemp`
# Run the chkrootkit
/usr/bin/chkrootkit > $TMPLOG
# Output the log
cat $TMPLOG | logger -t chkrootkit
# bindshe of SMTPSllHow to do some wrongs
if [ ! -z "$(grep 465 $TMPLOG)" ] && \
[ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i '/465/d' $TMPLOG
fi
# If the rootkit have been found,mail root
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root
打包如下:
下载文件
把脚本加入crontab中:
cp -p ./chkrootkit.sh /etc/cron.daily/
2、误报
其实,从上面的脚本已经发现,针对465端口做了一个过滤的判断。
原因是,chkrootkit在针对一个叫bindshell的rootkit工具进行检测的时候,可能会和系统中正常的smtps服务冲突。由于bindshell和smtps都是使用465端口,造成chkrootkit的误报。
引用
# chkrootkit -n|grep 'INFECTED'
Checking `bindshell'... INFECTED (PORTS: 465)
# lsof -i:465
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
master 3633 root 98u IPv4 8509 TCP *:smtps (LISTEN)
Checking `bindshell'... INFECTED (PORTS: 465)
# lsof -i:465
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
master 3633 root 98u IPv4 8509 TCP *:smtps (LISTEN)
※对于chkrootkit,它只是协助您检测,但最终问题原因,必须由管理员执行分析并解决
3、更安全的检测
对于非常重要的系统,单纯的依赖系统自身的定时检测是不足够的,建议增加:
引用
a)由于chkrootkit也是使用系统本身的awk、sed等工具进行判断的。所以,应在服务正式开放或投入使用前,做好系统核心执行文件的备份工作;
b)正如tripwire一样,通过远程方式进行检测;
c)结合其他检测工具,例如:Tripwire。
# cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed uname` /root/commands/ ← 备份系统命令到建立好的目录
# /usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED ← 用备份的命令运行chkrootkit
# /usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED ← 用备份的命令运行chkrootkit
b)正如tripwire一样,通过远程方式进行检测;
# mount -t nfs 192.168.228.30:/root /mnt/disk ←把远程分区挂载到本地
# chkroot -r /mnt/disk ←修改默认的根目录,然后进行检测
# chkroot -r /mnt/disk ←修改默认的根目录,然后进行检测
c)结合其他检测工具,例如:Tripwire。
四、其他
1、能否检测到的rootkit
0.47版的chkrootkit能否检测到下述的rootkit工具:
2、源码.src.rpm
下载文件
3、参考文档
http://www.centospub.com/make/chkrootkit.html