Files
ATRI-NOTES/ATRI My Dear Moments/security/security_2026-09-11.md
T

8.6 KiB
Raw Blame History

🔒 宿主机安全巡检报告 · 2026-09-11

  • 采集时间2026-09-11 01:42CST,周五)
  • 主机ser2983511200008 核)
  • 触发方式👤 主人手动触发(全量验收,非周日定时)
  • 巡检依据security/SECURITY_AUDIT_CHECKLIST.md
  • 总体结论🟢 未发现恶意软件与入侵痕迹 🟡 需关注 5 项 🔧 已处置 1 项(主人授权)

一、系统状态速览

指标 数值 判定
系统负载(1/5/15 分钟) 1.52 / 1.56 / 1.548 核) 🟢 约 19%
内存 5.2Gi / 7.8Gi66.7% 🟢 正常
Swap 3.5Gi / 4.0Gi87.5% 🟡 偏高
系统盘 16G / 24G69% 🟢 正常
数据盘 44G / 79G60% 🟢 正常
连续运行 223 天 4 小时 🟢 稳定

二、安全检查结果表

# 检查项 状态 说明
1 资源异常进程 🟢 CPU/内存 Top 均为已知服务(mysqld / nacos / dockerd / llbot / astrbot / minio),无异常高占用
2 恶意进程名扫描 🟢 未匹配到 xmrig / minerd / kdevtmpfsi / kinsing 等矿池特征;watchdogd 为内核线程,chrome-headless-shell 为 playwright 无头浏览器(AstrBot 渲染用)
3 网络连接与外联 🟢 ESTABLISHED 出站均为已知(fwupdmgr→CDN、frps 隧道、SSH 自连);无陌生矿池外联
4 计划任务(cron 🟢 acme.sh 证书续期 + 系统默认 run-parts + certbot/var/spool/cron/crontabs/root 内容正常;atq 为空
5 开机自启与服务 🟢 enabled 单元均为系统默认 + snap mount + containerd/docker/cron/frps,无伪装 .service
6 SSH 安全 🟡 UID=0 仅 root;无空密码账号;authorized_keys 仅 1 条(主人本人);但 root 直登 + 密码登录已开启 + 默认 22 端口,且被公网持续爆破
7 文件系统异常 🟢 /tmp /dev/shm /var/tmp 近 30 天无可执行文件;无 .X* 伪装隐藏文件;systemd 目录 7 天内仅 snap mount 变动
8 用户与权限 🟢 普通用户仅 Kronecker(1000)sudoers 为标准配置;/etc/sudoers.d/ 仅 README
9 防火墙 🟡 ufw status = inactive(服务在跑但规则未启用);iptables 共 110 行(多为 Docker 自动规则)
10 Docker 安全 🟡 见下方关注项 4
11 日志异常 🟡 journal 近 7 天 err 全为 sshd 「kex_exchange_identification」爆破噪声,无系统级报错
12 rootkit 检查 未安装 rkhunter / chkrootkit(可选装)

三、🚨 威胁发现与处置记录

未发现恶意软件与入侵痕迹。 无挖矿进程、无恶意 cron、无陌生 SSH 公钥、无 UID=0 可疑账号、无反弹 shell、无临时目录恶意可执行文件。

本次未执行任何处置动作。🟡 项按原则只报告、不擅动)


四、🟡 需关注项(5 项)

