|
|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯
% f# M. E5 m, I* p, w/ t
1 J8 L( _0 B1 r7 A% ?Linux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
& r; h8 R+ r& i& {$ z, j6 _例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"+ s3 p; L2 I5 w" T, S
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:7 _+ s Y! I% r& @! X
4 u( B+ O! V, v- H4 w2 T) I& F) e
- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
; X. N4 V* T0 t4 Y( T& f8 _ - 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]"
7 A, j: r. P2 S; ~* ~ - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT
. {/ j0 }) G; a3 P/ Q0 q/ V7 h - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set ( Q1 Q" }5 t. Y( \
- iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼 ; s4 H: F9 Q6 K0 P$ a
& D5 D' j+ ~$ j- ^8 ^! f) f
如果你看dmesg遇到下列這類錯誤:
% f7 j- v6 n' W8 [1 nhitcount (200) is larger than packets to be remembered (20)
4 g& L: z' E9 }" b& x表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。5 e& i6 D8 v y* J9 v
* B7 u. h+ W0 k; y7 p; Y; j: G
測試一下吧:# l/ J$ @2 I& E3 v2 X) w) u6 ?
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)1 ~* H/ K' Q* L! |2 p- n6 R
可以發現在/var/log/message中出現下列訊息:6 q' M H M* O% @, G/ y, O
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, Z" B/ c& H" B: j
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。
, Y; T: x- X; X9 mOK,iptables的ipt_recent module發揮作用了。
0 b7 C; s- [6 d; b0 X/ B7 c6 [5 s+ ~' A2 n {" {% [0 Q
結論:7 O3 s0 z0 [6 j1 K- a
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小: i+ ]2 a) N5 u( b" b. h! N5 G6 Y1 p: {
(2) iptables設定上較有彈性,可用來防護80,443以外的port
' v9 `# M3 d1 d7 ](3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。5 }7 {+ X# V/ B$ R* h) P; y. H& e
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。
8 G, c! a; ~! n0 S9 x
2 R/ ~/ N) R- h" `, e
2 G1 z, i: `3 z* l參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/" q3 i# B* D2 G! Q4 }- b) i
|
|