lynis是一款由CISOfy维护的开源安全审计工具,专注于Unix/Linux主机的本地安全检查。它不需要agent,也不依赖复杂的后台服务,一条命令就能对系统做几百项检测,覆盖内核参数、身份认证、文件权限、服务配置、日志审计等多个维度。对于运行RHEL、CentOS Stream、Rocky Linux或AlmaLinux的生产服务器来说,lynis非常适合作为上线前的基线自查工具,也是安全加固后验证效果的好帮手。

一、在RHEL上安装lynis
EPEL仓库中提供了lynis的软件包,先确认EPEL已启用,再通过dnf安装即可。如果需要最新版本,也可以直接从官方GitHub仓库克隆源码运行,因为lynis本身是一个Shell脚本集合,不涉及编译安装。
# 启用EPEL仓库并安装 dnf install -y epel-release dnf install -y lynis # 查看版本,确认安装成功 lynis show version # 或者使用源码方式获取最新版 git clone https://github.com/CISOfy/lynis /opt/lynis /opt/lynis/lynis show version
安装完成后建议先查看帮助信息,了解可用的命令模式。lynis的主要入口有audit system(审计本机)、audit system remote(远程审计,需要SSH)以及show、update等辅助子命令。日常使用频率最高的是audit system。
需要注意权限问题:普通用户也能运行lynis,但很多检测项(如读取某些系统文件、检查文件属主)需要root权限才能拿到完整结果,因此生产环境建议直接以root身份执行,或者配合sudo使用。
二、执行扫描并理解报告结构
执行一次完整扫描很简单,命令如下:
# 全量审计,日志和报告默认写入 /var/log/lynis.log 和 /var/log/lynis-report.dat lynis audit system # 只输出警告,适合快速筛查 lynis audit system --quick
扫描过程会实时输出每一个测试项的执行状态,最终给出两个关键数字:Warnings(警告)和Suggestions(建议)。警告代表已经确认存在的安全问题,例如检测到过期账号、SSH允许root登录、未启用防火墙等;建议则是提升安全性的可选措施,比如开启内核的某些硬化选项、收紧文件权限。
报告的持久化文件是/var/log/lynis-report.dat,其中每行是一个键值对。查找所有警告可以直接过滤:
# 提取所有警告 grep -i warning /var/log/lynis-report.dat # 提取加固指数(0-100,数值越高越安全) grep hardening_index /var/log/lynis-report.dat # 查看某个具体测试项的结果 grep -E "ssh\[\]|kernel\[\]" /var/log/lynis-report.dat
每个测试项都有一个唯一编号,格式类似SSH-7408、KRNL-6000。报告中的警告和建议都会附上对应编号,可以到官方网站的WHIP数据库(whip.cisofy.com)查询该项的详细说明、风险解释和修复方法,这是把扫描结果转化为加固动作的关键一步。
三、常见加固项的落地修复
扫描出问题只是第一步,真正的价值在于修复。下面列举RHEL环境中几个高频出现的问题及对应处理方式。
1. SSH服务加固
lynis对SSH的检查非常细致,常见警告包括允许root直接登录、密码认证未关闭、使用较弱的消息认证算法等。编辑/etc/ssh/sshd_config进行如下调整:
# /etc/ssh/sshd_config 关键加固项 PermitRootLogin no PasswordAuthentication no MaxAuthTries 3 ClientAliveInterval 300 ClientAliveCountMax 2 AllowTcpForwarding no X11Forwarding no # 修改后重启服务并验证语法 sshd -t && systemctl restart sshd
关闭密码认证的前提是已配置好密钥登录,否则改完配置可能把自己锁在门外,务必先测试新会话再退出当前终端。这是运维中最常见的翻车点。
2. 内核参数硬化
lynis会检查sysctl中的多项安全参数,比如是否开启SYN Cookie保护、是否禁用源路由、是否记录可疑数据包。通过/etc/sysctl.d/目录统一管理:
# 新建 /etc/sysctl.d/99-hardening.conf net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.log_martians = 1 kernel.kptr_restrict = 2 kernel.dmesg_restrict = 1 fs.protected_symlinks = 1 fs.protected_hardlinks = 1 # 应用并确认 sysctl --system sysctl net.ipv4.tcp_syncookies
3. 账号与密码策略
针对报告中的账号类警告,重点检查默认umask值、密码复杂度和过期策略。可以使用authselect工具统一管理认证配置,同时通过/etc/login.defs和/etc/security/pwquality.conf设置密码策略,例如最小长度12位、要求包含大小写和数字。对于不需要登录的系统账号,确认其shell为/sbin/nologin,避免被利用。
四、形成定期审计的闭环
一次性扫描的意义有限,安全加固应该是一个持续过程。可以把lynis写进cron或systemd timer,每周自动执行并把结果推送到运维群或日志平台。lynis本身支持cron模式,会在报告开头自动插入job说明,避免与人工扫描混淆。
# 每周日凌晨三点自动审计 crontab -e 0 3 * * 0 /usr/sbin/lynis audit system --cronjob > /dev/null 2>&1
此外,lynis的企业版支持集中管理多台主机的扫描结果,开源版则可以自行解析/var/log/lynis-report.dat入库,用Grafana等工具做加固指数的趋势图,直观展示各台服务器的安全水位变化。
如果需要更体系化的合规检查,建议将lynis与OpenSCAP搭配使用:OpenSCAP提供了针对RHEL的官方CIS基准扫描,两者结果相互印证,lynis胜在轻量灵活、建议直接可执行,OpenSCAP胜在规则标准、报告正式。修复完成后再跑一次lynis,观察hardening_index是否上升,就能量化评估加固效果,最终形成扫描、修复、复测的完整闭环。