|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 . J6 m2 o1 j, H( g- F1 U7 ?$ i
1 Z+ [% E8 G4 \/ YLinux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。# s/ B, a; ]5 _" E
例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"# R2 ^0 ~0 u5 w( K
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:
) Q8 D4 m* o. e& w1 }. O' i* v5 `8 y* }4 |1 b
- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
, n: @& d4 B4 a. {+ l) C - 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]"
. ~ l6 c/ G! o8 U) r" U- a - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT / L) x4 z8 |( c& d* m- S
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set & g, O" O: N2 k3 c6 {- n5 g L
- iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼 3 G% C9 `! b8 b f! e
" x+ U. R% ~+ v( W# h如果你看dmesg遇到下列這類錯誤: : C! X+ _2 c7 D) F: c( v
hitcount (200) is larger than packets to be remembered (20)
3 n5 H4 s+ _7 |表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
+ ?; C7 \ j6 a/ u6 q+ F9 |4 c6 D7 A9 N* s$ y
測試一下吧:5 ~4 c( x; T4 r( F" T
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)5 B& p7 M* S2 v) r8 K2 M
可以發現在/var/log/message中出現下列訊息:4 S* o% @ e1 U" T
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 P# t8 g2 \' i& M& M5 P
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。
- }& B- I* a6 @* {# h7 N, V7 ?4 SOK,iptables的ipt_recent module發揮作用了。
/ l+ w$ Q3 v. ^& Y9 O
& h. z* L# Y- {/ S8 P8 Z結論:" y" F: J6 t" K" X/ r
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小. y) D5 \; N T) c" h5 \! ~- c
(2) iptables設定上較有彈性,可用來防護80,443以外的port
8 e3 F# Q2 H2 i# j: ^; A* a! L( I(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。, l: h N% {; e4 w. `, Q
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。
. h1 d+ R4 Q% v; H$ Z- b' p) V! O+ R+ s$ q$ m0 U* ?
. Q6 a7 L7 p5 W: D- L1 Q# c參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/8 A: p( t; q4 ]- i |& [1 g
|
|