跳转到内容
搜索文档

扩展规则集

最后更新 查看 MarkdownAgent 设置

扩展规则集建立在最小规则集的基础之上,通过为网络上的不同系统类型创建有针对性的规则。在创建这些规则之前,您必须为每个类别创建 IP 列表

如果您无法导出当前的外围防火墙规则,请考虑识别驻留在 Magic Transit 前缀上的系统类别或用户组。例如:

对于上述每个项目,请考虑它们在允许的互联网访问方面的要求。例如,允许合法流量所需的访问,并阻止其余访问。

创建用于使用 Cloudflare Network Firewall 规则的列表

有关列表的更多信息,请参阅使用规则列表

您还可以通过账户主页上的 Configurations(配置) > **Lists(列表)**从仪表板创建列表。

终端(用户设备)

终端设备不作为服务器运行,这意味着:

  • 它们接收从标准常用端口(例如 80443)发往其临时端口(操作系统为出站连接分配的临时端口,在现代操作系统中通常高于 32768)的流量。
  • 连接向外流动,而不是向内流动,因此不会接收未经请求的入站 TCP 连接。
  • 它们通常只需要客户端 TCP 和 UDP,不需要入站 ICMP。

例如,您可以为通用客户端 TCP 和客户端 UDP 的组合创建一个允许外部 ping 或 traceroute 的列表,并为所有其他协议和流量创建一条一揽子(catch-all)规则。

创建一个名为 Endpoints 的列表,并指定要在规则中引用的终端或用户 IP 地址的列表。

建议的规则

规则 ID:1 描述:允许返回到临时端口的流量(对出站请求的的响应),同时阻止未经请求的入站连接。阻止仅入站 SYN 的流量(这意味着允许 SYN-ACK)。 匹配ip.proto eq "tcp" and ip.dst in $endpoints and tcp.dstport in {32768..60999} and not (tcp.flags.syn and not tcp.flags.ack) 操作:允许

规则 ID:2 描述:终端(客户端)将接收发往临时端口的流量 匹配ip.proto eq "udp" and ip.dst in $endpoints and udp.dstport in {32768..60999} 操作:允许

规则 ID:3 描述:允许流量到 $endpoints 列表中的目标 IP 地址,且 ICMP 类型为:

  • 类型 0 = 回显应答 (Echo Reply)
  • 类型 3 = 目标不可达 (Destination Unreachable)
  • 类型 11 = 超时 (Time Exceeded)

匹配ip.proto eq "icmp" and ip.dst in $endpoints and (icmp.type eq 0 or icmp.type eq 3 or icmp.type eq 11) 操作:允许

规则 ID:10 描述:否则拒绝发往 $endpoints 列表中 IP 的所有流量 匹配ip.dst in $endpoints 操作:阻止

内部路由器/防火墙 IP 地址

请遵循以下针对您的 Magic Transit 前缀上的内部路由器或防火墙接口 IP 地址的最佳实践。

  1. 用您的 IP 地址创建一个 IP 列表,例如 Internal routers
  2. 如果不需要,阻止 ICMP。
  3. 如果设备通过互联网建立了 GRE/IPsec 隧道,请根据需要允许 GRE/ESP。

建议的规则

规则 ID:1 描述:允许有限的入站 ICMP 流量,包括:

  • 类型 0 - 回显应答 (Echo Reply)
  • 类型 3 - 目标不可达 (Destination Unreachable)
  • 类型 8 - 回显 (Echo)
  • 类型 11 - 超时 (Time Exceeded)

匹配ip.proto eq "icmp" and ip.dst in $internal_routers and ( (icmp.type eq 0 or icmp.type eq 3) or (icmp.type eq 11) or (icmp.type eq 8) ) 操作:允许

规则 ID:2 描述:阻止发往这些 IP 地址的所有其他流量 匹配ip.dst in $internal_routers 操作:阻止

Web 服务器

Web 服务器需要仔细考虑必要的流量流。除了 Web 服务器作为客户端运行的流量流之外,还需要用于 Web 服务器功能的流量。

在可能的情况下,允许 Web 服务器所需的目的地 IP 地址和端口,并阻止其他所有内容。除了 Web 流量的端口之外,可能还需要其他服务,例如 NTP/DNS。

以下是建议规则的示例,但您应该仅根据您的特定要求进行更改。例如,如果您没有使用 Cloudflare 第 7 层保护进行代理,并且您期望源自 Web 的流量流向您的 Web 服务器:

  1. 创建一个 IP 列表(例如 web servers),以列出您的 Web 服务器的 IP 地址。
  2. 允许来自互联网的入站 Web 服务器流量。
  3. 允许来自互联网的基础设施或客户端流量流,例如 DNS 和 NTP。
  4. 阻止发往 Web 服务器 IP 地址的所有其他流量。

建议的规则

规则 ID:1 描述:允许来自互联网且带有仅 SYN 或仅 ACK 标志(不是 SYN/ACK)的入站 HTTP/S 流量 匹配ip.proto eq "tcp" and tcp.srcport in {32768..60999} and ip.dst in $web_servers and tcp.dstport in {80 443} and not (tcp.flags.syn and tcp.flags.ack) 操作:允许

规则 ID:2 描述:允许发往 Web 服务器的 DNS 和 NTP 的 UDP 回复 匹配ip.dst in $web_servers and ip.proto eq "udp" and udp.srcport in {53 123} and udp.dstport in {1024..65535} 操作:如有必要则允许,但在受到攻击时禁用

规则 ID:3 描述:一揽子规则,阻止发往 Web 服务器 IP 地址的所有其他流量 匹配ip.dst in $web_servers 操作:阻止

或者,如果您拥有 Cloudflare 第 7 层保护,则可以将 Cloudflare 公共 IP 地址作为源 IP 地址,并允许访问 HTTP/HTTPS 入站流量的目标 IP 地址。该建议有效地取代了上面示例中的规则 1。

Cloudflare 代理流量的建议规则

描述:允许来自 Cloudflare 且带 SYN 或 ACK 的入站 HTTP/S 流量 匹配ip.proto eq "tcp" and ip.dst in $web_servers and tcp.dstport in {80 443} and not (tcp.flags.syn and tcp.flags.ack) and ip.src in {173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22} 操作:允许

非 Web 服务器

根据服务器是期望来自一般互联网的流量,还是仅来自特定用户的流量,限制源。

  1. 如果可能,请根据源 IP 或端口应用规则。
  2. 将允许的目标端口限制为仅需要的端口。
  3. 阻止传入 SYN 到关闭的端口。

建议的规则

  • 目标 IP 地址 非 Web 服务器 且 TCP 目标端口在 <valid ports> 中 — 允许
  • 目标 IP 地址 非 Web 服务器 且 UDP 目标端口在 <valid ports> 中 — 允许
  • 目标 IP 地址 Web 服务器 — 阻止

这篇文档对您有帮助吗?