解決(防止)DDOS攻擊的另外一種思想

本方案適合做最後的處理方案。bash

在服務器遭到DDOS攻擊後,防火牆、高防盾或者其餘的方案都已經失去了效力,這時運維人員無任何方案能夠處理,而且只能任由DDOS攻擊或關閉服務器時,該方案能夠有限的抵擋大部分DDOS攻擊流量,恢復大部分的生產。服務器

該方案並未成熟。運維

這種方案公司用戶越少,效果越好。tcp

 

環境:目前的技術上對DDOS攻擊沒有太好的解決辦法,理論上的肉機數量能夠無限多,但服務器給的帶寬不可能也不能應對全部的肉雞的攻擊,所以市面上多用高防的盾機來被動的接受來自肉雞的流量,理論上在高性能的盾機都能被肉雞擊倒,所以這種方案算是一種十分被動的解決方案。不少人選擇用封IP的方式來處理DDOS攻擊,這在肉雞數量上的狀況下是一種不錯的解決方案,但肉雞數量一多,與不作任何操做並沒有二樣。性能

 

原理:目前的服務器防火牆的策略基本上對業務端口的訪問不做限制,在遭受DDOS攻擊時,咱們能夠刻意封閉業務端口的訪問,只容許指定IP的訪問,至於指定IP,能夠在日常用腳本收集,固然日常仍是對業務端口的訪問不做限制。spa

 

由於用戶數量佔少數,用戶中肉雞的數量也佔極少數,所以會有少部分用戶被誤封的狀況,可是遠好於全部用戶均沒法訪問。ip

 

舉個栗子:it

我用文件active_ip記錄有效用戶的IPtable

用文件 filter保存正常時候的IPTABLES規則。awk

在正常業務時,用腳本ip_witev2.sh在後臺執行記錄訪問80端口用戶的IP保存在active_ip中。

wite_ip=`awk -F" " '{print $1}' $Active_path`

#!/bin/bash

 

#sync the IP in access log into Active_path.

Add_white()

{

access_ip=`tail -n 150 $Log_path | awk -F" " '{print $1}' | uniq`

wite_ip=`awk -F" " '{print $1}' $Active_path`

 

for i in $access_ip

do

    singel=0

    for k in `awk '{print}' $Active_path`

    do

          [ $i = $k ] && { singel=1; break; }

    done

    [ $singel -eq  0 ] && echo $i >> $Active_path

done

}

 

Log_path="/home/wwwlogs/access.log"

Active_path="/scripts/active_ip"

 

[ -f $Active_path ] || touch $Active_path

 

#judge whether there are new data in acess.log or not.

while true

do

    [ -f $Log_path ] && size1=`stat $Log_path | awk -F" " '/Size/ {print $2}'` && break

    sleep 0.1

done

[ `stat $Active_path | awk -F" " '/Size/ {print $2}'` -le 1 ] &&  Add_white

 

sleep 5

 

在遭受DDOS攻擊(有個判斷的過程及觸發條件)時自動執行切換IPTABLES規則的腳本

ddos_filter.sh 封閉全部的IP

 

#!/bin/bash

 

iptables -D INPUT -t filter -p tcp --dport 80 -j ACCEPT

iptables -D OUTPUT -t filter -p tcp --sport 80 -j ACCEPT

 

activeip_path="/scripts/active_ip"

for i in `awk '{print}' $activeip_path`

do

    iptables -A INPUT -t filter -s $i -p tcp --dport 80 -j ACCEPT

    iptables -A OUTPUT -t filter -d $i -p tcp --sport 80 -j ACCEPT

done

 

DDOS攻擊完畢時(這個觸發方式是怎樣的?)自動切換爲原來的IPTABLES規則。

這就是方案的大體原理。

 

 

 

本人學問不足讀書少,文章遠遠未完善,錯誤的地方和有改正的地方還請各位大佬批評指正,集思廣益,這不正是開源的思想。

相關文章
相關標籤/搜索