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

134

Me gustaría ver si alguien ha estado intentando 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 tales actividades?

Ivan
fuente

Respuestas:

150

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

Abra una terminal y escriba lo siguiente; si tiene más de 1 página, podrá desplazarse hacia arriba y hacia abajo; escriba qpara salir:

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

    18 de agosto 11:00:57 izxvps sshd [5657]: contraseña fallida para root del puerto 95.58.255.62 38980 ssh2
    18 de agosto 23:08:26 izxvps sshd [5768]: Error de contraseña para root del puerto 91.205.189.15 38156 ssh2
    18 de agosto 23:08:30 izxvps sshd [5770]: contraseña fallida para nadie desde el puerto 91.205.189.15 38556 ssh2
    18 de agosto 23:08:34 izxvps sshd [5772]: contraseña fallida para asterisco de usuario inválido desde 91.205.189.15 puerto 38864 ssh2
    18 de agosto 23:08:38 izxvps sshd [5774]: contraseña fallida para el usuario no válido sjobeck del puerto 91.205.189.15 39157 ssh2
    18 de agosto 23:08:42 izxvps sshd [5776]: Error de contraseña para root del puerto 91.205.189.15 39467 ssh2
    

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

Usa este comando:

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

    5 de agosto 22:19:10 izxvps sshd [7748]: No recibió la cadena de identificación de 70.91.222.121
    10 de agosto 19:39:49 izxvps sshd [1919]: No recibió la cadena de identificación del 50.57.168.154
    13 de agosto 23:08:04 izxvps sshd [3562]: No recibió la cadena de identificación de 87.216.241.19
    17 de agosto 15:49:07 izxvps sshd [5350]: No recibió la cadena de identificación de 211.22.67.238
    19 de agosto 06:28:43 izxvps sshd [5838]: No recibió la cadena de identificación de 59.151.37.10
    

Cómo reducir los intentos de inicio de sesión fallidos / de fuerza bruta

  • Intente cambiar su SSH a un puerto no estándar del predeterminado 22
  • O instale un script de prohibición automática como fail2banInstalar fail2ban .
ish
fuente
44
¿Cuánta seguridad obtienes al cambiar el puerto SSH?
Nick T
8
@NickT resulta suficiente para reducir significativamente los intentos de inicio de sesión. Donde obtuve miles de intentos en una semana / día, hasta ahora no he tenido ninguno en el último mes, simplemente cambiando el puerto.
AntoineG
2
Creo que no permitir el inicio de sesión con contraseña también puede ayudar.
Luc M
2
Sé que esto es ubuntu, solo quería mencionar que en algunos sistemas como centos la ruta del archivo es/var/log/secure
lfender6445
Algunos sistemas acceden al registro consystemctl -eu sshd
alecdwm
72

Yo diría que monitorear los registros es una solución débil, especialmente si tiene una contraseña débil en una cuenta. Los intentos brutos a menudo prueban al menos cientos de teclas por minuto. Incluso si tiene un trabajo cron configurado para enviarle correos electrónicos de intentos brutos, podrían pasar horas antes de que llegue a su servidor.

Si tiene un servidor SSH público, necesita una solución que se active  mucho antes de que pueda ser hackeado.

Yo recomendaría fuertemente fail2ban. Su wiki dice lo que hace mejor que yo.

Fail2ban escanea archivos de registro (p /var/log/apache/error_log. Ej. ) Y prohíbe las IP que muestran signos maliciosos: demasiadas fallas en las contraseñas, búsqueda de vulnerabilidades, etc. También podría configurarse otra acción arbitraria (por ejemplo, enviar un correo electrónico o expulsar la bandeja de CD-ROM). Fuera de la caja, Fail2Ban viene con filtros para varios servicios (apache, curier, ssh, etc.).

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

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

Oli
fuente
66
¿Por qué se llama no prohibir?
Pacerier
99
@Pacerier Bueno, con alguna analogía, el error de inicio de sesión conduce a (2) una prohibición.
Sebi
2
Bwahaha, me alegraste el día @Pacerier. Nunca pensé que fuera un "fracaso para prohibir" literalmente.
adelriosantiago
1
Creo que esto debería editarse para eliminar "especialmente" de la primera oración. Es solamente un problema si usted tiene una contraseña débil. Las contraseñas seguras no pueden ser forzadas bajo ninguna circunstancia, y la única razón para evitar que las personas intenten es reducir la carga del servidor.
Abhi Beckert
Totalmente de acuerdo. De todos modos, estará bien evitar una gran carga del servidor. He visto intentos por tasas de milisegundos
Diego Andrés Díaz Espinoza