Lynis 常用 CLI 命令详解(audit/show/update 实测)

Lynis 3.1.7 命令体系全解:6 个顶层命令与 30 个全局参数、audit system 定向审计与无效子命令澄清(audit processes/dbus 不存在)、show 元数据查询、update 版本管理、configure/generate,附 cron 归档、CI 卡点与排障速查,全部实测回显。

Lynis安全测试自托管2026/10/24

Lynis 常用 CLI 命令详解(audit/show/update 实测)

目标:把 Lynis 3.1.7 的命令体系一次讲全——6 个顶层命令、30 个全局参数、audit 定向审计、show 元数据查询、update 版本管理,每个命令给出真实回显,并澄清网上常见的不存在子命令(如 audit processes/audit dbus)。全部命令已在 Ubuntu 22.04.4 LTS(内核 6.8.0、x86_64)服务器逐条实测,版本为官方 deb 包 3.1.7-100(安装见《Ubuntu 22.04 安装 Lynis 3.1.7 指南》)。

一、环境信息

  • 操作系统:Ubuntu 22.04.4 LTS(主机名 ops,内核 6.8.0-138-generic,x86_64)
  • Lynis 版本:3.1.7(官方 apt 源 deb 包 3.1.7-100,命令位于 /usr/sbin/lynis)
  • profile:/etc/lynis/default.prf(deb 包默认)
  • 查询日期:2026-10-24
  • 说明:Lynis 是一次性运行的工具(无常驻服务),命令执行即完整一轮逻辑;root 权限下审计结果最完整

二、命令体系总览

Lynis 的命令结构是 lynis <命令> <子命令/目标> [参数]。lynis show commands 实测输出全部顶层命令:

lynis show commands
Commands:
lynis audit
lynis configure
lynis generate
lynis show
lynis update
lynis upload-only

六个顶层命令的分工:

命令作用使用频率
audit执行审计(system/dockerfile)核心命令,日常主力
show查询配置、测试库、日志路径等元数据排障/写脚本常用
update版本信息与更新检查维护期使用
configure查看当前配置项(settings)低频
generate生成主机标识(hostids)等首次接入管理台时
upload-only仅上传既有报告(Enterprise 场景)低频

lynis show options 实测输出全部全局参数(30 个):--auditor、--cronjob(--cron)、--debug、--developer、--devops、--forensics、--help(-h)、--log-file、--manpage(--man)、--no-colors、--no-log、--no-plugins、--pentest、--profile、--plugin-dir、--quick(-Q)、--quiet(-q)、--report-file、--reverse-colors、--tests、--tests-from-category、--tests-from-group、--usecwd、--upload、--verbose、--version(-V)、--wait、--warnings-only 等。

各命令的详细帮助可用 lynis show help <命令名> 获取,例如 lynis show help audit、lynis show help show。

三、audit:审计命令

3.1 audit system:全量系统审计(主力命令)

lynis audit system --quick

这是 Lynis 的核心用法:对本机做一轮完整安全审计(只读,不改配置)。实测(首次运行)头部:

  ---------------------------------------------------
  Program version:           3.1.7
  Operating system:          Linux
  Operating system name:     Ubuntu
  Operating system version:  22.04
  End-of-life:               NO
  Kernel version:            6.8.0
  Hardware platform:         x86_64
  Hostname:                  ops
  ---------------------------------------------------
  Profiles:                  /etc/lynis/default.prf
  Log file:                  /var/log/lynis.log
  Report file:               /var/log/lynis-report.dat

