¿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?
¿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?
Respuestas:
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.
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 SSHATTACK
cadena, 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
No hay un paquete específico asociado con SSH para configurar esto. Sin embargo, podría instalar CSF, que es ConfigServer y Firewall.
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.
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:
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.
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
.
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.