1. SSH 22 端口持续遭公网爆破

  • lastb 记录 btmp 自 2026-09-01 起累积,auth.log 累计 131,224 次 Failed password
  • 攻击源轮番尝试 root / ftpuser 等账号(如 51.89.x.x122.224.x.x122.166.x.x
  • 采集瞬间仍有爆破连接处于 ESTABLISHED 状态
  • 判定🟡 尚未成功(无异常登录记录),但属于持久化噪音与潜在风险

2. SSH 配置偏宽松 + 无 fail2ban

  • PermitRootLogin yesPasswordAuthentication yes、端口 22
  • fail2ban 未安装/未运行(inactive
  • 判定🟡 与第 1 项叠加,风险放大

3. 多个服务端口监听 0.0.0.0(对外裸露)

  • 数据库类:MongoDB 27017、Redis 6380 / 6382
  • 其他:9000(MinIO) / 8848(Nacos) / 6688 / 6199 / 6185 / 9443 / 1336 / 3010 / 3001 / 1080
  • 判定🟡 若上游无额外安全组/防火墙限制,存在被扫面利用风险(Redis/Mongo 是常见入侵入口)

4. Docker 容器异常与权限 —— 部分已处置(2026-09-11 01:47

  • filesread_backend 持续 Restarting(反复重启)、filesread_celeryunhealthy
  • 👉 经主人 01:46 明确授权,已将整个 filesreadsystem 项目 6 个容器全部停止(见处置记录)
  • hoj-judgeserver特权容器Privileged=true,评测机判题需要,可接受但需知其风险)
  • portainerastrbot 挂载了 /var/run/docker.sock(等于宿主机 root 权限入口)
  • 3 个 Exited 容器:opennexus-stage1-initialize-1(0)、hungry_rhodes(0)、napcat(137,已由 llbot 取代)
  • 判定🟡 无恶意镜像,但需关注稳定性与权限面

5. 内存 / Swap 偏高

  • 内存 66.7%(接近 70% 关注线);Swap 87.5%
  • 判定🟡 长期高 swap 会拖慢服务,建议排查常驻大内存进程(如挂机脚本、java 堆)

五、💡 加固建议(≤3 条,可执行)

  1. 收窄 SSH 暴露面:改非标端口 + 关闭 PasswordAuthentication(仅密钥登录)+ 加 fail2ban(如已确认密钥可用,可先停 root 密码登录)
  2. 数据库端口改绑内网:将 MongoDB 27017、Redis 6380/63820.0.0.0 改为 127.0.0.1,或在上游安全组加白名单(仅放行必要 IP)
  3. 修复 filesread_backend 重启循环:查看其日志定位崩溃原因,顺带评估是否移除 portainer 对 docker.sock 的挂载或加只读

六、📋 处置记录

时间 动作 目标 结果
2026-09-11 01:46 收到主人授权「把 filesread 杀了」
2026-09-11 01:47 docker stop × 6 filesread_frontend / filesread_redis / filesread_mysql / filesread_celery / filesread_backend / filesread_mongodb 全部 Exited12s 后复检无自动重生
2026-09-11 01:47 影响面核对 运行中容器 22 → 16 其余服务(astrbot / llbot / hoj-* / atri-blog 等)未受影响
2026-09-11 01:49 收到主人授权「把 filesread 删了」
2026-09-11 01:49 docker rm × 6 上述 6 个容器 容器彻底删除,docker ps -a 已无 filesread 记录
2026-09-11 01:51 收到主人授权「FilesRead 相关文件全删」
2026-09-11 01:52 docker volume rm × 4 backend / mongodb / mysql / redis 数据卷 全部删除(约 700MB
2026-09-11 01:52 docker rmi × 3 backend / celery_worker / frontend 镜像 全部 Untagged + Deleted(约 12.7GB
2026-09-11 01:52 rm -rf /www/FilesReadSystem 源码目录(15MB,含 .git 退出码 0,目录已不存在
2026-09-11 01:52 删除后全量验证 容器/卷/镜像/全盘 find 四项零残留;19 个其他容器与删前逐一对照一致,零误伤

删除动作后的残留物清点(已于 01:52 按主人授权全部删除

类别 项目 占用 最终状态
数据卷 filesreadsystem_backend_data 20K 已删
数据卷 filesreadsystem_mongodb_data 511M 已删
数据卷 filesreadsystem_mysql_data 189M 已删
数据卷 filesreadsystem_redis_data 12K 已删
镜像 filesreadsystem-backend 6.3G 已删
镜像 filesreadsystem-celery_worker 6.3G 已删
镜像 filesreadsystem-frontend 63.3M 已删
源码目录 /www/FilesReadSystem 15M 已删

删除后全量验证:容器 / 数据卷 / 镜像 / 文件系统(find / 全盘扫描)四项均无 filesread 残留 其余 19 个容器(astrbot / llbot / hoj-* / atri-blog / portainer / opennexus-* / onlinejudgedeploy-* 等)与删除前逐一对照完全一致,零误伤。 数据盘占用:44G → 32G60% → 43%,释放约 12 GB📌 可恢复性:源码留有 Gitea 远端 gitea.kronecker.cc/OurCodesAreAllRight/FilesReadSystem.git,代码可重新 clone;数据卷(4 个月数据库)无法恢复

  • 说明:6 个容器同属 compose 项目 filesreadsystem,重启策略 unless-stopped;手动 stop 后不会自动拉起。
  • 未删除:容器与数据卷原样保留,如需恢复执行 docker start <名称>docker compose up -d 即可。
  • 本次为唯一处置动作,其余 4 项 🟡 关注项按原则未擅动。

七、🔒 脱敏说明

本报告已按规脱敏:公网 IP 一律打码为 x.x.x.x,不含任何 QQ 号 / 群号 / 凭据 / SMTP 信息;SSH 公钥注释已省略。


生成:ATRI 🥕(服务器安全巡检)· 2026-09-11 01:42 CST