¿Cómo encontrar todos los intentos fallidos de inicio de sesión SSH en Linux?

El servidor SSH nos proporciona un canal de comunicación cifrado seguro entre dos hosts que no son de confianza a través de una red insegura. Aún así, no podemos decir con certeza que esté asegurado. Por lo general, es muy susceptible a muchos tipos de adivinación de contraseñas y ataques de fuerza bruta.

Para habilitar e iniciar el servidor SSH, los comandos se pueden ejecutar de las siguientes maneras:

sudo systemctl enable ssh
sudo systemctl start ssh

Para verificar el estado de ejecución del servidor, ejecute el siguiente comando.

sudo systemctl status ssh

How to Find All Failed SSH login Attempts in Linux

Cada plan para iniciar sesión en un servidor SSH es rastreado y registrado en un archivo de registro por el demonio rsyslog en Linux. Podemos ver fácilmente este archivo usando los comandos cat y grep.

Puede haber varias razones por las cuales se podría generar el intento fallido de inicio de sesión. A continuación se enumeran las tres razones más comunes:

  • Error tipográfico: error de vinculación con contraseñas incorrectas
  • Contraseña incorrecta: tratando de ingresar con la contraseña incorrecta
  • Ataque de fuerza bruta: uso del diccionario para atacar con una combinación de ID de usuario y contraseñas comunes

Con cualquiera de los dos comandos que se dan a continuación, podemos ver todos los intentos fallidos de inicio de sesión:

grep "Failed password" /var/log/auth.log

How to Find All Failed SSH login Attempts in Linux

cat /var/log/auth.log | grep "Failed password"

How to Find All Failed SSH login Attempts in Linux

Para ver información adicional, use el siguiente comando:

egrep "Failed|Failure" /var/log/auth.log
# It works the same way as grep -E does 

Para filtrar solo la dirección IP de estos registros usando el siguiente comando. Esto mostrará una lista de direcciones IP junto con la cantidad de veces que se generó el registro desde la dirección IP.

grep "Failed password" /var/log/auth.log | awk '{print $11}' | uniq -c | sort -nr

How to Find All Failed SSH login Attempts in Linux

El comando funciona de la siguiente manera:   

  1. Enumere la «Contraseña fallida» usando el comando grep con los archivos /var/log/secure o /var/log/auth.log
  2. Imprimir IP/nombre de host con awk y comando de corte
  3. Formatee los datos con el comando ordenar (Opcional)
  4. Imprimir el total de intentos fallidos de inicio de sesión SSH con comandos uniq

Del mismo modo, también puede imprimir registros de errores de autenticación en el terminal:

grep "authentication failure" /var/log/auth.log | awk '{ print $13 }' | cut -b7-  | sort | uniq -c

How to Find All Failed SSH login Attempts in Linux

Alternativamente, también podemos ver los registros usando el demonio Systemd usando el comando journalctl.

journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure"

How to Find All Failed SSH login Attempts in Linux

Comprobación de la configuración

Es una buena práctica verificar la configuración de los intentos fallidos de inicio de sesión en el servidor. Puede consultar el archivo /etc/pam.d/common-auth, que se utiliza con los módulos de autenticación conectables (PAM) de Linux dentro del sistema.

cat /etc/pam.d/password-auth

La configuración dentro de este archivo controla el umbral para los intentos de inicio de sesión fallidos antes de que la cuenta se bloquee temporalmente. Incluso podría ajustar el tiempo para este bloqueo temporal.

El siguiente segmento de código hará que PAM bloquee una cuenta temporalmente después de tres intentos fallidos de inicio de sesión. El bloqueo durará 300 segundos, que son 5 minutos.

auth required pam_tally2.so deny=3 unlock_time=300

How to Find All Failed SSH login Attempts in Linux

Ocasionalmente, se esperan inicios de sesión fallidos, pero aún así, es crucial identificar los intentos fallidos de inicio de sesión en su servidor. La IP que golpea con frecuencia su servidor debe identificarse de inmediato y debe bloquearse dentro del firewall para evitar posibles ataques a su servidor. 

Publicación traducida automáticamente

Artículo escrito por piyushagg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *