CentOS安全配置的核心答案是:先确认你的系统是否还在支持周期内,再按“账号、内核、网络、文件、日志”五个层面逐项加固,并把替换方案提上日程。2024年6月30日CentOS 7正式停止维护,这意味着如果你还在跑CentOS 7且不做任何处理,你的服务器已经暴露在无补丁更新的风险中,本文基于这一现实,梳理一套可落地的CentOS安全配置实操流程。
CentOS 7服务器安全加固第一步:搞清楚你还在不在安全线内
登录服务器先执行一条命令:
cat /etc/redhat-release
如果是CentOS 7.x,且你还在生产环境使用,请直面一个现实:官方已经不再提供安全补丁,行业共识认为,无补丁更新的系统被入侵只是时间问题,而非概率问题,CentOS 7生命周期已终结,但存量服务器依然庞大,国内大量企业仍在运行,这时你只有两条路:一是尽快迁移到替代发行版,二是暂时无法迁移就做深度加固,同时规划迁移时间表。
先看迁移选项,CentOS官方给出了三个方向的推荐:
- CentOS Stream:滚动发布版,介于Fedora和RHEL之间,适合开发测试环境,生产环境慎用。
- Rocky Linux:CentOS社区原团队打造,完全兼容RHEL二进制,是目前最热门的替代选项之一。
- AlmaLinux:由CloudLinux公司主导,同样是RHEL兼容发行版,社区活跃度高。
另外还有两个方向:Oracle Linux(免费,提供Ksplice内核热补丁,但需考虑Oracle的服务绑定感)和 openEuler(国内华为主导,国内生态资源多,适配国产化需求场景时可重点考虑)。
替换系统不是小事,但更危险的是什么都不做,先把你的CentOS 7所有服务器列出清单,记录用途、部署应用、网络位置,这步动作不用动系统,但决定后续所有优先级。
如果你短期内必须保留CentOS 7,推荐一个临时兜底方案:把EPEL源和extras源全部切换到Vault存档源,并且额外挂载一个第三方补丁源,具体操作如下:
# 备份原有源 mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/.repo /etc/yum.repos.d/backup/ # 配置Vault基础源 cat > /etc/yum.repos.d/CentOS-Vault.repo << 'EOF' [base] name=CentOS-7 - Base baseurl=http://vault.centos.org/7.9.2009/os/$basearch/ gpgcheck=1 gpgkey=http://vault.centos.org/7.9.2009/os/$basearch/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-7 - Updates baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/ gpgcheck=1 gpgkey=http://vault.centos.org/7.9.2009/os/$basearch/RPM-GPG-KEY-CentOS-7 [extras] name=CentOS-7 - Extras baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/ gpgcheck=1 gpgkey=http://vault.centos.org/7.9.2009/os/$basearch/RPM-GPG-KEY-CentOS-7 EOF yum clean all && yum makecache
Vault源是CentOS官方存档,不是新补丁来源,仅保证你能装基础包,真正要盯紧的是你和安全团队自己建立的漏洞巡检机制。
CentOS替换方案落地之后,安全基线该怎么定
无论你最终选了Rocky还是Alma,甚至短期留在CentOS 7,基础加固动作是通用的,以下每个步骤都建议截图记录,方便后续审计。
账号和认证:第一道门
SSH配置是重中之重,默认的22端口和root直登就是给攻击者送人头,修改SSH配置文件

