Solución de Problemas de Fallos de Autenticación Su en Linux

LinuxBeginner
Practicar Ahora

Introducción

El comando "su" (substitute user) en Linux es una herramienta poderosa que permite a los usuarios cambiar temporalmente a una cuenta de usuario diferente, a menudo la del usuario root, para realizar tareas administrativas. Sin embargo, pueden ocurrir fallos de autenticación de "su", lo que lleva a denegaciones de acceso y posibles riesgos de seguridad. Este tutorial le guiará a través del proceso de solución de problemas de fallos de autenticación de "su" en Linux, cubriendo las causas comunes, la configuración y las mejores prácticas para un uso seguro de "su".

Entendiendo el Comando Su y su Uso Básico

El comando su en Linux permite a los usuarios cambiar su identidad de usuario actual a otro usuario. Esto es particularmente útil para realizar tareas administrativas que requieren privilegios elevados.

Exploremos el uso básico del comando su y entendamos cómo funciona.

Uso Básico de Su

Abra una terminal en su entorno de máquina virtual (VM) de LabEx. Puede usar el comando su con la siguiente sintaxis:

su [options] [username]

Si ejecuta su sin especificar un nombre de usuario, por defecto se usa el usuario root:

su

Se le pedirá la contraseña de root. Sin embargo, en muchas distribuciones modernas de Linux, incluyendo Ubuntu, la cuenta root está deshabilitada por defecto por razones de seguridad.

Creemos un usuario de prueba para practicar:

sudo adduser testuser

Ingrese la información requerida cuando se le solicite. Para simplificar, puede usar "password" como contraseña para este usuario de prueba.

Ahora, intentemos cambiar a este usuario:

su testuser

Cuando se le solicite, ingrese la contraseña que creó para testuser. Una vez autenticado, su prompt cambiará, indicando que ahora está operando como testuser.

Para verificar que ha cambiado de usuario con éxito, ejecute:

whoami

La salida debería mostrar:

testuser

Para volver a su usuario original, simplemente escriba:

exit

Usando Su con Opciones

El comando su admite varias opciones. La más común es la opción - (guion), que proporciona un entorno de inicio de sesión completo:

su - testuser

Esto no solo cambia la identidad del usuario, sino que también:

  • Cambia al directorio de inicio del usuario objetivo
  • Configura las variables de entorno del usuario objetivo
  • Proporciona un shell de inicio de sesión

Pruebe este comando y observe las diferencias:

pwd

La salida debería mostrar el directorio de inicio de testuser:

/home/testuser

Salga de testuser escribiendo:

exit

Esta comprensión básica del comando su nos ayudará a solucionar los fallos de autenticación en los siguientes pasos.

Fallos Comunes de Autenticación de Su y sus Causas

Al usar el comando su, podría encontrar fallos de autenticación por varias razones. Entender estos fallos es el primer paso para resolverlos.

Prueba de Fallos de Autenticación

Intentemos crear intencionalmente algunos fallos de autenticación para entenderlos mejor:

  1. Intente cambiar a testuser con una contraseña incorrecta:
su testuser

Ingrese una contraseña incorrecta. Verá un mensaje de error similar a:

su: Authentication failure
  1. Intente cambiar a un usuario que no existe:
su nonexistentuser

Verá un mensaje de error como:

su: user nonexistentuser does not exist

Causas Comunes de Fallos de Autenticación

1. Contraseña Incorrecta

La causa más común de fallo de autenticación es simplemente ingresar la contraseña incorrecta. Esto puede suceder debido a:

  • Errores tipográficos
  • Bloqueo de mayúsculas activado
  • Olvidar la contraseña

2. Restricciones de Cuenta

Algunas cuentas pueden estar configuradas para evitar el inicio de sesión o tener contraseñas caducadas:

Modifiquemos nuestro usuario de prueba para demostrar esto:

sudo passwd -l testuser

Esto bloquea la contraseña para testuser. Ahora intente:

su testuser

Verá un fallo de autenticación incluso si ingresa la contraseña correcta.

Desbloquee la cuenta con:

sudo passwd -u testuser

3. Problemas de Configuración de PAM

El sistema de Módulos de Autenticación Enchufables (PAM, por sus siglas en inglés) controla la autenticación en Linux. Los problemas con la configuración de PAM pueden causar fallos de su.

