SSH / SSHD: ¿cómo configuro los intentos de inicio de sesión máximo?

17

¿Cuál es la forma más fácil de configurar los intentos de inicio de sesión máximo en un entorno LAMP (sshd instalado a través de yum)? ¿Existe un paquete o una regla de firewall simple?

John Himmelman
fuente
@Hyppy Gracias, intenté buscar pero desafortunadamente hay muchas preguntas / hilos mal nombrados.
John Himmelman

Respuestas:

11

Yo uso Fail2ban ; He usado Denyhosts en el pasado, y también funciona bastante bien. Estoy a favor de Fail2ban ahora porque es más configurable y más capaz de manejar el monitoreo de múltiples servicios diferentes, por ejemplo, su sshd y la página de inicio de sesión de su aplicación web simultáneamente (siempre que logre fallas).

Otro método que podría considerar es implementar una regla LIMIT en iptables; Desafortunadamente, no puedo ayudarte con esto, a menos que quieras instalar Shorewall , y luego simplemente te dirijo hacia la excelente documentación en ese sitio sobre cómo configurar una regla LIMIT para, bueno, limitar la capacidad de alguien para imitar -force su servidor.

Kromey
fuente
Debo agregar que Fail2ban está disponible en los repositorios de muchas distribuciones, por lo que instalarlo es muy sencillo; No he visto Denyhosts en ninguno, pero eso no significa que no esté en algunos, ni que no se haya agregado desde la última vez que lo revisé.
Kromey
Me he enfrentado al problema de que fail2ban de v0.8.14 no funcionaba correctamente con el comando iptables-multiport. Y este es un problema conocido con la utilidad fail2ban resuelta en versiones nuevas ... Aquí está la descripción: github.com/fail2ban/fail2ban/issues/798 Así que solo creo en los mecanismos de seguridad desarrollados en el software del servidor, ni en las utilidades de terceros ...
George Gaál
44

No me gusta usar herramientas de terceros. Por lo tanto, utilicé una combinación de configuración ssh y configuración de firewall. Con la siguiente solución, un atacante puede producir exactamente 3 inicios de sesión de fallas en 2 minutos, o será bloqueado durante 120 segundos.

1) Agregue la siguiente línea a /etc/ssh/sshd_config

MaxAuthTries 1

Esto permitirá solo 1 intento de inicio de sesión por conexión. Reinicie el servidor ssh.

2) Agregue las siguientes reglas de firewall

Crea una nueva cadena

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

Bloquee cada dirección IP durante 120 segundos, lo que establece más de tres conexiones en 120 segundos. En el caso del cuarto intento de conexión, la solicitud se delega en la SSHATTACKcadena, que es responsable de registrar el posible ataque ssh y finalmente descarta la solicitud.

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) Vea las entradas de registro de posibles ataques ssh en /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0
Me llamo
fuente
2
¡Increíble! pero tengo un problema, un chico / bot en Francia no ha configurado correctamente sus herramientas de piratería, por lo que sigue iniciando sesión, a pesar de que su tráfico se ha caído. El resultado, mis registros están llenos de datos cada segundo de este tipo. ¿Alguna forma de evitar esto?
Smarties89
2
Para personas con menos experiencia como yo: las líneas de iptables se escriben en el indicador de bash, no se ingresan en un archivo en alguna parte.
Andrew Swift
4

No hay un paquete específico asociado con SSH para configurar esto. Sin embargo, podría instalar CSF, que es ConfigServer y Firewall.

LCR

Sugeriría que se realizarían dos cambios de configuración en el archivo: / etc / ssh / sshd_config

Limite la cantidad máxima de conexiones no autenticadas que el servidor ssh manejará al mismo tiempo. Cuanto más pequeño es, más difícil es para los niños de script realizar intentos de craqueo coordinados y paralelos con múltiples conexiones. edite sshd_config y cambie MaxStartups del valor predeterminado de "10" a "3:50:10". Los valores separados por dos puntos le indican al servidor ssh que "permita que 3 usuarios intenten iniciar sesión al mismo tiempo y que eliminen de forma aleatoria y creciente los intentos de conexión entre 3 y el máximo de 10". Nota: esto debe aumentarse en servidores con un número considerable de usuarios ssh válidos que inician sesión.

  • Valor predeterminado : MaxStartups 10
  • MaxStartups 3:50:10

Reduzca la cantidad máxima de tiempo permitido para iniciar sesión correctamente antes de desconectarse. El valor predeterminado de 2 minutos es demasiado tiempo para mantener abierto un intento de conexión no autenticado (ver arriba); 30 segundos es tiempo más que suficiente para iniciar sesión:

  • Predeterminado : LoginGraceTime 2m
  • LoginGraceTime 30
Brendan
fuente
3

Utilizo estas reglas de IPTables para esto:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Eso solo permitirá 4 paquetes TCP / SYN al puerto 22 desde una dirección IP en 5 minutos. Si hace más intentos, la puerta se cierra hasta que hayan pasado 5 minutos.

timkofu
fuente
¿Qué necesitaba editar?
timkofu
Más o menos lo mismo que: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Alix Axel
Hice estos dos comandos de iptables en Debian Jessie, pero aún puedo ver los intentos de inicio de sesión SSH cada 2 segundos desde la misma dirección IP. ¿Algunas ideas?
Alexey Ozerov
1

hay una opción que puede poner en su archivo sshd_config para el servidor:

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.
mdpc
fuente
Útil (especialmente cuando se combina con otras sugerencias ya hechas), pero en realidad no resuelve el problema por sí solo, ya que es trivial para alguien seguir reconectándose.
Kromey