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