实测尾部摘要:

  Lynis security scan details:

  Scan mode:
  Normal [▆]  Forensics [ ]  Integration [ ]  Pentest [ ]

  Details:
  Hardening index : 62 [############        ]
  Tests performed : 283
  Plugins enabled : 0

  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat

本机实测 5 分 46 秒完成(283 项测试),产出 5 条警告、54 条建议(样例与解读见《Lynis 介绍与选型指南》)。

audit system 常用参数组合(全部实测有效):

用法说明
lynis audit system --quick(或 -Q)不等待按键,无人值守
lynis audit system --cronjobcron 专用:无等待、无颜色、无按需交互
lynis audit system --pentest渗透测试模式:避免对目标机产生过大影响(如减少扫描深度)
lynis audit system --forensics取证模式
lynis audit system --profile <文件>叠加自定义 profile
lynis audit system --no-colors --no-log干净输出、不写日志
lynis audit system --tests-from-group ssh只跑某测试组
lynis audit system --warnings-only只显示警告部分

3.2 --tests-from-group / --tests-from-category:定向审计

测试库按 37 个组(groups)和 3 个类别(categories)组织(组清单见 4.4 节)。实测对 ssh 组做定向审计:

lynis audit system --quick --tests-from-group ssh

实测结果要点:

  Suggestions (10):
    - Details  : AllowTcpForwarding (set YES to NO)
    - Details  : LogLevel (set INFO to VERBOSE)
    - Details  : PermitRootLogin (set YES to (FORCED-COMMANDS-ONLY|NO|PROHIBIT-PASSWORD|WITHOUT-PASSWORD))
    ...
  Hardening index : 54 [##########          ]
  Tests performed : 6

定向审计价值:改完 sshd 配置后只需重跑 ssh 组(秒级完成)即可验证,不必全量等 5 分钟。同理可用 --tests-from-category security 按类别跑。

3.3 audit dockerfile:Docker 构建文件审计

对 Dockerfile 文本文件做静态审计(不需要构建镜像):

lynis audit dockerfile /path/to/Dockerfile

实测(对一个基于 ubuntu:22.04 的简单 Dockerfile):

  Details:
  Hardening index : 1 [#                   ]
  Tests performed : 1
  Plugins enabled : Skipped

它检查 Dockerfile 中的安全实践(基础镜像标签、USER 非_root 声明等),产出与 system 审计同构的报告。

3.4 澄清:不存在 audit processes / audit dbus 子命令

网上部分教程提到 lynis audit processes、lynis audit dbus。实测结论:3.1.7 中这些不是有效子命令,直接运行会报错:

$ lynis audit processes
Error: Need a target to audit

Examples:
lynis audit dockerfile
lynis audit system

audit 的合法目标实测只有三个:system、dockerfile <file>、system remote <target>(远程模式为 3.1.x 新增实验特性,通过 SSH 在远端执行审计)。进程、dbus 相关检查包含在 audit system 的全量测试中(如 memory_processes 组),不需要也无法单独作为 audit 目标。

四、show:信息查询命令

show 是脚本化使用 Lynis 的关键——所有元数据都能以纯文本取到。可用子命令清单(lynis show help show 实测输出):categories、changelog、commands、dbdir、details、environment、eol、groups、help、hostids、includedir、language、license、logfile、man、options、os、pidfile、plugindir、profiles、release、releasedate、report、settings、tests、tests skipped、version、workdir。

4.1 版本与环境信息

lynis show version && lynis show os && lynis show releasedate && lynis show logfile && lynis show report && lynis show dbdir

实测输出(各命令依次执行的结果):

3.1.7
OS=Linux
OS_NAME=Ubuntu
OS_FULLNAME=Ubuntu 22.04.4 LTS
OS_VERSION=22.04
2026-06-25
/var/log/lynis.log
/var/log/lynis-report.dat
/usr/share/lynis/db

lynis show environment 输出机器与运行时摘要(硬件类型、虚拟化、容器检测等)。lynis show hostids 输出本机唯一标识(key=value 格式,实测):

hostid=56a1e41a9d2cb301501395447625d600d107542f
hostid2=c2c86d2694c102d3b342869fd3bb78a5716fbb4a9b70f1868f0d96f325e5dab0
machineid=

lynis show eol 输出操作系统生命周期状态(实测):

Operating-system=Ubuntu 22.04.4 LTS
End-of-life=No

4.2 show profiles / show settings:配置查询

lynis show profiles

实测输出:

[=/etc/lynis/default.prf]

lynis show settings 显示当前生效的配置(profile 合并后的结果),加 --brief 更紧凑,实测输出(21 项,节选):

colors=1
compressed-uploads=0
error-on-warnings=0
language=zh
license-key=[not configured]
log-tests-incorrect-os=1
machine-role=server
pause-between-tests=0
quick=1
refresh-repositories=1
show-report-solution=1
show-tool-tips=1
skip-plugins=0
skip-upgrade-test=0
ssl-certificate-paths-to-ignore=/etc/letsencrypt/archive:space:
ssl-certificate-paths=/etc/apache2:/etc/dovecot:/etc/httpd:/etc/letsencrypt:/etc/pki:/etc/postfix:/etc/refind.d/keys:/etc/ssl:/opt/psa/var/certificates:/usr/local/psa/var/certificates:/usr/local/share/ca-certificates:/usr/share/ca-certificates:/usr/share/gnupg:/var/www:/srv/www
strict=0
test-scan-mode=full
upload-options=[not configured]
upload-server=[not configured]
upload=no
verbose=0

写自动化脚本时用 show settings --brief 做审计前的配置预检非常方便。注意两点:布尔值在 settings 输出中显示为 0/1(与 profile 中的 yes/no 等价);language=zh 是运行环境 locale 自动检测的结果(即 7.4 节语言提示的来源)。

4.3 show tests / show tests skipped:测试库查询

lynis show tests SSH-7408

实测输出(测试元数据卡):

SSH-7408
===================================

Type: test

Description:
Check SSH specific defined options

Category: security, Group: ssh

Test Execution:
  Operating System:    Yes (all systems)
  Profile:             Yes (not configured)

加上 skipped 关键字可查 profile 中被跳过的测试:

lynis show tests skipped

实测输出(未配置任何 skip-test 时):

# No tests are skipped (according profile)

当你在 custom.prf 里加了 skip-test=SSH-7408 之类的豁免后,这里会列出对应的测试编号——用它可以确认豁免配置是否被 Lynis 正确读取。

4.4 show details:调取测试执行明细

审计日志 /var/log/lynis.log 记录每个测试的逐行判断过程,show details <TEST-ID> 从日志中过滤该测试的全部行:

lynis show details SSH-7408

实测输出(节选,取自一次 ssh 组审计后):

2026-10-24 05:24:50 Performing test ID SSH-7408 (Check SSH specific defined options)
2026-10-24 05:24:50 Test: Checking AllowTcpForwarding in /tmp/lynis.mroX35jhlE
2026-10-24 05:24:50 Result: Option AllowTcpForwarding found
2026-10-24 05:24:50 Result: Option AllowTcpForwarding value is YES
2026-10-24 05:24:50 Result: OpenSSH option AllowTcpForwarding is in a weak configuration state and should be fixed
2026-10-24 05:24:50 Suggestion: Consider hardening SSH configuration [test:SSH-7408] [details:AllowTcpForwarding (set YES to NO)] [solution:-]
2026-10-24 05:24:50 Hardening: assigned partial number of hardening points (0 of 3). Currently having 0 points (out of 3)
2026-10-24 05:24:50 Test: Checking ClientAliveCountMax in /tmp/lynis.mroX35jhlE
2026-10-24 05:24:50 Result: Option ClientAliveCountMax value is 3
2026-10-24 05:24:50 Result: OpenSSH option ClientAliveCountMax is configured reasonably

这条命令是"建议为何产生"的第一现场:能看到每个 sshd 选项的实际取值、判定结论(weak/reasonably/very well)与加固点数的累计过程,处理建议前先看它,能省掉大量猜测。

4.5 show categories / show groups:测试库地图

lynis show categories

实测输出(3 个顶层类别):

performance
privacy
security
lynis show groups

实测输出(37 个测试组,节选):accounting、authentication、banners、boot_services、containers、crypto、databases、dns、file_integrity、file_permissions、filesystems、firewalls、hardening、homedirs、insecure_services、kernel、kernel_hardening、logging、mail_messaging、malware、memory_processes、nameservices、networking、php、ports_packages、printers_spoolers、processes、scheduling、shells、ssh、storage、storage_nfs、systemd、users、virtualization、webservers、tools 等。组名即 --tests-from-group 的取值来源。

五、update:版本管理命令

lynis update info

实测输出:

 == Lynis ==

  Version            : 3.1.7
  Status             : Up-to-date
  Release date       : 2026-06-25
  Project page       : https://cisofy.com/lynis/
  Source code        : https://github.com/CISOfy/lynis
  Latest package     : https://packages.cisofy.com/
lynis update check

实测输出(单行 key=value):

status=up-to-date

说明:update check 向 CISOfy 的版本服务查询最新版号(产生一次 HTTPS 请求),update info 额外展示项目页与包仓库地址。Lynis 的实际升级仍走包管理器(apt-get upgrade lynis),update 系列只做信息查询。

六、configure / generate / upload-only

configure settings——查看/管理配置(实测提示与 profile 体系联动):

$ lynis configure settings
No custom profile found yet.
Suggestion: create one with 'touch custom.prf' or 'touch /etc/lynis/custom.prf'

(创建 custom.prf 后此命令会列出全部已配置项。profile 参数含义见《Lynis 配置参数详解》。)

generate hostids——生成主机标识(接入 Lynis Enterprise/收集端时用,实测输出):

Generated host identifiers
- hostid: 2337ddf9ee3e8541aaf801dc3dab064219f0619a
- hostid2: 2d7b3a314520b87cbcf29ae472ad136738f4ad2fd6323c00bf86db48d47fe7c7

upload-only——只上传既有报告不重新审计(需先在 profile 配好 upload=yes 与 upload-server,社区版单机场景用不到)。

七、实战组合场景

7.1 每周定时全量审计 + 趋势归档

# crontab -e
0 3 * * 0 /usr/sbin/lynis audit system --cronjob > /var/log/lynis-cron.log 2>&1
# 审计后把分数归档(结构化报告为 key=value 格式,直接 grep)
grep '^hardening_index=' /var/log/lynis-report.dat >> /var/log/lynis-history.txt

实测 /var/log/lynis-report.dat 中相关字段(节选):

report_datetime_start=2026-10-24 05:26:33
report_datetime_end=2026-10-24 05:32:19
lynis_version=3.1.7
hardening_index=62
vulnerable_packages_found=1

7.2 改完配置的快速验证

lynis audit system --quick --tests-from-group ssh   # sshd 调整后
lynis audit system --quick --tests-from-group kernel_hardening   # sysctl 调整后
lynis show details SSH-7408   # 看判断依据

7.3 CI/CD 安全卡点

lynis audit system --quick --cronjob --warnings-only --no-colors
# 搭配 profile 中 error-on-warnings=yes 时,出现警告命令返回非零码,流水线即可中断

7.4 常见报错速查

报错原因与处理
Warning: PID file exists, probably another Lynis process is running.上次异常退出残留 PID 文件;确认无 lynis 进程后删除 /var/run/lynis.pid(root)或 ~/lynis.pid、./lynis.pid
Error: Need a target to auditaudit 后没跟合法目标(system/dockerfile)
Notice: no language file found for 'zh'中文 locale 检测为 zh 但语言清单是 cn;profile 加 language=en
Fatal error: No profile defined(退出码 66)profile 搜索路径上一个都没有;检查 /etc/lynis/ 或用 --profile 指定

八、参考链接