如何设置钉钉机器人 IP 白名单防止 webhook 地址被恶意调用

文章导读
在钉钉群机器人设置中开启「IP 地址(段)白名单」功能,仅允许受信任的服务器出口 IP 调用 webhook 地址。该方案适合出口 IP 固定的服务端场景,若服务器使用动态 IP 或未配置白名单直接请求,钉钉接口会返回安全验证失败错误。
📋 目录
  1. 快速处理思路
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

在钉钉群机器人设置中开启「IP 地址(段)白名单」功能,仅允许受信任的服务器出口 IP 调用 webhook 地址。该方案适合出口 IP 固定的服务端场景,若服务器使用动态 IP 或未配置白名单直接请求,钉钉接口会返回安全验证失败错误。

先说结论:开启 IP 白名单是防止 webhook 被恶意调用的有效手段,但必须确保请求源 IP 稳定。

  • 先判断:确认调用 webhook 的服务器是否有固定的公网出口 IP。
  • 优先做:在钉钉群机器人设置中添加该 IP 到白名单列表。
  • 再验证:使用 curl 命令从白名单内外分别测试接口连通性。

快速处理思路

登录钉钉客户端进入目标群聊,点击机器人设置找到安全设置选项,将业务服务器的公网 IP 地址填入白名单保存即可。若服务器位于 NAT 网关后,需填写网关的公网 IP 而非内网 IP。

为什么会这样

钉钉自定义机器人 webhook 地址本身具备一定隐蔽性,但一旦泄露即可被任意调用。IP 白名单机制在 token 验证基础上增加了网络层来源限制,只有命中白名单的请求才会被钉钉服务器接收处理。

分步处理

1. 获取服务器出口 IP:在服务器上执行 curl ifconfig.me 或访问 ipinfo.io 查看当前公网 IP。

2. 进入机器人管理:钉钉群聊右上角设置 -> 智能群助手 -> 找到对应机器人 -> 编辑。

如何设置钉钉机器人 IP 白名单防止 webhook 地址被恶意调用

3. 配置安全设置:在「安全设置」栏选择「IP 地址(段)白名单」,填入上一步获取的 IP 地址。

4. 保存配置:点击保存后,非白名单 IP 发起的请求将立即被拦截。

怎么验证是否生效

在白名单外的机器执行 curl -X POST -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"test"}}' "webhook_url",应返回 errcode 不为 0 的安全验证失败提示。在白名单内服务器执行相同命令,应返回 errcode: 0。

常见坑

1. 云服务器弹性公网 IP 变更:重启实例或释放重绑 IP 可能导致出口 IP 变化,需同步更新白名单。

2. 多出口网络环境:服务器若有多个网卡或经过多层 NAT,需将所有可能的出口 IP 全部加入白名单。

如何设置钉钉机器人 IP 白名单防止 webhook 地址被恶意调用

3. 本地调试受阻:开启白名单后,本地开发环境无法直接调用 webhook,需通过跳板机或临时关闭白名单测试。

常见问题

没有固定 IP 怎么办?

若服务器出口 IP 不固定,建议改用「自定义关键词」安全设置,或在代码层增加签名验证机制。

白名单支持 CIDR 格式吗?

支持,钉钉机器人安全设置允许填写 IP 段,适合整个网段出口固定的场景。

配置后立刻生效吗?

是的,保存配置后安全策略立即生效,无需等待缓存刷新。

参考来源

钉钉开放平台文档 - 自定义机器人接入