¿Cómo puedo realizar un seguimiento de los intentos fallidos de inicio de sesión de SSH?

124

Me gustaría ver si alguien ha intentado iniciar sesión por fuerza bruta en mi servidor Ubuntu 12.04 a través de SSH. ¿Cómo puedo ver si se han llevado a cabo estas actividades?

    
pregunta Ivan 20.08.2012 - 08:32

2 respuestas

139

Todos los intentos de inicio de sesión se registran en /var/log/auth.log .

1. Filtro para inicios de sesión SSH interactivos de fuerza bruta

Abre una terminal y escribe lo siguiente; si es más de 1 página, podrá desplazarse hacia arriba y hacia abajo; escriba q para salir:

grep sshd.\*Failed /var/log/auth.log | less
  • Este es un ejemplo real de uno de mis VPS:

    Aug 18 11:00:57 izxvps sshd[5657]: Failed password for root from 95.58.255.62 port 38980 ssh2
    Aug 18 23:08:26 izxvps sshd[5768]: Failed password for root from 91.205.189.15 port 38156 ssh2
    Aug 18 23:08:30 izxvps sshd[5770]: Failed password for nobody from 91.205.189.15 port 38556 ssh2
    Aug 18 23:08:34 izxvps sshd[5772]: Failed password for invalid user asterisk from 91.205.189.15 port 38864 ssh2
    Aug 18 23:08:38 izxvps sshd[5774]: Failed password for invalid user sjobeck from 91.205.189.15 port 39157 ssh2
    Aug 18 23:08:42 izxvps sshd[5776]: Failed password for root from 91.205.189.15 port 39467 ssh2
    

2. Busque conexiones fallidas (es decir, no se intentó iniciar sesión, podría ser un escáner de puertos, etc.):

Utilice este comando:

grep sshd.*Did /var/log/auth.log | less
  • Ejemplo:

    Aug  5 22:19:10 izxvps sshd[7748]: Did not receive identification string from 70.91.222.121
    Aug 10 19:39:49 izxvps sshd[1919]: Did not receive identification string from 50.57.168.154
    Aug 13 23:08:04 izxvps sshd[3562]: Did not receive identification string from 87.216.241.19
    Aug 17 15:49:07 izxvps sshd[5350]: Did not receive identification string from 211.22.67.238
    Aug 19 06:28:43 izxvps sshd[5838]: Did not receive identification string from 59.151.37.10
    

Cómo reducir intentos de inicio de sesión fallidos / de fuerza bruta
  • Intente cambiar su SSH a un puerto no estándar desde el valor predeterminado 22
  • O instale un script de prohibición automática como fail2ban .

respondido por el ish 20.08.2012 - 08:48
67

Argumentaría que monitorear los registros es una solución débil, especialmente si tiene una contraseña débil en una cuenta. Los intentos brutales a menudo intentan al menos cientos de claves por minuto. Incluso si tiene un trabajo cron configurado para enviarle por correo electrónico los intentos brutales, podrían pasar horas antes de que llegue a su servidor.

Si tiene un servidor SSH público, necesita una solución que inicie long antes de que pueda ser pirateado.

Recomiendo encarecidamente fail2ban . Su wiki dice lo que hace mejor que yo.

  

Fail2ban escanea los archivos de registro (por ejemplo, /var/log/apache/error_log ) y prohíbe las direcciones IP que muestran los signos maliciosos: demasiadas contraseñas, búsquedas de exploits, etc. En general, Fail2Ban solía actualizar las reglas del cortafuegos para rechazar las direcciones IP de un cantidad de tiempo, aunque también podría configurarse cualquier otra acción arbitraria (por ejemplo, enviar un correo electrónico o expulsar la bandeja del CD-ROM). De fábrica, Fail2Ban incluye filtros para diversos servicios (apache, curier, ssh, etc.).

Obtener protección es tan simple como sudo apt-get install fail2ban .

De manera predeterminada, tan pronto como alguien tiene tres intentos fallidos, su IP obtiene una prohibición de cinco minutos. Ese tipo de demora esencialmente detiene un intento de fuerza bruta SSH pero no arruinará tu día si olvidas tu contraseña (¡pero deberías estar usando claves de todos modos!)

    
respondido por el Oli 23.08.2012 - 11:12

Lea otras preguntas en las etiquetas