Unattended-upgrades: автообновления Ubuntu 24.04

Настройка сервера
Unattended-upgrades: автообновления Ubuntu 24.04

Автообновления Ubuntu — самый дешёвый способ защитить сервер: пакет unattended-upgrades сам скачивает и устанавливает обновления безопасности, пока вы занимаетесь своими делами. Это критично, потому что между публикацией уязвимости и началом её массовой эксплуатации ботами проходят считанные дни, а иногда часы — вспомните дыры в OpenSSH, OpenSSL или sudo. Сервер, который никто не обновлял три месяца, — лёгкая добыча. В этой инструкции настроим автоматические обновления безопасности на Ubuntu 24.04 LTS за 15 минут: установка, тонкая настройка, автоперезагрузка, исключения и проверка, что всё действительно работает.

Как устроены автообновления в Ubuntu

За автоматику отвечают три компонента:

  • unattended-upgrades — скрипт, который выбирает и ставит обновления из разрешённых источников;
  • systemd-таймеры apt-daily.timer (скачивает списки пакетов) и apt-daily-upgrade.timer (запускает установку) — они заменяют старый cron;
  • конфиги в /etc/apt/apt.conf.d/ — файл 20auto-upgrades включает механизм, файл 50unattended-upgrades определяет, что именно ставить.

По умолчанию устанавливаются только обновления из ветки безопасности (noble-security для Ubuntu 24.04). Это патчи, которые Canonical выпускает без смены версий программ — то есть исправления уязвимостей без новых функций и, как следствие, с минимальным риском что-то сломать. Обычные обновления и релизные апгрейды автоматика не трогает: они остаются за вами, и о правильном ручном процессе мы писали в статье о том, как правильно обновлять сервер на Ubuntu/Debian.

Шаг 1. Установка unattended-upgrades

На свежих образах Ubuntu Server пакет часто уже стоит, но проверить не помешает:

sudo apt update
sudo apt install -y unattended-upgrades apt-listchanges

apt-listchanges — опциональное дополнение: оно собирает список изменений в пакетах, который удобно получать в отчётах.

Шаг 2. Включение автообновлений

Самый простой способ — штатный диалог:

sudo dpkg-reconfigure --priority=low unattended-upgrades

Ответьте «Yes» — утилита создаст файл /etc/apt/apt.conf.d/20auto-upgrades с содержимым:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

«1» означает «раз в день». Тот же файл можно создать и вручную без диалога — результат одинаковый. Проверьте, что таймеры активны:

systemctl list-timers apt-daily.timer apt-daily-upgrade.timer

Шаг 3. Тонкая настройка 50unattended-upgrades

Главный конфиг — /etc/apt/apt.conf.d/50unattended-upgrades. Откройте его:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Источники обновлений

В начале файла — секция Unattended-Upgrade::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";
//      "${distro_id}:${distro_codename}-updates";
};

Для боевого сервера этого достаточно. Если хотите, чтобы автоматически ставились и обычные исправления (не только security), раскомментируйте строку с -updates — но для продакшена консервативный вариант надёжнее.

Полезные опции

