使用开源cms系统:dedecms、帝国cms、phpcms等系统时,经常被人挂马,每次都没有及时发现,给网站造成权重上的影响。
于是想了一个简单的办法就是使用shell监控目录的文件变化,如果核心文件被修改就主动还原;如果新增文件就删除,并记录被删除的文件,用着日后分析。
有不完善的,请多指教,
#!/bin/bash #网站目录 original="/media/psf/Home/Desktop/Git/dutuwang_net" #备份目录 backdir="/media/psf/Home/Desktop/Git/dutuwang_net_backdir" #非法文件 illegal="/media/psf/Home/Desktop/dutuwang_net_illegal" #查找1分钟内修改的文件 files=`find ${original} -name '*.php' -mmin -1 -type f` for filename in $files do #排除缓存目录 if [[ "${filename}" =~ "/data" ]]; then echo 'tmp' else old=${filename/${original}/${backdir}} #判断备份文件是否存在 if [ -f ${old} ]; then cp -r ${filename/${original}/${backdir}} ${filename} echo "restore----${filename}--------restore-----" else newdir=`dirname "${illegal}${filename/${original}/}"` #判断新增目录是否存在 if [ -d ${newdir} ]; then #复制新增文件到非法文件目录 cp -r ${filename} "${illegal}${filename/${original}/}" else echo "mkdir--------${newdir}-----------" mkdir ${newdir} cp -r ${filename} "${illegal}${filename/${original}/}" fi echo "cp---------${filename}------${illegal}${filename/${original}/}----" rm ${filename} echo "del----${filename}--------del---------" fi fi done
然后用crontab -e
*/1 * * * * /www/shell/restore.sh >> /www/shell/restore.log 2&1 &
每分钟去检查一次