Ubuntu 24.04: включены ли unattended-upgrades
Узнайте, включен ли unattended-upgrades в Ubuntu 24.04 по умолчанию. Разбираем работу 20auto-upgrades, параметр Automatic-Reboot и запуск в режиме dry run.
Почему стоит настроить автоматические обновления безопасности
Сервер без установленных патчей — самая легкая цель в интернете. Большинство взломов небольших серверов не связаны с изощренными атаками; это использование известных уязвимостей в старых пакетах, которые владелец не обновил. Ubuntu поставляется с инструментом, который устраняет этот пробел самостоятельно: unattended-upgrades устанавливает обновления безопасности автоматически по расписанию, без вашего участия. Это самый дешевый способ повысить безопасность на VPS, а настройка в Ubuntu занимает несколько минут.
Инструмент настроен максимально консервативно. По умолчанию он применяет только обновления безопасности, а не все обновления пакетов. Это связано с тем, что патч безопасности несет низкий риск и его можно устанавливать без проверки, в то время как обновление функций может изменить поведение системы, на которое вы полагаетесь. Такое поведение по умолчанию оптимально для большинства серверов; данный гайд сохраняет этот подход, показывая лишь те параметры, которые стоит изменить.
Шаг 1: Установка и включение
В Ubuntu 24.04 пакет часто уже установлен, но не всегда включен. Установите и активируйте его:
sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesЗапрос dpkg-reconfigure содержит один вопрос: нужно ли автоматически загружать и устанавливать стабильные обновления. Ответьте «yes». Это создаст файл, который активирует ежедневное задание:
cat /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";Первая строка обновляет список пакетов ежедневно; вторая запускает unattended-upgrade ежедневно. Настройка обоих параметров в 1 означает, что система будет проверять и применять обновления безопасности каждый день через systemd timer без вашего участия.
Шаг 2: Выбор обновлений для автоматической установки
Политика обновлений задается в /etc/apt/apt.conf.d/50unattended-upgrades. Откройте этот файл и изучите блок Allowed-Origins в верхней части:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};Важное значение имеют строки -security, они включены по умолчанию. Это консервативная политика: устанавливаются только обновления безопасности, а обычные обновления функций остаются на ваше усмотрение. Вы можете добавить строку "${distro_id}:${distro_codename}-updates" для автоматической установки всех обновлений, но для сервера с важными данными безопаснее оставить только автоматические патчи безопасности. Оставьте настройки по умолчанию, если у вас нет веских причин их менять.
Шаг 3: Обработка перезагрузок
Некоторые обновления (ядро или основные библиотеки) вступают в силу только после перезагрузки. unattended-upgrades не будет перезагружать ваш сервер без вашего прямого указания. Это означает, что пропатченное ядро может оставаться неактивным до следующей ручной перезагрузки. Решите, как вы хотите это обрабатывать, и явно настройте это в 50unattended-upgrades:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";Этот параметр перезагрузит сервер в 4 часа утра, если и только если это потребуется для установки обновления. Для одиночного VPS без кластера для переключения нагрузки кратковременная ночная перезагрузка — это оправданная плата за актуальное ядро. Если на вашем сервере работают процессы, которые нельзя прерывать, отключите автоматическую перезагрузку и приучите себя перезагружать сервер самостоятельно после проверки /var/run/reboot-required.
Шаг 4: Проверка работы
Не ждите сутки, чтобы узнать, работает ли задание. Запустите тестовый запуск (dry run), который покажет, что именно будет установлено, не внося никаких изменений:
sudo unattended-upgrade --dry-run --debugВ выводе будет перечислен список пакетов и их источники, что позволит увидеть политику в действии. После того как реальное задание выполнится хотя бы один раз, запись о нем появится здесь:
cat /var/log/unattended-upgrades/unattended-upgrades.logЭтот лог отвечает на вопрос: «действительно ли мой сервер обновляется сам». Если в нем видны установленные по расписанию пакеты безопасности, значит, задание работает.
Место в общей защите
Автоматические обновления — это лишь один уровень защиты сервера, а не вся защита целиком. Они предотвращают наличие известных уязвимостей, но не защищают от несанкционированного входа или открытых портов. Используйте их в сочетании с укреплением SSH (только по ключам), чтобы предотвратить брутфорс; межсетевым экраном UFW с политикой запрета всего входящего по умолчанию; и непривилегированными пользователями сервисов, чтобы скомпрометированное приложение не получило полный контроль над системой. Патчи закрывают известные дыры; другие уровни минимизируют ущерб от неизвестных.
FAQ
Применяет unattended-upgrades все обновления или только обновления безопасности?
По умолчанию — только обновления безопасности. Блок Allowed-Origins в /etc/apt/apt.conf.d/50unattended-upgrades включает источники -security и оставляет обычные обновления функций для ручной установки. Это сделано намеренно: патчи безопасности несут низкий риск, а обновления функций могут изменить поведение системы, поэтому большинству серверов подходит консервативный режим по умолчанию.
Будут ли автоматические обновления перезагружать мой сервер?
Только если вы это укажете. Установите Unattended-Upgrade::Automatic-Reboot "true" и Automatic-Reboot-Time в конфигурации, и сервер перезагрузится в указанное время, если это потребуется для обновления (например, после патча ядра). Если функция отключена, пропатченное ядро будет ждать вашей ручной перезагрузки; проверяйте /var/run/reboot-required, чтобы узнать о необходимости перезагрузки.
Как проверить, что автоматические обновления действительно работают?
Запустите sudo unattended-upgrade --dry-run --debug, чтобы увидеть, что будет установлено прямо сейчас (без изменений), и прочитайте /var/log/unattended-upgrades/unattended-upgrades.log для просмотра истории запусков; каждая автоматическая установка также записывается в /var/log/apt/history.log. Если в логах видны пакеты безопасности, установленные по ежедневному расписанию, таймер работает. Если тестовый запуск выводит No packages found that can be upgraded unattended, значит, либо система уже полностью обновлена, либо список разрешенных источников слишком узок и не включает репозиторий безопасности.
Достаточно ли unattended-upgrades для обеспечения безопасности сервера?
Нет, но это необходимый уровень. Это предотвращает наличие известных уязвимостей, что останавливает самый распространенный тип взломов, но это не контролирует доступ и открытые порты. Сочетайте этот инструмент с защитой SSH, межсетевым экраном по принципу «запрещено всё, что не разрешено» и использованием непривилегированных пользователей для создания по-настоящему защищенного сервера.