CentOS系统作为企业级服务器常用的操作系统,及时安装安全补丁是避免漏洞被利用、保障业务稳定运行的核心操作。手动更新补丁容易出现遗忘、遗漏的情况,通过配置系统定期自动更新安全补丁,可以大幅降低运维成本和安全风险。

准备工作
在开始配置之前,需要确认当前系统的CentOS版本,不同版本的工具和配置方式略有差异。可以通过以下命令查看系统版本:
# 查看CentOS系统版本 cat /etc/centos-release
同时需要确保系统已经配置了可用的yum源,能够正常拉取软件包更新信息,若源配置异常需要先修复源地址。
安装yum_cron工具
yum_cron是CentOS系统自带的定时更新工具,能够实现自动检查并安装系统更新,包括安全补丁。首先安装该工具:
# CentOS 7系统安装yum_cron yum install -y yum_cron # CentOS 8及以上系统安装dnf-automatic(功能与yum_cron一致) dnf install -y dnf-automatic
安装完成后,需要启动并设置工具开机自启,避免系统重启后自动更新功能失效:
# CentOS 7启动并设置开机自启 systemctl start yum-cron systemctl enable yum-cron # CentOS 8及以上启动并设置开机自启 systemctl start dnf-automatic.timer systemctl enable dnf-automatic.timer
配置安全补丁更新策略
默认情况下yum_cron可能会更新所有可用软件包,我们需要调整配置使其仅更新安全补丁,避免非必要的软件版本变更影响业务兼容性。
CentOS 7配置方式
编辑yum_cron的主配置文件:
# 编辑yum_cron配置文件 vim /etc/yum/yum-cron.conf
在配置文件中找到以下参数并修改为对应值:
- update_cmd:设置为
security,表示仅更新安全相关的补丁 - update_messages:设置为
yes,开启更新通知 - download_updates:设置为
yes,自动下载更新包 - apply_updates:设置为
yes,自动安装下载好的更新包 - random_sleep:可以设置为
3600,避免多台服务器同时更新占用带宽
修改后的配置片段示例:
[commands] update_cmd = security update_messages = yes download_updates = yes apply_updates = yes random_sleep = 3600
CentOS 8及以上配置方式
编辑dnf-automatic的配置文件:
# 编辑dnf-automatic配置文件 vim /etc/dnf/automatic.conf调整以下参数:
- upgrade_type:设置为
security,仅升级安全补丁 - download_updates:设置为
yes - apply_updates:设置为
yes - random_sleep:设置为
3600
配置片段示例:
[commands] upgrade_type = security download_updates = yes apply_updates = yes random_sleep = 3600
调整定时任务执行时间
默认情况下yum_cron或dnf-automatic的定时任务可能在系统认为合适的时间执行,我们可以自定义执行时间,比如设置在凌晨业务低峰期执行更新。
CentOS 7调整方式
编辑yum_cron的定时任务配置文件:
# 编辑定时任务配置 vim /etc/cron.d/yum-cron
修改执行时间,比如设置为每天凌晨3点执行:
# 每天凌晨3点执行安全补丁更新 0 3 * * * root /usr/sbin/yum-cron /etc/yum/yum-cron.conf
CentOS 8及以上调整方式
查看当前的dnf-automatic定时器配置:
# 查看定时器配置 systemctl cat dnf-automatic.timer
创建定时器覆盖配置:
# 创建覆盖配置目录 mkdir -p /etc/systemd/system/dnf-automatic.timer.d/ # 创建覆盖配置文件 vim /etc/systemd/system/dnf-automatic.timer.d/override.conf
写入自定义执行时间,比如每天凌晨3点执行:
[Timer] OnCalendar= OnCalendar=*-*-* 03:00:00 Persistent=true
重新加载systemd配置并重启定时器:
# 重新加载配置 systemctl daemon-reload # 重启定时器 systemctl restart dnf-automatic.timer
验证配置是否生效
配置完成后可以通过以下方式验证自动更新功能是否正常:
- 查看定时任务状态,确认任务已经正常加载
- 手动触发一次更新测试,检查是否仅更新安全补丁
- 查看更新日志,确认更新记录正常生成
手动触发更新的命令:
# CentOS 7手动触发yum_cron /usr/sbin/yum-cron /etc/yum/yum-cron.conf # CentOS 8及以上手动触发dnf-automatic dnf-automatic /etc/dnf/automatic.conf
查看更新日志的命令:
# 查看yum更新日志 cat /var/log/yum.log
常见问题排查
如果自动更新没有正常执行,可以按照以下步骤排查:
- 检查yum_cron或dnf-automatic服务是否正常运行,执行
systemctl status yum-cron或systemctl status dnf-automatic.timer查看状态 - 检查yum源是否正常,执行
yum repolist确认源可用 - 检查配置文件中的参数是否正确,尤其是
apply_updates是否设置为yes - 查看系统定时任务日志,确认任务是否按时触发
注意:如果业务系统对软件版本有严格要求,建议先在测试环境验证安全补丁的兼容性,再配置生产环境自动更新,避免出现补丁兼容问题导致业务中断。