Featured image of post ddos

ddos

DDOS

伺服器被 DDoS 惹

今天早上把社團的 reverse proxy server 換成 nginx
下午心血來潮看看 log 檔 因為沒有寫好的工具
首先把 log 檔 cp 到我的電腦再來處理


先寫了一個 script 來計算重複的行數

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
# count.sh
declare -A cnt
while read id extre
do
        let cnt[$id]++
done
for id in "${!cnt[@]}"
do
        echo $id ${cnt[$id]}
done

再來用 awkstatus code 是 404 的 ip 挑出來 然後丟給 count.sh 計算每個 ip 有幾個 404 最後再存到 404-ip.txt

1
awk '$9 == 404 {print $1}' access.log | ./count.sh > 404-ip.txt

再來用 sort 來排序剛剛的 404-ip.txt,存到 404-ip-sorted.txt sort 加上 -n 選項讓他以數字順數排序,預設是以 ascii 順序排序 -r 讓他由大到小 -k2 指定以第二欄排序,預設以空白分開,可以用 -t 改變分隔符號

1
sort -n 404-ip.txt -k2 -r > 404-ip-sorted.txt

這時候來看看 404-ip-sorted.txt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ head 404-ip-sorted.txt
91.199.118.175 1329180
91.199.118.212 259477
163.172.12.108 145050
195.154.161.234 142920
195.154.102.22 142450
195.154.102.191 137800
163.172.12.148 132650
62.210.220.48 129248
195.154.102.159 11353
62.210.85.48 11206

哇賽!第一名的 ip 送了一百三十多萬個請求
這份 log 檔是在早上十點多才開始紀錄的
平均每秒 41 個請求 這麼多鐵定是 ddos 我們來看看完整的檔案看看有多少人在 DDoS 我們的 server 嗯,總共十九個破千的
這些通通有問題(其實應該以平均請求數來看,但太複雜了所以以後再補 接下來就接把這幾個 ip ban 掉

1
2
3
$ sudo su
$ cd /etc/nginx/sites-enabled/
$ vi banned-ip.conf

將 ip 貼到文件裡面 在一般模式下執行

1
2
[esc] :%s/^/deny /
[esc] :%s/&/;/
1
2
$ cd ../sites-enabled
$ ln -s ../sites-available

$ nginx -t 確認設定檔沒問題 $ systemctl restart nginx 來重啟伺服器 然後就大公告成了~~ 明天再來看看有沒有問題

Licensed under CC BY-NC-SA 4.0
好想養貓阿~~
使用 Hugo 建立
主題 StackJimmy 設計