|
|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 8 v2 Q w' C* T
! p, s1 g. F7 e* h" j8 sLinux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
8 K- v" ^/ g& N, [6 X, h例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"' W/ O9 x' M4 L0 G) S2 z
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:4 m" R) x, S( g
/ `4 p S2 z" \& q- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS; J8 a8 t" r* a" _5 P# x
- 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]"
# z8 f ?, N5 k, g9 k. A - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT 8 m7 o0 d; Y/ X$ j; n6 d
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set # V2 N1 J% n6 u0 G9 v! r9 a6 ~
- iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
% f2 ~. P) W, l* Y3 t& R- o% P8 B' _0 p+ Z# g
如果你看dmesg遇到下列這類錯誤:
& `2 v# d' _/ Shitcount (200) is larger than packets to be remembered (20)
7 [# {) U5 o9 \表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
) S& d" U- o. }( B/ B# O' G' y; B U" Z2 D+ f% T- C8 v1 J* q. P4 V
測試一下吧:. t% ~" f# H ~7 r0 ]- p5 S
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)1 C- @* w9 |+ p, e5 G! @
可以發現在/var/log/message中出現下列訊息:0 l$ z8 i9 _% w5 o# U# q$ l% m& g! n
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
: r- [% v `& K此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。1 U2 ~5 `) M5 X9 N- I" w! g
OK,iptables的ipt_recent module發揮作用了。
# K5 Q6 k) ] L7 w9 S5 Z4 j
( V3 T1 t( \+ c- t! ~結論:
) A% }/ ^9 i1 A7 I9 q3 t- {7 G(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小5 D# Y8 `. M+ U( b( C$ [
(2) iptables設定上較有彈性,可用來防護80,443以外的port" j; x, E; r+ }7 ~
(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。8 z9 Q m" a- A
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。
" f7 d u9 P) W1 w4 F t ]/ m" g
/ P) g$ N% X# ?. Y( ^, T參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/" P0 U h3 A( d
|
|