Сбой подключения по протоколу SSH к виртуальным машинам Linux Azure из-за неправильной настройки SELinux

Область применения: ✔️ виртуальные машины Linux

Примечание.

CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

В этой статье описано решение проблемы, из-за которой подключение Secure Shell (SSH) к виртуальной машине Azure завершается сбоем из-за неправильной настройки SELinux.

Общие сведения

Модель безопасности Unix основана на дискреционных контроль доступа (DAC). Расширенная безопасность Linux (SELinux) реализует обязательные контроль доступа (MAC) для Linux с помощью модулей ядра и средств пользовательского пространства. MAC предоставляет более контролируемую среду для доступа к ресурсам и удаляет возможность корневого пользователя получать доступ ко всем ресурсам операционной системы (ОС) без ограничений. Он также устраняет несколько видов рисков безопасности, используя традиционную модель безопасности Unix.

Различные дистрибутивы включают SELinux из коробки или простой способ активации поддержки ядра и установки средств пользовательского пространства. Дополнительные сведения см. в следующих статьях SELinux из некоторых основных поставщиков Linux:

Образы на основе Red Hat в Azure включены с поддержкой SELinux; другие дистрибутивы не делают. При использовании SELinux в Ubuntu есть предупреждение о его неуправляемом состоянии в этом дистрибутиве. Ubuntu реализует другое решение для MAC с именем AppArmor.

Необходимые компоненты

Убедитесь, что последовательная консоль включена и работает на виртуальной машине Linux.

Симптомы

Неправильное настройку SELinux может привести к тому, что ОС не удается загрузить политику SELinux, которая останавливает загрузку ОС.

Проверьте последовательную консоль из портал Azure или с помощью Azure CLI. Следующее сообщение отображается в конце выходных данных:

Снимок экрана: ошибка

Конфигурация SELinux управляется системным администратором. Системный администратор может устранить эту проблему с помощью одного из следующих методов.

Решение 1. Запуск виртуальной машины с SELinux отключен с помощью последовательной консоли

  1. Активируйте виртуальную машину перезапуска (жестко) из последовательной консоли Azure.

  2. Прервать виртуальную машину в меню GRUB с помощью клавиши ESC .

  3. Выберите E , чтобы изменить первую запись ядра в меню GRUB.

  4. Перейдите к строке linux16 и добавьте selinux=0 , чтобы временно отключить SELinux.

    Анимированный GIF-файл, показывающий процесс прерывания загрузки на уровне меню GRUB, чтобы временно отключить SELinux.

  5. Проверьте и исправьте конфигурацию SELinux в /etc/selinux/config.

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

    Снимок экрана: ключ SELINUXTYPE неправильно установлен для отключения.

    Обратите внимание на последнюю строку SELINUXTYPE=disabled. SELINUXTYPE Ключ должен иметь значение targeted, minimumили mls вместо disabledэтого. На следующем снимка экрана показана правильная конфигурация:

    Снимок экрана: правильная конфигурация /etc/selinux/config.

Решение 2. Восстановление неправильной настройки SELinux с помощью виртуальной машины спасения

Совет

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

  1. Если последовательная консоль Azure не работает на конкретной виртуальной машине или не является вариантом в вашей подписке, устраните эту проблему с помощью виртуальной машины спасения и восстановления. Используйте команды восстановления виртуальной машины для создания виртуальной машины с копией подключенного диска операционной системы затронутой виртуальной машины. Подключите копию файловых систем ОС на виртуальной машине восстановления с помощью chroot.

    Примечание.

    Кроме того, можно создать виртуальную машину спасения вручную с помощью портал Azure. Дополнительные сведения см. в статье "Устранение неполадок виртуальной машины Linux путем подключения диска ОС к виртуальной машине восстановления с помощью портал Azure".

  2. Проверьте и исправьте конфигурацию SELinux в /etc/selinux/config. Для этого выполните шаг 5 в решении 1. Запуск виртуальной машины с SELinux отключен из последовательной консоли.

  3. После исправления конфигурации SELinux выполните следующие действия:

    1. Выход из chroot.
    2. Отключите копию файловых систем из виртуальной машины спасения и восстановления.
    3. az vm repair restore Выполните команду, чтобы переключить восстановленный диск ОС на исходный диск ОС виртуальной машины. Дополнительные сведения см. в разделе "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure.
    4. Проверьте, может ли виртуальная машина загрузиться, взглянув на последовательную консоль Azure или попытаясь подключиться к виртуальной машине.

Следующие шаги

Если проблема не связана с неправильной настройкой SELinux, см. статью "Устранение неполадок с Виртуальные машины загрузкой Azure Linux" для дальнейшего устранения неполадок.

Свяжитесь с нами для получения помощи

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