扩展规则集建立在最小规则集的基础之上,通过为网络上的不同系统类型创建有针对性的规则。在创建这些规则之前,您必须为每个类别创建 IP 列表。
如果您无法导出当前的外围防火墙规则,请考虑识别驻留在 Magic Transit 前缀上的系统类别或用户组。例如:
对于上述每个项目,请考虑它们在允许的互联网访问方面的要求。例如,允许合法流量所需的访问,并阻止其余访问。
有关列表的更多信息,请参阅使用规则列表。
您还可以通过账户主页上的 Configurations(配置) > **Lists(列表)**从仪表板创建列表。
终端设备不作为服务器运行,这意味着:
- 它们接收从标准常用端口(例如
80或443)发往其临时端口(操作系统为出站连接分配的临时端口,在现代操作系统中通常高于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
操作:阻止
请遵循以下针对您的 Magic Transit 前缀上的内部路由器或防火墙接口 IP 地址的最佳实践。
- 用您的 IP 地址创建一个 IP 列表,例如 Internal routers。
- 如果不需要,阻止 ICMP。
- 如果设备通过互联网建立了 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 服务器所需的目的地 IP 地址和端口,并阻止其他所有内容。除了 Web 流量的端口之外,可能还需要其他服务,例如 NTP/DNS。
以下是建议规则的示例,但您应该仅根据您的特定要求进行更改。例如,如果您没有使用 Cloudflare 第 7 层保护进行代理,并且您期望源自 Web 的流量流向您的 Web 服务器:
- 创建一个 IP 列表(例如 web servers),以列出您的 Web 服务器的 IP 地址。
- 允许来自互联网的入站 Web 服务器流量。
- 允许来自互联网的基础设施或客户端流量流,例如 DNS 和 NTP。
- 阻止发往 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 且带 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}
操作:允许
根据服务器是期望来自一般互联网的流量,还是仅来自特定用户的流量,限制源。
- 如果可能,请根据源 IP 或端口应用规则。
- 将允许的目标端口限制为仅需要的端口。
- 阻止传入 SYN 到关闭的端口。
目标 IP 地址 非 Web 服务器 且 TCP 目标端口在 <valid ports> 中 — 允许目标 IP 地址 非 Web 服务器 且 UDP 目标端口在 <valid ports> 中 — 允许目标 IP 地址 Web 服务器 — 阻止