
Как включить автоматические обновления безопасности Ubuntu Server
Проверяем штатные обновления Ubuntu Server, настраиваем unattended-upgrades, читаем журнал и безопасно планируем перезагрузку VPS.
Содержание
Исправление уязвимости защищает сервер только после установки. Если обновлять Ubuntu вручную от случая к случаю, между публикацией исправления и его применением проходят дни или недели. unattended-upgrades сокращает этот промежуток: регулярно получает список пакетов и без участия администратора устанавливает обновления из разрешённых источников.
В Ubuntu Server этот механизм обычно уже включён. Поэтому настройка начинается не с копирования конфигурации из интернета, а с проверки конкретного VPS. Дальше мы отделим три разные операции: обновление списка пакетов, установку исправлений в текущем выпуске Ubuntu и переход на новый выпуск системы. Автоматизируется только первые две; обновление, например, с Ubuntu 24.04 LTS на следующий выпуск остаётся отдельной работой.
Проверьте выпуск Ubuntu и свободное место
Сначала узнайте версию системы и объём свободного места в корневой файловой системе:
lsb_release -ds
df -h /
Первая команда печатает название установленного выпуска Ubuntu, вторая показывает занятое и свободное место на /. Автоматическая установка не продлевает поддержку устаревшего выпуска и не сможет нормально завершиться при заполненном диске. Если поддержка версии закончилась или места почти нет, сначала решите эту проблему.
Проверьте также дату и часовой пояс:
timedatectl status
Правильное время важно для проверки подписей репозиториев и понимания журналов. Строка System clock synchronized: yes подтверждает синхронизацию часов; значение Time zone помогает сопоставить запуск обновления с нагрузкой и возможным перерывом в работе.
Узнайте, включены ли штатные обновления
За периодические действия APT отвечают два systemd-таймера. Посмотрите их состояние и ближайшее время запуска:
systemctl list-timers 'apt-daily*'
В выводе обычно присутствуют apt-daily.timer и apt-daily-upgrade.timer. Первый обновляет сведения о доступных пакетах, второй запускает установку. Время может меняться из-за случайной задержки: Ubuntu распределяет обращения к зеркалам, а не запускает все серверы в одну минуту.
Теперь проверьте, установлен ли исполнитель автоматических обновлений:
dpkg-query -W -f='${Status}\n' unattended-upgrades 2>/dev/null
Ожидаемый ответ — install ok installed. Отсутствие вывода означает, что пакет не установлен; сообщение с другим статусом указывает на незавершённую или повреждённую установку, которую нужно разобрать отдельно.
Периодичность задаётся параметрами APT. Покажите только нужные строки, не открывая редактор:
apt-config dump | grep -E 'APT::Periodic::(Update-Package-Lists|Unattended-Upgrade)'
Значение "1" у обоих параметров означает запуск раз в день. "0" отключает соответствующее действие. Команда показывает итоговую конфигурацию с учётом всех файлов, поэтому она надёжнее просмотра одного предполагаемого файла.
Установите механизм, если его нет
Если проверка подтвердила отсутствие пакета, сначала обновите локальный список доступных версий, затем установите unattended-upgrades:
sudo apt update
sudo apt install unattended-upgrades
apt update ничего не обновляет в работающей системе — он только получает свежие индексы репозиториев. apt install добавляет сам механизм. После успешной установки включите стандартную ежедневную конфигурацию через диалог пакета:
sudo dpkg-reconfigure --priority=low unattended-upgrades
Подтвердите автоматическую загрузку и установку стабильных обновлений. Затем повторите apt-config dump и просмотр таймеров из предыдущего раздела. Не продолжайте, пока оба способа проверки не показывают включённое расписание.
Разберитесь, какие обновления будут установлены
Файл /etc/apt/apt.conf.d/50unattended-upgrades содержит список разрешённых источников и остальные параметры. Его не нужно заменять целиком: состав по умолчанию зависит от выпуска Ubuntu. Посмотрите активную часть блока источников:
grep -A 20 'Allowed-Origins' /etc/apt/apt.conf.d/50unattended-upgrades
В стандартной конфигурации разрешены официальный архив текущего выпуска, его канал безопасности и доступные каналы Ubuntu ESM. Строки, начинающиеся с //, являются комментариями и не действуют.
Подключение стороннего репозитория само по себе не разрешает автоматические обновления из него. Это полезное ограничение: пакет Docker, базы данных или другого поставщика не должен незаметно попасть в автоматический контур. Для каждого такого источника отдельно решают, кто читает примечания к выпуску, где проверяется совместимость и как выполняется возврат.
Не путайте установку исправлений с переходом на новый выпуск Ubuntu. unattended-upgrades обновляет пакеты внутри установленного выпуска и не запускает do-release-upgrade.
Оставьте перезагрузку под ручным контролем
На первом сервере разумно устанавливать исправления автоматически, но выбирать время перезагрузки вручную. Создайте отдельный локальный файл, который явно запрещает автоматический reboot:
sudoedit /etc/apt/apt.conf.d/60local-unattended-upgrades
Добавьте в него одну настройку:
Unattended-Upgrade::Automatic-Reboot "false";
Файл с номером 60 читается после пакетного файла 50unattended-upgrades, поэтому локальное значение имеет приоритет. Отдельный файл проще отличить от настроек, которыми управляет пакет.
Убедитесь, что APT видит итоговое значение:
apt-config dump | grep 'Unattended-Upgrade::Automatic-Reboot'
В ответе должно быть "false". Если строк несколько, действует последнее прочитанное значение; найдите дубли в /etc/apt/apt.conf.d/ и оставьте одну понятную локальную политику.
Проверьте настройку без установки пакетов
До первого настоящего запуска проверьте выбор источников и пакетов без изменения системы. Для этого запустите unattended-upgrades в режиме имитации:
sudo unattended-upgrade --dry-run --debug
Параметр --dry-run запрещает фактическую установку, а --debug показывает разрешённые источники, найденные пакеты и причины пропуска. Нормальный результат содержит фразу о режиме dry run и не завершается traceback или ошибкой репозитория.
Эта проверка отвечает только на вопрос «что программа сделала бы сейчас». Она не гарантирует будущий запуск: к тому времени изменятся индексы, пакеты и доступность зеркала. Поэтому после имитации нужен контроль реальных выполнений.
Читайте результат настоящего запуска
Подробные записи находятся в каталоге /var/log/unattended-upgrades. Посмотрите последние сто строк основного журнала:
sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades.log
В начале запуска перечисляются разрешённые источники, затем выбранные пакеты, а в конце — результат. Ищите дату последнего успешного выполнения, повторяющиеся ошибки загрузки, удержанные пакеты и незавершённый dpkg.
История всех операций APT помогает понять, какие версии действительно установились:
sudo tail -n 100 /var/log/apt/history.log
Здесь важны строки Start-Date, Upgrade и End-Date. Если начало есть, а завершения нет, проверьте журнал unattended-upgrades и состояние пакетной базы, прежде чем запускать новую установку.
Перезагрузите сервер, когда это действительно требуется
После обновления ядра или некоторых библиотек Ubuntu создаёт файл /var/run/reboot-required. Проверить его можно без сложного сценария:
test -f /var/run/reboot-required && echo 'Требуется перезагрузка' || echo 'Перезагрузка не требуется'
Первый ответ означает, что часть исправлений ещё не действует в работающем ядре или процессах. Это не авария, но откладывать перезагрузку на неопределённый срок нельзя.
Перед перезагрузкой убедитесь, что доступны консоль хостера и актуальная локальная резервная копия. Выберите короткое окно обслуживания, затем выполните:
sudo systemctl reboot
SSH-соединение сразу закроется — это ожидаемо. Подождите загрузки VPS, подключитесь заново и проверьте systemctl --failed, состояние Nginx, приложение и несколько ключевых URL с другого компьютера. Перезагрузка считается законченной не тогда, когда вернулся SSH, а когда снова работает пользовательский сценарий сайта.
Если автоматическое обновление завершилось ошибкой
Не удаляйте lock-файлы APT наугад: блокировка часто означает, что другой процесс ещё работает. Сначала посмотрите связанные процессы и целостность базы пакетов:
ps aux | grep -E '[a]pt|[d]pkg|[u]nattended'
sudo dpkg --audit
Первая команда исключает из результата собственный grep и показывает активную установку. Вторая перечисляет пакеты, которые распакованы или настроены не полностью. Если процесс APT продолжает работать, дождитесь его завершения и следите за журналом. Если он завершился с ошибкой, исправление зависит от конкретного сообщения и пакета; универсальное удаление блокировки может повредить состояние сильнее.
Временно отключать автоматические обновления стоит только при понятной причине, например для расследования повторяющегося сбоя. Для этого меняют периодические параметры на "0", а после устранения причины возвращают "1" и снова выполняют dry run. Само отключение не устраняет уязвимость и не должно становиться постоянным «решением».
Один раз в неделю проверяйте дату последней успешной установки, свободное место и необходимость перезагрузки. Внешний мониторинг должен сообщать, если сайт перестал отвечать после обновления или сервер слишком долго не получал исправления.
Автоматические обновления дополняют, но не заменяют правила UFW, защиту SSH и понятный порядок хранения секретов. Контейнеры и зависимости приложения обновляются отдельно.
Первоисточники
Самопроверка
Проверьте, что материал усвоен
Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.
Разбираем коротко
Частые вопросы
Ubuntu Server уже устанавливает исправления безопасности автоматически?
В современных установках Ubuntu Server пакет unattended-upgrades обычно уже установлен и настроен на ежедневную установку исправлений безопасности. Проверить конкретный VPS всё равно нужно: образ хостера или прежний администратор могли изменить стандартную конфигурацию.
Нужно ли включать автоматическую перезагрузку после обновления?
Не обязательно. Для одного VPS понятнее сначала оставить автоматическую перезагрузку выключенной, следить за файлом reboot-required и перезагружать сервер в выбранное окно с последующей проверкой сайта.
Обновит ли unattended-upgrades Docker, Node.js и приложение?
Только если программа установлена как APT-пакет из разрешённого репозитория. Контейнерные образы, зависимости проекта, плагины CMS и вручную скачанные бинарные файлы требуют собственного порядка обновления.


