|
|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 ) ]; R/ n- ^+ o# F j# g
. }2 h$ j- s- d- J: D7 j6 \
Linux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
* _4 `3 ~, V4 X" L$ f3 J! s/ f) D例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"
! X4 ]. l3 x1 T然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:, {+ ?4 `" A1 F( } i1 i! P6 |
* ?5 h9 E6 p2 {" T) I6 x- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
! S+ W3 a% R |* e# C2 W - 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 ~! T' T! p Q6 ~9 o - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT
, y! L. @! P7 J8 n5 v) p - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set
3 W' y) I6 V! e - iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
# v) W, y9 e, H9 `& s8 w* l& Z" e/ x" y+ }. y' T# [! x2 g1 E
如果你看dmesg遇到下列這類錯誤:
7 F0 M! J1 d1 X, Uhitcount (200) is larger than packets to be remembered (20) % r1 y w+ S0 Y( ^1 c
表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
# G0 k- [. A4 ?/ N# w' {/ {- A4 s4 }4 N2 b
測試一下吧:, I( c; [1 m- p
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)
6 ~1 c) R5 B! {( _7 p可以發現在/var/log/message中出現下列訊息:
& d) X- K S7 N, k1 d9 S6 c8 [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=03 o. S% ]( j1 P2 R, N+ u6 ^. N! Z
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。 Q3 p9 o$ S# p9 `9 F; |
OK,iptables的ipt_recent module發揮作用了。
5 O- S. D) T) a. W
0 |+ f7 d9 _6 M8 g' j7 N* o結論:0 I4 W/ n! W2 G! V* V
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小
; d- J5 ?- L j" b& ~5 p# i. D. q(2) iptables設定上較有彈性,可用來防護80,443以外的port
+ m- N( K4 J3 H4 I2 y(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。) @4 a, A5 ^" x
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。; l, l6 o. y' [$ |
/ P- X! |. H7 z+ a& Z; M2 ~
: G2 v% X% A6 Q2 j I% Q2 L
參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
) c3 Z3 U0 c2 \ |
|