unattended-upgrades:Debian/Ubuntu 自动安全更新

unattended-upgrades 是 Debian 和 Ubuntu 系统上用于自动安装安全更新的工具。对于没有专人日常维护的服务器,它能确保已知漏洞及时被修补,减少被攻击的风险。

安装

首先更新软件包列表并安装:

sudo apt update
sudo apt upgrade
sudo apt install unattended-upgrades

安装完成后,系统会自动创建一个 cron 任务和 systemd 计时器,用于周期性检查并安装更新。

配置

主要配置文件有两个:

启用 / 禁用自动更新

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

内容格式:

# 禁用
//APT::Periodic::Update-Package-Lists "0";
//APT::Periodic::Unattended-Upgrade "0";

# 启用:每天检查并自动安装
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

控制哪些包会被更新

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

默认配置大致如下(// 开头的行被忽略):

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-infra-security";
    "${distro_id}ESM:${distro_codename}-infra-security";
};

Unattended-Upgrade::Package-Blacklist {
    # 在此列出不需要自动更新的包
};

几个常用配置:

  • 只更新安全包:在 Allowed-Origins 中仅保留带 -security 后缀的行
  • 排除特定包:在 Package-Blacklist 中添加包名,每行一个
  • 自动重启:需要时(如内核更新),取消注释 Unattended-Upgrade::Automatic-Reboot "true"; 并设置 Unattended-Upgrade::Automatic-Reboot-Time "02:00";

常用命令

# 立即执行一次自动更新
sudo unattended-upgrade

# 查看上次更新日志
tail -f /var/log/unattended-upgrades/unattended-upgrades.log

# 检查是否有可安装的更新
sudo unattended-upgrade --dry-run

注意事项

  • 自动更新可能导致服务意外重启,关键业务服务器建议先在测试环境验证
  • 内核更新后需要重启才能生效,建议配置 Automatic-Reboot 并避开业务高峰
  • 如果使用 unattended-upgrades,建议同时配置自动备份或快照,以便更新失败时快速回滚