3.1 KiB
3.1 KiB
检查项
每项:做了 / 跳过(原因) / 可疑。
A. 快照
- 主机名、OS、内核、uptime
- CPU/负载、内存(含 hugepage、swap)、磁盘
- 网卡:公网 v4/v6、内网、Tailscale/VPN
- 监听端口 + 进程(root
ss -lntup) - 本机防火墙:nft/iptables/ufw;INPUT 策略
- 云安全组(做不到就写未查)
B. 身份与入口
- sshd 配置:端口、root、密码、Pubkey
sshd -t语法与sshd -T生效值;确认ssh.service/sshd.service/ssh.socket实际监听关系- 所有
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:端口绕过
- 实际防火墙后端与 IPv4/IPv6 规则:UFW、nftables、iptables、firewalld
G. 补漏(容易漏)
- IPv6 公网地址同样在听
- 世界可写目录、异常 SUID
- 未装补丁 /
apt过期很久 - 出站长连接(C2)
- 内核模块
lsmod异常 - 时间偏移(影响日志)
- 备份是否还能用(清理前不要删数据盘)
- 日志被清空或 journal vacuum
- Web 根目录 webshell(若有 nginx/caddy/apache)
.git或备份文件可下载- 云 metadata 是否对容器开放
H. 加固专用
- 变更前有带外控制台、配置备份和第二条 SSH 会话
- 非 root 管理账号的密钥登录已验证,再收紧 root/密码登录
- Fail2ban 日志后端、
ignoreip、jail 状态和误封回滚路径 - 补丁状态与是否需要重启已记录
- Docker 端口绑定、特权、
docker.sock/宿主机挂载已审查;没有无条件改daemon.json - 变更后从外部验证 IPv4/IPv6 端口和业务域名;未验证项已列出
I. 报告与处置确认
- 结论表
- 用户确认后再改
- 改完公网+域名双侧验证