# 检查项 每项:做了 / 跳过(原因) / 可疑。 ## A. 快照 - [ ] 主机名、OS、内核、uptime - [ ] CPU/负载、内存(含 hugepage、swap)、磁盘 - [ ] 网卡:公网 v4/v6、内网、Tailscale/VPN - [ ] 监听端口 + 进程(root `ss -lntup`) - [ ] 本机防火墙:nft/iptables/ufw;INPUT 策略 - [ ] 云安全组(做不到就写未查) ## B. 身份与入口 - [ ] sshd 配置:端口、root、密码、Pubkey - [ ] 所有 `authorized_keys`(含 `/root`、`/home/*`、git 用户) - [ ] `last` / `lastb` / ssh journal - [ ] `/etc/passwd` 里 UID 0、系统外用户、登录 shell - [ ] sudoers、NOPASSWD、docker/lxd/libvirt 组 - [ ] 对公网的面板:Portainer/Cockpit/宝塔/1Panel/k8s/Docker TCP - [ ] 单元或 compose 里的明文 bootstrap token ## C. 持久化 - [ ] 用户与系统 crontab、`/etc/cron.*` - [ ] systemd 服务与 timer(非发行版默认) - [ ] `ld.so.preload` + 对应 `.so`(容器视角 hexdump) - [ ] `lsattr` 发现的 immutable 异常文件 - [ ] rc.local、profile.d、bashrc 后门 - [ ] 第二套 container runtime ## D. 进程 - [ ] 容器视角 vs 宿主机 `ps` 差集 - [ ] maps 里的陌生 so - [ ] 矿机/挖矿/proxy 客户端特征名与同体积副本 - [ ] hugepage 预留但无对应进程 - [ ] 高 CPU 且不在业务名单里的进程 ## E. 容器 / k8s - [ ] `docker ps -a` 与 inspect(privileged、sock、`/:/host`、`0.0.0.0`) - [ ] 挂机赚钱镜像名单 - [ ] k8s/k3s:节点 Ready、该节点 Pod 列表 - [ ] API 不通时:kubelet `pods/*/etc-hosts`、crictl - [ ] 工作负载是否能在 Git/编排仓库里对上 ## F. 暴露 - [ ] `0.0.0.0` 与 `[::]` 监听清单 - [ ] **从外部**扫公网 IPv4(和 IPv6) - [ ] rpcbind :111、DB、Redis、应用明文端口 - [ ] 管理 SSH 是否可收到 VPN - [ ] 证书/域名入口是否可被 IP:端口绕过 ## G. 补漏(容易漏) - [ ] IPv6 公网地址同样在听 - [ ] 世界可写目录、异常 SUID - [ ] 未装补丁 / `apt` 过期很久 - [ ] 出站长连接(C2) - [ ] 内核模块 `lsmod` 异常 - [ ] 时间偏移(影响日志) - [ ] 备份是否还能用(清理前不要删数据盘) - [ ] 日志被清空或 journal vacuum - [ ] Web 根目录 webshell(若有 nginx/caddy/apache) - [ ] `.git` 或备份文件可下载 - [ ] 云 metadata 是否对容器开放 ## H. 报告与处置确认 - [ ] 结论表 - [ ] 用户确认后再改 - [ ] 改完公网+域名双侧验证