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攻擊。
0 q5 U; T7 W$ Z! m- e4 k& j# \  K例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"
3 M! I* p. O4 U1 B( y, r& O+ E然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:- X( d1 }5 S; y/ y- Q
  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
複製代碼

% s& [0 T3 Z" x  p如果你看dmesg遇到下列這類錯誤:        " |! C: z, A! t# z6 M; {
hitcount (200) is larger than packets to be remembered (20)
' s/ z) W3 o: V1 y4 F: F% V) G表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。. \$ A1 {! }) b8 l. ^$ G
0 q) F1 _, S( D& {9 R
測試一下吧:
/ A3 n0 b# `9 N3 m$ K: F" Z& }; c& j先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)9 U$ r  z& L8 {0 H: k
可以發現在/var/log/message中出現下列訊息:$ X) `, l8 K; L# @8 G0 @0 y
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
% ^" M' E( g6 }  {+ q0 J此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。  X" `: f4 y" t$ N3 Z+ a5 u
OK,iptables的ipt_recent module發揮作用了。, [, d1 c: u! K7 O5 Y
" O* a: s' {! G+ a, @1 F4 _
結論:
& Y* H5 ]; M. {' s' u' c% j(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小2 M, [# Q0 \2 m+ S
(2) iptables設定上較有彈性,可用來防護80,443以外的port
! B7 A$ h0 _1 T5 U$ A/ K7 o" _(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。# m' [' V/ Y; ~* X
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。" t. G9 `% Z" q& H6 u/ m

8 l' d. t4 ~' `/ {. E! p$ L+ Z
2 [" l% B8 }: b0 O& |. v參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/% J# K4 d+ ^* Y5 B2 q

3 ]6 h$ Q/ t4 p: l================================================, Z- w/ u& d% v0 ~- q1 d, N
偵測可疑IP 的指令:
  q, {# U9 Z5 k! Nsed 's/ .*//' access.log | sort | uniq -c | sort -n! d3 }$ x9 o9 O) k' a
perl -ne 'print "$1*\n" if m#^((\d+\.){3})#' access.log | sort | uniq -c | sort -n$ S2 ?. {4 W, n* y8 T0 q) I0 ?





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