程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> Nginx+iptables屏蔽頻繁訪問的ip,防止批量抓取網站內容

Nginx+iptables屏蔽頻繁訪問的ip,防止批量抓取網站內容

編輯:PHP綜合
Nginx+iptables屏蔽訪問Web頁面過於頻繁的IP(防DDOS,惡意訪問,采集器)

通過分析nginx的日志來過濾出訪問過於頻繁的IP地址,然後添加到nginx的blockip.conf,並重啟nginx

腳本如下:

#!/bin/sh
nginx_home = /Data/app_1/nginx
log_path = /Data/logs
/usr/bin/tail -n50000 $log_path/access.log
|awk '$8 ~/aspx/{print $2,$13}'
|grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou"
|awk ‘{print $1}’|sort|uniq -c |sort -rn
|awk '{if($1>150)print “deny “$2″;”}'> $nginx_home/conf/vhosts/blockip.conf
/bin/kill -HUP 'cat $nginx_home/nginx.pid'

也可以通過分析nginx日志過濾出頻繁訪問IP,直接用iptables屏蔽這個IP,就用不著重啟nginx了,並且屏蔽效果更好。

單個IP的命令是
 

iptables -I INPUT -s 110.152.0.199 -j DROP

封IP段的命令是
 

iptables -I INPUT -s 110.152.0.0/16 -j DROP

封整個段的命令是
 

iptables -I INPUT -s 194.42.0.0/8 -j DROP

封幾個段的命令是
 

iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP

剛才不小心搞的自己都連不上了-_-!!!

iptables -I INPUT -p tcp –dport 80 -s 110.152.0.0/24 -j DROP


以後用這種只封80端口就行了,不會出問題!

iptables -I INPUT -p tcp –dport 80 -s 110.152.0.0/24 -j DROP

iptables -I INPUT -s 61.37.81.0/24 -j DROP

解封

iptables -F


清空

iptables -D INPUT 數字 *
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved