如何在 Linux 中關閉埠?
我對關閉埠有一些疑問,我想我有一些奇怪的事情。
當我使用執行
nmap --top-ports 10 192.168.1.1
它顯示 23/TCP 埠已打開。
但是當我執行
nmap --top-ports 10 localhost
它表明 23/tcp 埠已關閉。
其中哪一個是真的?我想在我的整個系統上關閉這個埠,我該怎麼做?
Nmap 是一個很棒的埠掃描器,但有時你想要更權威的東西。您可以使用該
netstat
實用程序詢問核心哪些程序打開了哪些埠:我@myhost:~$ sudo netstat -tlnp 活動 Internet 連接(僅限伺服器) Proto Recv-Q Send-Q 本地地址 外部地址 狀態 PID/程序名稱 tcp 0 0 127.0.0.1:53 0.0.0.0:* 聽 1004/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 380/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* 聽 822/cupsd tcp6 0 0 :::22 :::* LISTEN 380/sshd tcp6 0 0 ::1:631 :::* 聽 822/cupsd
我給出的選項是:
-t
僅 TCP-l
僅監聽埠-n
不要查找服務和主機名,只顯示數字-p
顯示程序資訊(需要root權限)在這種情況下,我們可以看到它
sshd
正在偵聽任何介面 (0.0.0.0
) 埠 22,並且cupsd
正在偵聽環回 (127.0.0.1
) 埠 631。您的輸出可能顯示telnetd
本地地址為192.168.1.1:23
,這意味著它不會響應環回適配器上的連接(例如你不能telnet 127.0.0.1
)。還有其他工具可以顯示類似的資訊(例如
lsof
或/proc
),但 netstat 是最廣泛可用的。它甚至可以在 Windows (netstat -anb
) 上執行。BSD netstat 有點不同:您必須使用sockstat(1)來獲取程序資訊。獲得程序 ID 和程序名稱後,如果您想關閉埠,就可以開始查找程序並終止它。對於更細粒度的控制,您可以使用防火牆(Linux 上的 iptables)來限制對某些地址的訪問。您可能需要禁用服務啟動。如果 PID 在 Linux 上是“-”,它可能是一個核心程序(例如,這在 NFS 中很常見),所以祝你好運找出它是什麼。
注意:我說“權威”是因為您不受網路條件和防火牆的阻礙。如果您信任您的電腦,那就太好了。但是,如果您懷疑自己被黑客入侵,您可能無法信任電腦上的工具。將標準實用程序(有時甚至是系統呼叫)替換為隱藏某些程序或埠(又名 rootkit)的實用程序是攻擊者的標準做法。此時最好的選擇是製作磁碟的取證副本並從備份中恢復;然後使用副本確定他們進入的方式並將其關閉。