linux 实时检测web项目MD5防止网站被黑

搭建在linux服务器上网站项目越来越多,防止网站项目被黑,是web运维人员的基本工作,网上关于网站运维技巧的精华文章数不胜数,方法也各不相同,有经验的大牛们写的也更是精华中的精华,小弟也是刚刚接触这一行没多久,没多少经验,下面就介绍下我在用的几种方法中的其中一种----MD5校验

这种方法需要用到系统自带的md5sum工具,(没有的可以yum到http://rpm.pbone.net/下载一个)

这个方法需要两个脚本(网站用的是java,这里监控的是class和jsp,根据项目的不同)

makemd5 和 checkmd5

makemd5

#!/bin/bash
# author:Cheng Guan
# date: 2013-12-24
# version: 0.0.1
# desc: make md5 file

#-------------项目路径
path="/home/ml/home/"
#-------------监控文件
find $path  -type f  | grep -E  ".class|.jsp" | xargs  md5sum > /md5/one

checkmd5

#!/bin/bash
# author:Cheng Guan
# date: 2013-12-24
# version: 0.0.1
# desc: check web file 

if [ ! -s /md5/one ] ; then
echo "源文件丢失"
exit 2
fi
#path="/home/ml/home/"
#-------------监控文件
#find $path  -type f | grep .class | xargs  md5sum > two
sed 's/one/two/g' /md5/makemd5  > /md5/.makemd5
/bin/sh /md5/.makemd5
if [ ! -s /md5/two ] ; then
echo "获取MD5异常"
exit 2
fi

#-------------对比文件MD5
#do
#   wc=`cat one | grep "$file"`
#   if [ ! "$wc" ] ; then
#   echo $file | awk -F / '{print $NF}' >> diff.md5
#   fi
#done 
cat /md5/one >> /md5/two
cat /md5/two | sort | uniq -c | sort -nr | awk '$1~/1/{print $3}' | awk -F / '{print $NF}' > /md5/diff.md5
#------------对比结果
error=`cat /md5/diff.md5 | tr '
' ',' | sed 's/,$/);/' | sed 's/^/异常文件(/'`
if [ "$error"  ] ; then
#------------异常处理(飞信,邮箱都可以)
#/usr/local/fx/fetion --mobile=123456 --pwd=123456 --to=123456 --msg-utf8="$error"
#sendmail
echo "$error"
exit 0
fi
rm -rf /md5/.makemd5

makemd5用于第一次生成原始的MD5文件one,checkmd5会生成新的MD5文件two,然后把两个MD5文件进行对比,不一样的就是被修改或者被上传上来的文件,然后就会报警,

makemd5生成的是原始文件,只生成一次,可以把checkmd5加入到cron中,没1分钟执行一次,就每分钟都会生成新的MD5文件two,去和原始MD5文件one去对比,达到实时监控项目文件,及时发现问题。

*/1 * * * * root sh /md5/checkmd5  >/dev/null 2>&1

这种方式对大牛来说弱爆了,但是对于我来说还很实用,

但是入侵者把crond给改了,这个监控就失效了,我们可以再内网用nagios去监控服务器上的crond服务及其makemd5文件是否没修改等等(这个有想了解的可以告诉我)

最好是不要用root用户与运行项目,可以新建个运用去运行项目,权限能少给就少给,或者增加个对访问日志的实时监控

如logcheck,log analyzer或者自己写一些简单的脚本

END

原文地址:https://www.cnblogs.com/dota2/p/3493110.html