Tcp

如何在 Linux 中關閉埠?

  • September 19, 2017

我對關閉埠有一些疑問,我想我有一些奇怪的事情。

當我使用執行

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)的實用程序是攻擊者的標準做法。此時最好的選擇是製作磁碟的取證副本並從備份中恢復;然後使用副本確定他們進入的方式並將其關閉。

引用自:https://unix.stackexchange.com/questions/140021