Ubuntu 服务器如何自动安装安全更新?用 unattended-upgrades 降低 WordPress 主机风险

摘要:一台长期运行 WordPress 的 Ubuntu 服务器,如果只维护网站插件、却忽略系统安全补丁,仍可能暴露在 OpenSSH、PHP、数据库或系统组件的已知漏洞中。本文以个人 WordPress 服务器为例,介绍如何使用 Ubuntu 自带的 unattended-upgrades 检查并自动安装安全更新,同时兼顾备份、日志和重启风险。

为什么 WordPress 更新了,服务器仍然可能不安全?

WordPress 网站通常包含四个需要分别维护的层级:Ubuntu 操作系统、Nginx 或 Apache 与 PHP、WordPress 核心和插件,以及网站账号与业务数据。在后台更新插件,只覆盖了其中一层。OpenSSL、SSH、PHP 库等系统软件仍要通过 Ubuntu 软件包管理器安装安全补丁。

Canonical 官方文档说明,从 Ubuntu 18.04 LTS 开始,桌面版和服务器版默认包含 unattended-upgrades,用于每天自动应用安全更新。不过,“已经安装”不代表配置一定正常,因此仍需主动检查。

第一步:确认自动更新组件是否存在

登录服务器后执行:

dpkg -l unattended-upgrades

如果输出中软件包状态以 ii 开头,说明组件已经安装。没有安装时执行:

sudo apt update
sudo apt install unattended-upgrades

然后检查每日自动更新配置:

cat /etc/apt/apt.conf.d/20auto-upgrades

常见配置如下,其中 1 表示一天执行一次,0 表示关闭:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

也可以使用 Ubuntu 提供的交互式工具重新设置:

sudo dpkg-reconfigure unattended-upgrades

第二步:先模拟执行,不要立即修改服务器

对正在运行网站的服务器,建议先做一次模拟检查:

sudo unattended-upgrade --dry-run -v
  • --dry-run 只模拟,不安装更新;
  • -v 显示更详细的信息;
  • Allowed origins 表示允许自动更新的软件源;
  • Packages that will be upgraded 表示实际运行时将更新的软件包。

这一步能提前发现软件源配置错误、软件包冲突和第三方仓库带来的问题。

第三步:确认允许自动安装哪些更新

主要规则位于 /etc/apt/apt.conf.d/50unattended-upgrades。Canonical 当前的安全文档不建议直接修改这个原始文件,因为系统升级时可能产生配置冲突。更稳妥的做法是创建排序更靠后的自定义文件,例如 /etc/apt/apt.conf.d/60custom-unattended-upgrades

个人 WordPress 服务器应优先自动安装 Ubuntu 官方安全更新,不要一开始就把所有第三方仓库加入自动更新范围。添加一个 PPA,并不会自动让 unattended-upgrades 更新其中的软件;第三方仓库必须单独配置正确的 Origin。

第四步:谨慎设置自动重启

部分内核或底层组件更新后,系统会创建 /var/run/reboot-required。可以这样检查:

if [ -f /var/run/reboot-required ]; then
  echo "服务器需要重启"
fi

Ubuntu 支持在安装更新后自动重启,但 WordPress 服务器不建议直接开启“需要时立即重启”。更稳妥的顺序是:确认网站和数据库已有备份,选择访问量较低的时间,重启前检查 Web 服务和数据库,重启后验证首页、后台和 HTTPS,并保留服务器控制台入口。

第五步:查看更新结果和失败记录

自动更新日志默认保存在 /var/log/unattended-upgrades/。查看最近记录:

sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades.log
sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades-dpkg.log

检查定时任务:

systemctl status apt-daily.timer
systemctl status apt-daily-upgrade.timer

如果更新长期失败,不要简单关闭自动更新。应先判断是软件源不可用、磁盘空间不足、软件包被锁定,还是依赖冲突。

适合个人 WordPress 服务器的维护节奏

每天自动完成

  • 刷新软件包列表;
  • 安装 Ubuntu 官方安全更新;
  • 记录执行日志。

每周人工检查

df -h
systemctl --failed
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log

同时查看 WordPress 的“工具 → 站点健康”,以及插件、主题和核心更新情况。

每月维护

  • 验证一次网站备份能否恢复;
  • 检查服务器是否提示需要重启;
  • 清理不再使用的软件包和旧备份;
  • 核对管理员账号、SSH 密钥和开放端口;
  • 测试首页、文章页、后台登录和 HTTPS 证书。

常见误区

打开自动更新后就不用维护

自动更新只能完成符合规则的软件包安装,不能代替备份、监控、故障排查和 WordPress 自身维护。

所有更新都应该自动安装

安全更新适合优先自动化,但涉及 PHP 大版本、数据库版本、第三方仓库或业务组件的更新,最好先在备份或测试环境中验证。

有快照就等于有备份

如果快照与服务器位于同一服务商、同一账号或同一区域,仍存在同时丢失的风险。重要网站至少应保留一份服务器之外的备份。

结语

个人 WordPress 网站比较稳妥的策略,是自动安装来源明确的安全更新,更新前保留可靠备份,使用模拟执行验证配置,定期检查日志和重启提示,并对 PHP、数据库等重要版本变更进行人工测试。这套方式维护成本不高,却能明显减少服务器长期不打补丁所积累的风险。

参考资料

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注