在 Ubuntu 上设置自动安全更新(无人值守升级)

本教程将向您展示如何在 Ubuntu 上设置自动安全更新,也就是无人值守升级。 如果你不是住在山洞里,那么你可能知道大规模的 Equifax 数据泄露。 2017 年 5 月至 7 月期间,1.43 亿 Equifax 客户的信息被盗,包括姓名、社会安全号码、出生日期、驾照、20 万个信用卡号码。

2017 年 3 月,一个严重的漏洞 Apache 结构被发现并且 Apache 基金会在宣布存在漏洞时发布了修复程序。 然而,Equifax 两个月没有修补漏洞,导致了大规模的数据泄露。 运行复杂应用程序的公司可能需要在安装更新之前进行大量测试,但如果您有一个简单的 Linux 服务器供个人使用,您可以打开自动安全更新以尽快修补漏洞。

在 Ubuntu 服务器上配置自动安全更新(无人值守升级)

首先,安装 unattended-upgrades 包裹。

sudo apt update  sudo apt install unattended-upgrades

您需要安装 update-notifier-common 包以设置自动重启。

sudo apt install update-notifier-common

然后编辑 50unattended-upgrades 文件。

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

在此文件中,您可以配置应自动更新哪些包。 默认情况下,只会自动安装安全更新,如以下几行所示。 因此无需更改此部分。

Unattended-Upgrade::Allowed-Origins {         "${distro_id}:${distro_codename}";         "${distro_id}:${distro_codename}-security";         // Extended Security Maintenance; doesn't necessarily exist for         // every release and this system may not have it installed, but if         // available, the policy for updates is such that unattended-upgrades         // should also install from here by default.         "${distro_id}ESMApps:${distro_codename}-apps-security";         "${distro_id}ESM:${distro_codename}-infra-security"; //      "${distro_id}:${distro_codename}-updates"; //      "${distro_id}:${distro_codename}-proposed"; //      "${distro_id}:${distro_codename}-backports"; };
  • 第一个起源 "${distro_id}:${distro_codename}" 是必要的,因为安全更新可能会从非安全来源引入新的依赖项。 此来源不提供软件更新。
  • 第二个来源用于定期安全更新。
  • 第三个和第四个起源(ESMApps 和 ESM)用于扩展的安全维护,即那些运行 Ubuntu 版本已终止的用户。 你可以保持原样。

电子邮件通知

有时 Ubuntu 可能无法安装安全更新,因此需要手动更新。 如果您希望在每次安全更新后收到电子邮件通知,请找到以下行并取消注释。 (去掉开头的双斜线。)

Ubuntu 18.04

//Unattended-Upgrade::Mail "root";

Ubuntu 20.04

//Unattended-Upgrade::Mail "";

您可以指定一个电子邮件地址来接收如下通知。

Unattended-Upgrade::Mail "[email protected]";

如果您希望仅在安全更新期间出现错误时接收电子邮件通知,请取消注释以下行。

Ubuntu 18.04

//Unattended-Upgrade::MailOnlyOnError "true";

在 Ubuntu 20.04 上,您需要找到以下行

//Unattended-Upgrade::MailReport "on-change";

取消注释并更改为

Unattended-Upgrade::MailReport "only-on-error";

自动删除未使用的依赖项

你可能需要做 sudo apt autoremove 每次更新后,找到以下行:

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

取消注释此行并更改 falsetrue.

Unattended-Upgrade::Remove-Unused-Dependencies "true";

自动重启

安装 Linux 内核的安全更新后,您需要重新启动 Ubuntu 服务器才能应用内核更新。 如果服务器只供您或少数人使用,那么启用自动重启会很方便。 找到以下行。

//Unattended-Upgrade::Automatic-Reboot "false";

取消注释并更改 falsetrue 启用自动重启

Unattended-Upgrade::Automatic-Reboot "true";

您还可以指定执行重启的时间。 默认情况下,在安装内核更新后立即重新启动。 我将其设置为凌晨 4 点重新启动。 确保为服务器设置正确的时区。

Unattended-Upgrade::Automatic-Reboot-Time "04:00";

Save 和 close 文件。

如果服务器被很多用户使用或需要很长的正常运行时间(比如这个博客),那么你不应该启用自动重启。 相反,您可以使用 Canonical livepatch 来修补 Linux 内核而无需重新启动。

  • Canonical LivePatch 服务:无需重启即可在 Ubuntu 上修补 Linux 内核

启用自动安全更新

现在配置了自动安全更新,我们需要通过创建 20auto-upgrades 文件。

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

将以下两行复制并粘贴到文件中。

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