Examinemos la configuración de PAM para el comando su:

cat /etc/pam.d/su

Este archivo contiene la configuración de PAM específica para el comando su. Busque líneas que puedan restringir el acceso, como:

auth       required   pam_wheel.so

Esta línea, si está descomentada, restringiría el acceso de su a los miembros del grupo wheel.

4. Problemas de Permisos con el Binario Su

El archivo binario del comando su debe tener los permisos correctos para funcionar correctamente:

ls -l $(which su)

La salida debería mostrar algo como:

-rwsr-xr-x 1 root root 71816 Apr 18  2022 /usr/bin/su

La s en los permisos indica que el bit setuid está configurado, lo que permite que el programa se ejecute con los privilegios de su propietario (root) en lugar del usuario que lo ejecuta.

5. Examinando los Registros de Autenticación

Al solucionar problemas de fallos de autenticación, verificar los registros del sistema puede proporcionar información valiosa:

sudo tail /var/log/auth.log

Este comando muestra los eventos de autenticación recientes, incluyendo los intentos fallidos de su.

Por ejemplo, un intento fallido de su podría mostrar una entrada como:

May 10 14:23:45 ubuntu su[12345]: FAILED su for root by labex

Entender estas causas comunes de fallos de autenticación de su le ayudará a identificar y resolver problemas de manera más efectiva en los siguientes pasos.

Configuración del Control de Acceso para el Comando Su

Linux proporciona varios mecanismos para controlar quién puede usar el comando su. En este paso, exploraremos cómo configurar estos controles de acceso para mejorar la seguridad.

Entendiendo la Configuración de PAM

El sistema de Módulos de Autenticación Enchufables (PAM, por sus siglas en inglés) es responsable de la autenticación en Linux. La configuración para el comando su se almacena en el archivo /etc/pam.d/su.

Examinemos este archivo en detalle:

cat /etc/pam.d/su

El archivo contiene varias directivas que controlan cómo se realiza la autenticación. Una línea importante a buscar es:

auth       required   pam_wheel.so

