|
|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯
+ m& x# d* k) A. A2 I8 |+ v) s+ h D+ i& X1 j7 l5 v* x+ S
Linux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
1 b8 c. t/ r! n( p- ?3 H3 I例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]": F2 F; y+ i" g; X9 c
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:
' l8 j/ I/ }/ v$ ?' m
c6 ^6 m& l0 D6 [8 f% Y- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
+ b( ?& j$ s5 s+ \ - 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]"
9 q% N5 K$ k$ ] - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT
! B2 t+ S! g X a5 `: k: ^" c- F - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set 3 [: ] J% \% o4 w" H% y7 @ p
- iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
, a5 M1 M) }& f$ w+ E- G5 P5 d% K" z/ j6 r8 O- A/ Z6 S
如果你看dmesg遇到下列這類錯誤:
( T6 \1 q: `/ l5 }% R8 e) @$ Y/ U9 qhitcount (200) is larger than packets to be remembered (20) 8 ~; `- X6 {) k. ] K2 E, O, |
表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
" f# O n3 r8 f3 P, C6 ~" o6 ?; @, y- n6 T
測試一下吧:
. F' { @, G: i. }先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)
% \2 \, }* o4 [可以發現在/var/log/message中出現下列訊息:
# } s4 B" h0 cMay 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
1 b% G- I( `7 ?/ D3 A- X此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。" b* z- U7 G! Q, s* T- C
OK,iptables的ipt_recent module發揮作用了。0 `- l/ Z2 a, u0 h6 {9 e. h6 N
6 {7 K3 y" H y! F9 u6 i% ~
結論:6 {- Z4 x/ K. K4 X. x" G) R
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小, R$ Z# Y+ H2 X# v
(2) iptables設定上較有彈性,可用來防護80,443以外的port
0 F5 I- c# @& P/ V" @% P3 z(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。
' ]2 i( v; l$ X+ c# U! O如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。
3 G8 i7 H; D+ u9 p$ o d' X
8 K+ O, r2 n1 k8 Q$ Q8 x& D, f/ K1 |, k0 p5 b; O$ T% V7 r% [
參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
# F/ V, J8 M8 z/ T" I; }, ^) f* z |
|