Linux 用 netstat 偵測 DDOS 攻擊

Linux 用 netstat 偵測 DDOS 攻擊

Linux 用 netstat 偵測 DDOS 攻擊


資料來源: https://www.opencli.com/linux/linux-netstat-detect-ddos


當主機回應很慢時,除了可能是因為系統的負荷過大,或者系統設定錯誤外,另一個可能性是遭受 DDOS 攻擊。


對於小規模 DDOS 攻擊, 使用 Linux 內建的工具偵測來源 IP 及阻擋可以達到一定的效果, 以下會示範用 netstat 及其他 Linux 內建指令,檢測系統是否遭受 DDOS 攻擊。


用 netstat 列出所有連線, 可以用以下指令:

    netstat -an


以上指令列出相當多的連線, 我們先用 grep 過濾出我們想要的資訊, 然後用 sort 將 ip 排序, 例如我想查看 port 80 的連線, 並將 ip 排序:

    netstat -an | grep :80 | sort


配合 awk, cut, sort, uniq 指令, 可以印出每個 ip 的連線數量, 並用連線數量排序, 以下會針對 ESTABLISHED 連線檢查:

    netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr


針對 port 80 的連線, 將每個 ip 的連線數量印出並進行排序:

    netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n


另一個有用的偵測方法, 是過濾出 SYN_REC 連線, 一般上 SYN_REC 的連線數量很低, 如果過高可能遭受攻擊, 以下指令可以列出當前 SYN_REC 連線數量:

    netstat -np | grep SYN_REC | wc -l


當發現 SYN_REC 連線數量高時, 可以改用 “sort” 將 ip 排序, 而不是列出連線數:

    netstat -np | grep SYN_REC | sort -u


如果連線數量很大, 可以這樣將每個 ip 只印出一次:

    netstat -np | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'


透過以上方法找到來源 ip 後, 例如 ip 是 x.x.x.x, 可以用 route 或 iptables 阻擋攻擊:

    route:
        route delete x.x.x.x

    iptables:
        iptables -A INPUT -s x.x.x.x -j DROP

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *