DigitalOcean Cloud Firewall deny 规则教程:阻止恶意 IP 与规则优先级
DigitalOcean Cloud Firewall 现已支持 deny 规则。本文说明 deny 与 allow 的优先级、控制台和 API 配置、protocol all 限制及上线前验证方法。
DigitalOcean 于 2026 年 8 月 4 日为 Cloud Firewalls 增加了 deny 动作。过去主要通过允许列表开放必要流量,现在还可以在较宽的允许范围中明确拒绝已知恶意 IP 或网段,减少为了处理单个来源而重写整套规则的成本。
本文聚焦新 deny 规则的配置方法、优先级、API 限制和上线检查。Cloud Firewalls 是作用于 Droplet 网络边界的有状态防火墙,不需要在服务器里安装额外软件。
核心结论
deny的优先级高于allow,即使两条规则来自绑定到同一 Droplet 的不同防火墙。- 控制台和 DigitalOcean API 已支持
action: deny;当前doctl尚不能设置规则的action字段。 - 拒绝全部协议时可以使用
protocol: all,并省略端口或把端口写为0。 - 没有匹配到允许规则的流量仍会被默认拒绝,因此不需要为“拒绝其他全部流量”再创建一条 deny 规则。
什么时候适合使用 deny 规则?
典型场景是保留一条面向较大来源范围的允许规则,同时阻止其中少量已确认有风险的地址。例如,应用需要向公网开放 HTTPS,但某个来源持续产生恶意请求时,可以添加针对该地址的 deny 规则,而不必把原来的公网允许范围拆成多个网段。
Cloud Firewall 工作在网络层,不能根据 X-Forwarded-For、User-Agent 等 HTTP 请求头过滤流量。如果应用位于负载均衡器、反向代理或 CDN 后面,应确认防火墙实际看到的源地址,并在应用层或边缘层补充相应策略。
在控制台创建 deny 规则
- 登录 DigitalOcean 控制台,进入 Networking → Firewalls,打开已有防火墙或创建新防火墙。
- 在 Inbound Rules 或 Outbound Rules 中添加自定义规则。
- 将 Action 选择为 Deny,再设置协议、端口以及来源或目标。
- 确认防火墙绑定的 Droplet 或标签范围,保存后从未被阻止的管理地址重新测试业务和 SSH。
如果同一个 Droplet 绑定了多个 Cloud Firewalls,需要把它们视为一套共同生效的策略:任何匹配的 deny 规则都会覆盖 allow 规则。上线前应同时审查所有关联防火墙,避免规则分散导致误判。
使用 API 添加 deny 规则
下面用文档保留地址 203.0.113.5 演示拒绝单个来源的全部协议。请替换防火墙 ID 和地址,并通过环境变量提供令牌,不要把令牌写进脚本或版本库。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"inbound_rules":[{"protocol":"all","ports":"0","sources":{"addresses":["203.0.113.5"]},"action":"deny"}]}' \
"https://api.digitalocean.com/v2/firewalls/$FIREWALL_ID/rules"
成功添加或删除规则时,API 返回 HTTP 204。如果省略 action,规则按 allow 处理。需要自动化 deny 规则时应直接调用 API;不要假设当前 doctl 已支持该字段。
规则优先级与协议限制
| 检查项 | 行为 |
|---|---|
| deny 与 allow 同时匹配 | deny 生效 |
| 规则位于不同防火墙 | 只要作用于同一 Droplet,deny 仍优先 |
| 未匹配任何允许规则 | 默认拒绝 |
| deny 使用全部协议 | 可设置 protocol: all |
| allow 使用全部协议 | 需要分别创建 TCP、UDP 或 ICMP 规则 |
容量和运维限制
- 每个防火墙的入站与出站规则合计最多 50 条,deny 规则也计入总数。
- 所有 deny 规则中的来源或目标条目合计最多 1000 个。
- 新增规则不会主动终止已经建立的连接,验证时要创建新连接,必要时等待旧连接结束。
- Cloud Firewall 过滤发生在流量到达资源之前,因此当前不提供被拒流量的防火墙日志。
安全上线检查清单
- 先记录现有允许规则、绑定资源和可用的紧急管理入口。
- 使用精确的单个 IP 测试,再按需求扩大到网段;不要从未经确认的宽网段开始。
- 从被拒来源建立新连接,确认目标端口不可达;再从合法来源验证页面、API、SSH 和监控。
- 检查同一 Droplet 上的所有防火墙,确认没有更宽的 deny 规则误伤业务。
- 把规则用途、负责人和复查日期写入变更记录,定期移除已经失效的封禁地址。
官方资料与下一步
进一步配置前,请以 DigitalOcean Cloud Firewall 规则文档、Cloud Firewalls 限制说明和 DigitalOcean Release Notes为准。
如果还没有 Cloud Firewall,可前往 DigitalOcean Cloud Firewalls 产品页了解功能并从控制台创建防火墙。建议先在测试 Droplet 上验证规则,再逐步应用到生产标签。
