Автоматическое обновление выкинуло меня с сервера, удалив конфигурацию SSH?

Вопрос или проблема

Я использую сервер Ubuntu 24.04 с SSH, настроенным на работу на другом порту, нежели 22 (классическая мера безопасности). Несколько дней назад я был очень удивлен, когда не смог подключиться к своему серверу по ssh. Сервер отвечал на пинг, веб-сервис был доступен, все работало, но когда я пытался подключиться по ssh, я получал connection refused. Думая, что, возможно, fail2ban был слишком агрессивен (хотя не было причин, по которым он мог бы меня заблокировать), я попробовал подключиться с другого компьютера, с другого IP и другой SSH-ключ, получил тот же результат.

Я запустил nmap, чтобы просканировать его, и увидел, что SSH-сервер больше не работал на моем пользовательском порту, а вернулся на порт 22! Поэтому я попробовал подключиться по ssh на этот порт и получил знаменитое сообщение:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Возможно, кто-то творит что-то нехорошее!
Кто-то может подслушивать вас прямо сейчас (атака "человек посередине")!
Также возможно, что ключ хоста просто был изменен.

Таким образом, не только порт SSH изменился, но и ключ моего сервера тоже!

Я проигнорировал это предупреждение и смог подключиться к серверу. Первое обнадеживающее: Последний вход: Воскресенье, 16 февраля 2025, 19:52:12 с адреса X.X.X.X, что соответствует времени, когда я в последний раз входил, так что, по крайней мере, кажется, что никто не смог получить доступ к моему серверу.

Я посмотрел лог apt и быстро нашел следующее:

Start-Date: 2025-02-20  06:32:25
Commandline: /usr/bin/unattended-upgrade
Upgrade: openssh-client:amd64 (1:9.6p1-3ubuntu13.5, 1:9.6p1-3ubuntu13.8), openssh-server:amd64 (1:9.6p1-3ubuntu13.5, 1:9.6p1-3ubuntu13.8), openssh-sftp-server:amd64 (1:9.6p1-3ubuntu13.5, 1:9.6p1-3ubuntu13.8)
End-Date: 2025-02-20  06:32:29

что в основном соответствует времени, когда сервер стал недоступен для подключения.

Если я правильно понимаю, unattended-upgrade обновил SSH, заменив мою пользовательскую конфигурацию на стандартную, и даже пересоздал ключи SSH?! Как это возможно? unattended-upgrade установлен по умолчанию в Ubuntu, я не устанавливал его сам и не изменял его стандартную конфигурацию. Я поддерживаю серверы Ubuntu онлайн много лет и никогда не сталкивался с такой проблемой. Единственное, что я сделал дополнительно на своем сервере по сравнению с чистым Ubuntu, это активировал pro с ESM, но я сделал это также и на своих других серверах и проблем с доступом к ним нет.

Что произошло и особенно, почему изменился ключ моего сервера?

Ответ или решение

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

Теория

Начнем с общей теории процесса автоматического обновления в системах на базе Ubuntu. Утилита unattended-upgrade предназначена для автоматического обновления пакетов безопасности и важнейших системных компонентов. Основная цель этой утилиты — поддержание системы в актуальном и безопасном состоянии без ручного вмешательства администратора. Само по себе обновление пакетов, таких как openssh-server, не должно заменять существующие файлы конфигурации без вашего разрешения.

Однако в реальных условиях возможны различные осложнения:

  1. Регрессии в обновлениях: Новая версия пакета может содержать изменения, которые не были тщательно протестированы. Это может привести к неожиданным результатам после установки.

  2. Конфликт конфигураций: Ваша пользовательская конфигурация SSH может быть переписана, если новая версия пакета вносит изменения в стандартный файл конфигурации и не может корректно объединить новые настройки с вашими существующими.

  3. Поведение утилиты unattended-upgrade: Хотя по умолчанию она не переписывает файлы конфигурации, определенные особые условия или ошибки в скриптах post-installation могут привести к очистке или перезаписи ключевых файлов.

  4. Проблемы с интеграцией Ubuntu Pro и ESM: Включение этих дополнительных компонентов может внести дополнительные слои в систему обновлений, что может быть источником неожиданных поведения, особенно если они находятся на этапе тестирования или внедрения новых функций.

Пример

Ваш конкретный случай представляет собой сочетание описанных выше факторов. Как мы видим из логов apt, unattended-upgrade обновил пакеты, связанные с OpenSSH. Параллельно с этим наблюдается изменение порта и перегенерация ключей SSH, что указывает на тот факт, что конфигурационные файлы были перезаписаны или удалены.

После установки новой версии openssh-server система могла автоматически перегенерировать ключи SSH Host, если оригинальные были удалены или если новый скрипт установки потребовал их обновления в случае отсутствия определенных признаков их нынешней версии. Это объясняет предупреждение о смене ключа, когда вы попытались подключиться по порту 22.

Применение

Теперь мы перейдём к тому, как такие ситуации можно предвидеть и предотвращать:

  1. Создание резервных копий конфигурации: Регулярно обеспечивайте резервное копирование важнейших файлов конфигурации, таких как /etc/ssh/sshd_config и /etc/ssh/ssh_host_* до любого предполагаемого обновления.

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

  3. Мониторинг логов и тестирование обновлений: Настройте систему уведомлений на обновления и регулярный мониторинг логов /var/log/unattended-upgrades. Перед проведением автоматических обновлений на рабочих серверах, протестируйте их на тестовых системах.

  4. Использование конфигураций для защиты от изменений: С помощью утилит, таких как auditd, вы можете отслеживать изменения критически важных файлов и получать уведомления о любых несанкционированных изменениях, что позволит быстро реагировать в случае возникновения проблем.

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

Оцените материал
Добавить комментарий

Капча загружается...