使用shell防ZmEu
在上一篇apache屏蔽恶意User-Agent中,我们使用apache自带的模块来屏蔽了ZmEu这样的User-Agent恶意头访问,当我环境是lnmp的时候,使用nginx来屏蔽ZmEu恶意头居然无法屏蔽了,如下图
看来过了一年多,ZmEu这样的恶意访问也有所升级,不再是404的错误了,而是301的跳转了,难怪我屏蔽不了,没办法只能使用最后的大招shell来搞定ZmEu的访问了.
脚本内容:
vi deny_ZmEu.sh
#!/bin/bash awk -F"-" '/ZmEu/ {print $1}' /var/log/nginx/access.log |sort -nr|uniq -c |sort -n|awk '{print $1"="$2}'>/root/bad_ip_tmp.txt sort /root/bad_ip_tmp.txt|uniq >/root/bad_ip.txt DEFINE="2" for i in $(cat /root/bad_ip.txt) do NUM=`echo $i |awk -F"=" '{print $1}'` IP=`echo $i|awk -F"=" '{print $2}'` if [ $NUM -ge $DEFINE ]; then iptables -L -n|grep $IP > /dev/null if [ $? -gt 0 ]; then iptables -I INPUT -s $IP -j DROP fi fi done
使用方法:
chmd +x deny_ZmEu.sh
vi /etc/crontab
*/5 * * * * root /root/webbak/deny_ZmEu.sh
保存后,重启crond.
service crond restart
查看iptables是否有封到ip
iptables -nL
可以看到iptables已经把那3个带ZmEu的user-agent头的ip封了.
附件下载:
deny_ZmEu.rar 379字节
评论: