Автоматичний патчинг: Unattended-Upgrades та dnf-automatic

Ручне оновлення серверів — це гонка з уразливостями, у якій ви майже завжди програєте. Ми налаштовуємо автоматичне патчування безпеки на Linux за допомогою Unattended-Upgrades та dnf-automatic, щоб критичні оновлення встановлювалися без вашої участі та без простою сервісів. Наша команда реалізує проєкт під ключ — від конфігурації до подальшої підтримки, забезпечуючи надійний захист вашої інфраструктури.
Часті запитання

Автоматичний патчинг безпеки: Unattended-Upgrades та dnf-automatic

Сервер не оновлювався півроку, і однієї п'ятниці прилетів RCE в OpenSSL. Якщо оновлювати вручну — ви запізнитесь. Автоматичний патчинг безпеки через Unattended-Upgrades або dnf-automatic закриває CVE без участі людини. На конфігурацію йде кілька годин, після чого не потрібно щотижня заходити по SSH. Ми налаштовуємо цю систему на серверах Linux вже понад 5 років — більше 500 серверів під управлінням Debian/Ubuntu та RHEL. За цей час виробили стандарт: патчі security-оновлень протягом 24 годин після виходу, мінімізація простоїв, повний контроль через Ansible.

Чому автоматичний патчинг необхідний?

70% успішних атак на Linux-інфраструктуру використовують відомі вразливості, для яких уже є патчі. Ручне оновлення: знайти CVE, зайти на кожен сервер, виконати apt upgrade або dnf update, перезапустити сервіси. На 50 серверів йде повний день адміністратора. Автоматизація скорочує цей час до нуля та усуває людський фактор: забуті сервери, пропущені пакети, різна версійність. Ми впроваджуємо системи, які самі перевіряють та встановлюють оновлення безпеки одразу після виходу. Ми гарантуємо, що після налаштування uptime ваших сервісів залишиться на рівні 99.9%. Середній час реакції на екстрені CVE скорочується з 12 годин до 1 години (у 12 разів), а витрати на адміністрування падають на 80%.

Як працює Unattended-Upgrades на Debian/Ubuntu

Пакет уже попередньо встановлений на більшості сучасних Ubuntu. Основний конфіг — /etc/apt/apt.conf.d/50unattended-upgrades:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    // "${distro_id}:${distro_codename}-updates";
    // опціонально
};
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailReport "on-change";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

Automatic-Reboot "false" — навмисно. Автоматичний перезапуск продакшен-серверів без вікна обслуговування — погана ідея. Для ядра та glibc потрібен ребут, але його краще планувати вручну або через окремий інструмент (kured для Kubernetes-нод).

Активація через /etc/apt/apt.conf.d/20auto-upgrades:

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

Перевірка без застосування: unattended-upgrade --dry-run --debug.

Налаштування Unattended-Upgrades

  1. Встановіть пакет: apt install unattended-upgrades.
  2. Відредагуйте конфіг /etc/apt/apt.conf.d/50unattended-upgrades згідно з вашою політикою.
  3. Створіть або змініть /etc/apt/apt.conf.d/20auto-upgrades для активації.
  4. Запустіть unattended-upgrade --dry-run --debug для перевірки.
  5. Перевірте логи в /var/log/unattended-upgrades/.

Налаштування dnf-automatic на RHEL/CentOS/AlmaLinux

dnf install dnf-automatic 

Конфіг /etc/dnf/automatic.conf:

[commands]
upgrade_type = security
apply_updates = yes
random_sleep = 360

[emitters]
emit_via = email
email_to = [email protected]
email_from = [email protected]
systemctl enable --now dnf-automatic-install.timer 

Таймер запускається раз на добу з випадковою затримкою до 360 секунд — це розподіляє навантаження на дзеркала, якщо серверів багато.

Пакети, які краще виключити з автоматичного оновлення

Ядро Linux, пропрієтарні драйвери (NVIDIA, AMD) та пакети, що потребують ручної міграції (наприклад, бази даних), не варто оновлювати автоматично. Використовуйте apt-mark hold <пакет> на Debian/Ubuntu або dnf versionlock <пакет> на RHEL. Unattended-Upgrades та dnf-automatic ігнорують заблоковані пакети. У нашій практиці hold-пакети документуються в Ansible-інвентори та перевіряються при кожному розгортанні.

Перевірка успішності оновлень

На Debian/Ubuntu дивіться /var/log/unattended-upgrades/unattended-upgrades.log. На RHEL — journalctl -u dnf-automatic-install. Якщо в логах є kept back, це означає зміну залежностей або активний hold. Dry-run з unattended-upgrade --dry-run --debug покаже, що буде встановлено без застосування.

Порівняння інструментів для різних ОС
Параметр Unattended-Upgrades yum-cron / dnf-automatic
Підтримка Debian/Ubuntu ✅ ❌
Підтримка RHEL/CentOS/AlmaLinux ❌ ✅
Тип оновлень security, updates, proposed security, all
Сповіщення email (on-change) email, MQTT, script
Можливість відкласти ребут через конфіг через random_sleep
Інтеграція з APT/YUM повна повна

Етапи роботи з налаштування патчингу

Етап Тривалість Результат
Аудит поточного стану 1–2 години Список серверів, ОС, hold-пакетів
Проектування політики 1 година Які оновлення, розклад, сповіщення
Реалізація (Ansible-роль) 2–4 години Playbook з конфігами для всіх ОС
Тестування на стенді 1–2 години Перевірка оновлень без впливу на продакшен
Деплой на продуктив 1 година Поступове розгортання з моніторингом
Документування 1 година Hold-пакети, логи, процедура відкочування

Типові помилки при автоматичному патчингу

  • Забувають виключити ядро з автоматичного оновлення — сервер може перезавантажитися в невідповідний час.
  • Не налаштовують сповіщення — пропускають збій при оновленні.
  • Використовують один конфіг для всіх ОС, ігноруючи відмінності між APT та DNF.

Що входить у налаштування автоматичного патчингу під ключ

  • Аудит поточного стану: інвентаризація ОС, версій, hold-пакетів.
  • Розробка політики оновлень: security-only, розклад, сповіщення.
  • Написання Ansible-ролі для розгортання конфігів на всі сервери.
  • Тестування на ізольованому стенді.
  • Поступовий деплой на продуктив з моніторингом логів.
  • Документація: опис hold-пакетів, процедура відкочування, інструкція для адміністратора.
  • Пост-інсталяційна підтримка: допомога при перших циклах оновлень.

Скільки часу займає налаштування?

Для однорідної інфраструктури (тільки Debian або тільки RHEL) — від 2 годин. Для змішаної з різними ОС та вимогами — до 1 дня. Пропонуємо налаштування під ключ: вартість від 15 000 грн для стандартної інфраструктури (до 10 серверів). У вартість входить аудит, налаштування, тестування та документація. Ви економите час та гроші адміністратора, які можна спрямувати на розвиток. Інвестиція окупається за рахунок запобігання інцидентам. Напишіть нам для оцінки проєкту — оцінимо вашу інфраструктуру за один день. Замовте налаштування автоматичного патчингу — отримайте захист без простою. Більше 5 років досвіду, більше 100 проектів, 500+ серверів під управлінням, сертифіковані інженери.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139