Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 連接埠狀態查看與關閉完整指南

編輯:Linux 教學

核心觀念:連接埠依附於進程

連接埠並非獨立存在,而是由進程開啟/關閉動態綁定。進程啟動 → 連接埠開放;進程結束 → 連接埠釋放。因此「關閉連接埠」本質上是「終止持有該連接埠的進程」或「以防火牆規則封鎖存取」。

查看開放連接埠與對應進程

方法一:netstat(經典工具)

netstat -anp
  • -a:顯示所有連線與監聽埠
  • -n:以數值顯示 IP/埠號(不解析服務名)
  • -p:顯示 PID 與程式名稱(需 root 權限)

提示:可開啟兩個終端機,一個跑 netstat -an,另一個跑 netstat -anp,對照埠號與服務名。

方法二:lsof(更精準)

lsof -i :$PORT

直接列出佔用指定埠號的進程詳細資訊。

方法三:nmap(掃描本機,最可靠)

sudo nmap -sT -O localhost

可發現 netstat 可能漏掉的隱藏埠口。

輔助查詢:/etc/services

查閱標準埠號與服務名稱對照表。

關閉/封鎖連接埠的兩大策略

策略一:防火牆層面封鎖(推薦,持久化)

# 封鎖 TCP 進入方向
sudo iptables -A INPUT -p tcp --dport $PORT -j DROP
# 封鎖 TCP 輸出方向
sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP

搭配 iptables-save 或 firewall-cmd --permanent 使規則重開機生效。

策略二:終止對應進程(即時生效,但進程重啟後埠口復活)

# 1. 找出 PID
netstat -anp | grep ssh
# 輸出範例:tcp 0 0 127.0.0.1:2121 0.0.0.0:* LISTEN 7546/ssh

# 2. 強制終止
kill -9 7546

服務層面管理

若該埠口由系統服務開啟(如 sshd、httpd),應使用服務管理工具永久停用:

systemctl stop sshd
systemctl disable sshd    # 開機不自動啟動

或透過 chkconfig(舊版系統)查看/管理各執行等級的服務啟動狀態。

總結建議

  • 優先使用 lsof -i :PORT 或 ss -ltnp(現代替代 netstat)定位進程。
  • 長期封鎖請配置防火牆規則;臨時測試可 kill 進程。
  • 定期稽核開放埠口,關閉非必要服務,縮減攻擊面。
Copyright © Windows教程網 All Rights Reserved