/etc/ssh/sshd_config 的步骤如下:
- 修改默认端口,比如改为
Port 22888,先确认新端口防火墙放行再重启sshd,避免把自己锁在门外。 - 禁用root直接登录:
PermitRootLogin no。 - 启用密钥登录:
PubkeyAuthentication yes,然后把你的公钥写入~/.ssh/authorized_keys。 - 关闭密码登录:
PasswordAuthentication no,这一步做之前千万确认密钥可用,否则真的进不去服务器,这种事业内经常发生。 - 限制登录用户:
AllowUsers YourUserName。
改完重启服务:
systemctl restart sshd
密码策略方面,控制 /etc/login.defs 和 /etc/pam.d/system-auth,设置密码最短长度12位、复杂度要求(含大小写、数字、特殊字符)、密码最长使用90天、连续失败5次锁定账户30分钟,具体配置片段:
# /etc/login.defs 中设置 PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_MIN_LEN 12 PASS_WARN_AGE 7 # /etc/pam.d/system-auth 中启用pam_pwquality password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=12 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
内核参数和系统资源:隐藏的弱点
内核参数调整往往被忽略,但sysctl配置能系统级降低攻击面,重点调整这几项:
# 禁止ICMP重定向 net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # 禁止源路由 net.ipv4.conf.all.accept_source_route = 0 # 开启TCP SYN cookies防SYN洪水 net.ipv4.tcp_syncookies = 1 # 禁用IP转发(除非你是路由器) net.ipv4.ip_forward = 0 # 记录所有丢弃的数据包 net.ipv4.conf.all.log_martians = 1
执行 sysctl -p 生效,打开核心转储限制,在 /etc/security/limits.conf 中加入:
hard core 0
文件系统权限和SELinux:纵深防御层
SELinux建议保持开启状态,不要图省事直接 setenforce 0,检查当前状态:
getenforce
如果是Enforcing,保持现状,如果是Permissive,优先排查AVC日志中的拒绝记录,逐步放行必要项,然后切回Enforcing,打包备份脚本、Web目录、数据库文件目录,逐一确认归属和权限为最小化设置,审计关键文件是否被修改:
rpm -V 关键包名
这条命令能验证包内文件是否被篡改,相当实用。
CentOS安全配置命令:防火墙和Fail2ban组合拳
网络层面的防护是第二道门,CentOS 7默认的firewalld比iptables更直观,但很多老运维还是习惯iptables命令,两个思想相通,按你熟悉的来,关键是默认拒绝 + 白名单放行。
firewalld核心操作路径
# 启动并设置开机自启 systemctl enable --now firewalld # 默认zone设为drop(拒绝所有入站) sudo firewall-cmd --set-default-zone=drop # 放行必要的端口,比如SSH新端口 firewall-cmd --permanent --add-port=22888/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=80/tcp # 针对特定IP放行数据库端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port port="3306" protocol="tcp" accept' # 重新加载规则 firewall-cmd --reload

检查当前规则用 firewall-cmd --list-all,注意drop所有入站流量这个动作,会连DHCP、DNS都挡掉,如果你用云主机,务必先把云平台安全组的放行规则和firewalld规则对齐,否则容易出现网页打不开的乌龙事件。
Fail2ban拦截暴力破解
SSH服务暴露在公网,Fail2ban是必要的辅助工具,安装配置流程:
yum install -y fail2ban cat > /etc/fail2ban/jail.local << 'EOF' [DEFAULT] bantime = 3600 findtime = 600 maxretry = 3 [sshd] enabled = true port = 22888 filter = sshd logpath = /var/log/secure action = firewallcmd-ipset EOF systemctl enable --now fail2ban
用 fail2ban-client status sshd 查看拦截情况,按经验,一台暴露在公网的中型服务器,如果完全不做防护,一天之内会有几十到上百次SSH爆破尝试,Fail2ban能挡掉绝大多数脚本扫描。
配置CentOS 7防火墙安全规则时的常见坑
- 同时装了iptables-services和firewalld,两个服务同时运行导致规则混乱。
- 云平台安全组和系统内防火墙规则不一致,排查时两头都看。
- 修改端口后没有在SELinux中放行,导致sshd启动失败:
yum install -y policycoreutils-python semanage port -a -t ssh_port_t -p tcp 22888
日志监控和入侵检测:发现比防御更关键
安全防御做不到百分之百,但监控能让你在入侵发生后的最短时间发现异常,CentOS 7的日志体系集中在journald和/var/log目录。
日志审计配置
/etc/audit/auditd.conf 默认配置需要调大日志空间上限,避免日志写满导致系统异常,重点关注:
- 监控
/etc/passwd、/etc/shadow等账号文件的更改行为 - 监控
/var/log/secure的登录记录 - 定时检查
/var/log/messages是否有异常内核报错或用户态异常行为
使用 auditctl -w 配置监控规则,或在 /etc/audit/rules.d/audit.rules 中添加:
-w /etc/passwd -p wa -k userinfo -w /etc/shadow -p wa -k userinfo -w /etc/sudoers -p wa -k sudoers
重启auditd服务使规则生效,然后将日志归档至远程日志服务器,在 /etc/audit/auditd.conf 中修改:
log_group = root space_left_action = SYSLOG admin_space_left_action = HALT
异常登录和Rootkit检查
检查异常登录:last -n 20 查看最近登录记录,lastb 查看失败登录记录,重点留意非业务时段的登录行为。
Rootkit检查工具推荐 rkhunter 和 chkrootkit,安装后执行全盘扫描:
yum install -y rkhunter chkrootkit rkhunter --check --skip-keypress chkrootkit
但这类工具依赖特征库,漏报率不低,专家意见是定期扫描有必要,但一定配合基线监控来看,如果系统被植入后门,最明显的特征往往不是文件被替换,而是网络连接异常。
使用 netstat -antlp 或 ss -antlp 检查所有对外连接,找那些不属于已知进程的ESTABLISHED连接,以及连接外部可疑IP的持久连接,通过

