Linux 用 netstat 偵測 DDOS 攻擊

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

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

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

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

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


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

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

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

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

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

route:

iptables:


Leave a Reply