如何使用 UFW 或 firewalld 在 Linux 上阻止特定端口

若要在 Linux 系統上封鎖特定端口,請為要封鎖的連接埠和協定新增防火牆規則。例如,在使用 UFW 的 Ubuntu 系統上,sudo ufw deny 8080/tcp阻止新的 TCP 連線進入 8080 連接埠。在使用 firewalld 的系統上,您可以移除現有的連接埠允許規則或新增明確的拒絕規則。關鍵在於修改系統實際使用的防火牆,而不是混用 UFW、firewalld 和底層 nftables 規則。

在封鎖連接埠之前

首先,確認連接埠號碼以及應用程式使用的是 TCP、UDP 還是兩者都用。 TCP 規則不會自動阻止同一連接埠號碼上的 UDP 連線。您也可以使用以下命令檢查監聽套接字:

sudo ss -lntup

防火牆規則控製網路流量,但不會阻止應用程式監聽本地網路。如果您完全不需要該服務,通常情況下,停止或停用該服務比僅依賴防火牆規則更好。

如果您透過 SSH 連線至目標機器,請在啟用或加強防火牆之前保護您的遠端存取規則。目前的UFW 手冊特別警告說,啟用 UFW 可能會中斷現有的 SSH 連接,並建議先添加所需的 SSH 允許規則。

使用 UFW 屏蔽端口

Ubuntu 文件中將 UFW 列為預設防火牆設定工具。 UFW 通常初始狀態為停用,因此在新增或啟用規則之前,請檢查其狀態。

1. 檢查 UFW 並安全地啟用它

sudo ufw status

如果結果是「是」Status: inactive,並且您想要啟用 UFW,請先允許您所依賴的遠端管理服務。對於標準的 OpenSSH 設定檔:

sudo ufw allow OpenSSH
sudo ufw enable
Linux終端機顯示UFW狀態為非活動狀態,然後啟用UFW防火牆。
在變更 UFW 規則之前,請檢查 UFW 是否處於活動狀態,尤其是在遠端管理的電腦上。

2. 為該連接埠新增拒絕規則

請將此處替換8080為您要屏蔽的連接埠。請指定協議,以確保規則明確無誤:

sudo ufw deny 8080/tcp

對於UDP協議,請使用:

sudo ufw deny 8080/udp

如果應用程式同時使用這兩種協議,則需要新增兩條規則。 UFW 也支援拒絕reject;與靜默拒絕不同,拒絕會通知發送方連線已被拒絕。

Linux 終端機顯示指令 `sudo ufw deny 8080/tcp`,並確認防火牆規則已新增。
UFW 拒絕規則阻止傳入至選定連接埠的 TCP 流量。

3. 核實或刪除UFW規則

sudo ufw status numbered

輸出結果應顯示被封鎖連接埠的DENY IN條目。官方 UFW 語法也支援透過重複該規則來刪除它delete:

sudo ufw delete deny 8080/tcp
Linux 終端機顯示 UFW 編號狀態,TCP 連接埠 8080 被 IPv4 和 IPv6 拒絕。
使用編號狀態輸出確認目標 UFW 規則是否已啟動。

使用 firewalld 阻止端口

如果您的 Linux 系統使用 firewalld,請先找到活動區域:

sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone=public --list-all

public如果您的介面屬於不同的區域,請替換以下內容。如果連接埠 8080 已明確打開,請移除該授權並重新載入永久配置:

sudo firewall-cmd --permanent --zone=public --remove-port=8080/tcp
sudo firewall-cmd --reload
Linux 終端機顯示活動的 firewalld 區域、已移除 TCP 連接埠 8080 以及防火牆已重新載入。
使用 firewalld,在正確的活動區域中進行更改並重新載入永久規則。

如果服務定義仍然間接允許該端口,或者您想要明確阻止該端口,請添加一條詳細的拒絕規則:

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule port port="8080" protocol="tcp" reject'
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-rich-rules

firewalld的豐富規則文件支援連接埠比對reject和drop操作。其firewall-cmd 手冊還解釋了單獨的運行時配置和永久配置。

