当AI智能体的"耳朵"向世界敞开,每一次未授权的对话都是一扇敞开的门
引言:频道的安全悖论
OpenClaw的核心魅力在于"无处不达"------你可以通过Telegram、WhatsApp、钉钉、飞书等日常通讯工具,随时随地指挥家中的AI代理执行任务。然而,这份便利也带来了最严峻的安全挑战:如何确保只有你本人能向AI下达指令?
工信部在最新的安全预警中明确指出:"若对接即时通讯软件,建议仅允许本人或已授权的可信人员访问。"-9 CNCERT发布的《OpenClaw安全使用实践指南》更是将"身份认证与访问控制"列为普通用户安全防护的第一要务-9。
本文将深入解析OpenClaw频道接入安全的核心机制,提供一套覆盖DM策略、群组防护、配对机制的完整防护方案。
一、核心安全模型:谁可以说话?
1.1 三层访问控制架构
OpenClaw的频道安全由三个层次构成,层层递进:
┌─────────────────────────────────────────────────────────┐
│ 第一层:DM策略 │
│ 决定谁可以和你私聊(pairing/allowlist/open/disabled) │
└─────────────────────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ 第二层:群组策略 │
│ 决定哪些群组允许机器人介入(allowlist/disabled) │
└─────────────────────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ 第三层:提及限制 │
│ 群组中是否需要@提及才能触发(requireMention) │
└─────────────────────────────────────────────────────────┘
1.2 私信(DM)策略详解
OpenClaw支持四种DM策略,安全等级从高到低排列-7:
| 策略 | 配置值 | 行为 | 安全等级 | 适用场景 |
|---|---|---|---|---|
| 配对模式 | pairing | 未知发送者收到配对码,需主人批准后才能对话 | ⭐⭐⭐⭐⭐ | 默认推荐,个人使用首选 |
| 白名单模式 | allowlist | 仅允许allowFrom中指定的用户ID | ⭐⭐⭐⭐ | 确定用户ID的场景 |
| 开放模式 | open | 允许所有人对话(需配置allowFrom: ["*"]) | ⭐ | 测试环境,绝对不推荐生产 |
| 禁用模式 | disabled | 完全禁用DM | - | 仅需群组功能的场景 |
默认安全策略 :OpenClaw将DM策略默认设置为pairing模式,这是最安全的配置-7。
二、私信防护:配对机制详解
2.1 配对模式的工作原理
配对(Pairing)是OpenClaw最核心的身份验证机制。当未知用户向你私聊机器人时,系统会自动触发以下流程-6:
- 生成配对码:系统生成一个8字符的随机配对码(大写字母+数字,排除0/O/1/I等易混淆字符)
- 发送配对请求:机器人自动向该用户发送配对码
- 用户消息暂存:用户发送的消息不会被AI处理
- 等待主人批准:你需要通过CLI命令批准该请求
- 生效:批准后,该用户被加入允许列表,后续消息正常处理
2.2 配对码的生命周期
| 属性 | 配置 | 说明 |
|---|---|---|
| 有效期 | 1小时 | 配对码过期后需重新申请-6 |
| 重试频率 | 约1次/小时/发送者 | 避免骚扰-6 |
| 待处理上限 | 3个/渠道 | 超过上限的请求被忽略-6 |
2.3 批准发送者的操作
# 列出所有待批准的配对请求
openclaw pairing list telegram
# 批准指定配对码的用户
openclaw pairing approve telegram <8位配对码>
# 查看已批准的允许列表
cat ~/.openclaw/credentials/telegram-allowFrom.json
2.4 Telegram完整安全配置示例
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}",
"dmPolicy": "pairing",
"allowFrom": ["tg:123456789"],
"groups": {
"*": { "requireMention": true }
}
}
}
}
关键点 :allowFrom中可配置用户ID(如tg:123456789),确保即使配对批准后,也仅有白名单用户可对话-7。
三、群组防护:让AI在群聊中"隐身"
3.1 群组策略配置
群组防护的核心目标是:AI只在被需要时才介入,避免骚扰其他群成员。
{
"channels": {
"whatsapp": {
"groupPolicy": "allowlist",
"groupAllowFrom": ["+15551234567"],
"groups": {
"*": { "requireMention": true }
}
}
}
}
3.2 群组策略选项
| 策略 | 行为 | 适用场景 |
|---|---|---|
| allowlist(默认) | 仅允许群组允许列表中的群组-8 | 生产环境推荐 |
| open | 允许所有群组(提及限制仍生效) | 测试环境 |
| disabled | 完全阻止所有群组消息 | 不需要群组功能时 |
3.3 提及限制(Mention Gating)
提及限制是群组防护的第二道防线:群组消息必须包含@机器人,才会触发AI回复。
{
"channels": {
"telegram": {
"groups": {
"*": { "requireMention": true },
"-1001234567890": { "requireMention": false }
}
}
},
"agents": {
"list": [
{
"id": "main",
"groupChat": {
"mentionPatterns": ["@openclaw", "openclaw", "\\+15555550123"],
"historyLimit": 50
}
}
]
}
}
关键配置说明:
- requireMention: true:强制要求@提及-8
- mentionPatterns:正则表达式匹配,支持显示名称和手机号-8
- historyLimit:注入的历史消息数量,帮助AI理解上下文-8
3.4 群组会话隔离
OpenClaw为每个群组创建独立的会话键,确保私聊和群聊状态互不影响-8:
私聊会话: agent:main:main
群组会话: agent:main:whatsapp:group:1234567890@g.us
论坛话题: agent:main:telegram:group:-1001234567890:topic:99
这意味着:
- 在群组中设置的/verbose on不会影响私聊
- 每个群组拥有独立的对话历史
- 沙箱模式下,群组会话可独立隔离执行-8
四、各渠道安全配置示例
4.1 Telegram安全配置
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}",
"dmPolicy": "pairing",
"allowFrom": ["123456789"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["123456789"],
"groups": {
"*": { "requireMention": true }
},
"actions": {
"reactions": true,
"sendMessage": true
},
"reactionNotifications": "own"
}
}
}
配置要点:
4.2 WhatsApp安全配置
{
"channels": {
"whatsapp": {
"dmPolicy": "pairing",
"allowFrom": ["+15555550123"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["+15551234567"],
"groups": {
"*": { "requireMention": true }
},
"mediaMaxMb": 20
}
}
}
注意 :WhatsApp的配对流程与Telegram类似,但使用手机号作为用户标识-6。
4.3 钉钉安全配置
根据阿里云开发者社区的教程,钉钉频道的安全配置如下-5:
{
"channels": {
"dingtalk": {
"enabled": true,
"clientId": "dingxxxxxx",
"clientSecret": "${DINGTALK_CLIENT_SECRET}",
"robotCode": "dingxxxxxx",
"corpId": "dingxxxxxx",
"agentId": "123456789",
"dmPolicy": "pairing",
"groupPolicy": "allowlist",
"messageType": "markdown",
"debug": false
}
}
}
钉钉专属安全配置:
- messageType: "markdown":避免HTML注入风险
- 消息接收模式必须选Stream模式 ,避免公网暴露-5
- 需申请Card.Streaming.Write和Card.Instance.Write权限-5
4.4 Slack安全配置
{
"channels": {
"slack": {
"enabled": true,
"botToken": "${SLACK_BOT_TOKEN}",
"appToken": "${SLACK_APP_TOKEN}",
"dmPolicy": "pairing",
"allowFrom": ["U1234567890"],
"groupPolicy": "allowlist",
"channels": {
"#general": { "allow": true }
}
}
}
}
Slack特有机制 :支持userToken实现只读操作,适合需要审计的场景-2。
4.5 Discord安全配置
{
"channels": {
"discord": {
"enabled": true,
"token": "${DISCORD_BOT_TOKEN}",
"dmPolicy": "pairing",
"allowFrom": ["123456789012345678"],
"guilds": {
"123456789012345678": {
"requireMention": true,
"channels": {
"help": { "allow": true }
}
}
}
}
}
}
4.6 飞书渠道配置
中文社区版OpenClaw(openclaw-cn)原生支持飞书渠道-10:
{
"channels": {
"feishu": {
"enabled": true,
"appId": "${FEISHU_APP_ID}",
"appSecret": "${FEISHU_APP_SECRET}",
"dmPolicy": "pairing",
"allowFrom": ["user_id"],
"groupPolicy": "allowlist"
}
}
}
五、会话与权限的精细控制
5.1 按渠道指定模型
OpenClaw支持为特定频道或会话指定不同的模型,可用于安全隔离-7:
{
"channels": {
"modelByChannel": {
"telegram": {
"-1001234567890": "openai/gpt-4.1-mini"
},
"discord": {
"123456789012345678": "anthropic/claude-opus-4-6"
}
}
}
}
5.2 群组内的工具限制
可以为特定群组限制可用的工具,防止恶意指令执行高危操作-8:
{
"channels": {
"telegram": {
"groups": {
"*": { "tools": { "deny": ["exec"] } },
"-1001234567890": {
"tools": { "deny": ["exec", "read", "write"] },
"toolsBySender": {
"123456789": { "alsoAllow": ["exec"] }
}
}
}
}
}
}
解析逻辑 (从最具体到最通用)-8:
- 群组内toolsBySender匹配
- 群组内tools配置
- 默认"*"的toolsBySender匹配
- 默认"*"的tools配置
5.3 心跳与状态提示
配置心跳可以监控频道健康状态-7:
{
"channels": {
"defaults": {
"heartbeat": {
"showOk": false,
"showAlerts": true,
"useIndicator": true
}
}
}
}
六、安全基线检查清单
6.1 DM策略检查
| 检查项 | 命令/方法 | 期望结果 |
|---|---|---|
| DM策略非开放 | grep -A5 "dmPolicy" ~/.openclaw/openclaw.json | 值为pairing或allowlist |
| 允许列表非空 | openclaw pairing list <channel> | 至少包含本人ID |
| 配对码有效期 | 查看日志中的配对请求时间 | 1小时后自动过期 |
6.2 群组策略检查
| 检查项 | 命令/方法 | 期望结果 |
|---|---|---|
| 群组策略为allowlist | grep "groupPolicy" ~/.openclaw/openclaw.json | allowlist(除非确实需要开放) |
| 提及限制已开启 | grep "requireMention" ~/.openclaw/openclaw.json | true |
| 群组允许列表已配置 | 查看groupAllowFrom字段 | 包含已知群组ID |
6.3 一键安全审计
# OpenClaw内置安全审计
openclaw security audit --deep
# 查看频道状态
openclaw channels status --probe
# 列出所有已批准用户
openclaw pairing list telegram
openclaw pairing list whatsapp
6.4 应急处置:批量拒绝未授权请求
# 清空待处理请求
rm ~/.openclaw/credentials/*-pairing.json
# 清空允许列表(谨慎操作)
rm ~/.openclaw/credentials/*-allowFrom.json
# 重启网关
openclaw gateway restart
七、CNCERT官方安全建议摘要
国家互联网应急中心发布的《OpenClaw安全使用实践指南》对普通用户的建议包括-9:
- 环境隔离:使用专用设备、虚拟机或容器安装OpenClaw,不宜在日常办公电脑上安装
- 网络隐身:不将OpenClaw默认端口(18789)暴露到公网,配置为仅本地访问
- 权限最小化:不使用管理员权限运行,创建专用低权限账户
- 技能可信:谨慎安装第三方Skills,拒绝"自动赚钱、撸羊毛"类不明技能
- 数据隔离:不在OpenClaw环境中存储银行卡、密码、身份证等隐私数据
- 及时更新:安装官方安全补丁,关注安全公告
结语:让AI"只听你的话"
OpenClaw的频道接入安全,本质上是回答一个核心问题:在无数条消息中,如何让AI精准识别出主人的指令?
答案是一个层层递进的防御体系:
- 第一道门:DM策略,只允许经过配对的用户进入
- 第二道门:群组策略,只允许指定的群组触发AI
- 第三道门:提及限制,只有被@的AI才会回应
正如CNCERT所强调:"若对接即时通讯软件,建议仅允许本人或已授权的可信人员访问。"-9 这不仅是技术建议,更是安全底线。
(系列文章第七篇,待续。下一篇预告:外部内容处理------防御提示词注入)
参考文献:
- 实在RPA.Openclaw如何配置channel?配置指南及平替详解.2026-02-01-1
- OpenClaw官方文档.Slack Channel Configuration.2026-2
- OpenClaw官方文档.群组消息配置.2026-3
- 实在RPA.Openclaw安全性深度解析.2026-01-31-4
- 阿里云开发者社区.OpenClaw钉钉对接保姆级教程.2026-02-01-5
- W3Cschool.OpenClaw配对概述.2026-03-15-6
- OpenClaw官方文档.Configuration Reference.2026-7
- W3Cschool.OpenClaw群组跨平台行为.2026-03-15-8
- CNCERT.国家互联网应急中心等发布OpenClaw安全使用实践指南.2026-03-22-9
- NPM.openclaw-cn.2026