阻擋惡意 spider, iptables 設定

繼上一次的 檔惡意的 spider 之後
昨日又遭受一次 spider 的攻擊
導致 Linode 上主機的 mysql 又被搓掛

只好很仔細的研究一下 iptables 的用法了

如果要檔一個 ip
可以用以下指令

iptables -A INPUT -s [ip] -j DROP

[ip] 請填入你要的 ip
例如

iptables -A INPUT -s 58.68.242.162 -j DROP
如果 spider 是一組連續的 ip
可以這樣下
iptables -A INPUT -p tcp  -m iprange –src-range [ip_begin]-[ip_end] -j DROP
例如
iptables -A INPUT -p tcp  -m iprange –src-range 1.202.218.1-1.202.218.255 -j DROP
這樣輸入完畢
就ok了
這些 ip 就再也連不進來了
那怎樣算是惡意的 spider 呢?
像是已經寫了 robots.txt 規則 但是還是亂搓狂搓的
或是一秒鐘連續搓個三五次的
我都認為是惡意的 spider
(尤其是對岸的搜尋引擎幾乎都是這樣)
這裡提供我設定的案例給各位參考
JikeSpider
iptables -A INPUT -p tcp  -m iprange –src-range 1.202.218.1-1.202.218.255 -j DROP
Yahoo! Slurp China
iptables -A INPUT -p tcp  -m iprange –src-range 110.75.175.1-110.75.175.255 -j DROP
Baiduspider
iptables -A INPUT -p tcp  -m iprange –src-range 119.63.193.1-119.63.193.255 -j DROP
bingbot/2.0
iptables -A INPUT -p tcp  -m iprange –src-range 157.55.35.1-157.55.35.255 -j DROP
這樣設定完還不夠
如果哪天主機需要重開機
這些設定全部都會不見
有兩種方法
一種就是把剛剛那些指令
寫到 local.rc 裡面
讓這些指令一開機就執行
另一種比較複雜一點
首先用 iptables-save 把設定寫出
iptables-save > /etc/firewall.conf
然後一樣在 local.rc 內寫上
iptables-restore < /etc/firewall.conf
就會在開機的時候把之前的設定 restore 回來

以上
設定完畢就可以高枕無憂了~