EPEL仓库需先安装epel-release包:CentOS 7用sudo yum install epel-release -y,CentOS 8/9及RHEL用sudo dnf install epel-release -y;安装后自动启用,通过yum repolist | grep epel或dnf repolist | grep epel验证。

直接装包管理器版本即可满足绝大多数生产场景,但必须手动补全 epel-release(CentOS/RHEL)或启用官方 APT 仓库(Ubuntu),否则会装到过时版本甚至失败。
用包管理器安装:快但要防版本陷阱
包管理器安装最省事,但不同发行版默认源里的 lynis 版本差异极大——Ubuntu 22.04 官方源是 2.7.x,而当前最新稳定版已是 3.1.x(2026 年 9 月发布),缺失对 SELinux policy reload 检测、systemd-resolved DNSSEC 配置验证等关键能力。
- CentOS/RHEL 7/8/9 必须先启用 EPEL:
sudo yum install epel-release -y(RHEL 9+ 改用dnf install epel-release),再执行sudo yum install lynis或sudo dnf install lynis - Ubuntu/Debian 推荐加官方源(避免 apt-get install lynis 装到 2.6.x):
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F,然后添加deb https://packages.cisofy.com/community/lynis/deb/ stable main到/etc/apt/sources.list.d/lynis.list - 装完验证版本:
lynis --version,输出应为3.1.x;若低于 3.0,请跳过包管理器,改用源码方式
从源码运行:不装也能用,适合 CI/CD 和临时加固
官方明确说明 lynis 是“no-install”工具,下载即用,这对 Jenkins/GitLab CI 流水线或容器内审计特别友好——不用污染基础镜像,也规避了系统级权限问题。
- 获取最新版脚本:
curl -fsSL https://gitcode.com/GitHub_Trending/ly/lynis/raw/branch/master/lynis -o lynis(注意不是 GitHub 原始 URL,该镜像站同步更快) - 赋予执行权:
chmod +x lynis,之后可直接调用:sudo ./lynis audit system --quiet - 关键路径意识:源码模式下,配置文件默认读取同目录的
default.prf;若想复用已调优的策略,把定制后的default.prf和lynis放同一目录即可,无需全局安装 - 容器内使用限制:在 rootless Podman 或 Docker 中运行时,
/proc和/sys只读挂载会导致 kernel 模块检查跳过,此时应加--skip-test kernel-01避免误报
自动化审计脚本里最容易崩的三个点
把 lynis audit system 塞进 cron 或 CI 脚本看似简单,实际 80% 的失败都卡在这三处——不是工具问题,而是环境没对齐。
-
PATH丢失:crontab 默认$PATH=/usr/bin:/bin,找不到lynis。解决方法只有两个:/usr/bin/lynis写绝对路径,或在脚本开头加export PATH="/usr/local/bin:/usr/bin:/bin" - 日志路径冲突:多个 cron job 同时写
/var/log/lynis-report.dat会覆盖。务必用--report-file /var/log/lynis/$(date +\%F-\%H).dat分时隔离,且提前mkdir -p /var/log/lynis - 权限静默失败:非 root 用户跑
lynis时,很多 test group(如authentication)因读不到/etc/shadow直接跳过,报告里不报错也不提示。必须用sudo,且确保 cron job 以 root 运行(sudo crontab -e,而非普通用户crontab -e)
合规评估前必须确认的两件事
Lynis 标榜支持 HIPAA、PCI DSS 等标准,但它不做“合规判定”,只做“配置比对”。能否通过审计,取决于你是否提前告诉它“你要过哪条线”。
- 激活合规模式:运行时必须加
--profile pci-dss或--profile hipaa,否则所有测试都按通用基线跑,HRDN-7222(NFS 暴露)这类 PCI DSS 强制项根本不会触发 - 确认 profile 文件存在:检查
db/profiles/目录下是否有对应文件,例如pci-dss.prf;若用源码方式,该目录在lynis同级,缺失需手动git clone完整仓库,不能只下载单个脚本 - 注意 profile 与 test group 的关系:启用
--profile pci-dss后,lynis会自动加载firewalls、authentication、logging等组,但不会加载malware——这不是 bug,是 PCI DSS 标准本身未强制要求恶意软件扫描
真正难的从来不是跑出报告,而是看懂哪些 [WARNING] 是真风险、哪些是环境特例导致的误报。比如 SSH root login allowed 报警,得去翻 /etc/ssh/sshd_config 看是不是有注释行干扰了解析,而不是直接改配置。


















