排障与安全50 条

远程执行的安全边界

远程执行的安全边界由三件事决定:谁能发起连接、以什么身份执行、代码从哪里来;推送式与拉取式的暴露方向相反但共同风险是控制面失守即全量失守,因此要拆分控制域、限制可达主机集合并固定执行内容。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌‌​‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌‌​‌​​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌​​‌​​​‌‌​​​​‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

远程执行要划清三件事

远程执行的安全边界可以归结为三个问题:谁能发起连接、受管机上以什么身份执行、执行的代码从哪里来。推送式(控制端连接受管机)与拉取式(受管机主动取配置)在失败模式与暴露方向上有明显差异,但两者的共同点是——一旦控制端或配置源被攻破,影响范围就等于它管辖的全部主机。因此边界设计的目标是让「控制面失守」不至于直接等于「全部主机失守」。

基本信息

适用对象推送式与拉取式两类远程执行架构
推送式特点控制端保存凭据与密钥,受管机无需对外开放管理端口
拉取式特点受管机主动取指令,控制面无需直连各主机
关键约束执行身份范围、可达范围、代码来源可信度
审计要点每次执行需可关联到发起者、批次与目标主机

边界要素

  • 执行身份:尽量不使用最高权限身份,能免提权的任务不提权
  • 可达范围:限制控制端能连接的主机集合,避免一个控制点覆盖全部资产
  • 凭据分布:控制端持有的密钥影响面越大,越需要拆分与分域
  • 代码来源:只执行来自受控仓库或签名校验通过的指令,拒绝来路不明的动态脚本
  • 输出回传:执行结果常含主机信息与配置片段,回传通道与存储同样需要保护
  • 中断处理:连接中断时任务可能停留在中间状态,需要有明确的重试与收敛方式

收窄边界的做法

收窄边界的做法
ssh-keygen -t ed25519 -f ~/.ssh/deploy_prod -C 'deploy-prod'   # 按环境拆分密钥
cat >> ~/.ssh/config <<'EOF'
Host prod-*
    User svcauto
    IdentityFile ~/.ssh/deploy_prod
    IdentitiesOnly yes
EOF
ssh -o BatchMode=yes -o StrictHostKeyChecking=yes prod-web01 true  # 非交互校验,失败即暴露
ansible -i inventory --list-hosts 'prod:*'   # 执行前先确认目标主机范围
ansible -i inventory prod -m ping --limit 'prod-web01'  # 先单机试跑再全量

两类架构对照

维度推送式拉取式
连接方向控制端直连受管机受管机主动向外取
暴露方向受管机需开放访问入口控制面需对外提供取用入口
凭据分布集中在控制端分布于受管机
失守后果控制端被破即全量受影响配置源被破即全量受影响
适用场景内网集中运维不可直连或需自治的环境
限制执行范围最直接的一步是限制控制端能连到哪些主机:即便控制端被攻破,攻击者也无法直接把影响扩散到范围外。这一点比事后检测更有效,也更容易验证。
动态下发并立即执行的脚本是远程执行里最难治理的一类:内容不可复现、无法回滚、审计上只能看到执行动作本身。需要临时下发时,应固定内容摘要并保留副本,确保事后能回答「究竟执行了什么」。

易错点

  • 用最高权限身份执行所有任务:任一剧本被篡改,代价直接是全量主机的最高权限
  • 控制端单一且覆盖全部资产:一个控制面失守等于整个环境失守,应按域拆分
  • 动态下发脚本执行:内容不可复现且难以回滚,事后无法还原执行内容
  • 忽略输出回传通道:执行结果含主机与配置信息,回传存储同样需要限权
  • 连接中断后不做状态收敛:停在中间状态的主机会在下一次执行时产生叠加影响

数据来源与参考

  • Ansible 官方文档:架构与受管机连接方式
  • CIS 基准:远程管理与会话审计建议
  • NIST SP 800-53:远程访问控制项

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/remote-execution-security-boundary.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌‌​‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌‌​‌​​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌​​‌​​​‌‌​​​​‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​