Автоматичні оновлення Linux: unattended-upgrades та dnf-automatic | INTROSERV
EUR
european

EUR

usa

USD

Ukraine Ua
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