Как настроить автоматическое обновление серверных пакетов на Ubuntu

Как настроить автоматическое обновление серверных пакетов на Ubuntu

Показали, как настроить автоматическое обновление системных пакетов на сервере Ubuntu — от установки нужных компонентов до проверки работы. Описали способы, позволяющие системе самостоятельно устанавливать важные обновления без участия администратора. Это особенно важно для VPS, где нет полноценного системного администратора и всё приходится делать самостоятельно.

Зачем вообще обновлять сервер

Сервер работает, сайт грузится, письма идут — всё вроде хорошо. Но через пару месяцев — сообщения об уязвимостях, ошибки, сбои. Почему?

Потому что сервер — особенно VPS, доступный по SSH из любой точки мира — живёт в мире постоянных атак, багов и дыр. Без регулярных обновлений утекут данные, упадут сервисы или к серверу подключатся майнеры.

Обновления закрывают известные уязвимости, устраняют критические ошибки, повышают совместимость и стабильность работы. Это особенно актуально для VPS с ограниченными ресурсами: любое внедрение вредоносного кода или сбой из-за старых пакетов может привести к перегрузке, недоступности сайта и дополнительным расходам. Поэтому автообновление — базовая мера безопасности, которая должна быть включена сразу после запуска сервера.

Обновлять нужно вручную:

  • зайти как суперпользователь,
  • проверить обновления,
  • установить,
  • перезагрузить.
Ubuntu лого

Если забыли, уехали, не умеете — сервер останется без защиты.

Чтобы не заниматься этим вручную, и нужна unattended-upgrades — утилита, которая сама ищет, сравнивает и устанавливает обновления без вашего участия. Она особенно полезна на VPS, где всё держится на одном-единственном человеке — вас. Не всегда есть возможность отслеживать выход новых патчей, заходить на сервер и вручную ставить всё нужное.

Unattended-upgrades — это системная программа Ubuntu, которая автоматически устанавливает безопасные обновления. Особое внимание уделяется устранению уязвимостей, влияющих на безопасность и стабильность сервера.

Каждая часть системы — это отдельный пакет. Он может содержать код, модули ядра, зависимости, службы и утилиты. Обновление пакетов позволяет закрывать дыры, исправлять ошибки, улучшать производительность и совместимость с другими компонентами.

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

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Подключение к серверу

Если вы впервые открыли Ubuntu-сервер, скорее всего, у вас есть письмо от хостинга или VPS-провайдера с названием «Доступ к серверу». Там должны быть три вещи:

  • IP-адрес — цифровой адрес вашего сервера, например: 123.45.67.89;
  • логин — чаще всего это root (администратор);
  • пароль — длинная строчка из букв и цифр.

Вам понадобится программа для подключения ― PuTTY или терминал.

Для Windows: скачайте бесплатную программу PuTTY.

Для macOS или Linux: просто откройте приложение «Терминал». В командной строке (в терминале) вводим:

ssh root@123.45.67.89

Замените адрес на свой, а root ― на имя пользователя, под которым подключаетесь.

Вас попросят ввести пароль — копируйте его и вставьте (в терминале символы не отображаются — это нормально).

Если вы вошли, значит смотрите на внутренности сервера. 

Настройка автообновлений

Перейдём непосредственно к настройке обновлений.

Установка пакета unattended-upgrades

В Ubuntu он чаще всего уже установлен. На всякий случай выполним:

apt update && apt install unattended-upgrades -y

Если пакет уже есть — система просто ничего не переустановит. Если его не было — он добавится, без лишних вопросов (-y).

Включаем автообновления

Запускаем встроенный конфигуратор:

dpkg-reconfigure --priority=low unattended-upgrades

Появится синий экран с вопросом:

«Automatically download and install stable updates?»

Нужно выбрать Yes. Это включает автообновление только важных пакетов безопасности.

Важно

Если пропустить этот шаг, программа установится, но ничего делать не будет.

Настройка — что обновляется, а что нет

Открываем основной файл:

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

Ищем раздел:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    // "${distro_id}:${distro_codename}-updates";
    // "${distro_id}:${distro_codename}-proposed";
    // "${distro_id}:${distro_codename}-backports";
};

Что означают строки:

  • -security — обязательно оставить, именно это закрывает уязвимости;
  • -updates — можно включить, если хотите получать обычные исправления;
  • -proposed, -backports — не включайте, они могут содержать нестабильные пакеты.

Чтобы включить updates, просто уберите //:

   "${distro_id}:${distro_codename}-updates"

Если после настройки ничего не обновляется, проверьте правильно ли указаны названия дистрибутива (buster, focal, jammy и т.д.).

Убедитесь, что в:

/etc/apt/sources.list

есть соответствующие репозитории (-security, -updates).

Запустите отладку:

unattended-upgrades --dry-run --debug

Если увидите «No packages found that can be upgraded» — всё работает, просто  система и так уже обновлена.

Нужно ли перезагружать сервер после обновлений

По умолчанию — нет.

В файле 50unattended-upgrades найдите:

Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "02:00"

Хотите, чтобы сервер сам перезагружался, если обновилось ядро или glibc? Тогда замените false на true.

