跳到主内容

nftables 防火墙教程:Ubuntu/Debian VPS 安全规则与回滚

从 SSH 防锁死开始,为 Ubuntu 或 Debian VPS 配置 nftables 入站白名单、IPv6 必需流量、语法检查、持久化和可回滚的上线流程。

GSProber · 主机测评编辑0 阅读
从 SSH 防锁死开始,为 Ubuntu 或 Debian VPS 配置 nftables 入站白名单、IPv6 必需…

nftables 防火墙教程:Ubuntu/Debian VPS 安全规则与回滚

给公网 VPS 加防火墙,最危险的并不是少写一条规则,而是在远程会话里直接启用错误规则,把自己的 SSH 一并挡在门外。本教程以 Ubuntu、Debian 常见服务器为例,给出一套先验证、可回滚、再持久化的 nftables 流程。它适合只开放 SSH、HTTP 和 HTTPS 的基础主机;如果服务器运行 Docker、Kubernetes、面板或 VPN,应先梳理这些程序自动维护的转发与 NAT 规则,再决定如何合并。系统补丁仍是基础,可同时参考Ubuntu VPS 自动安全更新教程

上线前先保住 SSH 入口

先保持当前 SSH 会话不退出,并另开一个终端用于验证。执行 sudo nft list ruleset 保存现状,再用 sudo ss -lntup 确认实际监听端口。若 SSH 不是 22 端口,后面的规则必须替换为真实端口;若通过云厂商安全组访问,还要确认安全组没有与主机规则冲突。

安装工具可以使用 sudo apt update && sudo apt install nftables。不要立即启用服务。先准备 /etc/nftables.conf.new,并用 sudo nft -c -f /etc/nftables.conf.new 做纯语法检查。上线前还应安排自动回滚,例如用独立 root 会话创建一次性任务,在数分钟后恢复已备份的规则;确认新连接正常后再取消回滚。自动任务的基本管理方式可参考systemd 服务自动重启教程,但防火墙回滚脚本应单独验证。

建立最小入站规则集

基础规则集可使用 table inet filter,让同一张表同时处理 IPv4 与 IPv6。input 链设置 type filter hook input priority 0; policy drop;,随后按顺序允许回环接口、已建立或关联连接,再允许必要的 ICMP/ICMPv6,最后开放明确的业务端口。服务器常见端口集合是 { 22, 80, 443 },但只应保留真实需要的端口。

已建立连接规则可写为 ct state established,related accept,回环规则可写为 iifname lo accept。不要粗暴屏蔽全部 ICMPv6,因为邻居发现、路径 MTU 发现等机制依赖它;更稳妥的做法是参考 nftables 官方服务器规则集,允许必要控制报文并对异常流量做限制。若管理入口只有固定地址,可以给 SSH 再增加来源地址条件,但要考虑办公网络地址变化以及 IPv6 管理地址。

校验、加载与新连接验证

语法通过后,先导出当前规则:sudo nft list ruleset > /root/nftables-before-change.conf。然后加载新文件,并立刻从第二个终端建立新的 SSH 连接。新会话成功后,再分别检查网页、DNS、时间同步、软件仓库和监控上报。这里只验证服务是否可达,不应把单次检查当作长期网络质量结论。

查看生效结果可运行 sudo nft -a list ruleset,其中 -a 会显示规则句柄,便于精确删除单条规则。临时修正时优先按句柄修改,不要反复刷新整张表。确认无误后,把已验证文件替换为 /etc/nftables.conf,执行 sudo systemctl enable --now nftables,最后重启一次测试开机恢复。

日志、限速与运维边界

默认丢弃前可以添加带速率限制的日志规则,但不要记录每个被拒绝的数据包,否则日志可能迅速占满磁盘。日志前缀保持固定,方便在 journald 或集中日志平台检索。对 SSH 的连接限制只能降低扫描噪声,不能替代密钥登录、禁用密码认证、及时更新与最小权限。

Docker 等软件可能使用自己的 nftables 或兼容层规则;直接执行 flush ruleset 可能破坏容器网络。生产服务器应在维护窗口先确认现有表、链及其所有者,只调整自己管理的表。每次改动都保留配置版本、变更原因与回滚文件。这样,防火墙才是可审计的配置,而不是只能依靠当前 SSH 会话维持的临时状态。

所属专题:建站VPS专题
教程GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebR…

Cloudflare Workers 免费搭建开源远程桌面完整教程:无需 VPS,支持 WebRTC P2P、D1、KV、R2、浏览器远程控制、Windows 客户端和文件传输

GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebRTC P2P 直连,服务端仅负责 API、身份认证和 WebSocket 信令,不中转桌面视频流,大幅降低服务器带宽成本。项目支持 Cloudflare 免费套餐 部署,也可以使用 Docker 在 VPS 上自托管,内置 Windows 客户端、浏览器控制端、手机远程控制,支持 8 位设备 ID、OTP 一次性密码、永久密码、Ed25519 设备认证、JWT 身份验证、文件传输、剪贴板同步、自动重连 等完整功能。

309 阅读

教程如果你一直想拥有一个属于自己的网盘,但又不想买 VPS、维护数据库或者折腾复杂环境,那么这个基于 Cloudflare…

CloudDisk:基于 Cloudflare Workers 的免费个人网盘,无需 VPS、MySQL,支持 R2+D1+KV 一键部署

如果你一直想拥有一个属于自己的网盘,但又不想买 VPS、维护数据库或者折腾复杂环境,那么这个基于 Cloudflare Workers 的开源项目 CloudDisk 值得看看。整个系统运行在 Cloudflare 免费套餐上,文件存储使用 R2,数据库使用 D1,会话数据使用 KV,不需要 MySQL,也不需要服务器。支持多用户登录、文件夹管理、分享链接、在线预览、Office 文档查看、文本在线编辑、大文件断点续传、协作者权限管理等功能。无论是个人备份、开发者存放代码文件、团队共享资料,还是搭建自己的私有网盘,都可以直接部署到 Cloudflare,一键完成,几乎零维护成本,非常适合独立开发者、个人站长和轻量团队使用。

286 阅读

教程很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安…

Linux 开启 DNS over HTTPS(DoH)教程:使用 Cloudflared + systemd 实现加密 DNS,防污染、防劫持

很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安装 Cloudflare 官方的 cloudflared,并配合 systemd 自启动,就能让整个系统通过 DNS over HTTPS(DoH)进行加密解析。

237 阅读

常见问题

启用 nftables 前最重要的准备是什么?

保留当前 SSH 会话,确认真实管理端口,导出现有规则,并准备经过验证的自动回滚任务;随后用第二个终端测试新连接。

为什么不能直接禁止所有 ICMPv6?

IPv6 的邻居发现和路径 MTU 发现等基础机制依赖 ICMPv6。应允许必要控制报文并针对异常流量限速,而不是全部丢弃。

nftables 规则怎样在重启后继续生效?

把已经通过语法检查和连接验证的规则保存到 /etc/nftables.conf,再启用 nftables systemd 服务,并安排一次可控重启验证。

运行 Docker 的 VPS 可以直接使用这套规则吗?

不能直接照搬。Docker 可能维护转发和 NAT 规则,应先查看完整规则集并确认各表的所有者,避免刷新规则导致容器网络中断。

评价与回复

无需登录;审核通过后公开显示。