系統環境:Centos 6.5 X64
測試完成日期爲2017.6.14 by evan.li
1.安裝 DDoS deflate
[root@host ]# wget http://www.2cto.com/scripts/ddos/install.sh
[root@host ]# chmod 0700 install.sh
[root@host ]# ./install.sh
//彈出版權信息後,在SSH下(xià)鍵入 q , 即可退出版權信息。
2.配置 DDoS deflate .
[root@host ]# vi /usr/local/ddos/ddos.conf
##### Paths of the script and other files
PROGDIR=”/usr/local/ddos”
PROG=”/usr/local/ddos/ddos.sh”
IGNORE_IP_LIST=”/usr/local/ddos/ignore.ip.list” //白(bái)名單
CRON=”/etc/cron.d/ddos.cron”
APF=”/etc/apf/apf”
IPT=”/sbin/iptables”
—————————————————————————-
##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with –cron
##### option so that the new frequency takes effect
FREQ=1
//ddos.sh執行的頻(pín)率,單位是分(fēn)鍾,搭配crontab來執行.
如果你更改了該設置,請執行 /usr/local/ddos/ddos.sh –cron
—————————————————————————-
##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150
//當哪個IP的連接數達到150就加入黑名單;查看連接數你可以執行
#netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
—————————————————————————-
##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=0
//一(yī)般情況下(xià)你是使用iptables來做防火(huǒ)牆,所以這裏你需要将 APF_BAN的值改爲0.
—————————————————————————-
##### KILL=0 (Bad IPs are’nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1
//将非法的的IP加入iptables的INPUT鏈中(zhōng),DROP掉.
—————————————————————————-
##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO="evan"
//事件通知(zhī)人的郵件地址,給evan發一(yī)封郵件,可以改成你的郵箱地址
—————————————————————————-
##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600
//關押黑名單中(zhōng)的IP的時長,阻止被定義爲ddos攻擊者ip與本機通信時間,默認爲600秒
更改白(bái)名單配置
[root@host ]# vi /usr/local/ddos/ddos.sh
在117行,更改此段代碼爲:netstat -ntu | awk '{print $5}' | egrep -o "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}" | sort | uniq -c | sort -nr > $BAD_IP_LIST
注釋掉134行:echo $CURR_LINE_IP >> $IGNORE_IP_LIST
執行腳本
[root@host ]# /usr/local/ddos/ddos.sh --cron
執行後,會生(shēng)成一(yī)個排程文件,内容如下(xià)
[root@host ]# vi /etc/cron.d/ddos.cron
SHELL=/bin/sh
0-59/1 * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1
安裝WEB壓力測試軟件Siege
一(yī)款開(kāi)源的壓力測試工(gōng)具,可以根據配置對一(yī)個WEB站點進行多用戶的并發訪問,記錄每個用戶所有請求過程的相應時間,并在一(yī)定數量的并發訪問下(xià)重複進行。
官方:http://www.joedog.org/
參考文章: https://www.vpser.net/opt/webserver-test.html
[root@host ]# wget http://download.joedog.org/siege/siege-4.0.2.tar.gz
[root@host ]# tar zxf siege-4.0.2.tar.gz
[root@host ]# cd siege-4.0.2
安裝:
[root@host siege-4.0.2]# ./configure
[root@host siege-4.0.2]# make
[root@host siege-4.0.2]# make install
使用
[root@host siege-4.0.2]# siege -c 200 -r 10 -f example.url
-c是并發量,-r是重複次數。 url文件就是一(yī)個文本,每行都是一(yī)個url,它會從裏面随機訪問的。
example.url内容爲:
http://www.baidu.com
http://www.163.com
運行5分(fēn)鍾後,按Ctrl+c 中(zhōng)斷任務,顯示出結果
運行結果說明
Lifting the server siege...
Transactions: 8 hits //完成8次處理
Availability: 53.33 % //53.33 % 成功率
Elapsed time: 1535.51 secs //總共用時
Data transferred: 12.43 MB //共數據傳輸12.43M
Response time: 63.41 secs //響應用時63.41秒:顯示網絡連接的速度
Transaction rate: 0.01 trans/sec //均每秒完成 0.01 次處理:表示服務器後
Throughput: 0.01 MB/sec //平均每秒傳送數據
Concurrency: 0.33 //實際最高并發數
Successful transactions: 122 //成功處理次數
Failed transactions: 7 //失敗處理次數
Longest transaction: 10.46 //每次傳輸所花最長時間
Shortest transaction: 0.00 //每次傳輸所花最短時間
在Siege壓力測試軟件運行時,可用命令查看連接數
執行後,将會顯示服務器上所有的每個IP多少個連接數
[root@host ]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
161 103.235.46.39
10 14.215.177.38
8 14.215.177.37
8 115.239.210.27
6 115.239.211.112
5 62.145.211.15
5 183.131.62.40
1 servers)
1 Address
1 191.96.249.136
查看單個IP的連接數目可以通過如下(xià)命令查看,依次排列:
[root@host ]# netstat -ntu | awk '{print $5}' | egrep -o "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}" | sort | uniq -c | sort -nr
161 103.235.46.39
10 14.215.177.38
8 14.215.177.37
8 115.239.210.27
6 115.239.211.112
5 62.145.211.15
5 183.131.62.40
1 121.11.81.164
1 113.107.57.41
1 106.11.68.13
如果屏蔽後,請用iptables -L -n 命令查看被屏蔽的IP
[root@host ]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 103.235.46.39 0.0.0.0/0
DROP all -- 101.78.18.13 0.0.0.0/0
DROP all -- 101.78.18.4 0.0.0.0/0
DROP all -- 101.99.15.195 0.0.0.0/0
如上,103.235.46.39此IP有161個連接, 被防火(huǒ)牆給DROP掉了。
郵箱會收到如下(xià)的信息
Banned the following ip addresses on Wed Jun 14 15:19:01 CST 2017
103.235.46.39 with 161 connections
如果不想影響到web壓力測試,需要停用排程服務,ddos腳本将不會被執行到
[root@host ]# /sbin/service crond stop
如何删除規則
首先我(wǒ)們要知(zhī)道 這條規則的編号,每條規則都有一(yī)個編号
通過命令 iptables -L -n --line-number 可以顯示規則和相對應的編号
num target prot opt source destination
1 DROP all -- 101.78.18.13 0.0.0.0/0
2 DROP all -- 101.78.18.4 0.0.0.0/0
3 DROP all -- 101.99.15.195 0.0.0.0/0
多了 num 這一(yī)列, 這樣我(wǒ)們就可以 看到剛才的規則對應的是 編号2
那麽我(wǒ)們就可以進行删除了
iptables -D INPUT 2
删除INPUT鏈編号爲2的規則。這樣就可以解除對該IP的封鎖了。
上一(yī)篇:【重大(dà)漏洞預警】Windows兩個關鍵遠程代碼執行漏洞
下(xià)一(yī)篇:40個安全專家需要知(zhī)道的網絡安全數據