|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 ! k1 e# c2 e9 @! X. {% T# _" Y) e
, |+ C k9 m2 B9 pLinux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
$ b( _7 V8 r; f. Y例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]", `: R4 x% p* v/ {1 @
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:/ D) p! n" b. O# G; h
/ N# l% S1 V# t6 F6 Y- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS7 T. z% r* [% \% 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]"0 ^) ~5 n) b$ g& h
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT
1 q5 R' ?' G( K% G3 p - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set 5 |) k% w2 z$ m% h* ?- [9 i1 b
- iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼 0 l6 \$ ^9 B$ \1 ~! i& @7 X; Y
$ ~0 B2 C$ A3 ^8 X( \0 a如果你看dmesg遇到下列這類錯誤:
3 ?( q1 M/ m( r2 _' ], K) f% P+ ]( ]hitcount (200) is larger than packets to be remembered (20) 2 x$ r) k5 G9 \$ t
表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
, e! w' [5 }2 K; O. r n7 i3 n6 @* M# I# R' Q8 }
測試一下吧:* t. V. ~: I* K- Q
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)
5 r' u ?. ^7 x可以發現在/var/log/message中出現下列訊息:* J. q" T$ \2 |3 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: y/ {# u2 l. r3 G! N; \
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。
" G* P$ s4 V8 y4 {/ mOK,iptables的ipt_recent module發揮作用了。( y* C$ f/ |; F& z( `' P0 v+ X0 r
$ o! x8 x+ L7 a
結論:
) R6 l. `- [4 k2 V(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小
# y2 [; f! \; ?5 Q; s(2) iptables設定上較有彈性,可用來防護80,443以外的port/ i" ]7 Y( |! b9 Q2 V
(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。# S' K3 b. i6 \) H5 h
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。
$ z7 L+ {) g/ t, x8 B
7 P: p' Z3 O+ e8 |$ Q. Y3 T5 {4 `# H& X3 g
參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/1 T5 l/ T8 S1 B8 Z- u$ n
|
|