在服务器运维领域,CentOS凭借其稳定性和与Red Hat Enterprise Linux(RHEL)的兼容性,占据了举足轻重的地位,任何操作系统都并非天生安全,其安全性在很大程度上取决于配置的严谨性和持续的监控,手动进行安全检查不仅耗时耗力,而且容易遗漏关键项,一个功能全面、自动化的CentOS安全检查脚本,成为了系统管理员不可或缺的利器,它能够快速、系统地对服务器进行“体检”,发现潜在的安全风险,为后续的加固工作提供明确指引。

安全检查脚本的核心功能模块
一个设计良好的安全检查脚本,通常会覆盖以下几个核心领域,对系统进行全方位的评估。
系统基础信息核查
这是安全评估的起点,脚本会首先收集系统的基础信息,建立评估基线,这包括:
- 操作系统版本与内核版本:确认是否存在已知的、特定于版本的漏洞。
- 系统启动时间与运行时长:异常的重启可能意味着系统被入侵或存在稳定性问题。
- 当前登录用户:识别是否有未授权的会话存在。
用户与权限安全审计
用户身份是安全的第一道防线,此模块重点关注:
- 空口令用户:检查
/etc/shadow文件,识别是否存在没有设置密码的账户。 - 特权用户(UID为0):除了root用户,列出所有UID为0的账户,这些账户拥有与root同等的权限,是攻击者的主要目标。
- sudoers文件配置:分析
/etc/sudoers文件,检查是否存在过于宽松的授权策略,例如允许普通用户无密码执行所有命令。
网络端口与服务监听
开放的端口是系统对外提供服务的窗口,也是潜在的攻击入口,脚本会:
- 列出所有正在监听的TCP和UDP端口。
- 识别出与端口关联的服务进程。
- 对比常见的高危端口列表,发出警告。
下表展示了部分常见网络服务及其默认端口,脚本会重点检查这些服务的暴露情况。

| 服务名称 | 默认端口 | 潜在风险 |
|---|---|---|
| SSH | 22/TCP | 暴力破解、漏洞利用 |
| Telnet | 23/TCP | 明文传输,极不安全 |
| FTP | 21/TCP | 匿名登录、明文传输 |
| Rsync | 873/TCP | 未授权访问、信息泄露 |
| MySQL | 3306/TCP | 弱口令、未授权访问 |
| Redis | 6379/TCP | 未授权访问、远程代码执行 |
文件系统权限检查
不当的文件权限可能导致信息泄露或权限提升,脚本会检查:
- 关键系统文件权限:如
/etc/passwd,/etc/shadow,/etc/group等,确保其权限符合安全基线(/etc/shadow应为600或更严格)。 - 查找SUID/SGID文件:扫描整个文件系统,找出设置了SUID或SGID位的可执行文件,这些文件在执行时可能会赋予普通用户临时的特权,是权限提升的常见途径。
- 全局可写目录/文件:查找系统中所有用户都可写的目录和文件,这可能导致任意文件写入或覆盖。
系统更新与补丁管理
一个未及时更新的系统是“行走的漏洞库”,脚本会执行 yum check-update 命令,检查是否有可用的安全更新或程序包更新,并提示管理员及时进行系统升级。
防火墙状态核查
防火墙是网络安全的第一道屏障,脚本会检查 firewalld 或 iptables 服务的运行状态,并输出当前的规则集,确认是否存在不必要的放行策略。
脚本核心逻辑示例
为了让读者更直观地理解,以下是一个简化的脚本片段,展示了如何检查空口令用户和开放端口。
#!/bin/bash # 定义颜色输出,便于区分结果 GREEN="