搭建在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 '\n' ',' | 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