2013-04-25 9:08:14 


1. 找出那些被规则禁掉的IP,嗅探器

这段代码会在当前目录下面生成黑名单,根据nginx的access日志,统计被禁掉的403访问,它们不是搜索引擎的爬虫 ,也不是本机地址。

安全提示: 这个脚本对所有IP地址都是全面封杀无误的,所以你自己在使用这个脚本之前,千万要记住,不要为了测试你的规则,而直接用你的电脑,去测试 。因为万一触发了规则,就可能会被下面的脚本所查出来,包含在内。这种状况是可以避免的。
1. 通过openvpn代理上网,如果openvpn和服务器是同一台,那么ip地址就是127.0.0.1,这个IP己经被安全的排除在外了。另外注意,如果你用了chnroute,那么就要看你的VPS是在美国还是在国内,如果在美国,则无需担心,如果在国内,那么chnroute会把路由判断为还是用原来国内的IP,还是会触发规则。建议如果你的VPS在国内,就不要用chnroute。你自己 对网站进行侵入测试,必须挂openvpn来弄。
2. 可以在下面的脚本里面增加一条 grep -v “xx.xx.xx.xx” ,把你的IP排除在外,这个时候就有一点小繁琐,因为如果你跟我一样是用adsl上网,就会需要手动查看自己的IP,每次手动查看IP也挺麻烦的,所以还是建议用第一条方案。
 安全脚本文件,用于生成blacklist. 文件名: genblacklist.sh

 #!/bin/sh
 cat /var/log/nginx/access_log | grep " 403 " | grep -v google | grep -v sogou | grep -v baidu | grep -v "127.0.0.1" | grep -v "soso.com" | awk '{ print $1 }' | uniq | awk -F":" '{print $4}' | sort  | uniq > blacklist.txt


 2. 根据提供的blacklist禁止IP,解禁IP
禁止IP脚本blockip.sh

 #!/bin/sh
 echo "Block following ip:"
 result=""
 while read LINE
 do
 /sbin/iptables -A FORWARD -s $LINE -j DROP
 if [ $? = "0" ];then
 result=$result$LINE","
 fi
 done < /vhosts/blacklist.txt
 echo $result"Done";

解禁IP脚本releaseip.sh


 #!/bin/sh
 echo "Release following ip:"
 result=""
 while read LINE
 do
 /sbin/iptables -D FORWARD -s $LINE -j DROP
 if [ $? = "0" ];then
 result=$result$LINE","
 fi
 done < /vhosts/blacklist.txt
 echo $result"Done";

3. 封杀嗅探器

location ~* .(mdb|asp|rar) {
        deny all;
 }
 if ($http_user_agent ~ ^Mozilla/4.0$ ) {
        return 403;
 }

4. 利用Cron自动屏蔽非法IP
crontab -e编辑cron任务表。
 增加一条*/30 * * * * /vhosts/reblock.sh
 /vhosts/reblock.sh是自动执行封锁的命令。


#!/bin/sh
 cd /vhosts
 /bin/sh /vhosts/releaseip.sh
 /bin/sh /vhosts/genblacklist.sh
 /bin/sh /vhosts/blockip.sh
 echo "total ip in black list:"
 /bin/cat /vhosts/blacklist.txt | /usr/bin/wc -l

 

One Response


    还没有评论!
1  

Leave your comment

请留下您的姓名(*)

请输入正确的邮箱地址(*)

请输入你的评论(*)


感谢开源 © 2016. All rights reserved.&3Q Open Source&^_^赣ICP备15012863^_^
乐于分享共同进步 KreativeThemes