|
|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 0 S/ Z: n/ M, i. D9 S
) D5 A& T: O$ c# }9 i) SLinux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
: g9 `/ w1 |( ?6 v% w4 L例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"4 K' M8 V1 L+ i. }( `, p
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:
3 m1 {8 ^$ u" j2 C
( n; j' b$ m# A- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS4 ~& m' ^3 u1 Q! p
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j LOG --log-prefix "[Possible DOS Attack]"
' N. }# T" G, I1 X* V - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT
: @. Z2 Z1 `0 f - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set
( ^) m3 n$ Y% D9 }, { - iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼 1 x }8 ?( C. {8 Y3 o) a+ K6 r
9 b7 {5 M6 O* w6 v5 l# y8 f如果你看dmesg遇到下列這類錯誤: $ n2 ^" r* x3 }/ K6 f, q
hitcount (200) is larger than packets to be remembered (20) $ ]; P5 N. d, l5 o8 q
表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
, ?- C6 L* [: t9 U$ g( g1 t
( y! d7 Q4 P6 L( i" \測試一下吧:3 x' c5 p ?# |* M6 s* ~( |
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)* ?4 P4 M6 T. a$ \+ |
可以發現在/var/log/message中出現下列訊息:4 {7 t* q3 x( f' q/ n
May 17 07:12:00 localhost kernel: [Possible DOS Attack]IN=eth0 OUT= MAC=XX:XX:XX:XX:43:77:00:1f:YY:YY:YY:YY SRC=192.168.0.105 DST=192.168.0.102 LEN=64 TOS=0x00 PREC=0x00 TTL=64 ID=45026 DF PROTO=TCP SPT=59437 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0
# n! W$ A5 Y7 D5 M) p) Q此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。: w5 [/ y+ h4 B- x U* _
OK,iptables的ipt_recent module發揮作用了。- U. L8 t# X' i3 U3 o" @7 C
2 ~% b) d7 n2 a. o
結論:: E- \2 R% c/ O: f" n7 S
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小
3 T+ _8 b$ J3 ~/ I$ }1 i+ D; ]# v(2) iptables設定上較有彈性,可用來防護80,443以外的port
/ A8 c6 S9 [4 i6 T% [+ U; I(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。- a" @( X" V- Y# y
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。
9 Q( u) Y9 h+ ?6 i I ^+ c! ? o5 g7 z. S& k- W1 G, X
/ H* D1 T% N4 m& g% C參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
, c5 d/ ]7 m$ e5 a; | |
|