|
|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯
3 S: {0 A" x( u, f: X/ |1 ^! Z7 w* {& ^( t1 ^" O0 G7 o# `; n
Linux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。! n& E$ j' M) W( k) ]7 ?) }
例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"
' i" Q& g; U& J$ R然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:
4 i( t3 y* J: n
$ j! k9 {6 |, m- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
4 |0 F. J3 u2 S% C$ `% l3 p - 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]"
# [4 C, s2 O* @' l1 ]; i X - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT
5 Z: V* e% G3 a! v4 }2 W: J9 n ] - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set . d' Q" H2 h, g( ]3 |' ?3 C, V, x
- iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
1 C a! |7 x2 Z' ` R
3 [7 x- \% z& R- c7 A+ L/ |# j如果你看dmesg遇到下列這類錯誤:
2 l3 S$ {) X/ K+ O) w4 ^hitcount (200) is larger than packets to be remembered (20) ( g2 r: f$ }) U3 p
表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
8 u$ [* e$ S, O \2 u! `6 w* R2 d/ }$ b3 {% d
測試一下吧:
+ I& B" C2 z1 X& i; F- w& A9 w# R先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)/ _1 e7 I/ p6 \: D! p+ c! s
可以發現在/var/log/message中出現下列訊息:. G; S, p' G4 A) C- e8 c4 [+ b
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, S2 g1 g/ {7 O* e
此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。$ K4 `# b0 {6 i7 p# d5 M
OK,iptables的ipt_recent module發揮作用了。2 v3 D, m X3 V0 E9 p
8 N% P" B2 P/ l$ o+ r7 ~1 I- G, J& n結論:8 F+ i, t. B& M# E: a5 z* C$ n1 q
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小# j4 ?) d0 [: w( y& N6 k( g
(2) iptables設定上較有彈性,可用來防護80,443以外的port$ p9 r( r6 [% i0 X* X) V1 f
(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。) _1 l3 i7 O2 Z$ p; E4 ]1 V5 ~+ i
如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。" h5 C" N! D! q
v& W' V3 J- z6 g1 [
& m. ~1 B& y H6 ^* N參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
) b5 }7 U0 U _. H" s* q j |
|