Осторожно: если на сервере крутится сайт или база данных, перезагрузка без уведомления может всё остановить. Лучше оставить false и следить вручную.

Расписание обновлений

Открываем второй файл:

nano /etc/apt/apt.conf.d/20auto-upgrades

В нём задаётся когда и что делать:

  • APT::Periodic::Update-Package-Lists "1" ― обновлять список пакетов каждый день;
  • APT::Periodic::Download-Upgradeable-Packages "1" ― загружать доступные пакеты;
  • APT::Periodic::AutocleanInterval "7" ― удалять старые пакеты раз в неделю;
  • APT::Periodic::Unattended-Upgrade "1" ― запускать обновление каждый день.
  • Значение "1" — это каждый день, "7" — раз в неделю. Если хотите реже — укажите "2", "3" и т.д.

Проверка логов и отладка

Журналы записываются в:

/var/log/unattended-upgrades/

Показать текущий:

less /var/log/unattended-upgrades/unattended-upgrades.log

Полезно проверить, были ли ошибки или обновления.

Отладка:

unattended-upgrades --dry-run --debug

Если увидите:

pkgs that look like they should be upgraded:
...
Packages that will be upgraded:
...

Значит, всё работает. Если пусто — ничего не обновлялось.

Уведомления на почту

По умолчанию уведомления не приходят. Чтобы получать отчёты открываем 50unattended-upgrades.

Находим:

//Unattended-Upgrade::Mail "root"

Меняем на:

Unattended-Upgrade::Mail "you@example.com"

Теперь отчёты будут отправляться на указанный почтовый адрес.

Важно, чтобы на сервере был настроен почтовый агент (например msmtp, sendmail, postfix). О настройке msmtp — в следующем разделе.

Настройка отправки писем через msmtp (для уведомлений)

Чтобы сервер мог отправлять письма (например, уведомления об обновлениях), нужен почтовый клиент. Один из самых простых — msmtp.

Он не получает письма, не требует сложной настройки и просто переадресует отправку через внешний SMTP-сервер, например от Mail.ru, Gmail, Yandex.

Устанавливаем msmtp и утилиту mail

В терминале вводим:

apt update && apt install msmtp msmtp-mta bsd-mailx -y

Что мы ставим:

  • msmtp — сам почтовый клиент;
  • msmtp-mta — делает его совместимым с программами, которые используют системную почту (mail, cron, unattended-upgrades);
  • bsd-mailx — утилита mail, чтобы можно было тестировать отправку из терминала.

Настройка msmtp

Создаём файл конфигурации:

nano /etc/msmtprc

Пример для Mail.ru:

defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        /var/log/msmtp.log

account        default
host           smtp.mail.ru
port           587
from           yourlogin@mail.ru
user           yourlogin@mail.ru
password       ВАШ_ПАРОЛЬ

Пояснения:

  • host и port — сервер и порт вашего почтового провайдера;
  • from — адрес отправителя;
  • user и password — данные от почты (можно использовать пароль приложения, если провайдер требует);
  • logfile — журнал отправки писем, пригодится для отладки.

Важно

Убедитесь, что у почтового сервиса разрешена SMTP-отправка.

Безопасность

Не храним пароль в открытом виде. 

Файл /etc/msmtprc должен быть доступен только для чтения пользователем root:

chmod 600 /etc/msmtprc
chown root:root /etc/msmtprc

Если этого не сделать, пароль от почты может прочитать любой пользователь сервера.

Проверка отправки

Попробуйте отправить письмо:

echo "Проверка почты" | mail -s "Тест" you@example.com

Если всё настроено верно — письмо дойдёт.

Если нет — проверьте журнал:

less /var/log/msmtp.log

Возможные ошибки и что делать

Ошибка TLS. Убедитесь, что tls_trust_file указан правильно и файл существует. В Ubuntu/Debian это обычно:

/etc/ssl/certs/ca-certificates.crt

Ошибка аутентификации. Проверьте user, password. Некоторые сервисы требуют специальный пароль приложения, особенно Gmail и Яндекс.

Ошибка соединения. Проверьте, открыт ли порт 587 в файрволе и не блокирует ли сервер исходящие соединения (это бывает у некоторых VPS-провайдеров).

Уведомления от unattended-upgrades

Если вы указали адрес в:

Unattended-Upgrade::Mail "you@example.com";

то после обновлений вы будете получать письма с результатами (что обновилось, были ли ошибки и т.д.).

Альтернатива: без отправки почты

Если не хотите настраивать SMTP, можно просто проверять логи вручную:

less /var/log/unattended-upgrades/unattended-upgrades.log

или включить Telegram-бота, систему мониторинга и т.д. Но для простого сервера msmtp + mail — самый лёгкий и надёжный способ.

Как убедиться, что всё работает

Мини-чеклист:

  • установлен unattended-upgrades;
  • включён через dpkg-reconfigure;
  • настроены репозитории в 50unattended-upgrades
  • установлено расписание в 20auto-upgrades
  • обновления приходят (проверено --dry-run --debug); 
  • почта отправляется (msmtp настроен, mail работает).

Если всё это сделано — сервер будет обновляться сам, без ошибок и с уведомлениями.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях