概述
因业务需要,需监控某web站点目录下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次。
下面简单介绍下实现过程。
一、生成md5验证文件
1、文件的校验文件
find /var/html/www/* -type f |xargs md5sum >/tmp/check/web_file_check.md5sum
2、目录的校验文件
tree /var/html/www/ -d >/tmp/check/web_dir_check.txt md5sum /tmp/check/web_dir_check.txt md5sum /tmp/check/web_dir_check.txt >/tmp/check/web_dir_check.md5sum
二、邮箱
Sendmail配置发送邮件的邮箱认证信息
vi /etc/mail.rc
--- 增加如下内容 --- set from=yourname@your-domain.com set smtp=mail.your-domain.com set smtp-auth-user=yourname set smtp-auth-password=yourpasswd set smtp-auth=login

三、脚本内容
#!/bin/bash ############################################################# # File Name: web_file_check.sh # 前提: yum install -y tree ############################################################# Dir=/tmp/check/ Web_Dir=/tmp/html/ Check_File1=/tmp/check/web_file_check.md5sum Check_File2=/tmp/check/web_dir_check.md5sum Check_Dir=/tmp/check/web_dir_check.txt Check_Out=/tmp/check/check_out.md5sum Mail_info=/tmp/check/mail.txt Date=`date +%F_%T` Host_Name=`hostname` Host_IP=`hostname -I` Email_Addr=huangwb@fslgz.com echo "=========================inital============================" [ -d $Dir ] || mkdir -p $Dir if [ ! -f $Check_File1 ] then find /tmp/html/* -type f |xargs md5sum >/tmp/check/web_file_check.md5sum elif [ ! -f $Check_File2 ] then tree /tmp/html/ -d >/tmp/check/web_dir_check.txt md5sum /tmp/check/web_dir_check.txt md5sum /tmp/check/web_dir_check.txt >/tmp/check/web_dir_check.md5sum fi echo "========================check_out============================" md5sum -c $Check_File1 >$Check_Out 2>/dev/null Back_num1=$? tree -d $Web_Dir >$Check_Dir md5sum -c $Check_File2 &>/dev/null Back_num2=$? echo "======================开始校验并触发告警=====================" if [ $Back_num1 -ne 0 ] then echo "发生主机:$Host_Name 主机IP地址:$Host_IP" > $Mail_info echo "在 $Date 的检测中发现以下文件被篡改" >>$Mail_info echo "==================================================" >>$Mail_info egrep -i "失败|failed" $Check_Out >>$Mail_info echo "==================================================" >>$Mail_info echo "请尽快登陆服务器进行处理!!!" >>$Mail_info mail -s "【警告】web站点文件被篡改" -a $Check_File1 $Email_Addr <$Mail_info fi if [ $Back_num2 -ne 0 ] then echo "目录检测信息" >$Mail_info echo "在 $Date 的检测中发现目录被篡改" >>$Mail_info mail -s "【警告】web站点目录被篡改" -a $Check_Dir $Email_Addr<$Check_Dir fi


四、测试
删除文件后执行结果


查看邮件:

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
