监控Web站点目录(/var/html/www
)下的所有文件是否被恶意篡改(文件内容被更改)
文件被更改会有如下特征:
- 大小可能会变化
- 修改时间会变化
- 文件内容会变化,利用
md5sum
指纹校验 - 增加或删除文件,对比每次检测前后的文件数量
第一步:在企业网站发布代码后,即对所有网站数据建立初始指纹库和文件库,这个步骤很重要,没有基础的指纹库,无法进行入侵检测
- 建立测试数据
[root@localhost ~]# mkdir /var/html/www -p
[root@localhost ~]# cp -a /etc/a* /var/html/www/
[root@localhost ~]# cp -a /etc/b* /var/html/www/
[root@localhost ~]# ls /var/html/www/
abrt alsa at.deny avahi bluetooth
adjtime alternatives at-spi2 bash_completion.d bonobo-activation
aliases anacrontab audisp bashrc brltty
aliases.db asound.conf audit binfmt.d brltty.conf
- 建立初始的文件指纹库
[root@localhost ~]# find /var/html/www/ -type f|xargs md5sum > /opt/zhiwen.db
[root@localhost ~]# cat /opt/zhiwen.db
0c18947e88b495de161b078c1467c9d6 /var/html/www/abrt/abrt-action-save-package-data.conf
bf1d986df3e106423f132124d10f0820 /var/html/www/abrt/abrt.conf
b6fa2f81eab31d579be78e777b4246cf /var/html/www/abrt/gpg_keys.conf
2876e889d2a25c672819152946183cee /var/html/www/abrt/plugins/xorg.conf
......
- 建立初始文件库
/opt/wenjian.db
文件中包含初始文件的文件名
[root@localhost ~]# find /var/html/www/ -type f > /opt/wenjian.db
[root@localhost ~]# cat /opt/wenjian.db
/var/html/www/abrt/abrt-action-save-package-data.conf
/var/html/www/abrt/abrt.conf
/var/html/www/abrt/gpg_keys.conf
/var/html/www/abrt/plugins/xorg.conf
/var/html/www/abrt/plugins/python.conf
/var/html/www/abrt/plugins/CCpp.conf
/var/html/www/abrt/plugins/vmcore.conf
/var/html/www/adjtime
/var/html/www/aliases
/var/html/www/aliases.db
......
第二步:监测文件内容和数量的变化
- 监测文件内容的变化
篡改文件内容:
[root@localhost ~]# echo redhat >> /var/html/www/brltty.conf
检查所有文件内容是否变化:
[root@localhost ~]# md5sum -c --quiet /opt/zhiwen.db
/var/html/www/brltty.conf: FAILED #校验失败
md5sum: WARNING: 1 computed checksum did NOT match
- 监测文件数量的变化
新增加文件数:
[root@localhost ~]# echo redhat.txt > /var/html/www/test.txt
利用指纹库无法监测新增文件:
[root@localhost ~]# echo redhat.txt > /var/html/www/test.txt
[root@localhost ~]# md5sum -c --quiet /opt/zhiwen.db
/var/html/www/brltty.conf: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
获取检测前的所有文件数量及文件名:
[root@localhost ~]# find /var/html/www/ -type f > /opt/wenjian.db_curr
采用diff
命令比较:
[root@localhost ~]# diff /opt/wenjian.db*
348a349
> /var/html/www/test.txt
开发脚本:
前提恢复操作:
[root@localhost ~]# find /var/html/www/ -type f | xargs md5sum >/opt/zhiwen.db
[root@localhost ~]# find /var/html/www/ -type f > /opt/wenjian.db
[root@localhost mnt]# cat invad_Alarm.sh
#!/bin/bash
RETVAL=0
CHECK_DIR=/var/html/www
[ -e $CHECK_DIR ] || exit 1
zhiwendb="/opt/zhiwen.db"
filedb="/opt/wenjian.db"
errlog="/opt/err.log"
[ -e $zhiwendb ] || exit 1
[ -e $filedb ] || exit 1
#judge file content
echo "[root@desktop mnt]# md5sum -c --quiet /opt/zhiwen.db" >$errlog
md5sum -c --quiet /opt/zhiwen.db &>/dev/null
RETVAL=$?
#com file count
find /var/html/www/ -type f >/opt/wenjian.db_curr
echo "[root@desktop mnt]# diff /opt/wenjian.db*" &>>$errlog
diff /opt/wenjian.db*" &>>$errlog
if [ $RETVAL -ne 0 -o `diff /opt/wenjian.db* | wc -l` -ne 0 ];then
touch /tmp/`date +%s`.err
else
echo "Site dir is ok"
fi
[root@localhost mnt]# sh invad_Alarm.sh
Site dir is ok
篡改文件后再检测:
[root@localhost mnt]# sh invad_Alarm.sh
Site dir is ok
[root@localhost mnt]# echo redhat >> /var/html/www/brltty.conf
[root@localhost mnt]# sh invad_Alarm.sh
[root@localhost mnt]# cat /opt/err.log #查看错误日志
[root@desktop mnt]# md5sum -c --quiet /opt/zhiwen.db
[root@desktop mnt]# diff /opt/wenjian.db*