在 Linux 使用過程中,如果需要了解當前系統(tǒng)開放了哪些端口,及這些端口的關聯(lián)進程和用戶,可以通過 netstat 命令進行查詢。
netstat 命令各參數(shù)說明如下:
-t:指明顯示 TCP 端口 -u:指明顯示 UDP 端口 -l:僅顯示監(jiān)聽套接字 -p:顯示進程標識符和程序名稱,每一個套接字/端口都屬于一個程序。 -n:不進行 DNS 輪詢,顯示 IP (可以加速操作)
常用的 netstat 命令組合
netstat -na 該命令將顯示所有活動的網(wǎng)絡連接。 同時,還可以結合使用 grep、wc、sort 等 linux 命令來分析系統(tǒng)中連接情況,查看連接數(shù)狀況,判斷服務器是否被攻擊。
netstat -an | grep :80 | sort 顯示所有 80 端口的網(wǎng)絡連接并排序。這里的 80 端口是 http 端口,所以可以用來監(jiān)控 web 服務。如果看到同一個 IP 有大量連接,則判定該 IP 疑似存在單點流量攻擊行為。
netstat -n -p|grep SYN_REC | wc -l 統(tǒng)計當前服務器有多少個活動的 SYNC_REC 連接數(shù)。正常來說這個值很。ㄐ∮ 5)。 說明:當有 DDos 攻擊或時,該值可能會非常高。但有些并發(fā)很高的服務器,該值也確實很高,因此該很高并不能說明一定是被攻擊所致。
netstat -n -p | grep SYN_REC | sort -u 列出所有連接過的 IP 地址。
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}' 列出所有發(fā)送 SYN_REC 連接節(jié)點的 IP 地址。
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 計算每個主機連接到本機的連接數(shù)。
netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 列出所有連接到本機的 UDP 或者 TCP 連接的 IP 數(shù)量。
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr 檢查 ESTABLISHED 連接并且列出每個 IP 地址的連接數(shù)量。
netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1 列出所有連接到本機 80 端口的 IP 地址及其連接數(shù)。80 端口一般是用來處理 HTTP 網(wǎng)頁請求。
netstat -antp | awk '$4 ~ /:80$/ {print $4" "$5}' | awk '{print $2}'|awk -F : {'print $1'} | uniq -c | sort -nr | head -n 10 顯示連接到 80 端口連接數(shù)排名前 10 的 IP,并顯示每個 IP 的連接數(shù)。如果看到同一個 IP 有大量連接,則判定該 IP 疑似存在單點流量攻擊行為。
如何停止端口占用
可以通過如下步驟來停止端口占用:
1.查找端口占用的進程 使用如下命令來查看(以查看9000端口為例):netstat -antp | grep 9000 示例輸出: 
2.可以看到 PID 為 1070 的進程占用了這個端口。 3.停止相應進程即可。
|