Bandwagon伺服器如何放行與屏蔽特定埠
更多語言
更多操作
由於搬瓦工的伺服器架構設計旨在提供最大的靈活性,所以默認情況下未配置外部安全組(Security Group)。這意味著你的伺服器直接暴露在公網環境中。
為了保障你的數據安全,防止惡意掃描和攻擊,建議在系統內部配置防火牆。本教程將教你如何使用Linux 系統中強大且高效的防火牆工具 —— Nftables,來實現埠放行與屏蔽。
注意: 在進行任何防火牆操作前,請務必確保您當前的 SSH 連接埠(默認為 22)已被放行,否則您可能會將自己鎖定在伺服器之外!
什麼是 Nftables?
Nftables 是 Linux 內核的新一代包過濾框架,旨在替代老舊的 iptables。它擁有更高的性能、更清晰的語法以及原子操作支持,是維護伺服器安全的首選工具。(想要深入了解也可以查閱下面提供的維基百科資料)
第一部分:Debian / Ubuntu 系列安裝指南
本節適用於 Debian 10/11/12 及 Ubuntu 20.04/22.04/24.04 等系統。
1. 更新系統組件
在安裝任何軟體之前,記得使用下面命令保持系統源的最新狀態。
sudo apt update && sudo apt upgrade -y

2. 安裝 Nftables
Debian 和 Ubuntu 的倉庫中默認包含 nftables。
sudo apt install nftables -y

3. 啟用並開機自啟
安裝完成後,我們需要啟用服務,使其在伺服器重啟後依然生效。
sudo systemctl enable nftables sudo systemctl start nftables

第二部分:CentOS Stream 系列安裝指南
本節適用於 CentOS Stream 8/9 等系統。 注意: CentOS 默認通常使用 firewalld 作為防火牆前端。為了使用純粹的 nftables,我們需要先禁用 firewalld 以避免衝突。
1. 更新系統組件
sudo dnf update -y
2. 移除 Firewalld (關鍵步驟)
為了防止規則衝突,我們先停止並禁用 firewalld。
sudo systemctl stop firewalld sudo systemctl disable firewalld # 可选:如果你确定不再需要它,可以卸载 sudo dnf remove firewalld -y
3. 安裝 Nftables
sudo dnf install nftables -y
4. 啟用並開機自啟
sudo systemctl enable nftables sudo systemctl start nftables
第三部分:Rocky Linux / AlmaLinux 系列安裝指南
Rocky Linux 和 AlmaLinux 作為 RHEL 的下游發行版,操作邏輯與 CentOS 類似,同樣需要注意清理預裝的防火牆管理工具。
1. 更新系統組件
sudo dnf update -y
2. 清理預裝的 Firewalld
sudo systemctl stop firewalld sudo systemctl disable firewalld # 建议卸载以保持环境纯净 sudo dnf remove firewalld -y
3. 安裝 Nftables
sudo dnf install nftables -y
4. 啟用並開機自啟
sudo systemctl enable nftables sudo systemctl start nftables
第四部分:Nftables 通用教程
無論使用上述哪種系統,Nftables 的配置文件路徑通常統一為 /etc/nftables.conf。我們將通過修改這個文件來實現「默認拒絕所有,僅放行特定埠」的安全策略。
1. 備份默認配置
在修改前,先備份原始文件。
sudo cp /etc/nftables.conf /etc/nftables.conf.bak

2. 編寫安全規則(核心步驟)
使用文本編輯器(如 nano 或 vim)打開配置文件:
sudo nano /etc/nftables.conf

清空文件內容,並複製以下推薦配置模板。這個模板會自動放行 SSH 埠,並拒絕其他非必要的入站流量。
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# 1. 允许本地回环接口 (Localhost)
iifname "lo" accept
# 2. 允许已建立的连接和相关流量 (比如你主动访问外网的返回数据)
ct state established,related accept
# 3. ICMP (Ping) 设置:允许被 Ping (可选,如果不想被 Ping 可改为 drop)
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# 4. === 关键端口放行区 ===
# [必须] 放行 SSH 端口 (默认22,如果你改了端口请修改这里)
tcp dport 22 accept
# [示例] 放行 Web 服务端口 (HTTP/HTTPS)
# tcp dport { 80, 443 } accept
# [示例] 这是一个被屏蔽的端口演示 (由于默认策略是 drop,不写就是屏蔽,但也可以显式拒绝)
# tcp dport 8080 reject
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}

配置詳解:
policy drop;:這是最關鍵的一行。它意味著除了你在下面明確允許的,其他所有流量都會被丟棄。這是最安全的「白名單」模式。tcp dport 22 accept:務必保留此行,否則會斷開 SSH 連接。
3. 應用配置
保存文件後(在 nano 中按 Ctrl+O 回車保存,Ctrl+X 退出),運行以下命令重載配置,使其立即生效:
sudo systemctl reload nftables
如果命令沒有報錯,說明防火牆已成功運行。
第五部分:日常管理與操作
如何放行新的埠?
比如你安裝了一個面板,需要放行 8888 埠。
- 編輯
/etc/nftables.conf。 - 在
chain input中添加一行:tcp dport 8888 accept。 - 運行
sudo systemctl reload nftables。
如何屏蔽特定 IP?
如果您發現某個 IP (例如 192.168.1.100) 在惡意掃描你的伺服器,可以在配置文件中 SSH 規則之前添加:
代碼段
ip saddr 192.168.1.100 drop
如何屏蔽特定埠?
如果你使用的是上述「白名單模式」(Policy Drop),只需要刪除對應的 accept 規則即可自動屏蔽。 如果你使用的是「黑名單模式」(Policy Accept),則需要顯式添加:
tcp dport 3306 drop
最後
通過以上步驟,你已經在沒有安全組的情況下,為你的 VPS 建立了一道堅固的防線。Nftables 的強大之處在於其靈活性,你可以根據業務需求編寫更加複雜的流量轉發和限流規則。