Как настроить автоматические обновления безопасности в Ubuntu 24.04 с помощью unattended-upgrades

Как настроить автоматические обновления безопасности в Ubuntu 24.04 с помощью unattended-upgrades

Введение

Автоматизируйте обновления безопасности в Ubuntu 24.04 с unattended-upgrades. В статье рассказываем, как настроить автоустановку критичных и необязательных патчей, как задать периодичность проверок и обновлений, как запретить обновление ядра Linux.

Между публикацией уязвимости и появлением эксплойтов может пройти всего несколько часов, и среднее время до начала эксплуатации неуклонно уменьшается. Поэтому обновления безопасности важно устанавливать как можно чаще, чтобы не допустить появления «окон уязвимости», — а это не всегда возможно вручную.

Пакет unattended-upgrades — стандартный инструмент Ubuntu для автоматической установки обновлений на VPS и выделенные серверы. В отличие от ручного запуска apt upgrade, он работает по расписанию, по умолчанию применяет только security-патчи — без риска случайного обновления некритичных компонентов — и интегрируется с системными сервисами через systemd и cron. Это снижает нагрузку на администраторов и гарантирует соблюдение политики безопасности даже в крупных кластерах.

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Как работает unattended-upgrades

Пакет unattended-upgrades интегрирован в экосистему Ubuntu через три ключевых компонента:

  • APT (Advanced Package Tool) — обеспечивает доступ к репозиториям, проверку подписей пакетов и разрешение зависимостей. Unattended-upgrades использует libapt-pkg для запроса списка обновлений с фильтрацией по критичности. Система по умолчанию игнорирует репозитории updates, backports и proposed, фокусируясь только на источниках с пометкой security.
  • systemd — управляет фоновым сервисом unattended-upgrades.service, который запускает процесс установки обновлений. Сервис настроен на автоматический перезапуск при сбоях с интервалом в 1 час (опция Restart=on-failure в юните).
  • systemd timer — ежедневно активирует скрипт, инициирующий проверку обновлений.

Unattended-upgrades разделяет апдейты на две категории, используя метаданные репозиториев:

  • Security updates (критичные) — патчи для уязвимостей с CVE-идентификаторами, затрагивающие:
    • ядро Linux (linux-image-*, linux-headers-*);
    • криптографические библиотеки (OpenSSL, GnuTLS);
    • сетевые сервисы (OpenSSH, Nginx, Bind9).
  • Recommended updates (необязательные) — обратно совместимые исправления, не связанные с безопасностью:
    • документация и локализация (-doc, -langpack пакеты);
    • оптимизации производительности без изменения API.

Соответственно, в репозиториях есть специальные ветки:

  • noble-security содержит обновления безопасности;
  • noble-updates — некритичные улучшения и багфиксы.

Какие пакеты будут установлены, определяется в /etc/apt/apt.conf.d/50unattended-upgrades, например:

Unattended-Upgrade::Allowed-Origins {
    "Ubuntu:noble-security";
    "UbuntuESMApps:noble-apps-security"; 
};

Приоритет источников определяется порядком перечисления: в примере пакеты из noble-security устанавливаются первыми.

Логи лежат в /var/log/unattended-upgrades/.

Основной файл — unattended-upgrades.log, он содержит информацию о том, какие патчи были установлены, какие ошибки произошли во время обновления и другую диагностическую информацию.

unattended-upgrades-dpkg.log фиксирует вывод dpkg.

history.log — хранит сводку за все время (аналогичен apt history).

Базовая настройка unattended-upgrades в Ubuntu 24.04

В Ubuntu 24.04 unattended-upgrades включён в базовую комплектацию как серверной, так и десктопной редакций: установка через apt install не нужна — инструмент уже интегрирован и готов к настройке. Однако для полноценной работы необходимо дополнительно установить apt-listchanges, который обеспечивает отчётность об изменениях в обновляемых пакетах.

Обновление пакетных индексов (обязательный шаг):

sudo apt update  

Установка компонента для отчётов:

sudo apt install apt-listchanges  

При установке появится интерактивное меню выбора формата отчётов — для серверов рекомендуется выбрать mailx или stdout (без интерактивного режима).

Активация фонового сервиса:

sudo systemctl enable --now unattended-upgrades.service  

Ключ --now гарантирует немедленный запуск службы без перезагрузки.

Проверьте статус сервиса командой:

systemctl status unattended-upgrades.service  

Ожидаемый корректный вывод включает:

  • Active: active (running) — сервис работает в фоне.
  • CGroup: ... /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown — исполняемый процесс.
  • Main PID: 1138 (python3) — идентификатор рабочего процесса.

Если сервис не активен, диагностируйте проблему через:

journalctl -u unattended-upgrades.service -xe --since "5 minutes ago"  

Фильтры unattended-upgrades нужно настраивать вручную. Откройте файл конфигурации:

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

Убедитесь, что в нём есть строки, ограничивающие обновления security-репозиториями:

Unattended-Upgrade::Allowed-Origins { 
    "Ubuntu:noble-security"; 
}; 
Unattended-Upgrade::Package-Blacklist { 
    "linux-generic";
    "linux-image-generic";
    "linux-headers-generic";
    "linux-modules-generic";
    "linux-modules-extra-generic";
};  

