Ubuntu 22.04 安装 Lynis 3.1.7 指南

Ubuntu 22.04 安装 Lynis 3.1.7 全流程实测:CISOfy 官方 apt 源(GPG key 导入/仓库配置/版本钉选)、发行版仓库、tarball 离线、git 四方案对比,含包布局差异(插件实体缺失)、密钥轮换排障、cron 定时审计与卸载清理。

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

Ubuntu 22.04 安装 Lynis 3.1.7 指南

目标:在 Ubuntu 22.04 服务器上从零安装 Lynis 安全审计工具,覆盖 CISOfy 官方 apt 源、发行版 universe 仓库、官方 tarball、git 仓库四种安装方案,并完成装后验证与定时审计配置。全部命令与回显已在 Ubuntu 22.04.4 LTS(内核 6.8.0、x86_64)服务器上逐条实测,实测版本为官方最新稳定版 3.1.7(2026-10-24 实查 GitHub Releases)。

一、环境信息

  • 操作系统:Ubuntu 22.04.4 LTS(主机名 ops,内核 6.8.0-138-generic,x86_64)
  • 目标软件:Lynis 3.1.7(官方 deb 包名为 3.1.7-100)
  • 网络要求:能访问 packages.cisofy.com(官方软件源)、downloads.cisofy.com(tarball 下载)、github.com(git 方式)
  • 权限要求:root(本文全部以 root 执行;非 root 用户在命令前加 sudo 即可)
  • 安装路径(以官方 deb 包为例):命令 /usr/sbin/lynis、profile /etc/lynis/、测试库 /usr/share/lynis/
  • 运行日志:/var/log/lynis.log;结构化报告:/var/log/lynis-report.dat

二、前置条件

Lynis 是纯 Shell 脚本工具,前置条件极少,实测确认以下三件事即可:

  1. Shell 与基础命令:bash、curl(下载 GPG key/tarball 用)。实测系统自带;缺失时执行:
apt-get install -y curl
  1. CA 证书:官方软件源走 HTTPS,需要 ca-certificate 支持(Ubuntu 22.04 自带)。官方文档额外建议 RHEL 系先执行 yum update ca-certificates curl nss openssl,Ubuntu 无此必要。

  2. 确认系统无旧版残留:

dpkg -l lynis

实测输出(干净系统):

dpkg-query: 没有找到与 lynis 相匹配的软件包

⚠️ 注意:Lynis 审计需要 root 权限才能读到全部配置(shadow、audit 日志等),安装本身也建议以 root 操作。

三、版本选型说明

安装前先搞清楚"哪个渠道给哪个版本"。实测本机 apt-cache policy lynis 在加入官方源前后的完整对照:

加入官方源前(只有 Ubuntu 自带 universe 仓库):

apt-cache policy lynis

实测输出:

lynis:
  已安装:(无)
  候选:  3.0.7-1
  版本列表:
     3.0.7-1 500
        500 http://cn.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
        500 http://cn.archive.ubuntu.com/ubuntu jammy/universe i386 Packages

加入 CISOfy 官方源后:

lynis:
  已安装:(无)
  候选:  3.1.7-100
  版本列表:
     3.1.7-100 500
        500 https://packages.cisofy.com/community/lynis/deb stable/main amd64 Packages
        500 https://packages.cisofy.com/community/lynis/deb stable/main arm64 Packages
     3.0.7-1 500
        500 http://cn.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
        500 http://cn.archive.ubuntu.com/ubuntu jammy/universe i386 Packages

关键结论:

渠道实测版本说明
Ubuntu 22.04 universe3.0.7-1落后官方两个功能版本,仅适合临时用
CISOfy 官方 deb 源3.1.7-100与 GitHub 最新稳定版同步(包构建号 -100)
官方 tarball3.1.7与 GitHub Release 同源
git master3.1.8(开发版)官方 CHANGELOG 标注 not released yet

选型建议:生产服务器优先选 CISOfy 官方 apt 源(方案一)——版本最新、apt upgrade 即可升级;无外网环境选 tarball(方案三);想跟进开发版或做二次开发选 git(方案四)。Ubuntu universe 的 3.0.7 只在"有就行"的场景使用。

