如何从基础到高级管理防火墙和 nftables?
防火墙管理和设置 nftables 对于任何系统管理员、DevOps工程师或服务器所有者来说,这都是至关重要的。本指南涵盖了从基础到高级场景的技术和操作术语,并提供了可操作的示例和配置文件。.
nftables 的基本概念
nftables 要设计规则集,您需要熟悉某些特定组成部分:
- 家庭协议族(例如 互联网 用于同时使用 IPv4 和 IPv6,ip、ip6、arp、桥接)。.
- 桌子:规则容器(例如: 互联网过滤器).
- 链:具有钩子、类型(输入、转发、输出)和优先级的规则链。.
- 规则:条件和操作(接受、丢弃、拒绝、计数、记录)。.
- 设置/地图用于保存 IP 地址、端口或值的集合,以便快速匹配。.
- 连接轨道:跟踪连接状态(已建立、相关、新建、无效)。.
为什么选择 nftables?
选择的主要原因 nftables 其中包括:
- 同时支持 IPv4 和 IPv6 使用家庭 互联网.
- 性能更佳 以及这种可能性 原子替换 安全加载规则集。.
- 支持 设置超时 和 地图 适用于高级NAT。.
- 通过新发行版中的兼容层实现与iptables的兼容性。.
快速入门:安装、查看和保存规则
用于检查、加载和保存规则集的基本命令:
nft --version
nft list ruleset
nft -f /etc/nftables.conf
nft list ruleset > /etc/nftables.conf
systemctl enable --now nftables实际示例:基本规则集(适用于 Linux 服务器)
建议使用以下 /etc/nftables.conf 文件: 互联网 同时支持 IPv4 和 IPv6:
table inet filter {
set allowed_ssh {
type ipv4_addr; flags timeout;
}
chain input {
type filter hook input priority 0;
policy drop;
# loopback
iif "lo" accept
# established/related
ct state established,related accept
# ICMP/ICMPv6
ip protocol icmp accept
ip6 nexthdr ipv6-icmp accept
# Allow SSH with rate limit & whitelist
tcp dport 22 ct state new limit rate 3/minute accept
ip saddr @allowed_ssh accept
# HTTP/HTTPS
tcp dport { 80, 443 } ct state new accept
# DNS
udp dport 53 accept
tcp dport 53 accept
# log and drop others
counter log prefix "nft-drop: " flags all drop
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}解释: 此基本规则集允许环回、现有连接、SSH(有速率限制)、HTTP/HTTPS 和 DNS,并记录其余流量,丢弃其余流量。. 设置允许的 SSH 适用于设置IP白名单并设置超时时间。.
管理集合和临时块
创建和管理白名单或黑名单集非常有用。例如:
nft add element inet filter allowed_ssh { 203.0.113.5 timeout 1h }
nft list set inet filter allowed_ssh要暂时阻止攻击者,请设置一个标志 暂停 创建并添加特定时间段内的IP地址。.
NAT、端口转发和伪装
示例:VPS 使用私有 IP 地址发布多个服务,其 NAT 配置如下:
table ip nat {
chain prerouting {
type nat hook prerouting priority 0;
tcp dport 2222 dnat to 10.0.0.10:22
tcp dport 8443 dnat to 10.0.0.20:443
}
chain postrouting {
type nat hook postrouting priority 100;
oif "eth0" masquerade
}
}笔记: 在具有多个地址的云架构中,出口流量应使用地址伪装或源地址转换 (SRC NAT)。对于 IPv6,应使用适当的 DNAT 或 CIDR 映射。.
应对DDoS和SYN攻击
nftables 具有速率限制和流表功能,可用于减轻攻击的影响。.
# allow limited number of new SYNs per second
tcp flags syn ct state new limit rate 10/second burst 20 accept
# synproxy can be used in extreme cases (kernel feature)
# nftables can match and direct traffic to synproxy or other mitigations对于大规模攻击,防火墙服务器(nftables)与一个 网络防DDoS层 最佳方法是在恶意流量到达服务器之前将其过滤掉。.
日志记录和监控规则
用于监控的实用工具和命令:
- 显示每条规则的计数器: nft 列表规则集.
- 启用带前缀的日志记录和速率限制:
nft add rule inet filter input tcp dport 22 counter log prefix "ssh-drop: " limit rate 10/minute drop其他工具: journalctl -f -u nftables, tcpdump, tshark, , 和 NFT监视器.
实用安全提示
一些实用且重要的建议:
- 务必做好备份: 部署前,输出 nft 列表规则集 节省。.
- 使用原子加载: nft -f /etc/nftables.conf 以原子方式加载文件。.
- 防止 SSH 锁定: 为您的 IP 设置临时接受规则,或使用外部控制台。.
- 自动撤销脚本: 进行敏感更改时,如果未确认,请设置自动回滚。.
不同应用场景的实用技巧
适用于 WordPress 和网站管理员
仅开放必要端口(80/443/22)。对登录表单和 XML-RPC 请求设置速率限制,并创建一组惩罚 IP 地址以防止暴力破解。建议结合使用 CDN 和 WAF。.
面向程序员和DevOps
来自家人 互联网 支持 IPv4/IPv6 并行部署。将规则存储在版本控制系统 (VCS) 中,并使用持续集成/持续交付 (CI/CD) 实现自动化部署。使用文件上传和快速回滚功能测试变更。.
交易者专用(用于交易的VPS)
选择靠近经纪商或交易所服务器的位置以获得最低延迟。限制入站和出站流量,仅允许必要的 IP 地址访问,并使用白名单机制防止端口在更新期间被关闭。.
适用于游戏玩家(游戏VPS)
打开游戏所需的 UDP 端口,并优化 UDP 的连接跟踪超时设置。如果需要使用 NAT,请使用流表以获得更佳性能,并选择低延迟的服务器位置。.
适用于人工智能和GPU云
仅允许特定 IP 地址访问管理端口(SSH、Kubernetes API)。在分布式环境中,定义节点间的规则并检查连接跟踪性能。建议使用私有网络和 BGP/私有 VLAN 以确保安全性和高吞吐量。.
实施和维护方面的实用技巧
以下是一些维护过程中的实用技巧:
- 在进行任何更改之前,务必备份规则集。.
- 使用 原子替换 和 nft -f /etc/nftables.conf.
- 在进行敏感更改之前,请为管理 IP 设置临时允许规则。.
- 设置 cron 或 systemd-timer,以便在未收到确认时自动回滚。.
工具和调试
调试和监控的关键工具:
- nft 列表规则集
- NFT监视器 / NFT 监控跟踪
- ss-tunlp 显示端口
- 连接线 -L 来自 conntrack-tools 软件包
- tcpdump 或者 tshark 用于数据包捕获
结论和实用建议
nftables 是一款功能强大的工具,它使防火墙管理变得现代化、快速且灵活。使用该系列产品,您可以轻松实现防火墙管理。 互联网通过设置、速率限制和连接跟踪,您可以创建一个有效的保护层,适用于 Web 服务器、VPS 交易、游戏和 GPU 云。.
除了服务器配置之外,结合 CDN、DDoS 防护和 BGP 等网络服务(这些服务在全球 85 多个地点提供),安全性和可用性将提升到更可靠的水平。.









