|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 + f( M; ~9 _! s/ y; a$ `* L
* _7 v2 f" i4 }( Y0 K4 k# o$ |3 sLinux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
5 ?' D, C2 ?, ^' o5 ~; ^* R! S/ k例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"
M u! A: [4 d6 v然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:4 J/ r1 y; z) [( O: l) b7 u3 U
' G+ c7 ?( B$ @- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS& R% g; U J# ]( t
- 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]"
1 X" e8 P3 _' S9 f: [ - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT . _+ Q8 {" R. A+ D+ [" e1 ~% J; R. \
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set / V) c. f/ W/ v; r5 A4 V9 L
- iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
" D7 \9 y$ W' X& z# T3 N5 `6 I- s' j% Y
如果你看dmesg遇到下列這類錯誤:
/ r9 k5 c1 N3 }7 u# @3 @hitcount (200) is larger than packets to be remembered (20)
1 `" C# P4 n0 P表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
5 l" b% f' J. q0 j
/ a! c1 T4 i* R# {0 j/ A測試一下吧:% u; S4 `; Z' U1 _: ?
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)1 A( X* f$ g; U' J2 n1 \: ]& F. L
可以發現在/var/log/message中出現下列訊息:
' U" j; |) J8 Y# X) v2 c9 ~' }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
& a* q; |: H) E! i) J( m此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。
& Z! ^6 l* P( i2 z/ iOK,iptables的ipt_recent module發揮作用了。0 ^4 D" V9 I+ B& m5 }
0 t6 \/ X1 }7 i+ {' M2 W結論:1 ]4 ]7 |" C+ K" b* m- @6 N0 T+ y
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小
* h/ z$ |1 a8 m5 O( z(2) iptables設定上較有彈性,可用來防護80,443以外的port
' n' Z2 i( {, w# _" ]0 z(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。1 j6 q6 e! n% y" _& V
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。7 T' Q. i) ~( u: G3 B
+ Z) R; E5 c) _7 b" Q! ]
O% C3 o+ ^ _參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
; b. L( |3 U" F. N1 r# ^ |
|