四、在线安装方案(A:CISOfy 官方 apt 源,推荐)

本节添加 CISOfy 官方软件仓库并安装 Lynis,这是官方文档推荐的首选方式(步骤来源:packages.cisofy.com/community/ Debian/Ubuntu 节,2026-10-24 查询)。全程四步:导入 GPG key → 写仓库文件 → 刷新索引 → 安装。

4.1 导入官方 GPG 签名密钥

curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/cisofy-software-public.gpg

实测确认 key 文件生成(3942 字节):

ls -la /etc/apt/trusted.gpg.d/cisofy-software-public.gpg
-rw-r--r-- 1 root root 3942 10月 24 05:10 /etc/apt/trusted.gpg.d/cisofy-software-public.gpg

⚠️ 注意:密钥历经轮换,2025-10-22 起签名密钥为 7A9A1D9D5B27C6D3(弃用 SHA1)。如果你的机器上存在旧版 cisofy-software-security.key 相关配置并报 EXPKEYSIG/NO_PUBKEY 错误,删除旧 key 文件后按本节重新导入新 key(排障详见第十章 FAQ)。

4.2 写入仓库定义文件

echo "deb [arch=amd64,arm64 signed-by=/etc/apt/trusted.gpg.d/cisofy-software-public.gpg] https://packages.cisofy.com/community/lynis/deb/ stable main" | tee /etc/apt/sources.list.d/cisofy-lynis.list

实测输出:

deb [arch=amd64,arm64 signed-by=/etc/apt/trusted.gpg.d/cisofy-software-public.gpg] https://packages.cisofy.com/community/lynis/deb/ stable main

💡 说明:stable main 是官方要求的固定写法——不要替换成 Ubuntu 版本代号(如 jammy),官方源对所有发行版统一走 stable 通道(官方历史公告:2021-06-22 起不再按发行版代号维护)。

4.3 刷新软件索引

apt-get update

实测输出(节选,仅保留 cisofy 相关行):

获取:12 https://packages.cisofy.com/community/lynis/deb stable InRelease [11.5 kB]
获取:13 https://packages.cisofy.com/community/lynis/deb stable/main arm64 Packages [672 B]
获取:14 https://packages.cisofy.com/community/lynis/deb stable/main amd64 Packages [672 B]

看到 stable InRelease 与 Packages 两行即说明仓库可用。

4.4 安装并验证

apt-get install -y lynis

实测输出(节选):

升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 212 个软件包未被升级。
需要下载 341 kB 的归档。
解压缩后会消耗 1,763 kB 的额外空间。
获取:1 https://packages.cisofy.com/community/lynis/deb stable/main amd64 lynis all 3.1.7-100 [341 kB]
已下载 341 kB,耗时 2秒 (164 kB/s)
正在选中未选择的软件包 lynis。
正在解压 lynis (3.1.7-100) ...
正在设置 lynis (3.1.7-100) ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...

验证版本与命令位置:

lynis show version && command -v lynis && man -w lynis

实测输出:

3.1.7
/usr/sbin/lynis
/usr/share/man/man8/lynis.8.gz

4.5 包安装的文件布局

dpkg -L lynis 实测关键路径(完整清单 160 项,节选归类):

/etc/lynis/default.prf          —— 默认扫描 profile(配置中心)
/etc/lynis/developer.prf        —— 开发者 profile
/usr/sbin/lynis                 —— 主命令
/usr/share/lynis/db/            —— 测试数据库(tests.db、software-eol.db、malware.db 等)
/usr/share/lynis/include/       —— 测试实现(tests_authentication、tests_ssh 等 45 个模块)
/usr/share/lynis/plugins/       —— 插件目录(仅含 README 与 custom_plugin.template)
/usr/share/man/man8/lynis.8.gz  —— man 手册
/usr/share/doc/lynis/           —— 文档(README、FAQ、changelog)

