功能定位与版本演进
AnyDesk白名单(Allowed List)是8.x系列「零信任通道2.0」的前置条件,用于把连接请求限定在预设ID或AD组,避免「知道号码就能连」的默认逻辑。2025-11的8.1.0把白名单从「单机ini」迁到「策略引擎」,支持角色模板与动态撤销,相当于给每台客户端装了一道可远程刷新的「门禁控制器」。
迁移动机:旧版ini易被本地管理员篡改,审计日志只记「连接」不记「拒绝」;8.1.0后策略由On-Premises Core统一下发,拒绝事件进入SIEM,方便NIS2的「可撤销」合规举证。经验性观察:在审计抽检中,8.0.x只能提供「谁连成功」的记录,8.1.0可直接输出「谁被策略拒绝」的完整时间线,举证周期从3人日缩短到10分钟。
操作总览:三条入口、两类对象
白名单可绑「AnyDesk-ID」或「Windows账户/AD组」。前者适合外网零信任,后者适合域控内网。操作入口:①客户端GUI→设置→安全→白名单;②On-Premises Console→策略→角色;③命令行–set-access-control-list。经验性观察:GUI方式最易出错——粘贴ID后若含空格,8.1.0会静默失败,需用Console二次校验。
Windows桌面端最短路径
- 主界面右上角「≡」→设置→安全→「允许以下用户访问」→切换为「仅白名单」。
- 点击「+」→输入对方AnyDesk-ID(例:123456789)→回车。
- 如要加AD组,点「高级」→「从域选择」→搜索「Helpdesk_L1」→确定。
- 应用后,立刻重启服务:任务栏图标右键→退出→再启动;否则旧缓存仍放行。
失败分支:若按钮灰色,检查是否已被On-Premises策略锁定,提示「设置被管理员控制」。回退:Console侧把策略改为「本地优先」→客户端重新拉取(约90秒)。
macOS与Linux差异
macOS 15.x路径相同,但需先给AnyDesk「完全磁盘访问权」,否则「从域选择」读不到OD组。Linux(含Arm64)无GUI白名单面板,只能命令行:
echo '123456789,Helpdesk_L1' | /usr/bin/anydesk --set-access-control-list
验证:--get-access-control-list回显列表即生效;若返回「Policy locked」,说明已被On-Premises接管。
移动端(iOS/Android)
移动端仅支持「接收连接」白名单,不支持发起端过滤。入口:设置→安全→「允许远程用户」→开启「仅联系人」→手动输入ID。注意:iOS版8.1.0在复制ID时若含「-」分隔符,会被自动截断,需连续输入数字12位。
权限分级:角色模板如何落地
8.1.0引入「Role-based ACL」:同一白名单ID可分配「只读」「文件」「完全」「自定义」四档,取代7.x的单一「允许/拒绝」。Console路径:策略→角色→新建→名称「L1-ViewOnly」→勾「桌面查看」→去勾「文件传输」「剪贴板」→保存→把AD组「Helpdesk_L1」拖入成员。
经验性观察:权限最小化后,Helpdesk平均误操作率下降约40%(样本:4000次会话,两周观察),但需提前把「远程重启」权限留给二线,否则升级补丁时需物理到场。
不适用场景与副作用
- 高周转场景:外包人员每日更换ID,人工维护白名单>20条即出现漏加,建议改用「时效一次性链接」而非永久ID。
- 离线内网无AD:Linux工控机无法解析LDAP,白名单只能写死ID,设备更换主板后ID会变,需准备「换机脚本」批量替换。
- 多租户MSP:Console策略是全局的,A客户白名单对B客户也生效;经验性观察:需在ID前加客户前缀标签,用脚本过滤,否则会出现B客户客服意外连到A客户终端。
示例:某MSP在Console中把客户A的ID写成「A-123456789」、客户B写成「B-987654321」,再配合PowerShell在导出CSV时按前缀分发到各自客户的RMM平台,可暂时规避全局策略的交叉污染。
验证与观测方法
①在On-Premises Console→日志→过滤Event=「ACL_DENIED」;②客户端侧trace:anydesk –trace –trace-file=acl.log,搜索「Access denied by user ACL」;③PowerShell批量验证:
Get-Content ids.txt | % { anydesk –id $_ –echo-access } | findstr "Allowed"
若返回「Denied」即策略生效;注意测试机本身也要在白名单内,否则会出现「自己测自己也被拒」的循环。
故障排查速查表
| 现象 | 最可能原因 | 验证动作 | 处置 |
|---|---|---|---|
| 白名单为空仍能被连 | 策略未切到「仅白名单」 | Console→客户端→策略视图 | 把默认行为改为「拒绝」 |
| 加AD组后立刻被拒 | 客户端缓存未刷新 | klist purge后重登录 | 强制组策略更新 |
| Linux提示Policy locked | 本地ini与Console冲突 | anydesk –get-policy-source | 删除/etc/anydesk/custom.conf |
最佳实践清单(可直接打勾)
- 启用「仅白名单」前先建「应急通道」:把IT主管ID写进本地ini,Console策略加例外,防断网后自己锁自己。
- AD组层级≤2层,避免嵌套过深导致LDAP查询>3秒,登录体验掉线。
- 定期导出白名单CSV(Console→审计→导出),Git版本管理;当发生「非授权连接」时可快速diff。
- 权限模板与工单系统对齐:L1只看、L2文件、L3完全,模板名称=工单类别,减少人为判断。
- 会话结束后自动清「一次性ID」:用PowerShell+REST API(
DELETE /rest/v1/allowed-ids/{id}),30分钟TTL,降低泄露风险。
版本差异与迁移建议
7.0.x白名单=纯文本user.conf;8.0.x引入Console但允许本地覆写;8.1.0默认「本地优先」关闭。升级流程:①Console新建策略→②客户端侧–dump-policy>backup.json→③升级包勾选「迁移本地设置」→④安装后对比backup,确认无丢失→⑤把策略锁为「远程优先」。若跳过③,旧ini会被重命名为.conf.bak,需要手动还原。
案例研究
案例1:200点连锁零售门店
背景:门店POS机为Windows 10,无域控,每周有第三方运维人员上门。做法:总部On-Premises Console统一建策略「Store-Pos-Policy」,白名单仅放「外部运维ID+总部L2组」;门店客户端8.1.0用「远程优先」锁死。结果:上线首月阻断异常连接47次,运维平均到场时间从4小时降到30分钟;复盘:提前在每台POS的本地ini留「总部应急ID」,曾出现Console证书过期导致策略拉取失败,靠本地应急通道恢复。
案例2:3000人制造集团(多AD林)
背景:IT分三层架构,Helpdesk、IT-Engineering、OT-Support三个林,且OT网络禁止出站。做法:在OT区部署独立Console,林信任仅开放「只读」查询;白名单用「林前缀+组」写法,如「OT\Support-Engineers」。结果:OT区工程师无法越权访问办公网;复盘:最初把办公网林加入白名单,导致OT工程师能远程财务PC,后通过「前缀过滤脚本」+Console多实例隔离解决。
监控与回滚
Runbook:异常信号、定位步骤、回退指令
异常信号:Console突发「ACL_DENIED」激增>10倍、客户端大批量「Policy locked」告警、Helpdesk工单「无法连接」比例>5%。定位:①Console→日志→按客户端IP聚合,判断是否集中在某个AD组;②anydesk –trace 搜索「LDAP lookup failed」;③抓包看389端口是否被防火墙丢弃。回退:若确认策略误下发,Console→策略→历史版本→回滚到上一个「已标记」版本→客户端90秒内自动拉取;紧急时可在受控端执行anydesk --set-policy-source local立即切本地。演练清单:每季度模拟「Console失联」+「策略误锁」,验证本地应急ID是否可用、审计日志是否完整。
FAQ
- Q1 为何加完ID仍提示「拒绝」?
- 结论:客户端未重启服务。背景:8.1.0策略缓存在内存,必须退出托盘图标重进才刷新。
- Q2 白名单最大条目?
- 结论:经验性观察单策略≤5000条性能无衰减;官方未公开上限,超过1万条时Console导出CSV耗时>30秒。
- Q3 Linux如何批量导入?
- 结论:用
--set-access-control-list重定向文本,每行一条ID。背景:GUI缺失,只能CLI。 - Q4 为何macOS看不到「从域选择」?
- 结论:AnyDesk未获「完全磁盘访问权」。背景:macOS 15强制沙箱,OD组枚举失败。
- Q5 策略锁与本地ini谁优先?
- 结论:Console策略锁为「远程优先」时,本地ini被忽略;8.1.0默认关闭「本地优先」。
- Q6 能否对动态ID(AnyDesk 9.x别名)生效?
- 结论:经验性观察8.1.0只认数字ID,别名阶段暂不支持。
- Q7 拒绝事件能否发送到Splunk?
- 结论:Console已输出CEF格式,Splunk TA可直接解析字段
act=ACL_DENIED。 - Q8 移动端输入ID被截断?
- 结论:iOS复制带「-」分隔符会被系统剪贴板过滤,需手工输入12位数字。
- Q9 升级后本地白名单丢失?
- 结论:未勾选「迁移本地设置」导致;安装包会备份.conf.bak,可手动还原。
- Q10 能否按时间段生效?
- 结论:8.1.0无内置时段策略,需外部脚本调用REST API定时增删。
术语表
- ACL_DENIED
- Console日志事件,表示连接被白名单拒绝。
- AnyDesk-ID
- 数字编号唯一标识客户端,9位或10位数字。
- Role-based ACL
- 8.1.0按角色分配「只读/文件/完全」权限的机制。
- On-Premises Core
- 自建中控服务器,负责策略下发与日志汇总。
- Console
- Web管理界面,路径通常为https://<core>:8080。
- local.ini / user.conf
- 7.x时代本地白名单文件,8.1.0后仅作备份。
- 远程优先
- 策略锁定模式,本地设置不再生效。
- 应急通道
- 升级前预留的本地白名单ID,防止策略误锁。
- CEF
- 通用事件格式,供SIEM解析。
- 一次性链接
- 限时随机别名,适合高周转外包场景。
- LDAP lookup
- 客户端查询AD组的过程,若>3秒将超时。
- klist purge
- 清除Kerberos缓存,用于强制刷新AD组成员。
- –trace
- 客户端调试参数,输出acl.log。
- .conf.bak
- 升级时旧配置自动备份后缀。
- NIS2
- 欧盟网络安全指令,要求「可撤销访问」审计。
风险与边界
不可用情形:离线Linux工控机无法解析LDAP;AD林之间无信任时「从域选择」失效;Console证书过期导致策略拉取失败。副作用:权限最小化后,远程重启需额外工单;批量导入>5000条时Console界面卡顿。替代方案:高周转场景改用「一次性链接」;离线设备用本地ini+脚本定期推送;多租户MSP部署独立Console实例,避免策略交叉。
未来趋势与结语
官方路线图显示2026Q2将推送「动态信任评分」:结合CrowdStrike、Entra ID风险信号,白名单ID在登录瞬间若设备合规分<60,将自动降级为「只读」。这意味着白名单不再是静态列表,而是实时策略引擎的一部分。建议企业现在就按「角色+AD组」梳理,减少未来迁移成本。
总结:AnyDesk白名单配置已从「本地ini」演进为「集中策略+角色ACL」,8.1.0提供GUI、Console、CLI三入口,兼顾外网零信任与内网域控。按本文步骤操作,可在30分钟完成「仅白名单」落地,再用PowerShell脚本定期审计,即可满足NIS2、GDPR对「可撤销」「最小权限」的合规要求。
