SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor

Ubuntu 24.04: включены ли автоматические обновления

В Ubuntu 24.04 пакет unattended-upgrades предустановлен, а файл 20auto-upgrades активирует его. Автоматическая перезагрузка отключена. Используйте dry-run для проверки пакетов.

Почему стоит настроить автоматические обновления безопасности

Сервер без установленных обновлений — самая легкая цель в интернете. Большинство взломов небольших серверов не требуют изощренных методов; они используют известные уязвимости в старых пакетах, которые владелец забыл обновить. В Ubuntu есть инструмент, который решает эту проблему самостоятельно: unattended-upgrades устанавливает обновления безопасности автоматически, по расписанию, без вашего участия. Это самый простой и эффективный способ повысить безопасность VPS, а настройка в Ubuntu занимает всего несколько минут.

Инструмент намеренно настроен консервативно. По умолчанию он применяет только обновления безопасности, а не все обновления пакетов подряд. Патч безопасности несет низкие риски и его стоит устанавливать без проверки, тогда как обновление функциональности может изменить поведение системы, на которое вы рассчитывали. Эти настройки оптимальны для большинства серверов, и данное руководство сохраняет их, указывая лишь на те параметры, которые стоит изменить.

Шаг 1: Установка и включение

В Ubuntu Server 24.04 пакет установлен и включен по умолчанию. Согласно документации Ubuntu Server, unattended-upgrades устанавливается автоматически, а функция автоматической установки обновлений безопасности активируется сразу после завершения инсталляции. Вопрос о включении, который задает пакет в процессе установки, по умолчанию предполагает ответ «да», поэтому, если никто не выбрал «нет» явно, ежедневная задача уже активна. Однако пользовательский или оптимизированный образ от провайдера может отличаться, поэтому лучше проверить это, чем полагаться на предположения. Следующие команды безопасны в любом случае: они устанавливают пакет, если он отсутствует, и повторно задают вопрос, который активирует его работу:

sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Приглашение dpkg-reconfigure содержит один вопрос с вариантами «да» или «нет»: разрешить ли автоматическую загрузку и установку стабильных обновлений. Ответьте «да». Это создаст файл, который активирует ежедневную задачу:

cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Первая строка ежедневно обновляет список пакетов, вторая — ежедневно запускает unattended-upgrade. Значение 1 для обоих параметров означает, что система будет проверять и применять обновления безопасности каждый день по таймеру systemd без вашего участия.

Шаг 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" в том же блоке, чтобы автоматически получать и обычные стабильные обновления Ubuntu. Это расширит политику только на архив -updates от Ubuntu, а не на все репозитории или PPA в системе. При этом сохраняются стандартные проверки: инструмент задерживает любой пакет, который требует взаимодействия с конфигурационным файлом, и не устанавливает ничего, зависимости чего не могут быть получены из разрешенного источника. Для сервера, на котором размещены важные данные, автоматическая установка только патчей безопасности является более безопасным вариантом по умолчанию. Оставьте настройки как есть, если у вас нет веских причин для их изменения.

Шаг 3: Обработка перезагрузок

Некоторые обновления, например ядра или системных библиотек, вступают в силу только после перезагрузки. unattended-upgrades не будет перезагружать сервер без вашего разрешения, поэтому пропатченное ядро может оставаться неиспользуемым до тех пор, пока вы сами не перезагрузите систему. Решите, как вы хотите это обрабатывать, и укажите это в 50unattended-upgrades:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

Эта настройка перезагружает сервер в четыре часа утра, если и только если обновление требует этого. На одиночном VPS, где нет кластера для переключения нагрузки, короткая перезагрузка ранним утром — обычно оправданная плата за актуальность исправлений ядра. Если ваш сервер выполняет задачи, которые не должны прерываться, отключите перезагрузку и возьмите за правило перезагружать систему самостоятельно после проверки /var/run/reboot-required.

Шаг 4: Проверка работоспособности

Не ждите сутки, чтобы узнать, работает ли задача. Запустите пробный прогон, который покажет, что именно будет применено, не внося никаких изменений:

sudo unattended-upgrade --dry-run --debug

Вывод покажет список пакетов и источники, из которых они получены, что позволит увидеть политику в действии. После того как задача выполнится хотя бы раз, запись об этом появится здесь:

cat /var/log/unattended-upgrades/unattended-upgrades.log

Этот лог — ответ на вопрос «действительно ли мой сервер обновляется». Если в нем видно, что пакеты безопасности устанавливаются по расписанию, значит, задача работает.

Место в общей системе защиты

Автоматические обновления — это лишь один из уровней защиты сервера, а не решение всех проблем. Они предотвращают использование известных уязвимостей, но никак не влияют на то, кто может войти в систему или какие службы доступны извне. Используйте их в сочетании с настройкой SSH только по ключам, чтобы исключить брутфорс, с политикой default-deny для файрвола UFW, чтобы были доступны только выбранные вами порты, и с непривилегированными пользователями для сервисов, чтобы скомпрометированное приложение не дало злоумышленнику контроль над всей системой. Приложения, которые вы размещаете, имеют свои собственные секреты, поэтому, если на сервере работает менеджер паролей, укрепление Vaultwarden защитит административный токен и файл резервной копии, которые невозможно обезопасить одним лишь обновлением пакетов через apt. Обновления закрывают известные вам дыры; остальные уровни защиты ограничивают ущерб от тех, о которых вы еще не знаете.

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, межсетевым экраном с политикой запрета по умолчанию и использованием непривилегированных пользователей для сервисов, чтобы сделать сервер по-настоящему устойчивым к взлому.