Lynis 常用 CLI 命令详解(audit/show/update 实测)
Lynis 3.1.7 命令体系全解:6 个顶层命令与 30 个全局参数、audit system 定向审计与无效子命令澄清(audit processes/dbus 不存在)、show 元数据查询、update 版本管理、configure/generate,附 cron 归档、CI 卡点与排障速查,全部实测回显。
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 --cronjob | cron 专用:无等待、无颜色、无按需交互 |
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 audit | audit 后没跟合法目标(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 指定 |
八、参考链接
- 官方 man 手册(本机
man lynis,或在线版):https://cisofy.com/documentation/lynis/ - 命令帮助总览:
lynis show help、lynis show help audit、lynis show help show - 控制项解释页(按 TEST-ID 检索):https://cisofy.com/lynis/controls/
- 本系列配套文档:《Lynis 介绍与选型指南》《Ubuntu 22.04 安装 Lynis 3.1.7 指南》《Lynis 配置参数详解》