52AV手機A片王|52AV.ONE

標題: 針對Web server(port 80)的DDoS攻擊防護,以iptables實作 [打印本頁]

作者: IT_man    時間: 2016-10-8 21:08
標題: 針對Web server(port 80)的DDoS攻擊防護,以iptables實作
Linux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。
7 R* \! m/ Y# ?1 T" A, _) S3 @" k例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"$ W+ `; v' N* H4 Q; ]; }
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:* t' f# ]+ x  o  x5 P0 ^
  1. iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
  2. 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. iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT        
  4. iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set        
  5. iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
; `9 g; o# F  l! Y6 o6 o6 k
如果你看dmesg遇到下列這類錯誤:        / L% W0 d* E% V5 j- d  F
hitcount (200) is larger than packets to be remembered (20) 7 I/ r$ B; {* ~# l, j: l& z
表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
/ I" b9 }7 y1 f, ]6 E3 v" w$ H4 i, s: A: T: M$ D% m- p5 V2 X0 A
測試一下吧:
* r7 m' ~( [" O8 |0 O先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)
, c! u/ q! O* w- P1 u1 L可以發現在/var/log/message中出現下列訊息:7 G. t. f* h0 c' R! u/ y8 e9 D
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=08 Q- X6 O8 b6 ~
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。& X) P  r+ W# \' S# ]- |
OK,iptables的ipt_recent module發揮作用了。- R0 `+ }& G7 h' O: a

# w5 R/ ~; x# @$ t# u結論:
, q. D! ~: z( L" c(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小
# i* h: |: X% g0 N(2) iptables設定上較有彈性,可用來防護80,443以外的port
* A7 i3 r& |- s  K; v" I% M" i! |(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。
  }; b. b: j/ q( ~, _* \4 y如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。2 f, g4 P9 _- C1 p; R

3 B" Z4 Z& r! b. f& X
7 v* J' z8 t4 R參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
  o! ?; Z" H2 g& p8 s" V
& r, K$ T0 g! G================================================
! D% R" m, R. C# _- K偵測可疑IP 的指令:
; X, {% x, e! W5 |' @) ?8 ised 's/ .*//' access.log | sort | uniq -c | sort -n- a/ ~1 [  W# z! R0 b) y
perl -ne 'print "$1*\n" if m#^((\d+\.){3})#' access.log | sort | uniq -c | sort -n
# ]( C& \& H$ ~




歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/) Powered by Discuz! X3.2