如何使用lynis对RHEL系统进行安全加固审计?

来源:前端技术作者:森沢头衔:网络博主
导读:本期聚焦于森沢创作的《如何使用lynis对RHEL系统进行安全加固审计?》,敬请观看详情。系统上线前不做安全审计,等于给攻击者留了一扇虚掩的门。lynis是一款开源的主机安全扫描工具,特别适合在RHEL及其衍生发行版上做基线检查和加固验证。本文从安装部署讲起,逐步介绍如何执行全量扫描、读懂报告中的警告与建议、利用WHIP数据库定位测试项,并结合OpenSCAP等工具形成完整的加固闭环。文中还给出常见内核参数、SSH服务配置的加固示例,帮助你把扫描结果真正转化为可落地的安全配置。

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

如何使用lynis对RHEL系统进行安全加固审计?

一、在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是否上升,就能量化评估加固效果,最终形成扫描、修复、复测的完整闭环。

lynisRHEL系统加固修改时间:2026-09-01 16:50:34

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。