⚠️ 注意:官方 deb 包不包含 pam/systemd 两个内置插件实体(/usr/share/lynis/plugins/ 下只有 README 和模板),所以 deb 安装后跑全量审计显示 Plugins enabled : 0;而 git 方式 clone 的目录自带这两个插件实体(plugins/ 下有 pam、systemd),审计显示 Plugins enabled : 2。插件声明(profile 中的 plugin= 行两版相同,实测 diff 为空)与插件实体是两回事,想让 deb 安装获得插件,把插件文件放进 /etc/lynis/plugins/ 或 /usr/share/lynis/plugins/ 即可。

五、发行版仓库安装方案(B:Ubuntu universe)

不添加第三方源、直接用 Ubuntu 自带仓库安装,一条命令完成:

apt-get install -y lynis

装完验证:

lynis show version

该渠道实测候选版本为 3.0.7-1(见第三章版本对照),落后官方约一年。适用场景:内网无法访问 packages.cisofy.com 但有 Ubuntu 镜像源、或只做一次性评估。缺点:apt upgrade 不会带来最新测试项——Lynis 的核心价值在于测试库的持续更新(EOL 数据库、新发行版适配、新控制项),版本落后会明显降低审计价值,因此生产环境不建议长期停留在此方案。

六、离线安装方案(C:官方 tarball)

适合无法访问 apt 源的服务器:在内网下载一次 tarball,拷贝到目标机解压即用。

6.1 下载并校验

