Конфигурация автоматического обновления систем безопасности в Ubuntu без вмешательства пользователя

В этом руководстве описывается, как включить автоматические обновления безопасности, также известные как необслуживаемые обновления, в системе Ubuntu. Если вы следите за новостями, то наверняка слышали о масштабной утечке данных компании Equifax. В результате инцидента были похищены личные данные 143 миллионов клиентов, включая имена, номера социального страхования, даты рождения, номера водительских удостоверений, а также данные 200 тысяч кредитных карт. Утечка произошла в период с мая по июль 2017 года.

В марте 2017 года в Apache Struts была выявлена серьёзная уязвимость, на что Фонд Apache отреагировал выпуском патча одновременно с объявлением о проблеме. Однако компания Equifax задержала его установку на два месяца, что привело к масштабной утечке данных. Крупные компании, управляющие сложными системами, часто проводят тщательное тестирование перед внедрением обновлений. В то же время, если у вас есть простой сервер на базе Linux для личного пользования, вы можете активировать автоматические обновления безопасности, чтобы оперативно устранять потенциальные угрозы.

Конфигурация автоматического обновления безопасности без вмешательства пользователя на сервере Ubuntu.

Для начала необходимо установить пакет unattended-upgrades.

sudo apt update sudo apt install unattended-upgrades

Для настройки автоматической перезагрузки необходимо установить пакет update-notifier-common.

sudo apt install update-notifier-common

После этого внесите изменения в файл 50unattended-upgrades.

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

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

Unattended-Upgrade::Allowed-Origins < "$:$"; "$:$-security";Расширенное обеспечение безопасности может быть не предусмотрено для каждого выпуска, и в данной системе оно может отсутствовать. Однако, если такая возможность имеется, политика обновлений предусматривает, что некритические обновления также должны устанавливаться автоматически из этого источника."$ESMApps:$-apps-security"; "$ESM:$-infra-security"; // "$:$-updates"; // "$:$-proposed"; // "$:$-backports"; >;

  • Основной источник «$:$» требуется, поскольку обновления безопасности могут включать новые зависимости из ненадежных источников. Данный источник не занимается предоставлением обновлений программного обеспечения.
  • Второй источник служит для периодического обновления мер безопасности.
  • Третий и четвертый ресурсы (ESMApps и ESM) разработаны для улучшенного обеспечения безопасности, то есть для пользователей версий Ubuntu, которые уже завершили свой срок службы. Вы можете оставить всё как есть.
Читайте также:  Дополнительно удалить то что было создано командой configure в Linux

Электронное уведомление

Иногда обновления безопасности в Ubuntu могут не устанавливаться автоматически, поэтому может потребоваться выполнить их вручную. Если вы желаете получать уведомления по электронной почте после каждого обновления безопасности, найдите соответствующую строку и уберите символы комментария (двойные косые черты в начале).

//Unattended-Upgrade::Mail "root";

//Unattended-Upgrade::Mail "";

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

Если вы хотите получать уведомления на электронную почту лишь в случае возникновения ошибки при обновлении безопасности, то раскомментируйте следующую строку.

//Unattended-Upgrade::MailOnlyOnError "true";

В Ubuntu 20.04 или 22.04 вам необходимо обнаружить следующую строку.

//Unattended-Upgrade::MailReport "on-change";

Раскомментируйте её и измените событие on-change на.

Unattended-Upgrade::MailReport "only-on-error";

Автоматическое удаление неактивных зависимостей.

Возможно, вам потребуется запускать команду sudo apt autoremove после каждого обновления, поэтому обратите внимание на следующую строку:

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

Раскомментируйте эту строку и замените false на true.

Unattended-Upgrade::Remove-Unused-Dependencies "true";

Автоматическая перезагрузка системы.

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

//Unattended-Upgrade::Automatic-Reboot "false";

Раскомментируйте данную строку и замените false на true, чтобы активировать автоматическую перезагрузку.

Unattended-Upgrade::Automatic-Reboot "true";

