|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 : H, A( F2 z# @% E
: `( n" t2 _* I& I, v7 r" lLinux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
1 c% M4 F( C7 ~* S, E7 H; G8 ]例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"4 H, @* X1 U: r, {
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:
1 I) f/ k, O; \1 \+ s7 Q d+ \+ N" ~' ~5 i1 F( J D8 |
- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
. C( K7 f- b, _! w f/ l - 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]"
, m$ [+ [% }! ~ - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT ( x. V& ` v! L! `
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set
5 ?8 h* J: o! V5 G8 G$ L - iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
' Q! {3 M& }& _. g& r3 l: c. L( X' N' {( a8 @* ]5 ?7 S
如果你看dmesg遇到下列這類錯誤:
! m* H/ F D. A" Ohitcount (200) is larger than packets to be remembered (20)
/ U# u% \3 R+ A表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。9 A3 }6 G2 a9 U/ D, Z. K
7 J( n5 B3 p- Z4 B. w2 C5 h# h- @測試一下吧:
9 ^: B1 ], d$ P+ E先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)
7 k/ }% H9 g7 I可以發現在/var/log/message中出現下列訊息:/ O. p- |9 k* z; h0 B4 }$ k0 o8 Q% k
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
# _" L$ M D8 }1 e' p0 J( E3 D此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。
* S( L" u W. t0 p1 HOK,iptables的ipt_recent module發揮作用了。+ s2 i; r$ c. \# I/ X7 N' i* F
- k. U! G {2 \! c7 S1 V5 Q: _4 T
結論:2 B& P; _, D' L
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小
- A* v7 |( q+ S/ C* V, l(2) iptables設定上較有彈性,可用來防護80,443以外的port
& y9 `' y! s! E4 K$ J1 e+ a( `(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。7 Q; R. q% }" S, t2 |' F6 I, @
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。3 B8 t0 ?1 X% s2 Q z. G3 P6 d! r% @
/ _4 I2 L% q. M" ?& G
$ B5 M+ O- ` J參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/1 K/ v; D. V7 S7 l! S
|
|