Пояснение параметров:

  • Allowed-Origins — разрешает установку только критичных обновлений из noble-security, игнорируя noble-updates.
  • Package-Blacklist — блокирует автоматический апдейт ядра (рекомендуется для серверов с кастомными модулями).

Для тестирования механизма принудительно запустите unattended-upgrade вне расписания:

sudo unattended-upgrade --dry-run  

Флаг --dry-run покажет обновления без реальной установки.

После каждой установки обновлений утилита apt-listchanges генерирует отчёт, содержащий: 

  • список изменённых пакетов с версиями,
  • выдержки из changelog (с фокусом на security-исправлениях),
  • критические предупреждения о несовместимостях.

Отчёт отправляется на электронную почту администратора, если это указано в /etc/apt/listchanges.conf:

[apt] 
frontend = mail 
email_address = <ваш_email>  

В Ubuntu 24.04 по умолчанию активирован только security-канал. Для включения noble-updates добавьте в конфиг строку "Ubuntu:noble-updates";.

Глубокая настройка unattended-upgrades

Файл /etc/apt/apt.conf.d/50unattended-upgrades определяет ключевые параметры работы утилиты. Все директивы пишутся на языке конфигурации APT с синтаксисом, аналогичным JavaScript-объектам.

Фильтрация по репозиториям (Allowed-Origins). Для разрешения исключительно security-обновлений используется конструкция:

Unattended-Upgrade::Allowed-Origins { 
    "Ubuntu:${distro_codename}-security"; 
};  

Переменная ${distro_codename} заменяется на имя релиза — это удобно, когда нужно сохранить возможность переноса конфигурации на другие серверы. Для Ubuntu 24.04 переменная заменяется на noble; а фильтр Ubuntu:noble-security указывает на репозиторий http://security.ubuntu.com/ubuntu.

Варианты для расширенной поддержки (ESM):

"UbuntuESM:${distro_codename}-infra-security"; // Для инфраструктурных пакетов
"UbuntuESMApps:${distro_codename}-apps-security"; // Для приложений  

Управление чёрным списком пакетов (Package-Blacklist). Блокировка обновления специфичных пакетов:

Unattended-Upgrade::Package-Blacklist { 
    "linux-generic";
    "linux-image-generic";
    "linux-headers-generic";
    "linux-modules-generic";
    "linux-modules-extra-generic";
    "docker-ce"; 
};  

Ядро Linux часто вносят в чёрный список из-за риска несовместимости с оборудованием или ПО и чтобы избежать простоя во время перезагрузки, которая нужна для применения таких обновлений.

Как указывать пакеты:

  • используйте точные имена из apt list --installed;
  • допустимы шаблоны, к примеру, "kube*" заблокирует все пакеты Kubernetes.

Дополнительные критичные параметры. Удаление неиспользуемых зависимостей:

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

Автоматическое восстановление после сбоя обновлений:

Unattended-Upgrade::AutoFixInterruptedDpkg "true";  

Файл расписания /etc/apt/apt.conf.d/20auto-upgrades управляет частотой проверок и запусков обновлений. Рассмотрим возможные настройки расписания.

Ежедневный апдейт списка пакетов:

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

Запуск unattended-upgrades после обновления списков:

APT::Periodic::Unattended-Upgrade "1";

Автоочистка кеша раз в неделю (0 — отключено, 7 — день):

APT::Periodic::AutocleanInterval "7";

Случайная задержка перед запуском (в секундах):

APT::Periodic::RandomSleep "300";

Периодичность проверки обновлений ESM:

APT::Periodic::Enable "1";

Пример минимальной конфигурации

Файл /etc/apt/apt.conf.d/50unattended-upgrades:

Unattended-Upgrade::Allowed-Origins { 
    "Ubuntu:${distro_codename}-security"; 
    "UbuntuESM:${distro_codename}-infra-security"; 
}; 
Unattended-Upgrade::Package-Blacklist { 
    "linux-image-generic"; 
    "linux-headers-generic"; 
}; 
Unattended-Upgrade::Automatic-Reboot "false"; 
Unattended-Upgrade::InstallOnShutdown "true";  

Файл /etc/apt/apt.conf.d/20auto-upgrades:

APT::Periodic::Update-Package-Lists "1"; 
APT::Periodic::Unattended-Upgrade "1"; 
APT::Periodic::AutocleanInterval "3"; 
APT::Periodic::RandomSleep "600";  

Что значат эти настройки:

  • установка только патчей из -security и ESM-источников;
  • блокировка автоматических обновлений ядра (но это можно будет сделать вручную);
  • InstallOnShutdown — установка обновлений при остановке системы, настройка полезна для рабочих станций, на серверах она может привести к длительной перезагрузке;
  • Automatic-Reboot "false" — запрет неконтролируемых перезагрузок;
  • RandomSleep "600" — случайная задержка 0-10 минут для распределения нагрузки в кластерах;
  • AutocleanInterval "3" — очистка кеша раз в 3 дня.

Не забывайте проверять синтаксис конфигов после внесения изменений:

apt-config dump APT::Periodic
apt-config dump Unattended-Upgrade

Также не изменяйте файл /usr/share/unattended-upgrades/20auto-upgrades — это шаблон, перезаписываемый при обновлении пакета. Все кастомные настройки вносятся только в /etc/apt/apt.conf.d/.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях