概述
因业务需要,需监控某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
fi
if [ $Back_num2 -ne 0 ]
then
echo "目录检测信息" >$Mail_info
echo "在 $Date 的检测中发现目录被篡改" >>$Mail_info
mail -s "【警告】web站点目录被篡改" -a $Check_Dir $Email_Addr
fi
四、测试
删除文件后执行结果
查看邮件: