Files
.pouch/skills/host-sec-check/references/remediation.md
T

2.5 KiB
Raw Blame History

受控自动修复

自动修复必须建立在已完成取证、用户明确批准具体修复项、且 SSH key 和带外控制台可用的前提上。默认只生成计划,不修改远端。

支持的入口

# 只读计划
bash <skill-dir>/scripts/remediate.sh user@host --plan --fix ssh-perms --fix fail2ban --ignore-ip 203.0.113.10/32

# 应用单项低风险修复
bash <skill-dir>/scripts/remediate.sh user@host \
  --apply --fix ssh-perms --confirm 'APPLY user@host'

# 应用 Fail2ban;必须提供维护来源白名单
bash <skill-dir>/scripts/remediate.sh user@host \
  --apply --fix fail2ban --ignore-ip 203.0.113.10/32 \
  --confirm 'APPLY user@host'

# 使用脚本输出的 BACKUP_ID 回滚
bash <skill-dir>/scripts/remediate.sh user@host \
  --rollback 20261010T120000Z --confirm 'ROLLBACK 20261010T120000Z'

脚本使用现有 SSH key、BatchMode 和 host-key 默认校验,不接受密码参数,不使用 sshpass,不自动安装系统包。

修复边界

可以自动执行(仍需 --apply)

  • ssh-perms:只修正当前 SSH 用户的 ~/.ssh 为 0700、authorized_keys 为 0600,不改 key 内容和 owner。
  • fail2ban:在独立的 jail.d/host-sec-check.local 写入 sshd jail;先备份、测试配置,再对已运行的服务 reload 并验证 jail。不自动启动或启用服务。

只生成计划,不由脚本执行

  • SSH 端口、root 登录、密码认证、MFA、转发策略。
  • UFW/nftables/firewalld 规则和云安全组。
  • Docker/k8s 端口绑定、特权、socket/宿主机挂载。
  • 删除或隔离恶意文件、容器、镜像、服务和 /etc/ld.so.preload。
  • 重启、密钥/token 轮换和系统包安装。

备份与回滚

应用前在远端创建 /var/backups/host-sec-check/<BACKUP_ID>/,保存受影响文件和权限元数据。Fail2ban 文件恢复、SSH 权限恢复和本次新建文件删除都只针对该备份 manifest 中的精确路径。

如果应用中途失败,报告已完成项、备份目录和回滚命令;不能把“备份已创建”当成“回滚已成功”。回滚后仍需重新检查 SSH、Fail2ban 和业务状态。

Agent 行为

  1. 先跑 --plan,把修复项、影响、备份目录和验证方式列给用户。
  2. 用户只批准某些项时,只传对应的 --fix,不能顺手扩大范围。
  3. 应用后读取脚本输出,逐项确认 [已修复]、验证结果和未执行项。
  4. SSH/防火墙/业务中断风险出现时停在计划阶段,转为人工确认,不用脚本猜测或重试。