云服务商元数据访问阻断,iptables禁止访问169

在云服务器上,169.254.169.254 是云服务商提供的实例元数据服务地址,里面通常包含临时密钥、实例 ID、内部网络信息等敏感数据。
一旦应用存在 SSRF 漏洞,攻击者就可能通过这个地址拿到高权限凭证。
所以很多安全基线都要求:用 iptables 禁止访问 169.254 地址段,从源头阻断元数据访问
本文直接用命令演示,零基础也能照做。

动手前需要确认的三件事

第一,确认你要阻断的方向。 如果你的服务器需要向外提供 Web 服务,并担心外部请求利用 SSRF 跳转访问元数据,那重点阻断 OUTPUT 链即可,因为服务器发起的请求都要经过这个链。
如果内网还有其他机器可能直接访问这台服务器的 169.254 地址,可以顺手把 FORWARD 链也加上。

第二,确认 iptables 是否可用。 执行下面命令:

iptables -L -n

能正常输出规则列表就说明已经安装可用。
如果提示 command not found,需要先安装 iptables,不同系统安装命令不同:

# CentOS / RHEL
yum install -y iptables

# Ubuntu / Debian
apt install -y iptables

第三,确认你的云厂商元数据地址。 主流云厂商都使用 169.254.169.254,但个别私有云或 VPC 环境可能使用其他链路本地地址。
为了稳妥,可以直接对整个 169.254.0.0/16 网段做拦截,这样既能覆盖全部可能地址,也避免漏网。

用 iptables 禁止访问 169.254 地址段

1. 查看当前规则,避免冲突

先看一眼现有规则,防止之前已经配置过相关放行:

iptables -L OUTPUT -n -v
iptables -L FORWARD -n -v

如果已经存在 ACCEPT 规则允许访问 169.254,而且优先级更高,那么你新加的 DROP 规则可能不会生效。
后续操作时要注意插入位置。

2. 添加拦截规则

OUTPUT 链最前面插入规则,禁止本机访问整个 169.254 网段:

iptables -I OUTPUT -d 169.254.0.0/16 -j DROP

如果还需要同时阻断转发流量(防止其他机器通过这台服务器跳板访问),再加一条:

iptables -I FORWARD -d 169.254.0.0/16 -j DROP

如果你只希望阻断 169.254.169.254 这一个元数据地址,可以更精准:

iptables -I OUTPUT -d 169.254.169.254/32 -j DROP

注意:这里的 -I 是把规则插入到链的最前面。 如果之前有 ACCEPT 规则放行了这个地址,使用 -I 仍然可以优先拦截。
如果你希望恢复访问,把 -D 换成 -D 即可删除对应规则。

3. 验证规则是否生效

查看规则列表:

iptables -L OUTPUT -n --line-numbers

你会看到类似这一条:

1    DROP       all  --  0.0.0.0/0            169.254.0.0/16

然后尝试访问元数据地址:

curl --connect-timeout 3 http://169.254.169.254/latest/meta-data/

正常情况下,curl 会一直卡住直到超时,不会返回任何内容。
如果能看到数据,说明规则没有生效,需要检查是否插入到了正确位置,或者 iptables 规则顺序有问题。

让规则重启后依然生效

iptables 规则默认保存在内存中,服务器重启后会被清空。
根据不同系统,用不同方式保存:

CentOS / RHEL 7+

iptables-save > /etc/sysconfig/iptables

Ubuntu / Debian:需要先安装 iptables-persistent

apt install -y iptables-persistent
netfilter-persistent save

保存后建议重启一下 iptables 或直接重启服务器测试。
如果你用的是宝塔面板等运维工具,也可以在面板的“安全”功能中添加入站/出站规则,但原理一致,核心还是保证规则持久化。

避坑指南:不要只加规则就算完事

坑 1:阻断后影响正常业务。 某些云产品的初始化脚本、监控组件、验证 Token 的插件会请求元数据服务,比如阿里云云监控、腾讯云自动化助手。
你阻断整个 169.254 网段后,这些组件可能会报错或拉取不到配置。建议在阻断前先检查服务器上是否有依赖云元数据的服务,如果确实需要,可以只阻断 169.254.169.254 的特定端口,或把这些服务的源 IP 加白名单。

坑 2:误删规则导致风险暴露。 排查时建议先执行 iptables -L -n --line-numbers 看清楚规则编号,再用 -D 删除,不要手动清空链。

坑 3:只配 OUTPUT 链不够。 如果你的场景是防护外网 SSRF,通常只需要 OUTPUT 链;
但如果这台服务器同时作为内网网关,流量会走 FORWARD 链,两条链都要加。
判断方法很简单:在你的服务器上执行 curl 测试的是 OUTPUT,从内网其它机器通过这台服务器访问元数据测试的是 FORWARD。

坑 4:IPv6 地址同样需要处理。 部分云厂商的元数据服务也支持 IPv6 访问,比如 AWS 的 fd00:ec2::254
如果你需要彻底阻断,还要在 ip6tables 里加对应规则:

ip6tables -I OUTPUT -d fd00:ec2::254/128 -j DROP

不过目前国内主流云厂商仍以 IPv4 为主,你可以按需配置。

结果验证与判断标准

配置完成后,最终效果可以用三句话验证:

  1. iptables -L OUTPUT -n 能看到对 169.254.0.0/16 的 DROP 规则。
  2. curl http://169.254.169.254/latest/meta-data/ 无法返回任何数据,显示连接超时或拒绝。
  3. 业务系统不受影响,云监控等依赖元数据的功能若出现异常,则按上面坑 1 的处理方式调整。

如果你正在处理云服务商元数据访问阻断的需求,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先检查规则顺序、持久化配置和依赖元数据的系统组件。
对于使用了宝塔或其他面板的机器,记得确认面板自身的防火墙组件是否会覆盖 iptables 规则,避免两者冲突导致配置不生效。

分享到:
上一篇
进程内存窃取风险,公网推理服务禁止debug接口对外开放
下一篇
漏洞应急响应标准流程:检测‑隔离‑修复‑验证‑复盘
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意