1、服务器Web目录检查php后门Linux Shell代码:
#30 2 * * * /opt/sh/check-eval.sh > /dev/null 2>&1
# 检查的WEB目录
check_path="/data/wwwroot"
# 日志输出目录
check_log="/data/logs"
# 获取当前时间
time=`date +%Y/%d/%m/%H:%M:%S`
# 使用find命令在指定的WEB目录中查找所有的PHP文件,并使用egrep过滤出包含恶意代码的文件
# 然后使用awk提取文件路径,并使用sort和uniq去除重复项,最后将结果保存到check.log文件中
find ${check_path} -name "*.php" -type f -print0 | xargs -0 egrep "(phpspy|c99sh|milw0rm|eval(base64_decode|spider_bc)" | awk -F: '{print $1}' | sort | uniq > ${check_log}/check.log
# 使用grep命令检查check.log文件中是否包含"php"的行,如果有则表示存在恶意文件
# 将结果保存到status变量中
status=$(grep php /data/logs/check.log > /dev/null 2>&1)
# 检查status变量的值,如果存在恶意文件则打印状态和时间,并以状态码0退出
# 如果不存在恶意文件则打印"not exist"并以状态码1退出
if [ $? -eq 0 ]; then
echo "check status: ${status} time:$time"
exit 0
else
echo "not exist"
exit 1
fi
指定的WEB目录中查找所有的PHP文件,并使用egrep过滤出包含恶意代码的文件。然后将结果保存到日志文件中。接着,它会检查日志文件中是否存在包含"php"的行,如果存在则表示存在恶意文件,打印状态和时间,并以状态码0退出。如果不存在,则打印"not exist"并以状态码1退出。
2、服务器查隐藏进程Linux Shell代码:
# 30 3 * * * /opt/sh/check-ps.sh > /dev/null 2>&1
# 每天凌晨3点30分运行该脚本,输出重定向到/dev/null
# 查隐藏进程
ps_pids="`ps -A | awk '{print $1}'`"
# 获取当前正在运行的所有进程的PID
for i in /proc/[[:digit:]]*; do
# 遍历/proc目录下的所有以数字开头的目录,对应正在运行的进程
if echo "$ps_pids" | grep -qs `basename "$i"`; then
:
# 进程PID存在于ps_pids变量中,表示进程正常,不做任何操作
#echo "no found"
else
# 进程PID不存在于ps_pids变量中,表示进程可能是隐藏的
echo "Rootkit's PID: $(basename "$i")"
fi
done
echo "Chechking Finished, Congratulations to you !!! No found"
# 打印检查完成的提示信息,恭喜你,没有发现隐藏进程
检查隐藏进程,它会在每天的凌晨3点30分作为一个cron作业自动运行。脚本开始时,使用ps命令获取当前正在运行的所有进程的PID,并将结果保存到变量ps_pids中。然后,使用一个循环遍历/proc目录下的所有以数字开头的目录,这些目录对应正在运行的进程。对于每个目录,如果进程的PID存在于ps_pids变量中,表示进程是正常的,不做任何操作。如果进程的PID不存在于ps_pids变量中,表示进程可能是隐藏的,脚本会打印出Rootkit的PID。最后,脚本会打印出"Chechking Finished, Congratulations to you !!! No found",表示检查完成,恭喜你,没有发现隐藏进程。
注意,这个脚本需要以root权限运行,因为只有root用户才能访问/proc目录下的进程信息。
3、根据Nginx日志分析单IP大量请求,将攻击IP加入iptables防火墙Linux Shell代码:
tail www.baidu.com.access.log -n 9999 | awk '{print $1}' | sort | uniq -c | sort -rn | awk '{if ($1>200){print $2}}' > /data/nginxlogs/block_attack_ips.log
# 从日志文件中获取最近9999行的访问日志,提取出IP地址,并统计每个IP的访问次数
# 然后按访问次数降序排序,只保留访问次数超过200次的IP地址
# 将结果保存到/block_attack_ips.log文件中
/sbin/iptables -nL | grep DROP | awk '{print $4}' > /data/nginxlogs/iptables.log
# 使用iptables命令获取当前已经被阻止的IP地址列表,并保存到/iptables.log文件中
filename=`cat /data/nginxlogs/block_attack_ips.log`
# 读取/block_attack_ips.log文件中的IP地址列表
for ip in $filename
do
if [ `grep $ip /data/nginxlogs/iptables.log` ]
then
echo "Already exists"
else
echo "add"
/sbin/iptables -I INPUT -p tcp -s $ip --dport 80 -j DROP
fi
done
# 遍历IP地址列表,对于每个IP地址,检查是否已经存在于/iptables.log文件中
# 如果存在,则打印"Already exists",表示已经添加过阻止规则
# 如果不存在,则打印"add",并使用iptables命令添加阻止规则,禁止该IP地址访问端口80
根据访问日志中的IP地址统计访问次数,并将访问次数超过200次的IP地址添加到iptables阻止规则中,禁止其访问端口80。首先,从访问日志文件中获取最近9999行的访问日志,提取出IP地址,并统计每个IP的访问次数。然后,按访问次数降序排序,只保留访问次数超过200次的IP地址,并将结果保存到/data/nginxlogs/block_attack_ips.log文件中。接下来,使用iptables命令获取当前已经被阻止的IP地址列表,并保存到/data/nginxlogs/iptables.log文件中。然后,读取/data/nginxlogs/block_attack_ips.log文件中的IP地址列表,并遍历每个IP地址。对于每个IP地址,检查是否已经存在于/data/nginxlogs/iptables.log文件中。如果存在,则打印"Already exists",表示已经添加过阻止规则。如果不存在,则打印"add",并使用iptables命令添加阻止规则,禁止该IP地址访问端口80。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...