Ubuntu 24.04 无人值守更新默认启用吗?
Ubuntu Server 24.04 通常已安装 unattended-upgrades,但需由 20auto-upgrades 启用。默认不自动重启,使用 dry-run 可先查看将安装的软件包。
为什么值得设置自动安全更新
未打补丁的服务器是互联网上最容易被攻击的目标。小型服务器的大多数入侵并不复杂,通常只是旧软件包中存在已知漏洞,而服务器所有者一直没有更新。Ubuntu 提供了一个可以自动弥补这一缺口的工具:unattended-upgrades 会按计划自动安装安全更新,无需您登录。这是在 VPS 上成本最低的安全改进之一;在 Ubuntu 上,完成设置只需几分钟。
该工具的策略比较保守。默认情况下,它只应用安全更新,而不是升级所有软件包。安全补丁风险较低,通常值得直接安装;功能升级则可能改变您依赖的行为。对大多数服务器来说,这个默认设置是正确的。本指南会保留该设置,同时介绍少数值得调整的选项。
第 1 步:安装并启用
在 Ubuntu 24.04 上,该软件包通常已经存在,但不一定已启用。安装并启用它:
sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesdpkg-reconfigure 提示只会询问一个是或否问题:是否自动下载并安装稳定更新。回答 yes。这会写入用于启用每日任务的文件:
cat /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";第一行每天刷新软件包列表;第二行每天运行无人值守升级。两项都设置为 1 表示系统会每天通过 systemd timer 检查并应用安全更新,无需您采取其他操作。
第 2 步:决定自动应用哪些更新
策略位于 /etc/apt/apt.conf.d/50unattended-upgrades。打开该文件,查看顶部附近的 Allowed-Origins 块:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};需要关注的是 -security 行,它们默认已启用。这就是保守策略:自动安装安全更新,普通功能更新则留给您在需要时手动应用。您可以添加 "${distro_id}:${distro_codename}-updates" origin 行,自动应用所有更新。但对于承载重要服务的服务器,只自动安装安全补丁更安全。除非有明确理由,否则请保持软件包提供的默认设置。
第 3 步:处理重启
某些更新,例如内核或核心库,只有重启后才能完全生效。除非您明确配置,否则 unattended-upgrades 不会重启服务器。这意味着已打补丁的内核可能会一直处于未使用状态,直到您手动重启。请决定如何处理重启,并在 50unattended-upgrades 中明确设置:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";这样只有在更新确实需要重启时,服务器才会在凌晨 4 点重启。对于没有集群可执行故障转移的单个 VPS,为了及时应用内核修复,短暂的凌晨重启通常是合理的取舍。如果服务器运行的服务绝不能意外重启,请关闭自动重启,并在检查 /var/run/reboot-required 后自行重启服务器。
第 4 步:验证是否生效
不要等一天后才确认任务是否运行。先执行一次试运行,查看将要应用的内容,但不进行任何更改:
sudo unattended-upgrade --dry-run --debug输出会列出它识别到的软件包及其来源,因此您可以确认策略是否按预期生效。实际任务至少运行一次后,其记录位于:
cat /var/log/unattended-upgrades/unattended-upgrades.log该日志可以回答“我的服务器是否确实在自动打补丁”。如果日志显示安全软件包按计划安装,说明任务运行正常。
适用范围
自动更新只是加固服务器的一层措施,并不能解决所有问题。它可以防止已知漏洞长期存在,但无法解决谁能够登录或哪些服务对外暴露的问题。应将其与仅允许密钥登录的 SSH 加固 配合使用,避免入口遭到暴力破解;使用默认拒绝的 UFW 防火墙,确保只有您选择的服务可访问;使用 非特权服务用户,避免被入侵的应用控制整台服务器。在此基础上,您托管的应用还会保存自身的密钥和密码。因此,如果这台服务器运行自托管密码库,Vaultwarden 加固检查 还应覆盖管理令牌和备份文件,因为 apt 补丁无法保护这些内容。打补丁可以修复已知漏洞;其他层则可以限制未知漏洞造成的影响。
FAQ
unattended-upgrades 会应用所有更新,还是只应用安全更新?
默认情况下,只应用安全更新。/etc/apt/apt.conf.d/50unattended-upgrades 中的 Allowed-Origins 块启用 -security 所指定的来源,并将普通功能更新留给您手动应用。这是有意设计的:安全补丁风险较低,值得自动安装;功能升级可能改变服务行为,因此大多数服务器应保留保守的默认设置。
自动更新会重启服务器吗?
只有在您明确配置后才会。请在配置中设置 Unattended-Upgrade::Automatic-Reboot "true" 和 Automatic-Reboot-Time。当更新需要重启时,例如安装内核补丁后,服务器会在指定时间重启。如果不启用该设置,已打补丁的内核会等待您手动重启;检查 /var/run/reboot-required 可确认是否有待执行的重启。
如何确认自动更新确实在运行?
运行 sudo unattended-upgrade --dry-run --debug,查看当前会应用哪些更新,但不进行任何更改;查看 /var/log/unattended-upgrades/unattended-upgrades.log,了解过去的运行记录;每次自动安装也会记录到 /var/log/apt/history.log。如果日志显示安全软件包按日安装,说明 timer 正常运行。如果试运行输出 No packages found that can be upgraded unattended,表示系统已经是最新状态,或者允许的来源范围过窄,无法匹配安全软件仓库。
unattended-upgrades 足以保证服务器安全吗?
不能,但它是必要的一层防护。它可以及时修复已知漏洞,避免漏洞长期未打补丁,从而阻止最常见的入侵方式。但它无法控制访问权限或网络暴露面。将其与 SSH 加固、默认拒绝防火墙以及最小权限服务用户结合使用,才能让服务器真正难以被攻破。