在能联网的机器上下载官方 tarball(实测来源 https://downloads.cisofy.com/lynis/lynis-3.1.7.tar.gz ):

curl -fsSL -o lynis-3.1.7.tar.gz https://downloads.cisofy.com/lynis/lynis-3.1.7.tar.gz

记录完整性指纹(实测本机下载结果,读者重下后请以自己实测值为准做同批次比对):

sha256sum lynis-3.1.7.tar.gz

实测输出:

b5314a07fd85fa3ffc7da57b508f0108ec3280d84e4af823f805d95cbbc2428c  lynis-3.1.7.tar.gz

包大小实测 355590 字节(约 347 KB)。

6.2 解压并运行

tar xzf lynis-3.1.7.tar.gz
cd lynis
./lynis show version

实测输出:

3.1.7

tarball 无需安装、无依赖,解压即可执行全量审计:

./lynis audit system --quick

💡 说明:tarball 方式没有 man 页注册、没有 /etc/lynis 配置目录约定(profile 就在解压目录的 default.prf),升级 = 替换整个目录。若以 root 运行,官方建议先执行 chown -R 0:0 lynis 修正属主,否则 Lynis 会因"以 root 执行了非 root 属主的文件"给出警告(官方 README 明确说明)。

七、开发者方案(D:git 仓库)

跟踪开发版或参与二次开发时使用,同样是 clone 即用:

git clone https://github.com/CISOfy/lynis
cd lynis
./lynis show version

实测输出(2026-10-24 clone master 分支):

3.1.8

⚠️ 注意:master 分支是开发版(CHANGELOG 中 3.1.8 标注 not released yet),生产环境仍建议使用方案一的稳定版。git 方式的价值在于:自带 pam/systemd 插件实体、可用 git pull 秒级跟进上游、profile 与测试可直接修改试验。

八、方案对比与选择建议

维度A:官方 apt 源B:Ubuntu universeC:官方 tarballD:git
实测版本3.1.7-1003.0.7-13.1.73.1.8(开发版)
是否需联网需要(装+升级)需要(装+升级)下载时需要,安装可离线需要
升级方式apt upgradeapt upgrade重新下载替换目录git pull
man 手册/系统布局有/标准有/标准无无
内置插件实体无(0 个启用)无无pam+systemd(2 个)
配置目录/etc/lynis//etc/lynis/解压目录内仓库目录内
适用生产服务器(首选)快速临时评估离线内网开发/测试

选择建议一句话:可联网生产机选 A;离线选 C;临时评估选 B;开发调试选 D。

九、装后配置与定时审计

9.1 首次运行验证

安装完成后先跑一次全量审计确认工具可用(只读操作,实测约 5-6 分钟):

lynis audit system --quick

实测(3.1.7-100 安装版)尾部摘要:

  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

9.2 配置文件位置

  • 系统级 profile:/etc/lynis/default.prf(deb 包安装的默认 profile,实测 lynis show profiles 输出 /etc/lynis/default.prf)
  • 自定义覆盖:在同目录创建 custom.prf,只写需要覆盖的键(官方警告:不要直接改 default.prf,升级会被覆盖)

配置参数的完整逐项说明见《Lynis 配置参数详解》。

9.3 配置 cron 定期审计

Lynis 内置 --cronjob 参数专为无人值守设计(跳过所有交互等待)。添加每周日凌晨 3 点的定时审计:

crontab -e

追加一行:

0 3 * * 0 /usr/sbin/lynis audit system --cronjob > /var/log/lynis-cron.log 2>&1

💡 说明:官方同样提供 systemd timer 方式,在 git 仓库的 extras/systemd/ 下有现成的 lynis.service 与 lynis.timer 模板可参考(tarball 同样附带 extras 目录,实测存在)。

十、常见问题(FAQ)

Q1:apt-get update 报 GPG 签名错误(EXPKEYSIG / NO_PUBKEY 9DE922F1C2FDE6C4)?

这是 2025-10-22 官方密钥轮换前的旧配置遗留(旧 key 9DE922F1C2FDE6C4 已被 7A9A1D9D5B27C6D3 取代)。处理:删除旧 key 与旧配置,按第四章重新导入:

rm -f /etc/apt/trusted.gpg.d/cisofy-software-public.gpg
curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/cisofy-software-public.gpg
apt-get update

Q2:运行时提示 Warning: PID file exists, probably another Lynis process is running.?

说明存在上次异常退出(Ctrl+C、进程被杀)残留的 PID 文件。Lynis 启动时检查 ~/lynis.pid、./lynis.pid、/var/run/lynis.pid 三个位置(root 用户为 /var/run/lynis.pid)。处理:先确认确无 Lynis 进程在跑,再删除残留:

ps aux | grep -v grep | grep lynis || echo "no lynis process"
rm -f /var/run/lynis.pid ~/lynis.pid ./lynis.pid /tmp/lynis.*

(本机实测曾因一次中断的后台任务触发该警告,确认无进程并清理后警告消失。)

Q3:非 root 跑 lynis audit system 结果偏少?

正常现象。无 root 权限时 shadow 文件、audit 日志、部分系统目录不可读,Lynis 会自动降级并跳过相关测试,Hardening Index 也会偏低。生产审计一律 root 执行。

Q4:语言检测提示 Notice: no language file found for 'zh'?

实测在中文 locale(zh_CN.UTF-8)机器上出现:系统检测到语言 zh,但 Lynis 自带语言清单为 cn 而非 zh。在 profile 中显式指定可用语言即可消除:

echo "language=cn" >> /etc/lynis/custom.prf

⚠️ 注意:Lynis 中文翻译长期不完整,官方文档与多数社区实践默认使用英文输出(language=en),建议审计报告语言保持英文以便对照官方控制页。

Q5:想固定只从官方源拿 Lynis(避免发行版旧版优先)?

创建 pin 文件提升官方源优先级(官方文档建议):

echo -e "Package: lynis\nPin: origin packages.cisofy.com\nPin-Priority: 600" > /etc/apt/preferences.d/lynis

十一、卸载与清理

卸载 apt 安装的包(含配置文件):

apt-get purge -y lynis

删除官方源与 key(彻底还原系统):

rm -f /etc/apt/sources.list.d/cisofy-lynis.list
rm -f /etc/apt/trusted.gpg.d/cisofy-software-public.gpg
rm -f /etc/apt/preferences.d/lynis
apt-get update

删除 git/tarball 方式的目录(直接删除解压/clone 的目录即可):

rm -rf /opt/lynis

清理运行产物(如不再需要历史审计数据):

rm -f /var/log/lynis.log /var/log/lynis-report.dat /var/log/lynis-cron.log

卸载后验证:

dpkg -l lynis 2>&1 | tail -1

实测输出:

dpkg-query: 没有找到与 lynis 相匹配的软件包

十二、参考链接