Compartir a través de


Error de conexión SSH a máquinas virtuales Linux de Azure debido a una configuración incorrecta de SELinux

Se aplica a: ✔️ Máquinas virtuales Linux

Nota

CentOS al que se hace referencia en este artículo es una distribución de Linux y llegará al final del ciclo de vida (EOL). Tenga en cuenta su uso y planifique en consecuencia. Para obtener más información, consulte Guía de fin de vida de CentOS.

En este artículo se proporciona una solución a un problema por el que se produce un error en la conexión de Secure Shell (SSH) a una máquina virtual de Azure debido a una configuración incorrecta de SELinux.

Fondo

El modelo de seguridad de Unix se basa en control de acceso discrecional (DAC). Security-Enhanced Linux (SELinux) implementa el control de acceso obligatorio (MAC) para Linux mediante módulos de kernel y herramientas de espacio de usuario. MAC proporciona un entorno más controlado para el acceso a los recursos y elimina la capacidad del usuario raíz de acceder a todos los recursos del sistema operativo (SO) sin restricciones. También mitiga varios tipos de riesgos de seguridad mediante el modelo de seguridad tradicional de Unix.

Las distintas distribuciones incluyen SELinux de fábrica o proporcionan una manera sencilla de activar la compatibilidad con kernel e instalar herramientas de espacio de usuario. Para obtener más información, consulte los siguientes artículos de SELinux de algunos de los principales proveedores de Linux:

Las imágenes basadas en Red Hat en Azure vienen con SELinux habilitado; otras distribuciones no. Cuando se usa SELinux en Ubuntu, hay una advertencia sobre su estado no detenido en esta distribución. Ubuntu implementa una solución diferente para MAC, denominada AppArmor.

Requisitos previos

Asegúrese de que la consola serie está habilitada y funcional en la máquina virtual Linux.

Síntomas

Una configuración incorrecta de SELinux puede provocar que el sistema operativo no pueda cargar la directiva SELinux, lo que impide que el sistema operativo complete el arranque.

Compruebe la consola serie desde Azure Portal o a través de la CLI de Azure. El mensaje siguiente aparece cerca del final de la salida:

Captura de pantalla que muestra el error

El administrador del sistema administra la configuración de SELinux. El administrador del sistema puede resolver este problema mediante uno de los métodos siguientes.

Solución 1: Inicio de la máquina virtual con SELinux desactivado mediante la consola serie

  1. Desencadene el reinicio de la máquina virtual (Hard) desde la consola serie de Azure.

  2. Interrumpa la máquina virtual en el menú GRUB con la clave ESC .

  3. Seleccione E para modificar la primera entrada del kernel en el menú GRUB.

  4. Vaya a la linux16 línea y agregue selinux=0 para deshabilitar SELinux temporalmente.

    GIF animado que muestra el proceso de interrupción del arranque en el nivel de menú GRUB para deshabilitar SELinux temporalmente.

  5. Valide y corrija la configuración de SELinux en /etc/selinux/config.

    Por ejemplo, un error común es establecer la SELINUXTYPE clave en uno de los valores usados para la SELINUX clave. Vea la captura de pantalla siguiente como ejemplo:

    Captura de pantalla que muestra que la clave SELINUXTYPE está establecida incorrectamente en deshabilitada.

    Observe la última línea, SELINUXTYPE=disabled. La SELINUXTYPE clave debe establecerse en targeted, minimumo mls en lugar de disabled. En la captura de pantalla siguiente se muestra la configuración correcta:

    Captura de pantalla que muestra la configuración correcta de /etcetera/selinux/config.

Solución 2: Reparación de errores de configuración de SELinux mediante una máquina virtual de rescate

Sugerencia

Si tiene una copia de seguridad reciente de la máquina virtual, restaure la máquina virtual desde la copia de seguridad para corregir el problema de configuración.

  1. En caso de que la consola serie de Azure no funcione en la máquina virtual específica o no sea una opción en la suscripción, solucione este problema mediante una máquina virtual de rescate o reparación. Use comandos de reparación de máquina virtual para crear una máquina virtual de reparación que tenga una copia del disco del sistema operativo de la máquina virtual afectada conectado. Monte la copia de los sistemas de archivos del sistema operativo en la máquina virtual de reparación mediante chroot.

    Nota

    Como alternativa, puede crear una máquina virtual de rescate manualmente mediante el Azure Portal. Para más información, consulte Solución de problemas de una máquina virtual Linux mediante la conexión del disco del sistema operativo a una máquina virtual de recuperación mediante el Azure Portal.

  2. Valide y corrija la configuración de SELinux en /etc/selinux/config. Para ello, siga el paso 5 de la solución 1: Iniciar máquina virtual con SELinux desactivado desde la consola serie.

  3. Una vez corregida la configuración de SELinux, realice las siguientes acciones:

    1. Salga de chroot.
    2. Desmonte la copia de los sistemas de archivos de la máquina virtual de rescate o reparación.
    3. Ejecute el az vm repair restore comando para intercambiar el disco del sistema operativo reparado con el disco del sistema operativo original de la máquina virtual. Para más información, consulte el paso 5 en Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.
    4. Valide si la máquina virtual puede arrancar; para ello, examine la consola serie de Azure o intente conectarse a la máquina virtual.

Pasos siguientes

En caso de que el problema no se deba a una configuración incorrecta de SELinux, consulte Solución de problemas de errores de arranque de Azure Linux Virtual Machines para obtener más opciones de solución de problemas.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.