Новые уязвимости в системных пакетах публикуются постоянно, а владелец сервера не всегда заходит на него каждую неделю. Автоматическая установка обновлений безопасности закрывает этот разрыв: система сама ставит исправления, которые выпускает дистрибутив. Ниже — как это включить в Debian и Ubuntu (unattended-upgrades) и в RHEL-семействе (dnf-automatic), что делать со службами после обновления и почему ручной контроль всё равно нужен.
Debian и Ubuntu: unattended-upgrades
Пакет unattended-upgrades входит в официальные репозитории. Часто он уже стоит в образе, но проверить стоит. Установка и включение выполняются тремя командами:
sudo apt update
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Мастер создаёт файл /etc/apt/apt.conf.d/20auto-upgrades. Его две строки включают ежедневное обновление списков пакетов и запуск unattended-upgrade:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Запуск идёт по таймерам systemd, а не через cron: посмотреть их можно командой systemctl list-timers. Единица «1» означает «раз в день».
Какие репозитории берутся и как настроить перезагрузку
Что именно ставить, решает файл /etc/apt/apt.conf.d/50unattended-upgrades. Параметр Allowed-Origins перечисляет источники, из которых разрешено брать пакеты. Как правило, в нём активна строка с суффиксом -security, а остальные источники закомментированы. Так и стоит оставить: обычные обновления версий могут менять поведение программ, а исправления безопасности — это точечные правки.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
Автоматическая перезагрузка нужна после обновления ядра и некоторых библиотек. Её чаще отключают на серверах с сайтами и базами: перезагрузка в произвольный момент рвёт соединения, а если после неё не поднимется какая-то служба, вы узнаете об этом от посетителей. Если включаете, задайте Automatic-Reboot-Time на малозагруженный час и проверьте, что все нужные службы стартуют сами. Подробнее про ядро — в статье обновление ядра Linux.
Журнал и проверка работы
Пробный запуск без установки покажет, что система собирается обновить. Результаты настоящих запусков лежат в каталоге /var/log/unattended-upgrades/:
sudo unattended-upgrade --dry-run --debug
systemctl list-timers 'apt-daily*'
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
Если в журнале повторяются ошибки блокировки dpkg, значит, параллельно идёт ручное обновление или зависший процесс apt. Ручное обновление системы и переход на новый выпуск разобраны в статье обновление Ubuntu.
RHEL, AlmaLinux, Rocky: dnf-automatic
В RHEL-семействе та же задача решается пакетом dnf-automatic. Он работает через таймеры systemd, и режим определяется тем, какой таймер вы включили:
| Таймер | Что делает |
|---|---|
| dnf-automatic-notifyonly.timer | Только сообщает о доступных обновлениях |
| dnf-automatic-download.timer | Скачивает пакеты, но не устанавливает |
| dnf-automatic-install.timer | Скачивает и устанавливает |
sudo dnf install dnf-automatic
sudo nano /etc/dnf/automatic.conf
sudo systemctl enable --now dnf-automatic-install.timer
В файле /etc/dnf/automatic.conf в разделе [commands] ограничьте тип обновлений безопасностью и разрешите установку:
[commands]
upgrade_type = security
download_updates = yes
apply_updates = yes
Службы после обновления: needrestart
Установка нового пакета не означает, что запущенная программа его использует. Пока служба не перезапущена, в памяти остаётся старая версия библиотеки с уязвимостью. В Debian и Ubuntu это ловит утилита needrestart: она показывает, какие процессы работают на устаревших библиотеках. После обновления ядра система также создаёт файл /var/run/reboot-required.
sudo apt install needrestart
sudo needrestart -r l
cat /var/run/reboot-required
sudo needs-restarting -r
sudo needs-restarting -s
Первые две команды — для Debian и Ubuntu, последние две (из пакета dnf-utils) — для RHEL-семейства: они сообщают, нужна ли перезагрузка и какие службы стоит перезапустить. Перезапуск служб лучше делать осознанно, в удобное окно, а не автоматически на рабочем сайте.
Почему ручной контроль остаётся
- Автообновления закрывают только пакеты дистрибутива. Сайт на WordPress, панель управления или Docker-образ они не обновят.
- Обновление может изменить конфигурацию или сломать зависимость. Перед важными изменениями делайте резервную копию или снимок диска.
- Журнал нужно читать. Тихий сбой автообновления означает, что сервер месяцами остаётся без исправлений.
Автообновления — один пункт общего плана защиты, а не весь план. Остальные меры собраны в чек-листе безопасности сервера.
Частые вопросы
Нужно ли включать автообновления безопасности на VPS?
Да, в большинстве случаев нужно. Исправления безопасности — это небольшие точечные правки, и риск от них ниже, чем риск месяцами оставлять известную уязвимость. Включайте только источник security, ведите журнал и периодически проверяйте, что обновления действительно устанавливаются, а службы перезапускаются.
Почему автоматическую перезагрузку обычно отключают?
Перезагрузка в произвольный момент обрывает активные соединения, а база данных или сайт могут не подняться без вашего участия. Поэтому на рабочих серверах перезагрузку чаще делают вручную в согласованное окно. Если включаете автоматическую, задайте час с минимальной нагрузкой и убедитесь, что службы стартуют сами.
Как понять, что автообновления реально работают?
Посмотрите журнал: на Debian и Ubuntu это каталог /var/log/unattended-upgrades/, на RHEL-семействе — журнал systemd для таймера dnf-automatic. Пробный запуск с флагом --dry-run покажет, что система обновила бы сейчас. Если записей давно нет или в них одни ошибки, автообновление не работает.
Обновит ли это мой сайт или панель управления?
Нет. Автообновления работают с пакетами дистрибутива: ядром, библиотеками, веб-сервером и системными службами из репозиториев. CMS, плагины, панели управления и контейнеры Docker обновляются отдельно. Для них нужны свои механизмы обновления или регулярная ручная проверка версий.