防火墙规则中的连接跟踪状态
如何在 VergeOS 防火墙规则上使用“连接跟踪状态”字段,在不影响出站连接返回流量的情况下阻止新的入站连接。
概述
VergeOS 防火墙规则是有状态的。该 连接跟踪状态 网络规则上的该字段仅匹配所选 conntrack 状态。它最常见的用途是使一个 丢弃 规则阻止 新建 入站连接,而不会同时丢弃 返回流量 属于受保护主机自己发起的连接。
前提条件
熟悉 VergeOS 网络规则.
拥有编辑网络规则权限的用户。
连接跟踪状态字段
该字段可在网络规则的编辑表单中使用。留空可匹配任何状态。
允许的值: 新建, 已建立, 相关, 未跟踪.
新建
连接的第一个数据包——一次未经请求的连接尝试。
已建立
属于已在双向看到的连接的数据包。
相关
conntrack 将其关联到现有连接的新连接(例如,FTP 数据通道和 ICMP 错误)。
未跟踪
被明确排除在连接跟踪之外的数据包。
该字段接受以逗号分隔的多个状态(已建立,相关)以及通过前导 != (!= 新建).
问题:一个会破坏出站流量的丢弃规则
一个公网 IP 往往既用于入站服务,也用作其后方租户或虚拟机的出站 SNAT 地址。一个泛用的 丢弃 针对该目标 IP 的规则会按预期阻止未经请求的入站流量——但它也会丢弃租户自身出站流量的回复,因为这些回复以状态到达同一个公网 IP 已建立.
症状是:租户无法访问互联网,移除拒绝规则后即可修复。
移除丢弃后,已建立的回复就能通过,但这也会重新开放未经请求的入站访问——这正是创建该规则要阻止的内容。不要移除规则;应限定其范围。
修复方法:将丢弃范围限定为新连接
在网络的仪表板上,点击 规则 在左侧菜单中。
选择 丢弃 规则并点击 编辑 在左侧菜单中。
在 连接跟踪状态 字段中输入
新建.点击 提交.
点击 应用规则 在左侧菜单中以使更改生效。
现在,该丢弃规则只匹配新的、未经请求的入站连接。出站连接的返回流量处于状态 已建立,不再匹配该丢弃规则,并继续落到该链末尾的 ct state 已建立,相关 接受.
为什么不需要返回路径的接受规则
VergeOS 为每个网络生成其 输入 和 转发 链,带有 丢弃 策略,并在末尾附有 ct state 已建立,相关 接受 作为最后一行。nftables 自上而下评估规则,而 丢弃 和 接受 是终止性的:放在该末尾接受规则上方且未限定范围的丢弃会在返回流量到达接受之前将其拦截。将丢弃限定为 新建 则允许已建立和相关流量继续传递到末尾的接受——你无需自己添加接受规则。
思维模型: 阻止
新建以锁定未经请求的入站。让已建立和相关流动,这样受保护主机发起的任何连接都能完成。
值得了解
规则顺序很重要。末尾的
已建立,相关 接受是生成链的最后一行;位于其上方且未设置状态的泛用丢弃会吞掉返回流量。同样的范围限定也适用于任何规则,不仅仅是丢弃。例如,将入站 接受 到
新建以控制哪一侧可以发起连接。该
相关状态对具有由助手跟踪的次级流的协议很重要(FTP、某些 VoIP、ICMP 错误);末尾的系统接受规则已涵盖这些。
其他资源
最后更新于
这有帮助吗?