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攻擊。3 e- t4 o4 ^1 Y, G' O
例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"
. P, B+ O8 |! @' U; I3 }然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:; G; L8 G- F/ y! N* S
  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
複製代碼
! G1 ^3 ~: n* F5 G3 s* v, y
如果你看dmesg遇到下列這類錯誤:        
" C# X. M2 F/ ?* y$ yhitcount (200) is larger than packets to be remembered (20)   Y- H+ {5 y9 G* N6 ?
表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
! k2 Y7 u: N# n% v
3 m, j; Z0 |7 m4 @; M測試一下吧:3 B- s+ A' w  r0 O% k& H
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)! u9 H# \6 ?' q$ y% z2 i$ T2 ?6 A
可以發現在/var/log/message中出現下列訊息:" a7 [1 z8 `7 W% ~" J
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=07 s, _% O8 \- y2 _
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。
6 X% u8 k" f3 b6 B# Y& M3 OOK,iptables的ipt_recent module發揮作用了。# r( ^% b7 o' U

0 {9 N' [8 O" ?& H2 D, H結論:: ^4 C$ G6 W* [, N
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小
: C$ {* G0 P* a# J2 Q& b2 I' V* \% W. g(2) iptables設定上較有彈性,可用來防護80,443以外的port, F! G. W. r: r- w% H) S
(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。
) @, x9 _* T1 J- N如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。6 t2 \- I1 d6 J4 [5 W. q% ^8 h2 d

5 x9 a: {, D9 [2 J% e$ I( {0 v4 t9 a& [* Z% b' I; [
參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/! C7 v$ b0 R$ C0 M- ]" x; p
. |5 ]1 {* y8 Q# m3 k  m
================================================
. y7 `, i" D2 l偵測可疑IP 的指令:7 ]7 @$ X" u/ o: ?9 f) m9 E# Q
sed 's/ .*//' access.log | sort | uniq -c | sort -n
& a( t$ K, O# q) \  m1 Bperl -ne 'print "$1*\n" if m#^((\d+\.){3})#' access.log | sort | uniq -c | sort -n) }1 P  S3 M7 `& ]





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