为 Ubuntu 20.04 设置自动无人值守更新
Linux 服务器安全确实是系统管理员的一项基本任务。确保 Ubuntu 服务器安全的最基本方法之一是及时安装安全更新以修补漏洞。默认情况下,无人值守升级包已安装,但您仍需要配置一些选项。它将自动安装软件更新,包括安全更新。本页介绍如何使用无人值守升级包自动配置 Ubuntu 安全团队发布安全更新时的安全更新。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 包管理器 |
先决条件 | Ubuntu 20.04 LTS |
操作系统兼容性 | Debian • Ubuntu |
预计阅读时间 | 4 分钟 |
Ubuntu 20.04 LTS 的自动无人值守更新
- 更新Ubuntu 20.04 LTS 服务器的安全补丁,运行:
{admin@aws-ec2-007}$ sudo apt update && sudo apt upgrade
- 如果未安装,请在 Ubuntu 上安装无人值守升级。输入以下apt 命令
{admin@aws-ec2-007}$ sudo apt install unattended-upgrades apt-listchanges bsd-mailx
- 开启无人值守安全更新,运行:
{admin@aws-ec2-007}$ sudo dpkg-reconfigure -plow unattended-upgrades
- 配置自动无人值守更新,输入:
{admin@aws-ec2-007}$ sudo vi /etc/apt/apt.conf.d/50unattended-upgrades
设置警报电子邮件 ID:
Unattended-Upgrade::Mail "vivek@server1.example.com";
自动重新启动 Ubuntu 框,无需确认内核更新:
Unattended-Upgrade::Automatic-Reboot "true";
最后编辑 /etc/apt/listchanges.conf 并设置电子邮件 ID:
email_address=vivek@server1.example.com
保存并关闭文件。最好有一个可以正常工作的电子邮件服务器来接收警报。您始终可以使用AWS SES 和 Postfix MTA来安全地路由电子邮件。
- 通过运行以下命令来验证它是否正常工作:
{admin@aws-ec2-007}$ sudo unattended-upgrades --dry-run
Ubuntu 自动无人值守更新示例电子邮件警报
在 50unattended-upgrades 文件中配置 Unattended-Upgrade::Mail 可使 unattended-upgrades 向系统管理员发送电子邮件,详细说明需要升级或存在问题的所有软件包。Ubuntu 服务器通过电子邮件发送了更新报告,如下所示:
从 CLI 显示自动更新日志
现在您已在 Ubuntu Server 20.04 LTS 上设置了自动更新。是时候查看日志了。因此,我们可以使用诸如grep 命令或cat 命令或 more 命令/ egrep 命令之类的命令,如下所示:
您已完成。我希望这可以帮助您自动使在云中运行的服务器或虚拟机保持最新的安全更新。
{admin@aws-ec2-007}$ sudo cat /var/log/unattended-upgrades/unattended-upgrades.log
{admin@aws-ec2-007}$ sudo tail -f /var/log/unattended-upgrades/unattended-upgrades.log
{admin@aws-ec2-007}$ sudo grep 'linux-image' /var/log/unattended-upgrades/unattended-upgrades.log
查看升级计划
由于 Ubuntu 使用 systemd,因此它使用 systemd 计时器来运行定期的 APT 维护任务。apt 包提供了这些文件,您可以按如下方式验证它们:
这是我看到的:
$ systemctl | grep -w 'apt'
apt-daily-upgrade.timer loaded active waiting Daily apt upgrade and clean activities apt-daily.timer loaded active waiting Daily apt download activities
您可以使用 systemctl 命令查看下载计划:
来自最后一个 systemd 计时器的输出:
$ systemctl cat apt-daily.timer
$ systemctl cat apt-daily-upgrade.timer
# /lib/systemd/system/apt-daily-upgrade.timer [Unit] Description=Daily apt upgrade and clean activities After=apt-daily.timer [Timer] OnCalendar=*-*-* 6:00 RandomizedDelaySec=60m Persistent=true [Install] WantedBy=timers.target
请注意,systemd 系统中名称以 .timer 结尾的单元文件称为计时器。这些文件负责控制 .service 文件或事件,可以用作cron的替代品。计时器内置对日历时间事件、单调时间事件的支持,并且可以异步运行。对于大多数用户来说,在 Ubuntu Linux 中运行无人值守更新计划的默认设置就足够了。但以下是创建和编辑下载计划的这些设置的覆盖步骤:
$ sudo systemctl edit apt-daily.timer
$ sudo systemctl restart apt-daily.timer
$ sudo systemctl status apt-daily.timer
$ sudo systemctl edit apt-daily-upgrade.timer
$ sudo systemctl restart apt-daily-upgrade.timer
$ sudo systemctl status apt-daily-upgrade.timer
结论
您学习了如何为基于 Ubuntu Linux 的服务器配置自动无人值守更新。这是保护服务器免受漏洞攻击的简单且最轻松的方法。当您管理多台服务器时,此方法也很有用。手动更新系统和应用补丁可能是一个非常耗时的过程。但是,对于大量服务器/虚拟机,我建议使用 Ansible 之类的工具:
请使用 man 命令或 help 命令阅读文档:
$ man 8 'dpkg-reconfigure(8)'
$ man 1 systemctl
$ man 5 systemd.timer