执行这一步时,sudo lynis audit system --enable-tests "kernel,boot" 这条命令一定不能省略。原因很明确:如果不显式开启内核与引导项检测,/proc/sys/ 和 GRUB 相关参数就不会被读取,最终会导致大量内核安全检查项目直接显示为 NOT SCORED。如果你使用的是旧版本 Lynis,还需要额外加上 --no-network;而在首次进行系统安全基线评估时,建议不要启用 --quick。此外,真正优先处理的修复项,重点关注输出中的 [SUGGESTION] 条目即可。

怎么用 Lynis 启用 kernel 和 boot 模块做基线扫描
默认情况下,lynis audit system 不会读取 /proc/sys/ 和 GRUB 启动参数,因此很多内核安全检查项会显示为 NOT SCORED——这并不代表系统没有漏洞,而是这些项目根本没有被扫描。要让 Lynis 执行真实有效的 Linux 安全基线检测,必须加上 --enable-tests "kernel,boot"。
实操要点:
- 务必使用
sudo运行,否则像/proc/sys/kernel/kptr_restrict这类关键路径可能无法读取,影响扫描结果的完整性 - 旧版 Lynis(≤3.0.5)建议加上
--no-network,避免卡在 NTP 时间校验等网络相关步骤 - 首次做系统基线扫描时不要开启
--quick,因为它会跳过 30% 以上的深度检测项目 - 扫描结果中带
[SUGGESTION]的条目,通常才是需要优先调整的配置项,不要被普通 WARNING 误导
怎么根据 Lynis 测试 ID 定位并修复权限类漏洞
Lynis 报告中的 ACCT-9628、FILE-6310 这类测试编号并不是随机生成的代码,而是可以直接用于定位 Linux 系统加固问题的关键锚点。相比单纯阅读英文描述,直接搜索测试 ID 往往更快,也更适合排查具体的权限类安全漏洞。
常见操作路径:
ACCT-9628(空密码账户):可先用sudo awk -F: '$2 == "" {print $1}' /etc/shadow列出异常账户,再通过sudo passwd -l username进行锁定FILE-6310(/tmp挂载缺少noexec,nosuid,nodev):先检查mount | grep /tmp,如果参数缺失,就追加到/etc/fstab对应行末尾,然后执行sudo mount -o remount /tmp- 所有配置修改完成后都必须再次验证:例如修改
/etc/fstab后,应运行sudo findmnt -t tmpfs /tmp,确认挂载参数已经正确生效
怎么让 nmap --script vuln 真正跑出可用结果
nmap -sV --script vuln 并不是“直接一键输出 CVE”的漏洞扫描命令,它依赖本地 NSE 脚本库是否完整,以及服务版本识别是否足够准确。很多用户在扫描后只看到一堆 [vuln] 标记,却无法判断结果真假,问题通常出在脚本未更新或目标服务识别不准确上。
关键控制点:
- 先执行
sudo nmap --script-updatedb,否则像http-shellshock.nse这样的脚本可能根本没有被正确加载 - 必须带上
-sV,因为--script vuln本身不负责探测服务版本,没有版本信息就无法准确匹配漏洞规则 - 尽量避免扫描全端口:使用
nmap -sV -p 22,80,443,3306,6379 --script vuln target这类方式,更有助于减少误报和扫描干扰 [vuln]输出本质上只是特征匹配结果,例如出现smb-vuln-ms17-010时,还需要再用rpcclient -U "" target手动验证 SMB 服务是否真实开放
怎么写可靠的 OpenVAS(GVM)定时扫描脚本
如果直接把 gvm-cli start_task 写进 crontab,绝大多数情况下都会失败——通常不是命令本身写错,而是运行环境没有加载、token 已经过期,或者 gvmd 服务还没有 ready。OpenVAS(GVM)定时扫描任务的执行逻辑,和普通 Linux cron 命令并不完全一样。
能落地的写法:
- 先用
gvm-cli --gmp-username admin --gmp-password xxx list_tasks测试连通性,确认认证信息和 token 仍然有效 - 在脚本开头加上
sleep 15,等待gvmd完全启动后再触发扫描任务 - 使用
gvm-cli --gmp-username admin --gmp-password xxx start_task --task-id xxx执行任务,不要直接照搬 web UI 自动生成的 UUID 命令 - 将日志重定向到文件:
2>&1 >> /var/log/gvm-cron.log,否则任务失败时往往无法及时看到报错信息
真正棘手的往往不是命令如何编写,而是每次 OpenVAS 升级后,GMP 接口可能会有细微调整,像 start_task 的参数顺序或字段名都有可能发生变化——因此必须持续关注 gvm-cli --help 的实际输出,不能机械复用半年前的旧脚本。