若要稍後移除該明確 firewalld 阻止規則,請移除相同的富規則並重新載入:

sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule port port="8080" protocol="tcp" reject'
sudo firewall-cmd --reload

確認該連接埠已無法存取。

sudo ss -lntup如果您想查看應用程式是否仍在監聽,請再次執行。然後從相關網路上的另一台機器進行測試。如果安裝了 Netcat,TCP 檢查可能如下所示nc -vz SERVER_IP 8080。請使用與真實用戶端相同的網路路徑進行測試;本機主機測試無法證明外部流量已被封鎖。

如果某項服務絕對不應該對外開放,那麼也應該停用或重新配置該服務本身。防火牆是存取控制層,不能取代移除不必要的監聽器。

留下評論

如何在Linux系統上使用Cameractrls更改網路攝影機設置

如何在Linux系統上使用Cameractrls更改網路攝影機設置

使用 Cameractrls 在 Linux 上變更網路攝影機設定:調整曝光、色彩、減少閃爍和其他支援的控件,然後檢查相容的視訊模式。

如何在 Linux 上安裝 PhpStorm:工具箱、Tar.gz、Snap 和 AUR

如何在 Linux 上安裝 PhpStorm:工具箱、Tar.gz、Snap 和 AUR

在 Linux 系統上,您可以使用 JetBrains Toolbox 或獨立的 tar.gz 壓縮套件安裝 PhpStorm,此外還有 Snap 和 Arch AUR 版本可供選擇。 Java 已預先安裝。

如何在 Linux 系統上將 CD-ROM 備份為 ISO 文件

如何在 Linux 系統上將 CD-ROM 備份為 ISO 文件

在 Linux 上使用 GNOME Disks 或 dd 建立 CD-ROM ISO。識別光碟機,監控複製過程,驗證鏡像,並了解何時損壞的光碟或音訊光碟需要其他工具。

如何在 XFCE 4 上設定雙面板

如何在 XFCE 4 上設定雙面板

為每個顯示器建立一個單獨的 XFCE 4 面板,將第二個面板指派給正確的輸出,調整其位置和大小,並新增所需的啟動器和狀態項目。

如何在Linux上安裝Cisco Packet Tracer

如何在Linux上安裝Cisco Packet Tracer

下載適用於 Ubuntu 64 位元系統的 Cisco Packet Tracer 9.0.1,使用 APT 安裝 DEB 軟體包,在終端機中接受許可協議,然後登入以啟動實驗環境。

如何在Linux系統下使用GIMP摳圖

如何在Linux系統下使用GIMP摳圖

在 Linux 系統上使用 GIMP 去除照片背景:描繪主體,刪除選定的背景,保持透明度,並匯出可重複使用的 PNG 檔案。

免費下載 FlightGear:官方安裝指南

免費下載 FlightGear:官方安裝指南

從官方網站免費下載 FlightGear。比較 Windows、macOS 和 Linux 版本的軟體包,安裝資料文件,即可開始您的首次飛行。

Google Tasks桌面應用程式:如何在電腦上使用

Google Tasks桌面應用程式:如何在電腦上使用

在瀏覽器中開啟 Google Tasks,新增 Chrome 捷徑或應用程式啟動,並透過行事曆和 Gmail 管理有日期的待辦事項。

OKSampler:一款免費、簡單的鍵盤節拍音樂採樣器

OKSampler:一款免費、簡單的鍵盤節拍音樂採樣器

OKSampler 可以將 MP3 片段對應到鍵盤按鍵,並支援音訊循環播放。了解這款經典免費軟體的功能、其舊功能的缺失以及下載前需要檢查的事項。

如何在 Linux 系統上安裝 Wireshark:Ubuntu、Fedora、Arch 等

如何在 Linux 系統上安裝 Wireshark:Ubuntu、Fedora、Arch 等

使用目前軟體包命令在 Ubuntu、Debian、Fedora、Arch 或 openSUSE 上安裝 Wireshark,然後安全地配置即時資料包擷取。