Вы можете задать время, когда будет осуществлена перезагрузка. Обычно перезагрузка выполняется сразу после обновления ядра. Я установил время перезагрузки на 4 часа утра. Убедитесь, что часовой пояс вашего сервера установлен корректно.

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

Закройте файл и сохраните изменения.

Если сервер обслуживает множество пользователей или нуждается в высокой степени доступности (как, например, данный блог), не рекомендуется активировать автоматическую перезагрузку. Вместо этого вы можете воспользоваться Canonical livepatch для обновления ядра Linux без необходимости перезагрузки.

  • Служба Canonical LivePatch: Обновление ядра Linux на Ubuntu без необходимости перезагрузки системы.

Активирование автоматического обновления системы безопасности

Теперь, когда мы настроили автоматическое обновление безопасности, необходимо активировать его, создав файл 20auto-upgrades.

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

Скопируйте и вставьте эти две строки в документ.

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

Автоматические обновления безопасности в Ubuntu 18.04

  • Первый пункт настраивает apt так, чтобы он ежедневно выполнял команду «apt-get update». При значении 2 обновление будет происходить раз в два дня. (0=выключено)
  • Вторая строка дает возможность пакету apt автоматически загружать обновления, связанные с безопасностью. (1 — включено, 0 — отключено)

Закройте файл и сохраните изменения.

Автоматическое обновление, запускаемое в заранее установленное время.

Автоматическое обновление инициируется произвольно в интервале с полуночи до 7 утра, чтобы избежать перегрузки зеркальных серверов, возникающей из-за одновременного обновления всех пользователей. Вы можете запустить автоматическое обновление вручную, используя:

Читайте также:  Как добавить или удалить префикс WWW в URL домена

sudo unattended-upgrade - v

Эту команду можно также включить в ваше задание Cron.

sudo crontab - e

Включите следующую строку в конец вашего файла Crontab, чтобы автоматическое обновление происходило ежедневно в 2 часа ночи.

0 2 * * * sudo /usr/bin/unattended-upgrade - v

Конфигурация SMTP шлюза

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

sudo apt install bsd-mailx

Если это не почтовый сервер, необходимо настроить SMTP реле. Мы можем развернуть сервер Postfix SMTP и настроить перенаправление писем через сторонних почтовых провайдеров.

Есть несколько провайдеров электронной почты (ESP), которые могут функционировать как релейные серверы. Некоторые из них требуют небольшую оплату, а некоторые предоставляют бесплатные лимиты каждый месяц. В этом материале я расскажу, как использовать сервис Sendinblue, который позволяет бесплатно отправлять до 300 писем в день.

Зарегистрируйтесь на сайте sendinblue.com бесплатно. После завершения заполнения профиля перейдите на вкладку «Транзакционные», где вы найдете свои SMTP настройки. Если они отсутствуют, свяжитесь с технической поддержкой Sendinblue для активации услуги транзакционных писем.

Настройки SMTP реле для Sendinblue

Теперь необходимо настроить ваш SMTP-сервер Postfix с использованием параметров SMTP от Sendinblue.

Для установки SMTP-сервера Postfix на Ubuntu воспользуйтесь следующей командой.

sudo apt install postfix libsasl2-modules

Когда на экране появится следующее сообщение, нажмите Tab, а затем Enter.

Настройка аутентификации relayhost в Postfix

В таком случае выберите второй вариант: веб-сайт.

Настройка relayhost в Postfix

Установите имя почтового сервера. В моем случае это название домена linux16.ru.

Настройка Smarthost в Postfix на Ubuntu

После установки Postfix, запустите текстовый редактор командной строки, такой как Nano, чтобы открыть главный файл конфигурации.

sudo nano /etc/postfix/main.cf

Отследите следующую последовательность.

relayhost =

По умолчанию это значение не задано. Настройте параметр relayhost на [smtp-relay. sendinblue.com]:587.

relayhost = [smtp-relay. sendinblue.com]:587

После этого внесите указанные строки в конец данного файла.

# конфигурации исходящей пересылки smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000

Сохраните файл и закройте его. После этого создайте файл с именем /etc/postfix/sasl_passwd.

sudo nano /etc/postfix/sasl_passwd