/etc/crontab 和 crontab -l 检查定时任务是否被植入挖矿或反弹Shell。
CentOS 7和8安全配置差异对比:哪个更省心
很多人在CentOS停更后纠结遗留版本的安全问题,这里横向对比一下CentOS 7与CentOS 8的实际差异,CentOS 8已于2021年12月31日停止维护,它的生命周期比CentOS 7更短,CentOS 8的用户其实更早面临无补丁的窘境,CentOS 7和8在安全配置上的差异主要体现在:
- SELinux状态:CentOS 8默认Enforcing,且setroubleshoot排查工具更完善;CentOS 7企业部署中还有大量Permissive状态在现场工作。
- 防火墙管理:CentOS 8直接默认nftables后端,firewalld配置行为略有变化;CentOS 7默认iptables后端。
- 加密策略:CentOS 8引入了
update-crypto-policies统一管理密码学算法强度;7只能手动改OpenSSL配置或逐个服务调整。 - 软件更新通道:两者都已停止维护,没有本质区别。
整体看,CentOS 7存量服务器更多,遇到的安全问题案例也更丰富,但只享受系统自带能力的话,8的默认安全水位略高一点。CentOS 8同样不推荐继续在生产环境使用,如果你的系统还跑在CentOS 8上,迁移优先级比7还高。
如果不确定具体版本对应的停止维护时间,可以参考一份公开的Red Hat官方生命周期文档,CentOS各版本停止维护状态如下表:
| 版本 | 停止维护时间 | 当前状态 |
|---|---|---|
| CentOS 7 | 2024年6月30日 | 已停止 |
| CentOS 8 | 2021年12月31日 | 已停止 |
| CentOS Stream 8 | 2024年5月31日 | 已停止 |
| CentOS Stream 9 | 预计至2027年 | 维护中 |
常见问题解答
CentOS 7.9停止维护之后还能用吗?
能启动、能跑业务,但官方不再提供任何安全补丁和漏洞修复,新发现的CVE漏洞不会再修复,系统安全性会随时间推移逐步劣化,如果业务无法立即迁移,建议加强网络隔离、关闭不必要的对外服务、启用全量日志审计,同时制定迁移计划分步实施。
CentOS 7替换成Rocky还是AlmaLinux?
两者均兼容RHEL二进制,命令操作和CentOS 7使用习惯基本一致,Rocky Linux由CentOS创始团队维护,组织架构偏社区化;AlmaLinux背后有CloudLinux公司长期赞助,商业支持色彩明显,选择取决于你对背后机构偏好和社区运营方式的认可程度,两者都能流畅承接CentOS替换。
CentOS服务器被入侵了怎么排查?
先断网隔离,然后检查登录记录last和lastb,核查异常用户和sudo权限,运行rkhunter扫描Rootkit,检查定时任务、启动项和网络连接中的异常进程,配合yum history查看是否有可疑包安装记录,找到入侵路径后全盘重装或恢复备份是更稳妥的选择,修补漏洞后继续使用原系统风险不小。
