凡是运维过 CentOS 的老师傅都明白一件事:系统漏洞排查不能等到“出事再补”,而要在日常运维中提前布防。核心思路围绕四个维度——补丁管理、漏洞扫描、日志分析与系统加固,缺一不可。下面逐一展开。
一、系统更新与补丁检查
保持系统及所有软件包始终处于最新版本,是堵住已知漏洞最基础、也最有效的操作。执行起来并不复杂:
- 手动更新:直接执行
sudo yum update,系统会自动拉取全部可用的安全补丁。如果只希望更新安全相关的补丁,避免普通功能更新影响稳定性,可以使用sudo yum --security update,精准锁定安全更新。 - 自动更新:安装
yum-cron工具(命令sudo yum install yum-cron -y),然后编辑/etc/yum/yum-cron.conf,将apply_updates = yes设置为开启。这样系统每天会自动检查并安装安全更新,大幅减少人工干预。
二、使用漏洞扫描工具
手工翻阅补丁清单难免存在盲区,专业的扫描工具能帮你把系统里隐藏的“暗病”全部揪出来。这里介绍四款主流工具,各有侧重。
OpenVAS(开源综合扫描器)
OpenVAS 是一款功能全面的开源漏洞评估系统,能够扫描操作系统、网络服务、应用程序,并提供风险评级(高、中、低)及修复建议。安装步骤:sudo yum install openvas -y,启动服务sudo systemctl start openvas,首次运行需要初始化数据库sudo greenbone-feed-sync(此步骤耗时较长)。扫描时执行openvas-start,在浏览器访问https://localhost:9392,登录后创建任务,目标主机填写127.0.0.1即可开始扫描。
Nessus(商业级精准扫描)
Nessus 是目前全球使用最广泛的漏洞扫描器之一,深度扫描能力很强,能发现未授权访问、配置错误等问题,报告包含 CVSS 评分与修复步骤。从 Tenable 官网下载对应 CentOS 的 RPM 包,例如Nessus-8.13.1-es7.x86_64.rpm,然后用rpm -ivh Nessus-*.rpm安装。启动服务sudo systemctl start nessusd,浏览器访问https://服务器IP:8834激活账号(需注册)。登录后创建扫描策略,选择“Basic Network Scan”或自定义模板,指定目标主机,扫描完成后可导出 PDF 或 HTML 报告。
Trivy(轻量级镜像/系统扫描)
Trivy 最初是为容器和镜像设计的,但也能扫描本地系统,特点是速度快、易于集成,非常适合 CI/CD 流程。安装:添加 Trivy 仓库(编辑/etc/yum.repos.d/trivy.repo,内容参考官方文档),然后sudo yum install trivy -y。扫描本地系统使用trivy fs --security-checks vuln /,扫描镜像使用trivy image centos:7。可以添加--severity HIGH,CRITICAL只过滤高风险漏洞,或者-f json输出结构化报告。
Lynis(系统安全审计工具)
Lynis 是一款开源的安全审计工具,专门检测系统配置缺陷,比如弱密码、未加密服务、缺失的安全补丁,还能检查是否符合 CIS 基准,非常适合日常安全强化。安装sudo yum install lynis -y,执行sudo lynis audit system即可进行全面扫描,结果直接输出到终端,分为“警告”和“建议”两类。如果需要保存为 HTML 报告,可使用sudo lynis audit system --report-file /var/log/lynis-report.html。
三、日志分析与入侵检测
系统是否被入侵过?日志是最好的“案发现场”。
查看系统日志
认证日志、服务启动日志、错误日志,都能反映异常活动。常用命令:
sudo tail -f /var/log/secure:实时查看认证日志,例如 SSH 登录失败记录,重点关注关键字Failed password。sudo tail -f /var/log/messages:查看系统级日志,例如内核错误、服务崩溃信息。sudo grep 'fail\|error\|refused' /var/log/secure:过滤关键字,快速定位异常事件。
入侵检测系统(IDS)
IDS 能够实时监控网络流量或系统活动,识别端口扫描、恶意代码执行等行为。推荐两个:
- Snort(开源网络IDS):安装
sudo yum install snort -y,编辑/etc/snort/snort.conf启用常用规则集,启动服务sudo systemctl start snort,警报日志位于/var/log/snort/alert。 - OSSEC(开源主机IDS):安装服务器端
sudo yum install ossec-hids-server -y,客户端安装ossec-hids-agent,配置同步后,OSSEC 会监控文件完整性(例如/etc/passwd被修改)、登录行为(例如 root 远程登录),并发出警报。
四、监控系统状态与配置
漏洞风险很多时候来源于“敞开的门”和“松掉的锁”。
检查开放端口与服务
开放的端口就是攻击者的入口,必须定期检查并及时关闭不必要的服务。常用命令:
sudo netstat -tulnp:查看所有监听端口及对应的服务进程。sudo ss -tulnp:更现代的替代命令。sudo lsof -i :端口号:查看特定端口的服务,例如sudo lsof -i :22查看 SSH。
操作建议非常直接:停止不需要的服务(例如sudo systemctl stop httpd),禁用高危端口(例如 Telnet 的 23 端口、FTP 的 21 端口)。
使用SELinux强化安全
SELinux 是 CentOS 内置的强制访问控制机制,能够限制进程权限,防止漏洞被利用。例如限制 Apache 只能访问/var/www/html目录。检查状态使用sestatus,如果显示Enforcing表示已启用(推荐)。如果是Permissive(仅记录不阻止)或Disabled,则需要修改/etc/selinux/config,将SELINUX=enforcing设置好,然后重启系统。如果业务需要调整规则,例如允许 Nginx 访问/data目录,可以使用audit2allow工具生成自定义策略:grep nginx /var/log/audit/audit.log | audit2allow -M mypolicy。
总结起来,CentOS 漏洞排查并非单一技巧就能搞定,而是一套组合拳:补丁及时打、工具勤快跑、日志紧盯牢、权限锁死好——做到这四点,系统基本能抵御绝大多数攻击。