Найдите и настройте следующие параметры (сняв // в начале строки):

// Удалять неиспользуемые зависимости после обновления:
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Перезагружаться автоматически, если обновление этого требует:
Unattended-Upgrade::Automatic-Reboot "true";
// ...но только ночью, когда трафик минимален:
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

// Отчёт на почту (нужен настроенный отправитель, например msmtp):
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "only-on-error";

Автоперезагрузка — вопрос политики. Для личного проекта или тестового сервера смело включайте: ночной рестарт на минуту незаметен. Для продакшена с базой данных многие предпочитают "false" и перезагрузку вручную в согласованное окно. Компромисс: включить автоперезагрузку, но следить за состоянием сервера — как это организовать, читайте в статье про мониторинг VPS с уведомлениями в Telegram.

Исключения: что не обновлять автоматически

Если какой-то пакет должен оставаться замороженным (например, вы держите конкретную версию из-за совместимости), добавьте его в чёрный список:

Unattended-Upgrade::Package-Blacklist {
    "postgresql-16";
    // регулярные выражения тоже работают:
    // "linux-";
};

Шаг 4. Проверка: dry-run и логи

Убедитесь, что конфигурация валидна и автоматика видит обновления, ничего при этом не устанавливая:

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

В выводе должны быть строки Allowed origins are: ... и список пакетов к установке (или сообщение, что обновлять нечего). Ошибок быть не должно. Запустить установку принудительно, не дожидаясь таймера, можно так:

sudo unattended-upgrade --debug

Вся история работы пишется в лог — заглядывайте туда при разборе полётов:

tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log

Подробности о каждой установке пакетов — в /var/log/unattended-upgrades/unattended-upgrades-dpkg.log.

Перезагрузки и needrestart: чего автоматика не умеет

Два важных ограничения, о которых часто забывают:

  1. Новое ядро работает только после перезагрузки. Пакет установится, но сервер продолжит работать на старом ядре. Индикатор — файл /var/run/reboot-required: если он существует, нужен рестарт. Проверка одной строкой: cat /var/run/reboot-required 2>/dev/null || echo "Перезагрузка не требуется".
  2. Обновлённые библиотеки не подхватываются работающими сервисами. Если обновился OpenSSL, то Nginx, ставший на него ссылаться, продолжает держать в памяти старую версию до рестарта. В Ubuntu 24.04 за это отвечает утилита needrestart — она входит в серверную поставку и после обновлений перезапускает затронутые сервисы или сообщает о них. Посмотреть, что требует рестарта: sudo needrestart -b.

Практический вывод: автообновления — не «поставил и забыл навсегда», а «поставил и заглядываю раз в неделю». Это всё равно на порядок надёжнее, чем вспоминать про apt upgrade раз в квартал.

Рекомендуемые конфигурации под разные сценарии

СценарийИсточникиАвтоперезагрузкаКомментарий
Личный сайт, пет-проектsecurity + updatesДа, 04:00Максимум автоматики, минимум внимания
Продакшен с БДтолько securityНетРестарт вручную в окно обслуживания
Мелкие фоновые серверы (боты, кроны)security + updatesДа, 05:00Простой на минуту ночью не критичен
Тестовый / stagingsecurity + updatesДа, любое времяЗаодно ловите проблемы раньше продакшена

Третий сценарий — типичный случай для недорогих серверов под Telegram-ботов и скрипты: например, на NAT VPS от Cheap-Host за 59–349 ₽/мес unattended-upgrades с автоперезагрузкой позволяет вообще не вспоминать об администрировании неделями. Для сайтов на обычном VPS (у Cheap-Host это тариф Start: 6 vCPU, 8 ГБ RAM, 96 ГБ NVMe за 450 ₽/мес) подойдёт первый или второй профиль.

Место автообновлений в общей защите сервера

Unattended-upgrades закрывает один — но очень важный — пункт обороны: свежесть пакетов. Полный периметр включает SSH-ключи, файрвол, Fail2ban и бэкапы; всё вместе собрано в нашем чек-листе безопасности VPS из 15 пунктов. Если сервер у вас совсем новый, начните с первых 10 шагов после покупки VPS — автообновления там идут сразу после базовой настройки доступа.

FAQ

Может ли unattended-upgrades сломать сервер?

Риск минимален: по умолчанию ставятся только патчи безопасности из noble-security, которые выпускаются без смены версий ПО. Ломающие изменения приходят с мажорными обновлениями, которые автоматика не выполняет.

Обновляет ли unattended-upgrades ядро?

Да, пакеты ядра из security-ветки ставятся, но заработает новое ядро только после перезагрузки. Включите Automatic-Reboot с ночным временем или следите за /var/run/reboot-required.

Как исключить пакет из автообновлений?

Добавьте его в Unattended-Upgrade::Package-Blacklist в файле 50unattended-upgrades. Поддерживаются регулярные выражения: "linux-" исключит все пакеты ядра.

Как убедиться, что автообновления работают?

Смотрите /var/log/unattended-upgrades/unattended-upgrades.log — там фиксируется каждый запуск. Плюс проверьте, что таймеры apt-daily.timer и apt-daily-upgrade.timer активны.

Заменяет ли это ручное обновление сервера?

Нет. Автоматика закрывает только безопасность. apt full-upgrade и переход на новые релизы Ubuntu по-прежнему делаются вручную — достаточно раза в месяц.

Вывод

Пятнадцать минут на установку unattended-upgrades избавляют от главного риска заброшенных серверов — незакрытых уязвимостей. Схема простая: установить пакет, включить через dpkg-reconfigure, проверить источники в 50unattended-upgrades, решить вопрос с автоперезагрузкой и прогнать --dry-run. Дальше система сама держит себя в актуальном состоянии, а вам остаётся раз в неделю заглянуть в лог.

Если нужен сервер под сайт или приложение, которое должно просто работать, — у Cheap-Host тариф Start от 450 ₽/мес: NVMe, KVM с полным root, безлимитный трафик и выдача сервера за 45–60 секунд. Установить Ubuntu 24.04 и включить автообновления можно в первые же десять минут. Тарифы — на cheap-host.onl.

Читайте также