运营期最现实的一对矛盾:不打补丁,漏洞摆在那里——多少台服务器是被一两年前就公开的老漏洞打穿的;勤打补丁,凌晨重启服务、动内核要重启机器,谁也耗不起。自动安全更新就是来拆这个局的:让系统自己装安全补丁,普通更新和安全补丁分级处理,内核升级单独一个策略。Ubuntu 自带的 unattended-upgrades 就是为此设计的,配好之后,你的日常只剩每周看一眼更新日志。
先确认工具装了没、开着没(Ubuntu 新版本通常预装):
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
# 交互界面选“是”即启用自动更新
# 确认定时任务在工作
systemctl status apt-daily.timer apt-daily-upgrade.timer
# 这两个timer分别负责软件列表下载和实际安装
核心配置在 /etc/apt/50unattended-upgrades。默认策略很保守:只装安全源(-security)的更新,这正是我们要的起点。重点是把几个关键项配明白:
// /etc/apt/50unattended-upgrades 关键项(注意这是debconf风格,双斜杠注释)
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// 想连常规bug修复一起装,取消下一行注释
// "${distro_id}:${distro_codename}-updates";
};
// 自动清理无用依赖包,防着防着把自己磁盘防满了
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// 自动重启策略:装了需要重启的更新(如内核)后
// 在指定时间自动重启——按业务容忍度决定开不开
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
// 更新结果发邮件
Unattended-Upgrade::Mail "you@example.com";
Unattended-Upgrade::MailReport "on-change";
Automatic-Reboot 这一项值得单独说。内核更新后旧内核还在运行,安全修复其实没生效,必须重启才加载新内核。个人博客这类低风险业务,直接开自动重启、定在凌晨四点,一觉醒来补丁已生效;跑数据库或有状态服务的机器,别开全局自动重启,改为自己控节奏:收到邮件通知后,挑低峰期手动重启。判断机器当前是否需要重启,有个现成的标记文件:
uname -r # 当前运行内核
ls /boot | grep vmlinu # 已安装的内核列表
# 需要重启吗?看这个标记文件(存在即建议重启)
cat /var/run/reboot-required 2>/dev/null && echo "建议找低峰期重启" || echo "无需重启"
# 查看自动更新都干了什么
less /var/log/unattended-upgrades/unattended-upgrades.log
用 Python 站点还要补一刀:apt 自动更新管的是系统包(Nginx、MySQL、系统库),管不到 PHP 的 Composer 依赖和 Node 的 npm 包,更管不到 WordPress 插件。WordPress 核心默认自动更新小版本,插件主题默认不自动——建议至少对安全敏感的插件开自动更新(WP-CLI 一条命令的事:wp plugin update --all 定期进 cron)。补丁体系是分层的:apt 一层、语言包管理器一层、应用自身一层,漏了哪层哪层就是口子。
验证配置是否真的生效,两个手段:一是干跑测试,unattended-upgrades --dry-run --debug 会列出本次将安装哪些包,安全源里的包都在名单里就说明源配对了;二是看定时器下次触发时间,systemctl list-timers | grep apt,确认 apt-daily-upgrade.timer 在列。装完一两周后翻翻日志文件,能看到每天自动装了什么、有没有失败,邮件报告也应该按 on-change 的频率到达了。
最后划一个边界:自动安全更新解决“已知漏洞的补丁没打”,解决不了“配置本身有问题”。它会把 OpenSSL 的洞补上,但不会替你关掉《UFW防火墙十分钟入门:先立规则再开门,别把自己锁外面》里那些不该开的端口,也不会修《WordPress页面缓存怎么选:插件格局2026盘点,附Nginx原生方案》里没配好的登录态缓存。补丁自动化和配置加固是两件事,前者是这篇的事,后者靠这个系列前面十几篇打的地基。两个都做了,才算把“漏洞面”真正收窄。
相关阅读:自动补丁是运营组的安全底盘。《从零建站第一步:技术栈选型总纲,别一上来就纠结框架》路线图的运营段里,本篇和监控、轮转同批配置,一次弄完长期受益。
A5创业网 版权所有