软件漏洞是服务器被入侵最常见的入口之一。安全补丁发布后,往往只需数小时攻击者就会开始扫描未打补丁的系统。配置自动安全更新,让系统在第一时间安装补丁,大幅缩短被利用的窗口期。本文分别介绍 Debian/Ubuntu 和 CentOS/RHEL 系统的自动更新配置方法。

本文要点

  • Debian/Ubuntu 使用 unattended-upgrades 自动安装安全更新
  • CentOS/RHEL 使用 dnf-automatic 配置自动更新
  • 配置通知、重启策略与注意事项
  • 自动更新的权衡与最佳实践

Debian / Ubuntu:unattended-upgrades

安装与启用

apt install -y unattended-upgrades apt-listchanges
# 启用自动更新(交互式配置,选 Yes)
dpkg-reconfigure -plow unattended-upgrades

配置文件详解

nano /etc/apt/apt.conf.d/50unattended-upgrades

重要配置项:

// 只自动安装安全更新
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};

// 自动删除不再需要的依赖
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// 需要重启时是否自动重启(谨慎开启)
Unattended-Upgrade::Automatic-Reboot "false";
// 如需自动重启,设置重启时间(低峰期)
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

// 邮件通知(填写收件地址)
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "on-change";

设置更新频率

nano /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";   // 每天更新包列表
APT::Periodic::Unattended-Upgrade "1";     // 每天执行自动升级
APT::Periodic::AutocleanInterval "7";      // 每 7 天清理旧包

手动测试与查看日志

# 演习模式(不实际安装)
unattended-upgrades --dry-run --debug

# 查看运行日志
cat /var/log/unattended-upgrades/unattended-upgrades.log

CentOS / AlmaLinux / Rocky:dnf-automatic

安装

dnf install -y dnf-automatic

配置

nano /etc/dnf/automatic.conf
# 只下载并安装安全更新
upgrade_type = security

# 自动应用更新
apply_updates = yes

# 通知方式(stdio / email)
emit_via = stdio

启用定时器

systemctl enable --now dnf-automatic.timer

# 查看定时器状态
systemctl status dnf-automatic.timer

# 查看日志
journalctl -u dnf-automatic

两种方案对比

系统工具配置文件日志位置
Debian/Ubuntuunattended-upgrades/etc/apt/apt.conf.d/50unattended-upgrades/var/log/unattended-upgrades/
CentOS/RHELdnf-automatic/etc/dnf/automatic.confjournalctl -u dnf-automatic

自动更新注意事项

  • 生产环境谨慎开启自动重启:内核更新后需重启,自动重启可能造成计划外停机,建议设为低峰时段或手动执行。
  • 业务依赖特定版本:若应用强依赖某版本的库,安全更新可能引入兼容性问题,建议先在测试环境验证。
  • 仍需人工关注:自动更新不等于一劳永逸,系统大版本升级仍需手动操作。

小结

  • Debian/Ubuntu 用 unattended-upgrades,CentOS 用 dnf-automatic,配置一次长期生效
  • 默认只自动安装安全更新,不升级普通包,风险可控
  • 自动重启选项谨慎使用,建议设在深夜低峰或关闭
  • 配置邮件通知,了解每次自动更新的内容

常见问题

自动更新会不会把网站搞坏?

只自动安装安全补丁,不升级大版本。若有严格版本依赖,建议先在测试环境验证,或只自动下载、手动安装。

如何确认自动更新正常运行?

Debian/Ubuntu 查看 /var/log/unattended-upgrades/ 日志;CentOS 执行 journalctl -u dnf-automatic。配置邮件通知后会自动收到报告。

手动触发一次更新来测试怎么做?

Ubuntu 执行 unattended-upgrades --dry-run 演习,去掉 --dry-run 真实执行;CentOS 执行 dnf-automatic --installupdates。