本文介绍如何在Ubuntu 18.04服务器上设置自动安全更新,即无人值守升级。
前言 使用复杂应用程序的公司可能需要在安装更新之前进行大量测试,但如果有一个供个人使用的简单Linux服务器(Ubuntu-18.04.1-live-server-amd64.iso安装全过程),则可以启用自动安全更新以尽快修补漏洞。
在Ubuntu 18.04服务器上配置自动安全更新的方法(无人值守升级) 安装Ubuntu 18.04服务器时会自动安装软件包无人值守升级,你可以使用以下命令安装它。 sudo apt update sudo apt install unattended-upgrades 在Ubuntu 16.04系统上,需要安装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}ESM:${distro_codename}"; // "${distro_id}:${distro_codename}-updates"; // "${distro_id}:${distro_codename}-proposed"; // "${distro_id}:${distro_codename}-backports"; };
1、第一个来源${distro_id}:${distro_codename}是必需的,因为安全更新可能会从非安全源中获取新的依赖项,此来源不提供软件更新。 2、第三个来源${distro_id}ESM:${distro_codename}用于扩展安全维护,即对于那些运行Ubuntu版本达到结束支持期的人,你可以保持原样。
电子邮件通知 如果你希望在每次安全更新后收到电子邮件通知,请找到以下行并取消注释: //Unattended-Upgrade::Mail "root"; 然后在下面指定你的电子邮件地址: Unattended-Upgrade::Mail "you@example.com"; 如果希望仅接收有关错误的电子邮件通知,请取消注释以下行: //Unattended-Upgrade::MailOnlyOnError "true";
自动删除未使用的依赖项 你可能需要在每次更新后执行sudo apt autoremove,因此取消注释以下行并将false更改为true: //Unattended-Upgrade::Remove-Unused-Dependencies "false"; 把它改成下面这个: Unattended-Upgrade::Remove-Unused-Dependencies "true";
自动重启 安装Linux内核的安全更新时,需要重新启动Ubuntu 18.04服务器,如果服务器仅由你或少数人使用,则启用自动重启可能很方便,找到以下行。 //Unattended-Upgrade::Automatic-Reboot "false"; 取消注释并将false更改为true以启用自动重新启动: Unattended-Upgrade::Automatic-Reboot "true"; 还可以指定重新启动的时间,默认情况下,在安装Linux内核更新后立即重新启动。我将其设置为在凌晨4点重启,确保为服务器设置正确的时区: Unattended-Upgrade::Automatic-Reboot-Time "04:00"; 如果许多用户正在使用该服务器或需要较长的正常运行时间,则不应启用自动重新启动。相反,你可以使用规范的实时补丁来修补内核而无需重新启动。
启用自动安全更新 现在已配置自动安全更新,我们需要通过创建20auto-upgrades文件来启用它: sudo nano /etc/apt/apt.conf.d/20auto-upgrades 将以下两行复制并粘贴到文件中: APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";
1、第一行让我们每天自动执行apt-get update,如果设置为2,那么每隔一天。(0=禁止) 2、第二行使得易于自动安装安全更新。(1=启用,0=禁用) 更改后保存并关闭文件。
设置SMTP Relay 为了在每次安全更新后接收电子邮件通知,服务器需要能够发送电子邮件,如果这是你的电子邮件服务器,那么剩下要做的就是安装bsd-mailx软件包。 sudo apt install bsd-mailx 如果这不是电子邮件服务器,则需要设置SMTP Relay,我们可以安装Postfix SMTP服务器,然后通过Gmail或其他电子邮件服务提供商转发电子邮件,可以先参考在Ubuntu 18.04系统上安装和配置Postfix作为SMTP服务器一文。 在Ubuntu 18.04服务器上安装Postfix的命令: sudo apt install postfix 当看到以下消息时,按Tab键并按Enter键:
然后选择第二个选项Internet Site:
接下来,设置系统邮件名称,你可以使用服务器的完整主机名:
安装Postfix后,打开配置文件: sudo nano /etc/postfix/main.cf 找到以下行: relayhost = 默认情况下,未设置其值,我们对其进行了更改,以便通过Gmail服务器转发电子邮件: relayhost = smtp.gmail.com:587 然后将以下代码添加到此文件的末尾: # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 请注意,建议不要将你的Gmail凭据直接放入/etc/postfix/main.cf文件中,因为服务器上的每个用户都可以使用postconf -n命令将Postfix配置转储到屏幕上。 默认情况下,Postfix配置为接受传入邮件,你可以将Postfix配置为仅发送电子邮件,但不接受任何传入电子邮件,在/etc/postfix/main.cf文件中找到以下行: inet_interfaces = all 将其更改为以下,以便Postfix仅侦听localhost: inet_interfaces = loopback-only 保存并关闭文件,然后创建/etc/postfix/sasl_passwd文件: sudo nano /etc/postfix/sasl_passwd 在文件中输入以下行(请注意,如果你为Gmail帐户启用了两步验证,则需要使用应用密码而不是普通密码): smtp.gmail.com:587 you@gmail.com YourGmailPassword 保存并关闭文件,然后使用postmap创建相应的哈希db文件: sudo postmap /etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd.db,重新启动Postfix以使更改生效: sudo systemctl restart postfix 默认情况下,服务器上的任何用户都可以读取sasl_passwd和sasl_passwd.db文件,将权限更改为600,以便只有root可以读取和写入这两个文件: sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db 电子邮件通知使用mailx命令发送,该命令由bsd-mailx软件包提供: sudo apt install bsd-mailx 现在,可以运行以下命令来测试SMTP配置了: echo "this is a test email." | mailx -r from-address -s hello to-address 如果SMTP配置正确,你将收到来自Gmail帐户的电子邮件。
电邮报告 通过无人值守升级发送了3封可能的电子邮件: 1、Unattended upgrade returned: True-这意味着包已成功安装。 2、Unattended upgrade returned: False-这意味着安装更新时会发生一些错误,通常需要人为干预,如果你收到此电子邮件,则需要手动运行sudo apt upgrade。 3、Unattended upgrade returned: None-有可用的更新,但系统拒绝安装它们。
日志 可以在/var/log/unattended-upgrades/目录中找到日志。
检查重启 checkrestart命令可以帮助你找出升级后需要重新启动的进程,它可以从debian-goodies包中获得: sudo apt install debian-goodies sudo checkrestart
结语 按照本文介绍的方法做就可以实现在Ubuntu 18.04服务器上设置无人值守的升级。
相关主题 |