Linux 中如何檢查開放的端口
無論你的服務器是用的Linux還是桌面系統,了解系統開放的端口,和正在使用的端口,在各種情況下都會有所幫助。
比如,如果你的服務器中正在運行著 Apache或者Nginx,那么其端口應該為80或者443,可以檢查一下。再比如你可以檢查一下 SMTP、SSH或者其他服務用的是哪個端口。當有新的服務需要開放端口的時候,你需要知道目前已經被占用的,都有哪些端口。
此外,可以檢查一下是否有開放的可用于入侵檢測的端口。
Linux 中有多種檢查端口的方法,本文將介紹兩種。
使用 lsof 檢查當前系統開放的端口
不管你是直接登錄的系統,還是使用 ssh 連接的,都可以使用 lsof 命令來檢查端口:
該命令用于查找用戶使用的文件和進程。上述命令中的選項,包括:
- -i: 如果沒有指定IP地址,那么此選項就會選擇所有網絡文件的列表;
- -P: 禁止將網絡文件的端口號轉換為端口名;
- -n: 禁止將網絡文件的網絡編號轉為主機名。
但是,這也會展示許多計算機并沒有監聽的其他端口。
我們可以通過管道將此輸出傳輸到 grep,并匹配模式 “LISTEN”,如下所示:
這樣就只顯示計算機正在監聽的,以及正在運行的服務所占用的端口。
使用 netcat 命令檢查遠程服務器上的端口
nc(Netcat) 是一個命令行實用程序,使用TCP和UDP協議在網絡計算機之間讀取和寫入數據。
以下是nc命令的語法:
這個工具有一個很實用的 -z 選項,它會讓 nc 命令掃描正在監聽的守護進程,但是不會向端口發送任何數據。
將其與 -v 選項結合,啟動詳細信息,會有詳細信息的輸出。
如下是使用 nc 命令掃描開放的端口:
將上面的 替換為你要檢查的 Linux 系統的IP地址。
至于為什么我會選擇 1 到 65535,那是因為端口的范圍是 1 到 65535。
最后,通過管道將輸出傳到grep,使用 -v 選項可以排除“拒絕連接( Connection refused)”的端口。
這樣就會掃描到計算機上所有開放的端口,這些端口可以被網絡上的其他機器訪問。
以上兩種方法中,lsof 比 nc 速度要快。但是使用 lsof 需要先登錄到系統中,并且具有 sudo 訪問權限。所以,如果你掃描的是你已經登錄到的系統,可以優先選擇 lsof。
nc 命令可以很靈活的掃描端口,而不需要登錄。
以上就是本次分享的全部內容,歡迎討論。