微信优化

weixinyouhua

centos安全配置怎么设置?,centos安全配置教程

2026-08-22 06:58:32

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配置文件

centos安全配置怎么设置?,centos安全配置教程

/etc/ssh/sshd_config 的步骤如下:

  1. 修改默认端口,比如改为 Port 22888,先确认新端口防火墙放行再重启sshd,避免把自己锁在门外。
  2. 禁用root直接登录:PermitRootLogin no。
  3. 启用密钥登录:PubkeyAuthentication yes,然后把你的公钥写入 ~/.ssh/authorized_keys。
  4. 关闭密码登录:PasswordAuthentication no,这一步做之前千万确认密钥可用,否则真的进不去服务器,这种事业内经常发生。
  5. 限制登录用户: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

centos安全配置怎么设置?,centos安全配置教程

检查当前规则用 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的持久连接,通过

centos安全配置怎么设置?,centos安全配置教程

/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查看是否有可疑包安装记录,找到入侵路径后全盘重装或恢复备份是更稳妥的选择,修补漏洞后继续使用原系统风险不小。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待