Cómo bloquear cuentas de usuario después de intentos fallidos de inicio de sesión


Esta guía mostrará cómo bloquear la cuenta de un usuario del sistema después de un número específico de intentos fallidos de inicio de sesión en las distribuciones de CentOS, RHEL y Fedora. Aquí, el objetivo es hacer cumplir la seguridad del servidor simple bloqueando la cuenta de un usuario después de un número consecutivo de autenticaciones fallidas.

Esto se puede lograr usando el módulo pam_faillock que ayuda a bloquear temporalmente las cuentas de usuario en caso de múltiples intentos fallidos de autenticación y mantiene un registro de este evento. Los intentos fallidos de inicio de sesión se almacenan en archivos por usuario en el directorio tally que es /var/run/faillock/ por defecto.

pam_faillock es parte de Linux PAM (Módulos de autenticación conectables), un mecanismo dinámico para implementar servicios de autenticación en aplicaciones y varios servicios del sistema que explicamos brevemente en la configuración de PAM para auditar la actividad del shell de inicio de sesión del usuario.

Cómo bloquear cuentas de usuario después de autenticaciones fallidas consecutivas

Puede configurar la funcionalidad anterior en los archivos /etc/pam.d/system-auth y /etc/pam.d/password-auth, agregando las entradas siguientes a la sección auth .

auth    required       pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth    [default=die]  pam_faillock.so authfail audit deny=3 unlock_time=600

Dónde:

  • audit : habilita la auditoría de usuarios.
  • deny : se utiliza para definir el número de intentos (3 en este caso), después de lo cual se debe bloquear la cuenta de usuario.
  • unlock_time : establece el tiempo (300 segundos u003d 5 minutos) durante el cual la cuenta debe permanecer bloqueada.

Tenga en cuenta que el orden de estas líneas es muy importante, las configuraciones incorrectas pueden hacer que se bloqueen todas las cuentas de usuario.

La sección auth en ambos archivos debe tener el contenido a continuación organizado en este orden:

auth        required      pam_env.so
auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=300
auth        sufficient    pam_unix.so  nullok  try_first_pass
auth        [default=die]  pam_faillock.so  authfail  audit  deny=3  unlock_time=300
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

Ahora abra estos dos archivos con el editor que elija.

# vi /etc/pam.d/system-auth
# vi /etc/pam.d/password-auth 

Las entradas predeterminadas en la sección auth ambos archivos se ven así.

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet
auth        required      pam_deny.so

Después de agregar la configuración anterior, debería aparecer de la siguiente manera.

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=300
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die]  pam_faillock.so  authfail  audit  deny=3  unlock_time=300
auth        requisite     pam_succeed_if.so uid >= 1000 quiet
auth        required      pam_deny.so

Luego agregue la siguiente entrada resaltada a la sección de la cuenta en los dos archivos anteriores.

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so
account     required      pam_faillock.so

Cómo bloquear la cuenta raíz después de intentos fallidos de inicio de sesión

Para bloquear la cuenta raíz después de intentos fallidos de autenticación, agregue la opción even_deny_root a las líneas de ambos archivos en la sección auth de esta manera.

auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=300
auth        [default=die]  pam_faillock.so  authfail  audit  deny=3 even_deny_root unlock_time=300

Una vez que haya configurado todo. Puede reiniciar los servicios de acceso remoto como sshd, para que la política anterior surta efecto, es decir, si los usuarios utilizarán ssh para conectarse al servidor.

# systemctl restart sshd  [On SystemD]
# service sshd restart    [On SysVInit]

Cómo probar los intentos de inicio de sesión fallidos del usuario SSH

A partir de la configuración anterior, configuramos el sistema para bloquear la cuenta de un usuario después de 3 intentos fallidos de autenticación.

En este escenario, el usuario tecmint está intentando cambiar al usuario aaronkilik , pero después de 3 inicios de sesión incorrectos debido a una contraseña incorrecta, indicado por el mensaje "Permiso denegado", el La cuenta del usuario aaronkilik está bloqueada como se muestra en el mensaje de "error de autenticación" del cuarto intento.

También se notifica al usuario root de los intentos fallidos de inicio de sesión en el sistema, como se muestra en la captura de pantalla a continuación.

Cómo ver los intentos de autenticación fallidos

Puede ver todos los registros de autenticación fallidos mediante la utilidad faillock, que se utiliza para mostrar y modificar el registro de fallos de autenticación.

Puede ver los intentos fallidos de inicio de sesión de un usuario en particular como este.

# faillock --user aaronkilik

Para ver todos los intentos de inicio de sesión fallidos, ejecute faillock sin ningún argumento como este:

# faillock 

Para borrar los registros de fallas de autenticación de un usuario, ejecute este comando.

# faillock --user aaronkilik --reset 
OR
# fail --reset	#clears all authentication failure records

Por último, para decirle al sistema que no bloquee un usuario o cuentas de usuario después de varios intentos fallidos de inicio de sesión, agregue la entrada marcada en color rojo, justo arriba de donde se llama primero a pam_faillock en la sección de autenticación en ambos archivos (/etc/pam.d/ system-auth y /etc/pam.d/password-auth) de la siguiente manera.

Simplemente agregue nombres de usuario completos separados por dos puntos a la opción usuario en.

auth  required      pam_env.so
auth   [success=1 default=ignore] pam_succeed_if.so user in tecmint:aaronkilik 
auth   required      pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth   sufficient    pam_unix.so  nullok  try_first_pass
auth   [default=die]  pam_faillock.so  authfail  audit  deny=3  unlock_time=600
auth   requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth   required      pam_deny.so

Para obtener más información, consulte las páginas de manual de pam_faillock y faillock.

# man pam_faillock
# man faillock 

También le puede interesar leer los siguientes artículos útiles:

  1. TMOUT - Shell de Linux de cierre de sesión automático cuando no hay ninguna actividad
  2. Modo de usuario único: restablecimiento/recuperación de la contraseña de la cuenta de usuario raíz olvidada
  3. 5 mejores prácticas para asegurar y proteger el servidor SSH
  4. Cómo obtener alertas de correo electrónico de inicio de sesión SSH de root y de usuario

¡Eso es todo! En este artículo, mostramos cómo hacer cumplir la seguridad del servidor simple bloqueando la cuenta de un usuario después de un número x de inicios de sesión incorrectos o intentos de autenticación fallidos. Utilice el formulario de comentarios a continuación para compartir sus consultas o pensamientos con nosotros.