Автоматические обновления безопасности
Как настроить unattended-upgrades на Debian и Ubuntu и dnf-automatic на AlmaLinux, чтобы заплатки ставились сами, а сервис при этом не падал ночью.
Обновлено 23 августа 2026 г.
Большая часть взломов идёт через уязвимости, для которых заплатка вышла месяцы назад. Ручное обновление откладывается, автоматическое — нет. Разумная настройка ставит только обновления безопасности и не трогает всё остальное.
Debian и Ubuntu
apt install -y unattended-upgrades apt-listchanges
dpkg-reconfigure -plow unattended-upgrades
Файл /etc/apt/apt.conf.d/50unattended-upgrades:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Package-Blacklist {
"postgresql-.*";
"docker-ce";
};
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Mail "you@example.com";
Расписание — в /etc/apt/apt.conf.d/20auto-upgrades:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Проверка вхолостую, без изменений:
unattended-upgrade --dry-run --debug
systemctl status unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log
AlmaLinux и CentOS Stream
dnf install -y dnf-automatic
В /etc/dnf/automatic.conf:
[commands]
upgrade_type = security
apply_updates = yes
reboot = never
systemctl enable --now dnf-automatic.timer
systemctl list-timers | grep dnf
Что исключать
В список исключений стоит внести всё, что ломается от неожиданной смены версии: сервер базы данных, Docker, сам движок приложения. Обновляйте их руками в спокойное время — см. обновление системы и пакетов.
Обновления безопасности ядра тоже поставятся, но действовать начнут только после перезагрузки:
test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs
Перезагрузка: только по решению человека
Соблазн включить Automatic-Reboot "true" велик, но автоматическая ночная перезагрузка означает, что сервис уйдёт в перезапуск без свидетелей. Если что-то не поднимется, вы узнаете об этом утром от пользователей.
Разумный компромисс: обновления ставятся сами, перезагрузку вы делаете вручную раз в месяц, глядя на консоль в панели /hosting/vds/<id>. Заодно проверяйте, что службы поднимаются сами:
systemctl is-enabled nginx postgresql
systemctl list-units --state=failed
Частые ошибки
| Ошибка | Последствие | Решение |
|---|---|---|
| Включили обновление всех репозиториев, не только security | Приезжают функциональные изменения | Оставить только источник -security |
| База данных не в списке исключений | Мажорная версия ломает данные | Добавить в Package-Blacklist |
| Автоперезагрузка ночью | Сервис не поднялся, никто не видит | Automatic-Reboot "false" |
| Настроили и забыли | Ядро обновляется, но не применяется | Раз в месяц смотреть reboot-required |
| Диск заполнили скачанные пакеты | Кончается место | Держать включённой автоочистку кеша |
Автообновления — это страховка, а не замена вниманию. Раз в месяц открывайте машину, смотрите журнал обновлений, список упавших служб и необходимость перезагрузки. Пятнадцать минут в месяц закрывают большинство сценариев из статьи признаки взлома.