近段時間一直飽受垃圾評論的攻擊,服務器一度負載太高而宕機,參見:WordPress垃圾評論防御記。開始試了很多方法都不能很好的解決問題,最後通過屏蔽垃圾評論IP的方式,算是解決了這個問題,當然這個方法不是最好的,但是確實是非常實用的方法。
然後一些朋友就問我是怎麼屏蔽這些垃圾評論的IP的,以及能否共享這些垃圾評論的IP,還有朋友問怎麼提取自己博客的垃圾評論的IP,這個稍稍講解下,高手略過,我也是個菜鳥。
nginx環境下
新建 denyip.conf 文件,在服務器/usr/local/nginx/conf目錄下的nginx.conf裡面,加上
include denyip.conf;
將屏蔽的IP放到 denyip.conf 裡面
deny 110.83.0.0/16;
deny 110.84.111.0/24;
deny 110.85.124.56;
保存之後將 denyip.conf 上傳到/usr/local/nginx/conf目錄下,弄好之後記得重啟nginx。
上面我列舉了3中屏蔽類型,第一行的是屏蔽110.83.*.*的所有IP,第二行的是屏蔽110.84.111.*的所有IP,第三行是只屏蔽110.85.124.56這個IP。
第一行的屏蔽的范圍較大,很容易誤攔,第三行的疲敝最穩妥,但是IP越多導致文件會很大,也不算太可取,第二行的方式是我目前使用的,好處壞處介於2這之間,大家可以自由選擇。
垃圾評論IP的收集
有人問我如何收集這些垃圾評論IP的,其實很簡單,一個SQL就搞定,然後Excle處理下。
首先安裝Akismet插件,這個插件會把垃圾評論標記為spam,只安裝這一個就可以了,其他任何防評論插件請勿安裝。
SELECT `comment_author_IP` FROM `wp_comments` WHERE `comment_approved`= 'spam'
執行好了之後,導出這些IP,保存csv格式,然後直接用Excle打開,排序,去重,就得到唯一的垃圾評論IP了。
得到垃圾評論了之後就可以按照上面的方式操作了。
apache環境下
空間支持 .htaccess
<Limit GET HEAD POST>
order allow,deny
deny from 110.85.104.152
deny from 110.85.113
deny from 110.85.113.0/24
deny from 110.87
deny from 110.87.0.0/16
deny from 110.86.167.210 110.86.184.181
deny from 110.86.185.0/24 110.86.187.0/24
allow from all
</Limit>
apache下關於限制IP的寫法比較多種,IP開始的第一行,是最普通的限制唯一IP,第二行跟第三行表達的內容是一樣的,限制110.85.113.* 下所有的IP;第四五行也是一樣的,限制110.87.*.* 下所有的IP;第六行是限制這2個IP,第7行就是顯示這兩個IP段;注意多個IP限制時用空格分開。
目前我收集的垃圾評論的IP
經過大約一周時間的統計,目前收集了一批垃圾評論的IP,用純真IP批量跑了這些IP,其中以福建莆田市的居多,美國的也不少。如果你也飽受垃圾評論的攻擊,可以用用這個方法和IP,我會定期更新IP數據的。
iptables IP限制訪問 指定IP訪問
只允許指定的一個IP訪問服務器
vi /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 165.232.121.17 -j ACCEPT
-A INPUT -j DROP
COMMIT
iptables 限制ip訪問
通過iptables限制9889端口的訪問(只允許192.168.1.201、192.168.1.202、192.168.1.203),其他ip都禁止訪問
iptables -I INPUT -p tcp --dport 9889 -j DROP
iptables -I INPUT -s 192.168.1.201 -p tcp --dport 9889 -j ACCEPT
iptables -I INPUT -s 192.168.1.202 -p tcp --dport 9889 -j ACCEPT
iptables -I INPUT -s 192.168.1.203 -p tcp --dport 9889 -j ACCEPT
如果你之前的防火牆設置了永久關閉,則需要解除
chkconfig --list 查看啟動服務,找到要關閉服務名
chkconfig --level 235 服務名 off 【在等級3和5為開機運行服務】
系統運行級別有0—6,就在/etc/inittab中的0-6
等級0表示:表示關機
等級1表示:單用戶模式
等級2表示:無網絡連接的多用戶命令行模式
等級3表示:有網絡連接的多用戶命令行模式
等級4表示:不可用
等級5表示:帶圖形界面的多用戶模式
等級6表示:重新啟動2011/10/26