必须用--enable-tests显式指定测试组名,否则大量安全项未触发;常见组包括kernel、boot、ssh、firewall,多个组用英文逗号分隔且需双引号包裹,如sudo lynis audit system --enable-tests "kernel,boot,ssh,firewall"。

用 Lynis 指定测试组执行定向扫描
Lynis 默认只跑基础检查,大量安全项(如内核参数、账户策略、挂载选项)根本不会触发——不是没能力,是没被启用。必须用 --enable-tests 显式指定测试组名,否则报告里一堆 NOT SCORED 或 WARNING 实际是“未检测”,不是“有问题”。
常见有效测试组包括:kernel(读取 /proc/sys/)、boot(解析 GRUB 启动参数)、fileintegrity(检查 AIDE/Tripwire)、ssh(审计 /etc/ssh/sshd_config)、firewall(识别 iptables/nftables 状态)。多个组用英文逗号分隔,不加空格:
sudo lynis audit system --enable-tests "kernel,boot,ssh,firewall"
注意:--enable-tests 后的字符串必须用双引号包裹,单引号或不加引号在部分 shell 下会解析失败;旧版 Lynis(≤3.0.5)建议加 --no-network 避免卡在 NTP 检测上。
通过测试 ID 精确控制单个检查项
Lynis 报告里的每条建议都带唯一测试 ID(如 BOOT-5122、ACCT-9628),这是最细粒度的规则开关。你可以用 --tests 直接指定 ID 列表,跳过无关项,加快扫描并聚焦关键风险:
sudo lynis audit system --tests "BOOT-5122,ACCT-9628,FILE-6310"
这些 ID 对应具体问题:BOOT-5122 是 GRUB 启动行缺 kaslr mitigations=on;ACCT-9628 表示存在空密码账户;FILE-6310 指 /tmp 挂载缺少 noexec,nosuid,nodev。ID 可从报告末尾的 “Tests performed” 表格中直接复制,或查官方文档 Lynis Test ID Reference。
反向操作也支持:用 --skip-tests 屏蔽已知误报或业务必需的宽松配置,例如跳过对 /var/log 权限的检查(LOGG-2190)以避免干扰日志轮转服务。
调整扫描强度与输出行为
默认扫描会尝试写入日志、读取敏感路径、调用系统命令,可能被 SELinux 或 auditd 拦截。若遇到 Permission denied 或 Operation not permitted 错误,先确认是否用了 sudo;仍失败时,可降级行为:
- 加
--quick跳过耗时检查(如大文件哈希、完整服务枚举),适合日常巡检 - 加
--no-color避免终端颜色码污染日志文件 - 用
--output-file /tmp/lynis-report.log将结果存为纯文本,便于后续 grep 或脚本解析 - 禁用自动更新检查:
--no-update-check,防止首次运行卡在远程元数据拉取
注意:--output-file 输出的是人类可读报告,不是 JSON/XML 结构化数据;如需机器解析,得配合 --json 参数(要求 Lynis ≥ 3.0.7)并确保输出路径有写权限。
为什么不能只依赖默认扫描配置
默认 lynis audit system 命令实际等价于 --enable-tests "default",而 default 组仅覆盖约 40% 的可用测试项。像 kernel.kptr_restrict、vm.swappiness、/boot/grub/grub.cfg 安全参数、/etc/shadow 空密码检查等关键项,全在 kernel、boot、acct 这些独立组里。不显式启用,就等于主动放弃对内核攻击面、启动链、账户凭证的检查——这三块恰恰是大多数提权漏洞的入口。
更隐蔽的问题是:某些检查(如 FILE-6310)依赖挂载选项解析,但 Lynis 不会自动 reload /proc/mounts,若你刚用 mount -o remount,noexec /tmp 修改了选项,必须重启扫描进程才能生效。这点容易被忽略,导致“明明改了却还报错”。











