2.5 KiB
2.5 KiB
受控自动修复
自动修复必须建立在已完成取证、用户明确批准具体修复项、且 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 行为
- 先跑
--plan,把修复项、影响、备份目录和验证方式列给用户。 - 用户只批准某些项时,只传对应的
--fix,不能顺手扩大范围。 - 应用后读取脚本输出,逐项确认
[已修复]、验证结果和未执行项。 - SSH/防火墙/业务中断风险出现时停在计划阶段,转为人工确认,不用脚本猜测或重试。