
核心要点(TL;DR)
- 安全评测先用基线核查拿基础分,再用入侵痕迹排查拿风险分,两项加权才是真实得分。
- SSH 口令与密钥、sudo 权限、计划任务是云主机被攻陷后最常被利用的三处位置。
- 排查后门优先看异常外联与 /tmp、/dev/shm 下的可执行文件,而不是只扫病毒。
- 评测结果必须落到整改工单与复测时间,否则打分表只是自我安慰。
很多运维的云主机安全评测停留在「跑个漏洞扫描、看下有没有告警」,结果真出事时才发现:弱口令还在、SSH 允许 root 直连、/tmp 里躺着一个陌生 ELF 文件。问题不在于工具不够,而在于缺少一张能打分、能整改、能复测的评测表。本文给出一套从安全基线核查到入侵痕迹排查的完整打分方法,所有检查项都配可执行命令,照着做就能得出结论。
一、先建表:评测维度与打分规则
评测表分两层:基线层看「配置是否合格」,痕迹层看「是否已被攻陷」。建议总分 100,基线层 60 分、痕迹层 40 分,任一层出现高危项直接判不合格。
| 层级 | 维度 | 权重 | 典型高危项 |
|---|---|---|---|
| 基线层 | 账号与权限 | 12 | 空口令、UID 为 0 的非 root 账号 |
| 基线层 | SSH 配置 | 12 | 允许 root 登录、口令认证开启 |
| 基线层 | 补丁与内核 | 10 | 内核版本落后、未装安全更新 |
| 基线层 | 日志与审计 | 10 | rsyslog 未运行、无 history 记录 |
| 基线层 | 网络暴露面 | 8 | 0.0.0.0 监听管理端口 |
| 基线层 | 文件权限 | 8 | Web 目录可写可执行 |
| 痕迹层 | 进程与网络 | 15 | 异常外联、隐藏进程 |
| 痕迹层 | 持久化位置 | 15 | 陌生 cron、systemd 服务 |
| 痕迹层 | 文件与后门 | 10 | /tmp 可执行文件、SUID 异常 |
二、基线核查:六组命令跑完基础分
1. 账号与权限
awk -F: '(==0){print }' /etc/passwd
awk -F: '(==""){print }' /etc/shadow
lastlog | grep -v "Never logged in"输出中除 root 外出现 UID 为 0 的账号、shadow 中空口令字段,均直接扣满分。再看 sudo 授权:grep -r "NOPASSWD" /etc/sudoers /etc/sudoers.d/,非必要免密提权应清理。
2. SSH 配置
sshd -T | grep -Ei 'permitrootlogin|passwordauthentication|port|maxauthtries'合格标准:permitrootlogin no、passwordauthentication no、maxauthtries 不大于 3。改完务必 sshd -t 校验再 reload,避免把自己锁在门外。
3. 补丁与内核
uname -r
# Debian/Ubuntu
apt list --upgradable | grep -i security
# CentOS/RHEL
yum updateinfo list security关注内核与 openssh、openssl 的安全更新,未修补项每项扣分。
4. 日志与审计
systemctl is-active rsyslog auditd
ls -l /var/log/secure /var/log/auth.log 2>/dev/null日志服务未运行、日志被清空(文件大小异常小)都要扣分,后者还可能是入侵迹象。
5. 网络暴露面
ss -antlp | grep -v 127.0.0.1逐条对照业务,管理端口(22、3306、6379、9200)不应监听 0.0.0.0,应通过安全组限制来源 IP。
6. 文件权限
find /var/www -type f -perm -o+w -not -path '*uploads*'
find / -xdev -perm -4000 -type f 2>/dev/nullWeb 目录可写文件、非预期 SUID 文件都是高危项,后者常被用于本地提权。
三、入侵痕迹排查:从外联反查落地
痕迹排查的核心思路是「找异常」,而不是「找病毒」。按以下顺序执行,命中率最高。
- 看外联:
ss -antp | grep ESTAB,对照业务端口,陌生 IP 与高位端口连接重点标记,用ls -l /proc/PID/exe定位进程文件。 - 看进程:
ps -ef --forest找父进程为 1 却命令行可疑的项;ls -l /proc/*/exe 2>/dev/null | grep deleted可发现已删除仍在运行的木马。 - 看持久化:
crontab -l、ls -l /etc/cron.*、systemctl list-unit-files --state=enabled,重点找带 curl、wget、base64 的命令。 - 看文件:
find /tmp /dev/shm /var/tmp -type f -perm -u+x,这两个目录出现可执行文件基本可判定异常。 - 看登录:
last -a | head -20、grep -i 'accepted' /var/log/secure,找非运维时段的成功登录。
发现可疑项先取证:记录 PID、命令行、文件哈希与网络连接,备份二进制后再处置,避免线索丢失。
四、整改优先级与复测
按「高危立即改、中危 7 天内、低危随版本迭代」推进。SSH 弱口令、root 直连、异常外联属于立即处置项;补丁与日志属于一周内完成项。整改后重新跑一遍基线命令,对比打分表确认分数回升,并记录复测时间。
在防护侧,可以把基线核查脚本化并接入主机安全平台:AegisX 提供基线合规检查与异常进程、外联行为监测能力,能把上述手工命令固化为持续巡检,减少重复劳动。但工具替代不了判断,打分表仍需人工复核高危项。
五、行动建议
今天就做三件事:把本文六组基线命令保存为脚本在测试机跑一遍;对生产机执行一次外联与计划任务排查;把打分表落到工单系统,给每个高危项指定负责人与截止时间。安全评测的价值不在分数,而在分数背后被真正修掉的那几个洞。
常见问题(FAQ)
云主机安全评测多久做一次比较合适?
建议至少每季度一次完整评测,重大变更后(上线新服务、开放新端口、新增运维账号)立即做增量核查。基线项可做成脚本每日自动跑,入侵痕迹排查因耗时较长,按季度或出现异常告警时执行。这样既控制成本,又能保证风险发现不过夜。
没有等保要求,也需要做基线核查吗?
需要。基线核查的本质是把已知的安全配置错误提前修掉,与合规无关。弱口令、SSH 允许 root 直连、目录权限过宽这些问题,攻击者利用成本极低,而修复成本同样极低。先做基线,能挡掉大部分自动化扫描与暴力破解,是性价比最高的防护动作。
怎么快速判断云主机是否已被入侵?
优先看三处:一是异常外联,用 ss -antp 对照业务端口找陌生连接;二是计划任务,检查 /etc/cron* 与 crontab -l 是否有陌生下载执行命令;三是关键目录,看 /tmp、/dev/shm 下是否有可执行文件。三项中出现任意异常,都应立即隔离主机并保留现场再深入分析。
评测打分表应该包含哪些维度?
建议分两层:基线层覆盖账号与权限、SSH 配置、补丁与内核、日志审计、网络暴露面、文件权限;痕迹层覆盖进程、网络连接、计划任务、启动项、文件属性与 Web 目录。每项设权重与扣分规则,基线层偏防守配置,痕迹层偏已发生风险,两层加权后得出总分。
发现可疑进程后应该先杀进程还是先取证?
先取证再处置。立即记录进程 PID、启动命令行、可执行文件路径与哈希、父进程与网络连接,必要时用 cp 备份二进制文件;随后再终止进程并封禁外联。直接 kill 会丢失内存与文件线索,导致无法判断入侵入口,后续同类问题还会复发。