Shell实战--文件安全性的保证

监控Web站点目录(/var/html/www)下的所有文件是否被恶意篡改(文件内容被更改)

文件被更改会有如下特征:

  1. 大小可能会变化
  2. 修改时间会变化
  3. 文件内容会变化,利用md5sum指纹校验
  4. 增加或删除文件,对比每次检测前后的文件数量

第一步:在企业网站发布代码后,即对所有网站数据建立初始指纹库和文件库,这个步骤很重要,没有基础的指纹库,无法进行入侵检测

  1. 建立测试数据
[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
  1. 建立初始的文件指纹库
[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
......
  1. 建立初始文件库
    /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
......

第二步:监测文件内容和数量的变化

  1. 监测文件内容的变化

篡改文件内容:

[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
  1. 监测文件数量的变化

新增加文件数:

[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

开发脚本:
前提恢复操作:

扫描二维码关注公众号,回复: 9312612 查看本文章
[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*
发布了101 篇原创文章 · 获赞 65 · 访问量 3142

猜你喜欢

转载自blog.csdn.net/qq_35887546/article/details/104341060