EUR
european

EUR

usa

USD

Russian Ru
Ex. VAT Ex. VAT 0%

Автоматические обновления Linux: Настройка unattended-upgrades и dnf-automatic для обновления серверов Linux

Уровень: Эксперт
Ориентировочное время: ~30 минут
Цель: Настроить масштабируемые автоматические обновления Linux без простоев с помощью unattended-upgrades и dnf-automatic в соответствии с принципами Infrastructure as Code (Инфраструктура как код).

Введение

Ручная установка патчей на серверы – это критическое узкое место в управлении любой продакшен-средой: без автоматизации надежно поддерживать безопасность и актуальность сотен узлов было бы крайне сложно. Уязвимое приложение может быть скомпрометировано за считанные минуты, и большинство эксплойтов нацелены на общеизвестные неисправленные уязвимости. Нам необходимо своевременно применять Security Updates (критические исправления, выпущенные для устранения известных уязвимостей в программном обеспечении), чтобы избежать нарушений безопасности. В этом руководстве мы настроим автоматические обновления Linux на сервере Linux с помощью unattended-upgrades и dnf-automatic. Этот подход стандартизирует обновления серверов Linux.

Что такое unattended-upgrades и dnf-automatic?

unattended-upgrades – это утилита Debian/Ubuntu, которая автоматизирует установку обновлений безопасности и других пакетов.

dnf-automatic – это компонент, обеспечивающий автоматическое обновление для систем RHEL/CentOS/Fedora.

Эти утилиты позволяют Automatic Updates (процессу получения и установки обновлений без вмешательства человека) беспрепятственно работать в фоновом режиме. Обычно они запускаются ежедневно с помощью Systemd Timer (юнита systemd, управляющего расписанием задач и заменяющего традиционные задачи cron).

Требования

Перед началом убедитесь, что выполнены следующие условия:

  • Операционная система: Ubuntu 20.04/22.04/24.04 LTS, Debian 12/13 или RHEL/AlmaLinux 9/10
  • Доступ: доступ sudo или root к серверу
  • Сетевые требования: исходящий доступ по HTTPS к репозиториям пакетов (archive.ubuntu.com, security.debian.org, repo.almalinux.org)
  • Необходимые знания: глубокое понимание системного администрирования, systemd и базового Patch Management (процесса распространения и применения обновлений к программному обеспечению) вместе с управлением патчами в Linux.

Шаг 1: Настройка автоматических обновлений Linux с помощью unattended-upgrades

Для систем, использующих APT (Advanced Package Tool) (основную систему управления пакетами, используемую в дистрибутивах на базе Debian), мы используем unattended-upgrades. Этот инструмент бесшовно интегрируется в вашу стратегию управления патчами в Linux.

1.1 Установка пакета

Сначала проверьте и установите необходимый пакет из Package Repository (централизованного хранилища, из которого извлекаются и устанавливаются пакеты программного обеспечения).

Выполните следующую команду:

sudo apt update && sudo apt install unattended-upgrades -y

Вы должны увидеть вывод, подтверждающий установку. Это гарантирует готовность системы к автоматическим обновлениям apt.

1.2 Настройка разрешенных источников (Allowed Origins)

Основной конфигурационный файл расположен по пути /etc/apt/apt.conf.d/50unattended-upgrades. Мы изменим конфигурацию так, чтобы устанавливались только Security Updates. Это минимизирует риск возникновения критических изменений при автоматическом обновлении пакетов.

Перед внесением изменений рекомендуется создать резервную копию оригинального конфигурационного файла:

sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak

Откройте конфигурационный файл:

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

Полностью замените содержимое блока Allowed-Origins и добавьте перечисленные имена в блок Package-Blacklist:

Для Ubuntu:

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

Для Debian:

Unattended-Upgrade::Origins-Pattern { "origin=Debian,codename=${distro_codename},label=Debian-Security"; "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; };

Затем настройте черный список пакетов и поведение при перезагрузке:

Unattended-Upgrade::Package-Blacklist { "^nginx$"; "^mysql-server$"; "^mariadb-server$"; "postgresql*"; "docker*"; }; Unattended-Upgrade::Automatic-Reboot "false";

Info

Package-Blacklist использует регулярные выражения. Запись вида "nginx" соответствует nginx-common, nginx-extras и т. д. Чтобы указать только конкретный пакет, используйте якоря регулярных выражений, например "^nginx$".

Это ограничивает автоматические обновления apt только исправлениями безопасности и исключает критические пакеты из автоматических обновлений, снижая риск прерывания работы служб при сохранении автоматизации исправлений безопасности.

Warning

Обновления ядра, libc и других низкоуровневых пакетов могут по-прежнему требовать перезагрузки. В продакшен-средах оставляйте автоматические перезагрузки отключенными, если окна обслуживания не обеспечиваются средствами оркестрации.

1.3 Включение автоматических обновлений

Создайте файл auto-upgrades, чтобы активировать Systemd Timer для APT.

Откройте файл:

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

Вставьте внутрь следующее:

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

Эта конфигурация указывает системе:

  • Update-Package-Lists "1" – запускать ежедневное обновление списков пакетов.
  • Unattended-Upgrade "1" – автоматически выполнять автоматические обновления apt.
  • AutocleanInterval "7" – очищать кэш пакетов каждые 7 дней.

Шаг 2: Настройка dnf-automatic для обновления серверов Linux

Для систем, использующих DNF (Dandified YUM) (пакетный менеджер нового поколения для дистрибутивов на базе RHEL), dnf-automatic обеспечивает надежную автоматизацию обновлений dnf.

2.1 Установка пакета

Установите инструмент автоматизации из Package Repository.

Выполните следующую команду:

sudo dnf install dnf-automatic -y

Вы должны увидеть вывод, подтверждающий успешную установку пакета автоматизации обновлений dnf.

2.2 Настройка политик обновления

Основной конфигурационный файл расположен по пути /etc/dnf/automatic.conf. Настройте инструмент для загрузки и применения только Security Updates.

Перед внесением изменений создайте резервную копию конфигурационного файла и проверьте наличие уведомлений о безопасности для вашего дистрибутива:

sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak sudo dnf updateinfo summary sudo dnf updateinfo list security

Откройте конфигурационный файл:

sudo nano /etc/dnf/automatic.conf

Настройте следующие параметры:

[commands] upgrade_type = security random_sleep = 3600 download_updates = yes apply_updates = yes [emitters] emit_via = stdio

Эта конфигурация указывает системе:

  • upgrade_type = security – ориентироваться исключительно на патчи безопасности.
  • random_sleep = 3600 – рандомизировать выполнение на время до 1 часа, распределяя нагрузку между масштабными развертываниями Infrastructure as Code, чтобы предотвратить пиковые нагрузки на репозиторий и одновременные каскадные сбои.
  • download_updates и apply_updates – автоматически скачивать и устанавливать обновления безопасности.

Info

upgrade_type = security зависит от метаданных безопасности репозитория. Если уведомления о безопасности (security advisories) отсутствуют (что типично для свежей установки AlmaLinux 10), dnf-automatic с этой настройкой может вообще ничего не применить. Проверьте поддержку со стороны репозитория, прежде чем полагаться на обновления только безопасности в продакшене. В качестве альтернативы для продакшен-систем рассмотрите использование upgrade_type = security-severity:Critical или default-security.

2.3 Включение таймера systemd

Активируйте таймер, чтобы запланировать автоматизацию обновлений dnf.

Выполните следующую команду:

sudo systemctl enable --now dnf-automatic.timer

Вы должны увидеть вывод, указывающий на то, что таймер включен и запущен. Это активирует запланированные автоматические обновления пакетов для системы.

Шаг 3: Проверка конфигурации

После записи конфигурации ее необходимо проверить.

3.1 Проверка на Debian/Ubuntu

Выполните сухой запуск (dry run) для проверки конфигурации. Флаг -d (или --dry-run) запускает unattended-upgrades в режиме отладки (debug) – на самом деле ничего не меняется:

sudo unattended-upgrades --dry-run --debug

Info

Флаг --dry-run выводит диагностическую информацию, но не изменяет никакие файлы. Убедитесь, что в очереди нет пакетов из черного списка.

На продакшене логи важнее сухих запусков. Проверьте, активны ли таймер и служба:

systemctl list-timers | grep apt systemctl status apt-daily-upgrade.service --no-pager

Затем проверьте последний вывод логов, чтобы подтвердить активность обновлений. На свеженастроенной системе лог может быть пустым. Для немедленной проверки выполните: sudo unattended-upgrade -v.

sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log

3.2 Проверка таймера на RHEL/AlmaLinux

Проверьте статус таймера:

systemctl list-timers | grep dnf-automatic

Ожидаемый вывод:

Wed 2026-05-27 06:23:13 EEST 16h left - - dnf-automatic.timer dnf-automatic.service

Если таймер есть в списке, ваши обновления запланированы правильно.

3.3 Проверка необходимости перезагрузки

Обновления ядра и libc входят в очередь безопасности (например, в Debian linux-image-amd64 является частью обновлений безопасности). Поскольку установлено значение Automatic-Reboot=false, вам необходимо проверить, требуется ли ручная перезагрузка.

Для Debian/Ubuntu:

test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs

Для AlmaLinux/RHEL:

sudo dnf needs-restarting -r

3.4 Принудительный запуск для проверки

Вы можете не увидеть результат, пока не сработает таймер. Чтобы вручную запустить процесс обновления для проверки:

Для Debian/Ubuntu:

sudo unattended-upgrade -v

Для AlmaLinux/RHEL:

sudo dnf-automatic

Шаг 4: Расширенная настройка (уровень эксперта)

Чтобы соответствовать требованиям экспертного уровня, вы можете расширить настройку с помощью уведомлений и детального планирования расписания.

4.1 Email-уведомления

Чтобы получать отчеты об обновлениях:

Для Debian/Ubuntu:

В файле /etc/apt/apt.conf.d/50unattended-upgrades раскомментируйте и настройте:

Unattended-Upgrade::Mail "<YOUR_EMAIL>"; Unattended-Upgrade::MailReport "on-change";

Для AlmaLinux/RHEL:

В файле /etc/dnf/automatic.conf настройте раздел [email] и измените emitter:

[emitters] emit_via = email [email] email_from = [email protected] email_to = <YOUR_EMAIL> email_host = localhost

4.2 Расширенные таймеры dnf-automatic

dnf-automatic предлагает несколько таймеров для разделения этапов загрузки и установки, что обеспечивает больший контроль на продакшене:

  • dnf-automatic.timer: таймер по умолчанию (скачивает и, если настроено, устанавливает).
  • dnf-automatic-notifyonly.timer: только проверяет наличие обновлений и отправляет уведомление.
  • dnf-automatic-download.timer: скачивает обновления, но не устанавливает их.
  • dnf-automatic-install.timer: автоматически скачивает и устанавливает обновления (переопределяет параметр apply_updates в конфигурации).

Используйте конкретный таймер, соответствующий политике обслуживания вашего кластера.

Откат изменений

Чтобы отменить все внесенные изменения, просто удалите инструменты и конфигурации.

Debian/Ubuntu:

sudo apt purge unattended-upgrades -y sudo rm -rf /etc/apt/apt.conf.d/20auto-upgrades /var/log/unattended-upgrades/ /var/run/reboot-required* sudo mv /etc/apt/apt.conf.d/50unattended-upgrades.bak /etc/apt/apt.conf.d/50unattended-upgrades

RHEL/AlmaLinux:

sudo systemctl disable --now dnf-automatic.timer sudo mv /etc/dnf/automatic.conf.bak /etc/dnf/automatic.conf sudo dnf remove dnf-automatic -y

Warning

Удаление этих инструментов отключит автоматические обновления для всей системы, и серверы останутся уязвимыми, если их не обновлять вручную.

Заключение

На этом всё. Одна правильно настроенная система с unattended-upgrades или dnf-automatic, проверенная сухим запуском, – и дело сделано. Благодаря этой автоматизации исправлений безопасности автоматические обновления Linux применяются бесшовно, затраты на обслуживание остаются низкими, а обновления серверов Linux становятся предсказуемыми, а не реактивными. Для крупных сред сочетайте эту настройку с Infrastructure as Code и поэтапным развертыванием, чтобы избежать одновременного обновления каждого узла.

Версия документа: 1.0
Последнее обновление: Май 2026
Владелец: Команда технической документации

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA