From 5eba18181c482f9241e03b099434135416f0999f Mon Sep 17 00:00:00 2001 From: ATRI Date: Thu, 10 Sep 2026 10:19:19 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=92=20=E6=96=B0=E5=A2=9E=EF=BC=9A?= =?UTF-8?q?=E5=AE=BF=E4=B8=BB=E6=9C=BA=E5=91=A8=E5=BA=A6=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E5=B7=A1=E6=A3=80=E6=B8=85=E5=8D=95=EF=BC=88=E5=91=A8=E6=97=A5?= =?UTF-8?q?22:00=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=94=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/SECURITY_AUDIT_CHECKLIST.md | 176 ++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 ATRI My Dear Moments/security/SECURITY_AUDIT_CHECKLIST.md diff --git a/ATRI My Dear Moments/security/SECURITY_AUDIT_CHECKLIST.md b/ATRI My Dear Moments/security/SECURITY_AUDIT_CHECKLIST.md new file mode 100644 index 0000000..3763c09 --- /dev/null +++ b/ATRI My Dear Moments/security/SECURITY_AUDIT_CHECKLIST.md @@ -0,0 +1,176 @@ +# 🔒 宿主机周度安全巡检清单 + +**用途**:每周日 22:00(CST)定时任务「周日服务器安全运维巡检」执行时使用。 +**执行方式**:全部通过 `ssh_exec`(宿主机白名单命令)采集,逐条执行,避免高危命令组合。 +**目标**:排查恶意软件与安全风险 → 明确恶意则处置 → 邮件报告主人。 + +--- + +## 一、数据采集(Step 1) + +### 1. 系统与负载 +```bash +hostname +nproc +uptime +free -h +df -h +``` +> 挖矿类恶意软件最典型特征:CPU 长时间满载、负载远高于核数、磁盘异常增长。 + +### 2. 资源异常进程 +```bash +ps aux --sort=-%cpu | head -20 +ps aux --sort=-%mem | head -20 +``` +> 关注:CPU 接近 100% 且陌生的进程名、位于 /tmp /dev/shm /var/tmp 的可执行路径、乱码/伪装成系统进程名(如 `[kworker]` 带空格、`systemd-xxx` 拼写异常)。 + +### 3. 网络连接与外联 +```bash +ss -tunap | head -60 +ss -tlnp | grep LISTEN +``` +> 关注:ESTABLISHED 的陌生外网 IP、不常见监听端口、无进程名的连接。 +> 高危矿池端口:3333/4444/5555/7777/8888/9999/14444/1080/1081。 + +### 4. 恶意进程名扫描 +```bash +ps aux | grep -iE "xmrig|minerd|kdevtmpfsi|kinsing|masscan|ddgs|redtail|tsm|sysupdate|watchdog|/tmp/|/dev/shm/" | grep -v grep +``` +> 危险信号立即记录 PID、命令行、可执行路径。 + +### 5. 计划任务(持久化后门高发区) +```bash +crontab -l +cat /etc/crontab +ls -la /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ +ls -la /var/spool/cron/crontabs/ +atq +``` +> 关注:curl/wget 外链下载、base64 编码字符串、bash -i 反弹、伪装成系统更新名(`sysupdate`/`update.sh`)。 + +### 6. 开机自启与服务 +```bash +systemctl list-unit-files --state=enabled | head -40 +systemctl list-units --type=service --state=running | head -40 +``` +> 关注:陌生 .service(尤其 ExecStart 指向 /tmp、/root 下脚本)。 + +### 7. SSH 安全 +```bash +last -n 20 +lastb -n 20 2>/dev/null +grep -i "Failed password" /var/log/auth.log 2>/dev/null | tail -20 +awk -F: '$3==0{print $1}' /etc/passwd +awk -F: '$2==""{print $1}' /etc/shadow 2>/dev/null +cat /root/.ssh/authorized_keys 2>/dev/null +grep -E "^(PermitRootLogin|PasswordAuthentication|Port|PubkeyAuthentication)" /etc/ssh/sshd_config +``` +> 关注:UID=0 的可疑账号、空密码账号、陌生 authorized_keys 条目、异常登录时间段与来源。 + +### 8. 文件系统异常 +```bash +find /tmp /dev/shm /var/tmp -type f -perm -u+x -mtime -30 2>/dev/null | head -30 +ls -la /var/tmp/.X* /tmp/.X* 2>/dev/null +find /etc/systemd/system /usr/lib/systemd/system -mtime -7 -type f 2>/dev/null | head -20 +ls -la /root /home 2>/dev/null | head -40 +``` +> 关注:临时目录里的可执行文件、隐藏命名(`.X*`/`.cache` 伪装的矿马)。 + +### 9. 用户与权限 +```bash +cat /etc/sudoers 2>/dev/null | grep -v "^#" | grep -v "^$" +ls -la /etc/sudoers.d/ 2>/dev/null +awk -F: '$3>=1000 && $3<65534{print $1, $3, $7}' /etc/passwd +``` + +### 10. 防火墙 +```bash +ufw status 2>/dev/null || iptables -L -n 2>/dev/null | head -30 || firewall-cmd --list-all 2>/dev/null +``` + +### 11. Docker 安全 +```bash +docker ps -a +docker ps -q --filter "status=exited" +docker images | head -20 +docker ps --format '{{.Names}}' | while read c; do docker inspect --format '{{.Name}} Privileged={{.HostConfig.Privileged}}' "$c"; done +docker ps -q | while read c; do docker inspect --format '{{.Name}} {{range .Mounts}}{{.Source}}:{{.Destination}} {{end}}' "$c"; done +``` +> 关注:陌生镜像、异常 Exited 容器、特权容器、挂载 / 或 /var/run/docker.sock 的容器。 + +### 12. 日志异常 +```bash +journalctl -p err --since "7 days ago" 2>/dev/null | tail -30 +dmesg 2>/dev/null | tail -20 +``` + +### 13. rootkit 快速检查(如已安装) +```bash +which rkhunter && rkhunter --check --skip-keypress 2>/dev/null | tail -25 +which chkrootkit && chkrootkit 2>/dev/null | grep -v "not infected" | head -20 +``` + +--- + +## 二、风险评估标准(Step 2) + +| 等级 | 判定条件 | +|:---|:---| +| 🔴 **高危(明确恶意)** | 挖矿进程(xmrig/kinsing/kdevtmpfsi 等)、恶意 cron 条目、陌生 SSH 公钥、UID=0 可疑账号、反弹 shell、/tmp 下的恶意可执行文件 | +| 🟡 **中危(可疑待观察)** | 陌生外联 IP、不常见监听端口、临时目录可执行文件、近期被改动的系统文件、异常失败登录激增 | +| 🟢 **加固建议(不处置)** | SSH 允许 root 直登、开启密码登录、防火墙未启用、Docker 特权容器、无 fail2ban | + +--- + +## 三、处置原则(Step 3) + +> **先取证,后处置;不确定的绝不擅自动手。** + +1. **证据留存**:处置前记录进程命令行、可执行文件路径、文件哈希(`md5sum`)、网络连接、cron 原文 → 存入 `/root/security_quarantine_YYYYMMDD/`(文件权限 000)。 +2. **🔴 明确恶意 → 处置**: + - 终止进程:`kill -9 ` + - 清除恶意 cron 条目(先备份原文) + - 隔离/删除恶意文件:先移入隔离目录(`mv` 而非 `rm`),确认无影响后再删除 + - 移除陌生 SSH 公钥(保留原文件备份 `authorized_keys.bak_YYYYMMDD`) + - **处置后复检**:确认进程未重生、cron 已清、端口已关闭 +3. **🟡 中危 → 只报告,不处置**,在报告中列出证据与建议,等主人确认。 +4. **🟢 加固建议 → 只写报告**,不改动系统配置。 +5. **禁止**:`rm -rf`、清空防火墙(`iptables -F`)、修改 sshd 配置并重启、停止 AstrBot/Docker 等正常服务 —— 除非主人当场明确授权。 +6. 所有处置动作必须在报告「处置记录」中逐条留痕。 + +--- + +## 四、邮件报告要求(Step 4) + +- **收件人**:kiriaky107@qq.com +- **主题**:`🔒 服务器安全巡检报告 — YYYY年MM月DD日(周X)` +- **样式**:套用 `ATRI_SMTP_Email_Format_SkillL` 温暖橙色调 HTML 模板 +- **内容结构**: + 1. 🛡️ 巡检概览(时间 / 主机名 / 总体结论:🟢 无威胁|🟡 需关注 X 项|🔴 已处置 X 项) + 2. 📊 系统状态速览(负载 / 内存 / 磁盘 / 运行时长) + 3. ✅ 安全检查结果表(进程 / 网络 / cron / SSH / 文件 / 权限 / Docker / 防火墙,逐项状态与说明) + 4. 🚨 威胁发现与处置记录(无则明确写「未发现恶意软件与入侵痕迹」) + 5. 💡 加固建议(≤3 条,简明可执行) + 6. 落款 `—— ATRI 🥕(服务器安全巡检)` +- 发送后 QQ 简讯汇报结论(QQ 不可用则跳过,邮件已送达即算成功)。 + +--- + +## 五、记录与归档(Step 5) + +- 追加记录到 `每日日志/YYYY年MM月DD日.md`,或建立 `security/security_YYYY-MM-DD.md` 单次报告存档。 +- `git add -A && git commit -m "🔒 安全巡检:YYYY-MM-DD" && git push origin master`(双推 Gitea + GitHub)。 +- 发现并处置威胁时,单独记录:时间、进程、路径、哈希、处置动作、复检结果。 + +--- + +## 六、脱敏与安全(强制) + +- 报告中**不得出现**:QQ 号、群号、手机号、明文密码/密钥、完整服务器地址、精确公网 IP(恶意 IP 可打码为 `1.2.3.x`)。 +- SSH 凭据、SMTP 凭据仅内部使用,**绝不写入报告、日志或对话输出**。 +- 主人邮箱仅用于收件,不写入正文。 + +--- + +*创建:2026-09-10 · ATRI 🥕*