|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 % O$ K0 Q% `) F* E' \# p3 m9 S
. A' [0 a9 |+ ~, [5 P; qLinux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
' y( H: H6 n* {! b% v/ q例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"# r2 m8 M; x: I) e0 ^
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:) o# C0 ]" I- [8 d' X+ d2 ~
8 a1 l+ z: C" T# Z$ a/ m4 Y# v- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS4 m C/ R2 C2 n$ }$ p0 b
- 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]"
3 H/ z+ T7 `9 c6 c# ~2 |* P - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT
# o! T4 n. e" x( r - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set 6 m8 G5 ~7 G! u6 U
- iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
! P$ h, g1 n$ M6 O3 t$ b9 N* g% O' H. i& V8 M) O0 y: Y
如果你看dmesg遇到下列這類錯誤: ( D8 r7 v& ~$ F' L& Q- o" Z9 Q
hitcount (200) is larger than packets to be remembered (20)
, M& J2 A4 b5 P+ M表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
3 l; g. R. M* d
+ N# t9 p3 f0 t3 G! d: l測試一下吧:
; u- F8 h$ \7 U% }3 b% h" U, u先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)- c: Q+ L2 ]: V( W
可以發現在/var/log/message中出現下列訊息:
+ v; W: f3 X, k6 x, ]6 D6 kMay 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# N3 B: Z* S8 Z1 d
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。
5 o$ n" h! }7 a: i6 m& P1 `OK,iptables的ipt_recent module發揮作用了。6 Z8 c5 W- j) i) R* y2 o% @& A
& a# F6 \# X6 R' v! `
結論:$ V$ n3 b2 {- `- y
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小
# M9 P* G( h( Z6 G- b(2) iptables設定上較有彈性,可用來防護80,443以外的port# S$ E7 ]. M% a; F! Q/ B
(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。
+ k4 Y0 r0 K. r! j如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。$ j9 F1 _! p1 ?% R
+ q' q2 n4 W2 s! Y* Q3 I; W, A$ c
參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
1 t6 M! z) S2 a' c3 I2 W |
|