|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯
1 p6 U* u8 a) \, X% U7 b, v5 i+ o- j% x& D1 Q/ b
Linux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。- G6 j" z- x4 ]) c- @/ v
例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"& n2 F# [% u* Z" V8 F
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:
+ M! l5 g0 S* `+ `5 c3 ]' a$ W* |' f4 c! g" m9 f
- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
9 y" k {7 I8 q- Y8 [; ~: U - 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]"8 O# S, F6 B, {1 s I( U G7 f
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT / _: E: J* M7 W Y+ d" B
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set
9 ~3 x E( G" u; d2 |6 R - iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
3 Q* \3 n! {% A" b M, J4 v( n; e) t1 q
如果你看dmesg遇到下列這類錯誤:
3 e1 ^5 u8 c c8 \1 h2 E, Lhitcount (200) is larger than packets to be remembered (20) % y9 S' w' X2 C2 A
表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。( k; k4 j+ h m) C3 o2 k8 L
+ s4 O7 B6 d7 x1 E測試一下吧:
- O, Q: @" ^) @( X先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)# D& u: j1 Q+ K& d
可以發現在/var/log/message中出現下列訊息:
4 q! G) A# ^' ?) ^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( k5 q3 L x/ Q% L3 R: X
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。: w4 M! {# D1 B7 w5 T
OK,iptables的ipt_recent module發揮作用了。
: O. C2 p% T& N4 A: C$ R" S7 a/ f! p/ Q o2 z: a
結論:6 X! Z6 L) ]" i! q3 Y2 |
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小/ @) V% s1 c: s; W
(2) iptables設定上較有彈性,可用來防護80,443以外的port
6 X$ W7 [; D; g(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。2 _" d: O x% ]/ k
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。. z+ r, i/ [$ J
& T; p8 K8 T: C" A0 \
" T7 X8 @6 j- K9 t參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
1 I& ?( I/ i6 a |
|