近段時間一直飽受垃圾評論的攻擊,服務(wù)器一度負(fù)載太高而宕機,參見:WordPress垃圾評論防御記。開始試了很多方法都不能很好的解決問題,最后通過屏蔽垃圾評論IP的方式,算是解決了這個問題,當(dāng)然這個方法不是最好的,但是確實是非常實用的方法。
然后一些朋友就問我是怎么屏蔽這些垃圾評論的IP的,以及能否共享這些垃圾評論的IP,還有朋友問怎么提取自己博客的垃圾評論的IP,這個稍稍講解下,高手略過,我也是個菜鳥。
nginx環(huán)境下
新建 denyip.conf 文件,在服務(wù)器/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。
第一行的屏蔽的范圍較大,很容易誤攔,第三行的疲敝最穩(wěn)妥,但是IP越多導(dǎo)致文件會很大,也不算太可取,第二行的方式是我目前使用的,好處壞處介于2這之間,大家可以自由選擇。
垃圾評論IP的收集
有人問我如何收集這些垃圾評論IP的,其實很簡單,一個SQL就搞定,然后Excle處理下。
首先安裝Akismet插件,這個插件會把垃圾評論標(biāo)記為spam,只安裝這一個就可以了,其他任何防評論插件請勿安裝。
SELECT `comment_author_IP` FROM `wp_comments` WHERE `comment_approved`= 'spam'
執(zhí)行好了之后,導(dǎo)出這些IP,保存csv格式,然后直接用Excle打開,排序,去重,就得到唯一的垃圾評論IP了。
得到垃圾評論了之后就可以按照上面的方式操作了。
apache環(huán)境下
空間支持 .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下關(guān)于限制IP的寫法比較多種,IP開始的第一行,是最普通的限制唯一IP,第二行跟第三行表達(dá)的內(nèi)容是一樣的,限制110.85.113.* 下所有的IP;第四五行也是一樣的,限制110.87.*.* 下所有的IP;第六行是限制這2個IP,第7行就是顯示這兩個IP段;注意多個IP限制時用空格分開。
目前我收集的垃圾評論的IP
經(jīng)過大約一周時間的統(tǒng)計,目前收集了一批垃圾評論的IP,用純真IP批量跑了這些IP,其中以福建莆田市的居多,美國的也不少。如果你也飽受垃圾評論的攻擊,可以用用這個方法和IP,我會定期更新IP數(shù)據(jù)的。
iptables IP限制訪問 指定IP訪問
只允許指定的一個IP訪問服務(wù)器
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
如果你之前的防火墻設(shè)置了永久關(guān)閉,則需要解除
chkconfig --list 查看啟動服務(wù),找到要關(guān)閉服務(wù)名
chkconfig --level 235 服務(wù)名 off 【在等級3和5為開機運行服務(wù)】
系統(tǒng)運行級別有0—6,就在/etc/inittab中的0-6
等級0表示:表示關(guān)機
等級1表示:單用戶模式
等級2表示:無網(wǎng)絡(luò)連接的多用戶命令行模式
等級3表示:有網(wǎng)絡(luò)連接的多用戶命令行模式
等級4表示:不可用
等級5表示:帶圖形界面的多用戶模式
等級6表示:重新啟動2011/10/26