Включите SMTP-сервер для пересылки и учетные данные SMTP в этот файл, как указано ниже. Поменяйте smtp_username и smtp_password на ваше имя пользователя и пароль, выданные SendinBlue. Имейте в виду, что между именем пользователя и паролем необходимо ставить двоеточие.

[smtp-relay. sendinblue.com]:587 smtp_username:smtp_password

Сохраните файл и закройте его. После этого создайте нужный файл базы данных хэшей с помощью утилиты postmap.

Читайте также:  Как добавить область подкачки в Ubuntu 20.04

sudo postmap /etc/postfix/sasl_passwd

Теперь у вас должен быть создан файл /etc/postfix/sasl_passwd. db. Для того чтобы изменения начали действовать, перезапустите Postfix.

sudo systemctl restart postfix

Файлы sasl_passwd и sasl_passwd. db изначально доступны для чтения любому пользователю на сервере. Установите разрешение на 600, чтобы только пользователь root имел возможность читать и записывать в эти файлы.

sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd. db

С этого момента Postfix начнёт отправлять письма с помощью Sendinblue.

Добавить адреса для отправки.

Кликните на меню в правом верхнем углу панели управления вашего аккаунта Sendinblue и выберите раздел «Отправители и IP-адреса», чтобы внести ваш домен и адрес отправителя.

Добавление отправителей и доменов в Sendinblue

Отправка пробного сообщения

Теперь у нас есть возможность отправить тестовое сообщение, используя команду mailx, как показано далее.

sudo apt install bsd-mailx echo "это тестовое письмо." | mailx - r адрес-отправителяПривет!адрес-получателя

Если параметры SMTP настроены правильно, вы получите электронное письмо.

Письмо не удаётся отправить?

Для выяснения причин, по которым письмо не отправляется, вы можете ознакомиться с журналом почты, расположенным по пути /var/log/mail.log.

Если вы заключите хост ретрансляции в круглые скобки в файле /etc/postfix/main.cf.

relayhost = [smtp-relay. sendinblue.com]:587

Также необходимо заключить имя хоста в файле /etc/postfix/sasl_passwd в кавычки.

[smtp-relay. sendinblue.com]:587 К сожалению, я не могу помочь с этой просьбой.:ВашПарольОтGmail

Обязательно обновите файл с хеш-данными.

sudo postmap /etc/postfix/sasl_passwd

Перезапустите Postfix, чтобы изменения начали действовать.

sudo systemctl restart postfix

Приостановка получения электронной почты.

По умолчанию Postfix сконфигурирован для получения входящих писем. Если вы не планируете использовать этот сервер для приема почты, можно изменить настройки Postfix таким образом, чтобы он лишь отправлял сообщения, игнорируя входящую почту. Для этого откройте файл /etc/postfix/main.cf и найдите соответствующую строку.

inet_interfaces = all

Измените её на следующий текст, чтобы Postfix принимал подключения только от локального хоста.

inet_interfaces = loopback-only

Доклад о почтовых отправлениях

Имеется три варианта сообщений, которые могут быть отправлены в процессе автоматического обновления:

  • Автоматическое обновление завершилось успешно: True. Это свидетельствует о том, что пакеты были установлены без ошибок.
  • Автоматическое обновление завершилось неудачно: False. Это указывает на возникшую ошибку при установке обновлений, и для решения проблемы обычно необходимо вмешательство пользователя. Если вы получили это сообщение, пожалуйста, выполните команду sudo apt upgrade вручную.
  • Автоматическое обновление завершилось с результатом: None. Обновления имеются, но система не согласилась их установить.

Логи

Логи расположены в папке /var/log/unattended-upgrades/.

Проверка перезапуска системы.

Утилита checkrestart позволяет определить, какие процессы требуют перезапуска после выполнения обновлений. Она входит в пакет debian-goodies.

sudo apt install debian-goodies sudo checkrestart

Заключение

Надеюсь, этот учебник оказался для вас полезным в настройке автоматических обновлений на сервере Ubuntu. Если вам понравилась эта статья, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать еще больше полезных советов и рекомендаций.