Si esta línea está descomentada (no comienza con #), restringe el acceso de su a los miembros del grupo wheel.

Restringiendo el Acceso de Su a Grupos Específicos

Podemos restringir el uso de su para cambiar a root a los miembros de un grupo específico. Esta es una práctica de seguridad común.

Primero, creemos un nuevo grupo llamado sugroup:

sudo groupadd sugroup

A continuación, agregue nuestro usuario de prueba a este grupo:

sudo usermod -aG sugroup testuser

Ahora, necesitamos modificar la configuración de PAM para restringir el acceso de su a los miembros de este grupo:

sudo cp /etc/pam.d/su /etc/pam.d/su.bak

Ahora, abra el archivo de configuración de PAM en el editor nano:

sudo nano /etc/pam.d/su

Busque una línea similar a:

## auth       required   pam_wheel.so

Descomente esta línea (elimine el ## al principio) y modifíquela para usar nuestro sugroup en lugar de wheel:

auth       required   pam_wheel.so group=sugroup

Presione Ctrl+O para guardar el archivo, luego Ctrl+X para salir de nano.

Probando la Configuración

Probemos nuestra configuración intentando usar su como un usuario que no está en sugroup.

Primero, cree otro usuario de prueba:

sudo adduser testuser2

Ingrese la información requerida cuando se le solicite.

Ahora, intente cambiar al usuario root usando testuser2:

su - testuser2

Ingrese la contraseña para testuser2 cuando se le solicite.

Ahora intente cambiar al usuario root:

su -

Debería recibir un mensaje de fallo de autenticación, incluso si ingresa la contraseña root correcta. Esto se debe a que testuser2 no es miembro de sugroup.

Ahora, vuelva a su usuario original:

exit

E intente usar su con testuser, que es miembro de sugroup:

su - testuser

Ingrese la contraseña para testuser cuando se le solicite.

Ahora intente cambiar al usuario root:

su -

Si ingresa la contraseña root correcta, debería poder cambiar al usuario root con éxito.

Revertir los Cambios

Para completar el resto de este laboratorio, revirtamos nuestros cambios en la configuración de PAM:

sudo cp /etc/pam.d/su.bak /etc/pam.d/su

Esta configuración le permite controlar quién puede usar el comando su para cambiar al usuario root, mejorando la seguridad de su sistema.

Solución de Problemas y Resolución de Fallos de Autenticación de Su

Ahora que entendemos las causas comunes de los fallos de autenticación de su y cómo configurar el control de acceso, centrémonos en la solución de problemas y la resolución de estos fallos.

Diagnóstico de Fallos de Autenticación

Cuando encuentre un fallo de autenticación de su, siga estos pasos sistemáticos para diagnosticar el problema:

Paso 1: Verifique el Mensaje de Error

El mensaje de error puede proporcionar pistas valiosas sobre la naturaleza del fallo. Los mensajes de error comunes incluyen:

  • su: Authentication failure - Típicamente indica una contraseña incorrecta.
  • su: user username does not exist - La cuenta de usuario especificada no existe.
  • su: permission denied - Las restricciones de control de acceso están impidiendo la operación.

Paso 2: Verifique la Cuenta de Usuario

Asegúrese de que la cuenta de usuario de destino exista y no esté bloqueada:

grep testuser /etc/passwd

Esto debería mostrar la entrada para testuser en el archivo de contraseñas, confirmando que la cuenta existe.

Verifique si la cuenta está bloqueada:

sudo passwd -S testuser

La salida incluye el estado de la cuenta. Si dice "L" (bloqueada), la cuenta está bloqueada.

Paso 3: Verifique las Restricciones de Control de Acceso

Como aprendimos en el paso anterior, la configuración de PAM puede restringir el acceso de su. Verifique si existen tales restricciones:

grep -v "^#" /etc/pam.d/su | grep pam_wheel

Si esto devuelve una línea que contiene pam_wheel.so, el acceso a su podría estar restringido a los miembros de un grupo específico.

Paso 4: Examine los Registros del Sistema

Los registros del sistema pueden proporcionar información detallada sobre los fallos de autenticación:

sudo tail -n 20 /var/log/auth.log

Busque entradas relacionadas con fallos de su, que pueden proporcionar contexto adicional.

Resolución de Fallos Comunes de Autenticación de Su

Ahora, abordemos los fallos comunes de autenticación de su y cómo resolverlos:

1. Contraseña Incorrecta

Si está ingresando la contraseña correcta pero aún obtiene fallos de autenticación, es posible que deba restablecer la contraseña:

sudo passwd testuser

Ingrese una nueva contraseña para testuser cuando se le solicite.

2. Cuenta Bloqueada

Si la cuenta está bloqueada, desbloquéela:

sudo passwd -u testuser

3. Restricciones de Control de Acceso

Si las restricciones de control de acceso están impidiendo el acceso de su, puede:

a. Agregar el usuario al grupo requerido:

sudo usermod -aG sugroup testuser2

Esto agrega testuser2 al sugroup.

b. Deshabilitar temporalmente la restricción comentando la línea relevante en la configuración de PAM:

sudo sed -i 's/^auth\s\+required\s\+pam_wheel.so/#&/' /etc/pam.d/su

Este comando comenta la línea que contiene pam_wheel.so en la configuración de PAM de su.

4. Problemas de Permisos de Archivo

Si el binario su tiene permisos incorrectos, arréglelos:

sudo chmod u+s $(which su)

Esto asegura que el bit setuid esté configurado en el binario su.

Prueba de las Correcciones

Después de aplicar las correcciones, pruebe si la autenticación de su funciona correctamente:

su - testuser

Ingrese la contraseña para testuser cuando se le solicite. Si tiene éxito, ahora debería estar conectado como testuser.

Intente cambiar al usuario root:

su -

Si tiene la contraseña root y las restricciones de control de acceso se han abordado correctamente, debería poder cambiar al usuario root con éxito.

Estos pasos de solución de problemas y correcciones abordan los fallos de autenticación de su más comunes. Al diagnosticar y resolver sistemáticamente estos problemas, puede asegurarse de que el comando su funcione correctamente en su sistema.

Mejores Prácticas para el Uso Seguro de Su

En este paso final, exploraremos las mejores prácticas para usar el comando su de forma segura. Seguir estas prácticas ayuda a minimizar los riesgos de seguridad al tiempo que permite que las tareas administrativas se realicen de manera efectiva.

Use Sudo en Lugar de Su Cuando Sea Posible

El comando sudo generalmente se considera más seguro que su porque:

  • Permite un control más granular sobre los permisos
  • Registra los comandos ejecutados con privilegios elevados
  • No requiere compartir la contraseña de root

Ejemplo de uso de sudo en lugar de su:

## En lugar de:
su -
## Luego ingresar comandos como root

## Use:
sudo command

Pruebe este ejemplo:

sudo ls /root

Esto ejecuta el comando ls con privilegios de root sin cambiar al usuario root.

Configure el Acceso Sudo Correctamente

Asegúrese de que sudo esté configurado correctamente para otorgar solo los privilegios necesarios:

sudo visudo

Esto abre el archivo sudoers en un editor seguro. El archivo debe contener entradas similares a:

## User privilege specification
root    ALL=(ALL:ALL) ALL

## Members of the sudo group may gain root privileges
%sudo   ALL=(ALL:ALL) ALL

Presione Ctrl+X para salir sin hacer cambios.

Limite el Inicio de Sesión Directo como Root

Desaliente el inicio de sesión directo como root, especialmente a través de SSH. En su lugar, los usuarios deben iniciar sesión con sus cuentas regulares y usar su o sudo cuando sea necesario.

Verifique si el inicio de sesión directo como root a través de SSH está deshabilitado:

grep "PermitRootLogin" /etc/ssh/sshd_config

Si esto devuelve PermitRootLogin no, el inicio de sesión directo como root está correctamente deshabilitado.

Implemente Políticas de Contraseña Robustas

Asegúrese de que la contraseña de root y las contraseñas de los usuarios con acceso su sean seguras:

sudo apt-get install -y libpam-pwquality

Esto instala un módulo PAM para la verificación de la calidad de la contraseña.

Configure las políticas de contraseña editando la configuración de PAM:

sudo nano /etc/pam.d/common-password

Busque una línea que contenga pam_pwquality.so y asegúrese de que tenga los parámetros apropiados como:

password requisite pam_pwquality.so retry=3 minlen=12 difok=3

Presione Ctrl+X para salir sin hacer cambios, ya que solo estamos examinando la configuración.

Audite Regularmente el Uso de Su

Revise los registros para monitorear el uso de su:

sudo grep "su:" /var/log/auth.log | tail -n 10

Esto muestra los intentos recientes de su, tanto exitosos como fallidos.

Considere configurar alertas automatizadas para múltiples intentos fallidos de su, lo que podría indicar un ataque.

Use Su con la Opción de Guion

Cuando use su para cambiar a otro usuario, especialmente root, use la opción de guion (-) para obtener un entorno limpio:

su - username

Esto proporciona un shell de inicio de sesión con las variables de entorno del usuario de destino, lo cual es más seguro y previene posibles problemas causados por heredar el entorno del usuario original.

Sesión Práctica - Uso Seguro de Su

Practiquemos estas mejores prácticas:

  1. En lugar de usar su - para convertirte en root y luego ejecutar un comando, usa sudo:
## En lugar de:
## su -
## cat /etc/shadow

## Use:
sudo cat /etc/shadow
  1. Cambie a testuser con un entorno limpio:
su - testuser
  1. Salga y regrese a su usuario original:
exit
  1. Verifique el registro de autenticación para el uso de su:
sudo grep "su:" /var/log/auth.log | tail -n 5

Siguiendo estas mejores prácticas, puede usar el comando su de forma segura al tiempo que minimiza los posibles riesgos de seguridad para su sistema.

Resumen

En este laboratorio, exploramos el comando su en Linux y aprendimos a solucionar los fallos de autenticación comunes. Cubrimos:

  1. Comprender el uso básico del comando su y cómo funciona
  2. Identificar las causas comunes de los fallos de autenticación de su, incluyendo contraseñas incorrectas, restricciones de cuenta y problemas de configuración de PAM
  3. Configurar el control de acceso para el comando su para mejorar la seguridad
  4. Solucionar problemas y resolver los fallos de autenticación de su a través de un diagnóstico sistemático
  5. Implementar las mejores prácticas para el uso seguro de su, incluyendo el uso de sudo cuando sea posible, la configuración de políticas de contraseñas robustas y la auditoría regular del uso de su

Al aplicar estas técnicas y mejores prácticas, puede asegurarse de que el comando su funcione correctamente mientras mantiene la seguridad de su sistema Linux. Recuerde que la gestión adecuada de la autenticación es un aspecto crucial de la administración y seguridad del sistema.