在CentOS服务器安全加固工作中,lynis是一款开源的安全审计工具,它能自动扫描系统配置、内核参数、网络设置、文件权限、用户账户等数十个维度,最终生成一份详细的合规整改建议报告。简单来说,你只需要在CentOS上安装并运行lynis,它就会像一个经验丰富的安全工程师一样,逐条告诉你哪里有风险、该怎么改。这篇文章会从安装、运行、解读报告到逐项整改,把整个流程讲透。
为什么选择lynis而不是其他安全工具
市面上安全扫描工具不少,比如OpenSCAP、Nessus、CIS-CAT等,但lynis有几个独特优势:第一,它是纯命令行工具,不需要图形界面,适合所有CentOS版本;第二,它不仅做扫描,还会针对每个发现给出具体的修复建议和参考链接;第三,它支持自定义测试项,可以针对等保2.0、CIS Benchmark等合规标准做定向检查。对于运维人员来说,lynis的输出结果直接可用,不需要二次翻译。
在CentOS上安装lynis的具体步骤
CentOS 7和CentOS 8/Stream的安装方式略有不同,但都很简单。CentOS 7需要先启用EPEL源,CentOS 8则可以直接从官方仓库或源码安装。推荐使用源码安装,因为版本更新更快。
# CentOS 7 安装方法 yum install -y epel-release yum install -y lynis # 或者使用源码安装(推荐) cd /opt git clone https://github.com/CISOfy/lynis.git cd lynis ./lynis audit system
# CentOS 8 / Stream 安装方法 dnf install -y lynis # 或者源码安装 cd /opt git clone https://github.com/CISOfy/lynis.git cd lynis ./lynis audit system
安装完成后,验证版本:
lynis show version
运行lynis并理解扫描模式
lynis有三种运行模式:快速扫描、标准扫描和深度扫描。日常安全检查用标准扫描就够了,如果是做合规审计或者上线前检查,建议用深度扫描。
# 快速扫描(只检查关键项) lynis audit system --quick # 标准扫描(默认模式,推荐) lynis audit system # 深度扫描(包含所有测试项,耗时较长) lynis audit system --auditor "security-scanner" --tests all
标准扫描通常需要5到15分钟,取决于服务器配置。扫描过程中你会看到大量测试项在屏幕上滚动,每一项后面会显示OK、WARNING或者FOUND。FOUND就意味着发现了问题需要整改。
如何读懂lynis生成的报告
扫描完成后,lynis会在屏幕上输出摘要,同时生成一份详细的日志文件,默认路径是/var/log/lynis-report.dat。你可以用以下命令查看完整报告:
lynis show report
# 或者直接查看日志文件 cat /var/log/lynis-report.dat | less
报告中每个发现都有一个编号,比如"WRN-1234"或"TEST-5678"。编号前面的字母代表类型:WRN是警告,SUG是建议,TEST是测试项。每个问题后面都会跟着具体的描述和修复方法。例如你可能看到这样的内容:
Test: AUTH-9228 (SSH) Result: Found SSH protocol version 1 enabled Suggestion: Disable SSH protocol version 1 in /etc/ssh/sshd_config Reference: https://cisofy.com/controls/9228/
这就是lynis最有价值的地方——它不只是告诉你有问题,还告诉你改哪个文件、改什么参数、参考什么标准。
CentOS常见安全问题及lynis整改建议详解
下面我按照lynis经常发现的几大类问题,逐一给出具体整改方法。
1. SSH安全配置
lynis通常会发现SSH允许root登录、使用了旧协议版本、密码认证未关闭等问题。整改方法如下:
# 编辑SSH配置文件 vim /etc/ssh/sshd_config # 修改以下参数 PermitRootLogin no Protocol 2 PasswordAuthentication no PubkeyAuthentication yes MaxAuthTries 3 ClientAliveInterval 300 ClientAliveCountMax 2 # 重启SSH服务 systemctl restart sshd
改完之后记得测试能否正常登录,避免把自己锁在外面。
2. 用户账户与密码策略
lynis会检查是否存在空密码账户、密码过期策略、UID为0的非root用户等。整改建议:
# 检查空密码账户
awk -F: '($2 == "") {print $1}' /etc/shadow
# 锁定不需要的账户
usermod -L username
# 设置密码过期策略
vim /etc/login.defs
# 修改 PASS_MAX_DAYS 90(密码最长90天)
# 修改 PASS_MIN_DAYS 7(最短7天后可改密码)
# 修改 PASS_WARN_AGE 14(过期前14天提醒)
# 对已有用户强制修改密码
chage -M 90 -m 7 -W 14 username
3. 文件权限与系统完整性
lynis会扫描/etc/passwd、/etc/shadow、/etc/group等关键文件的权限是否合理,还会检查是否有SUID/SGID文件异常。常见整改:
# 修正关键文件权限 chmod 644 /etc/passwd chmod 600 /etc/shadow chmod 644 /etc/group chmod 644 /etc/gshadow # 查找并清理危险的SUID文件 find / -perm -4000 -type f 2>/dev/null # 对不需要SUID权限的文件移除 chmod u-s /path/to/file
4. 内核参数与网络安全
lynis会检查TCP SYN Cookie、ICMP重定向、IP转发等内核参数。针对CentOS的sysctl整改:
# 编辑sysctl配置 vim /etc/sysctl.conf # 添加以下安全参数 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.log_martians = 1 net.ipv4.ip_forward = 0 # 立即生效 sysctl -p
5. 日志审计与服务管理
lynis会检查rsyslog是否运行、auditd是否启用、不必要的服务是否关闭。整改方法:
# 确保auditd运行 systemctl enable auditd systemctl start auditd # 检查并关闭不必要的服务 systemctl list-unit-files --state=enabled systemctl disable servicename # 确保rsyslog正常运行 systemctl enable rsyslog systemctl start rsyslog
6. 防火墙与SELinux配置
lynis会检查firewalld或iptables规则是否合理,SELinux是否处于 enforcing 模式。建议:
# 查看SELinux状态 getenforce # 如果是disabled或permissive,改为enforcing setenforce 1 vim /etc/selinux/config # 修改 SELINUX=enforcing # 检查防火墙规则 firewall-cmd --list-all # 只开放必要端口 firewall-cmd --permanent --add-port=22/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --reload
7. 软件包与自动更新
lynis会提示是否有过期的软件包、是否启用了自动安全更新。CentOS 7使用yum-cron,CentOS 8使用dnf-automatic:
# CentOS 7 启用自动安全更新 yum install -y yum-cron vim /etc/yum/yum-cron.conf # 修改 apply_updates = yes systemctl enable yum-cron systemctl start yum-cron # CentOS 8 启用自动安全更新 dnf install -y dnf-automatic vim /etc/dnf/automatic.conf # 修改 apply_updates = yes systemctl enable dnf-automatic.timer systemctl start dnf-automatic.timer
如何将lynis报告转化为合规整改文档
很多企业做等保测评或者行业合规检查时,需要提交整改报告。lynis的报告可以直接作为技术依据,但需要进一步整理。建议做法:将lynis输出的每个FOUND项对应到具体的合规条款,比如等保2.0中"身份鉴别""访问控制""安全审计"等控制项。然后按照"问题描述—风险等级—整改措施—验证方法"的格式整理成表格,这样审核人员一目了然。
你也可以用lynis的JSON输出功能配合脚本生成结构化报告:
# 生成JSON格式报告 lynis audit system --json-output --report-file /tmp/lynis-report.json
定期扫描与持续合规的建议
安全不是一次性的工作。建议将lynis扫描加入定期运维计划,每周至少跑一次快速扫描,每月一次完整扫描。可以配合crontab实现自动化:
# 每周日凌晨3点执行快速扫描并发送邮件 0 3 * * 0 /opt/lynis/lynis audit system --quick --cronjob 2>&1 | mail -s "Weekly Lynis Security Scan" admin@example.com
每次扫描后对比报告,关注新增的FOUND项,及时处理。对于长期无法修复的问题(比如某些老旧业务依赖的配置),要做好风险接受记录并上报。
总结
lynis是CentOS安全加固中非常实用的工具,它的核心价值在于自动化发现问题并给出可操作的整改建议。从SSH配置到内核参数,从文件权限到日志审计,lynis覆盖了服务器安全的方方面面。关键是不要只跑一次就完事,要把它纳入日常运维流程,持续跟踪、持续整改,才能真正把CentOS服务器的安全水位提上去。对于需要做等保、CIS合规的团队,lynis的报告可以直接作为技术支撑材料,大幅减少人工排查的工作量。
