Как настроить автоматическое обновление пакетов на сервере Linux
Автоматическое обновление пакетов — это важная часть безопасности серверов. Особенно когда дело касается обновлений безопасности. Не все админы хотят вручную отслеживать каждый патч, и здесь на помощь приходят утилиты вроде unattended-upgrades, dnf-automatic и yum-cron.
В этой статье разберём, как настроить автообновления для разных дистрибутивов Linux.
Зачем настраивать автоматическое обновление?
- Безопасность — критические баги закрываются как можно быстрее.
- Поддержка — минимизируете риски при переходе на новую версию вручную.
- Меньше ручной работы — особенно важно, если вы админите много серверов.
Для Debian/Ubuntu: unattended-upgrades
Установка
sudo apt update
sudo apt install unattended-upgradesАктивация
sudo dpkg-reconfigure --priority=low unattended-upgradesПосле этого будет создана базовая конфигурация.
Основной конфиг
Путь: /etc/apt/apt.conf.d/50unattended-upgrades
Пример:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
};
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Параметр -security — обязательно. Можно также добавить -updates и -backports.
Расписание
Путь: /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Значениe "1" означаeт "ежедневно".
Для Fedora, RHEL, CentOS: dnf-automatic
Установка
sudo dnf install dnf-automaticКонфигурация
Путь: /etc/dnf/automatic.conf
Пример:
[commands]
upgrade_type = security
random_sleep = 0
download_updates = yes
apply_updates = yes
[emitters]
emit_via = motd
[base]
debuglevel = 1
Можно выбрать upgrade_type = default если хотите ставить всё, не только security-апдейты.
Если вы хотите скачивать, но не ставить обновления (например, для ручной проверки), используйте такие настройки:
download_updates = yes
apply_updates = no
Включение службы
sudo systemctl enable --now dnf-automatic.timerДля CentOS 7 / RHEL 7: yum-cron
Установка
sudo yum install yum-cronКонфигурация
Путь: /etc/yum/yum-cron.conf
Важные параметры:
update_cmd = security
apply_updates = yes
Также можно настроить логирование и уведомления по email.
Активация
sudo systemctl enable --now yum-cronПроверка работы
Вы можете проверить журнал через journalctl:
journalctl -u dnf-automatic.timer
journalctl -u unattended-upgradesА для yum-cron:
cat /var/log/yum.logКак настроить отправку уведомлений об обновлениях?
Для unattended-upgrades
В /etc/apt/apt.conf.d/50unattended-upgrades:
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailOnlyOnError "true";
Понадобится установленный MTA (например, postfix, exim, ssmtp, msmtp).
Для dnf-automatic (Fedora/RHEL 8+)
В /etc/dnf/automatic.conf:
[emitters]
emit_via = email
email_from = root@yourdomain.com
email_to = admin@yourdomain.com
email_host = localhost
По умолчанию email_host = localhost, но можно указать внешний SMTP-сервер. Опять же, нужен настроенный MTA.
Для yum-cron (CentOS/RHEL 7)
В /etc/yum/yum-cron.conf:
email_from = root@yourdomain.com
email_to = admin@yourdomain.com
email_host = localhost
Что учитывать при включении автообновлений
- Не обновляйте ядро автоматически, если сервер критичный — может потребоваться ручная перезагрузка.
- Тестируйте сначала на staging-сервере, особенно если ставите всё подряд (
defaultвместоsecurity). - Настройте уведомления, чтобы быть в курсе того, что ставится (через mailx или systemd email hooks).
Заключение
Автоматическое обновление пакетов — простой способ закрыть базовые дыры в безопасности без лишнего напряга. Подходящие инструменты есть под любой дистрибутив: unattended-upgrades, dnf-automatic, yum-cron. Настроил — и забыл. Но всё равно лучше следить за логами — хотя бы раз в неделю.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний