VDS · Безопасность

Автоматические обновления безопасности

Как настроить 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
Диск заполнили скачанные пакетыКончается местоДержать включённой автоочистку кеша

Автообновления — это страховка, а не замена вниманию. Раз в месяц открывайте машину, смотрите журнал обновлений, список упавших служб и необходимость перезагрузки. Пятнадцать минут в месяц закрывают большинство сценариев из статьи признаки взлома.