nftables本身不支持单向有状态穿透,因其依赖conntrack实现双向状态跟踪;金融级单向需硬件网闸,linux上仅能通过严格策略(如仅放行established/related入包、限制output发起权限)近似模拟,并须配合内核参数加固。

1. 使用 inet 地址簇统一处理 IPv4/IPv6,启用严格连接跟踪
避免协议分裂导致策略遗漏。启用 ct helper 显式控制协议状态识别:
- 创建双栈表:
nft add table inet gateway - 在 prerouting 链启用连接跟踪:
nft add chain inet gateway prerouting '{ type filter hook prerouting priority -300; }' - 加载 FTP/SIP 等协议 helper(按需):
nft add rule inet gateway prerouting ct state invalid drop
2. 构建“伪单向”输入链:只放行已建立的响应包
INPUT 链不开放任何新连接入口,仅信任 conntrack 认定的 ESTABLISHED/RELATED 流量:
响应式金融公司HTML5网站模板是一款适合提供家族财富管理、节税互助基金、保险投资、节税投资、财务策划和在线投资计划等服务的金融公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
- 定义基链:
nft add chain inet gateway input '{ type filter hook input priority 0; policy drop; }' - 放行合法返回流量:
nft add rule inet gateway input ct state { established, related } accept - 显式拒绝所有 NEW 包:
nft add rule inet gateway input ct state new drop comment "block all inbound initiations"
3. 输出链实施强源约束与协议精控
OUTPUT 链是唯一允许“发起”的出口,但必须绑定业务身份与目的上下文:
- 定义输出链:
nft add chain inet gateway output '{ type filter hook output priority 0; policy drop; }' - 仅允许指定用户(如 uid 1001)或 cgroup v2 路径发起外联:
nft add rule inet gateway output meta skuid 1001 tcp dport 443 accept - 或绑定 systemd 服务单元:
nft add rule inet gateway output @cgroupv2 /system.slice/my-app.service tcp dport 8080 accept - 禁用 ICMP 重定向、源路由等危险选项:
nft add rule inet gateway output ip option lsrr drop
4. 配合内核参数与运行时加固
nftables 规则需底层支撑才能逼近金融级要求:
- 关闭 IP 转发:
sysctl -w net.ipv4.ip_forward=0(确保不成为中继) - 锁定 conntrack 表大小与超时:
sysctl -w net.netfilter.nf_conntrack_max=65536,net.netfilter.nf_conntrack_tcp_timeout_established=3600 - 禁用反向路径过滤宽松模式:
sysctl -w net.ipv4.conf.all.rp_filter=1 - 若使用 cgroup v2,启用
net_cls和net_prio子系统,并将业务进程严格归组










