Linux 網絡連線排查教學:netstat 同 ss 實戰用法

Linux 系統管理必學:用 netstat 同 ss 查網絡連線 好多時部 server 慢、Port 俾人佔住、又或者懷疑俾人橫向移動,第一件事就係睇下「而家有咩連線」。今日同大家實戰一次,用兩個最常用嘅工具:`netstat` 同埋佢個接班人 `ss`。 點解要識睇網絡連線? 無論你做系統管理、網絡安全定係日常排查,掌握「邊個 Process 用緊邊個 Port、連去邊個 IP」係基本功夫。...

Linux 系統管理必學:用 netstat 同 ss 查網絡連線

好多時部 server 慢、Port 俾人佔住、又或者懷疑俾人橫向移動,第一件事就係睇下「而家有咩連線」。今日同大家實戰一次,用兩個最常用嘅工具:`netstat` 同埋佢個接班人 `ss`。

點解要識睇網絡連線?

無論你做系統管理、網絡安全定係日常排查,掌握「邊個 Process 用緊邊個 Port、連去邊個 IP」係基本功夫。舉個例:你發現部機 CPU 好高,一查先發現原來有個不明 Process 對外傳緊資料 —— 呢啲就係靠睇連線先發現到嘅異常。

`netstat` 係老牌工具,幾乎每部 Linux 都有;而 `ss` 就係新一代,讀取數據係直接喺內核度拎,速度快好多,特別係喺連線數成千上萬嘅高負載機上面,表現差天共地。

netstat 基本用法

先睇下有咩 TCP 連線:

netstat -tulpn

拆開睇啲 flag 有咩用:

– `-t`:只顯示 TCP
– `-u`:只顯示 UDP
– `-l`:只顯示「正在監聽」嘅 Port
– `-p`:顯示係邊個 Process 用緊(要 root 先睇到其他用戶嘅 Process)
– `-n`:唔做 DNS 反查,直接顯示 IP,快好多

輸出大概係咁:

Proto Recv-Q Send-Q Local Address   Foreign Address  State       PID/Program name
tcp   0      0      0.0.0.0:22      0.0.0.0:*        LISTEN      1234/sshd
tcp   0      0      127.0.0.1:3306  0.0.0.0:*        LISTEN      5678/mysqld

見到 `0.0.0.0:22` 即係 SSH 對外全部介面都監聽,`127.0.0.1:3306` 即係 MySQL 淨係俾本機用 —— 呢個係安全上一個好重要嘅分別。

ss 係更好嘅選擇

`ss` 用法同 `netstat` 差唔多,但係預設輸出更精簡,而且參數更直觀:

ss -tulpn

查全部已建立連線:

ss -tn state established

想搵邊個 Process 連去邊個外部 IP:

ss -tnp | grep ESTAB

一個實用技巧:如果你想知某個 Port 俾邊個 Process 霸住,例如 8080:

ss -tlnp | grep :8080

實戰排查:Port 俾人佔用點算

假設你想起個服務但發現 Port 已用。步驟好簡單:

1. 查邊個 Process 用緊:

ss -tlnp | grep :8080

2. 記低 PID(假設係 9999),確認下佢係咩嚟:

ps -p 9999 -o pid,cmd

3. 如果確認可以殺,先優雅咁終止:

kill 9999

4. 唔得先強制:

kill -9 9999

安全監控角度

由防禦角度睇,建議定期執行呢條,睇下有冇可疑嘅對外連線:

ss -tnp state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn

呢條會幫你統計連去邊啲外部 IP 最多次數,一眼就見到有冇異常流量。

總結

🔗 參考資料:NVD NIST 漏洞資料庫

`ss` 基本上已經取代 `netstat`,速度更快、輸出更準。但兩個都值得識,因為舊系統可能淨係得 `netstat`。最緊要係睇熟 `Local Address` 有冇對外監聽(`0.0.0.0`),以及有冇不明 Process 對外建立連線 —— 呢兩樣係最基本嘅資安排查功夫。

#ssh #server #Linux #安全 #IT教學

Linux 網絡連線排查教學:netstat 同 ss 實戰用法 - 文章重點速覽 infographic