He agregado una línea
auth required pam_tally2.so deny=3 unlock_time=180
a mi /etc/pam.d/login
archivo, y eso está muy bien en tty, después de 3 intentos testuser
se suspende.
Sin embargo, esa misma línea /etc/pam.d/sshd
no produce ningún efecto.
xieerqi:$ ssh testuser@localhost
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
xieerqi:$ ssh testuser@localhost
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
Como puede ver después de 3 intentos fallidos, el usuario aún puede intentar ingresar la contraseña.
¿Cómo puedo ssh
prohibir a un usuario después de 3 ataques?
Respuesta1
Para SSH podría ser mejor usar algo diferente a pam. Hay una gran solución creada a través de iptables y el sshd_config
archivo. Esta es solo una forma de obtener lo que desea; además, según la documentación, generalmente se recomienda usar claves SSH en lugar de una verificación del método de autenticación de contraseña.https://help.ubuntu.com/community/SSH/OpenSSH/Configuring.
Deberías cambiar la
/etc/ssh/sshd_config
adición de la línea.MaxAuthTries 1
Debe crear las siguientes reglas de firewall
Crear una nueva cadena
iptables -N SSHATTACK iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7 iptables -A SSHATACK -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 a la cadena SSHATTACK, 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
Puede consultar los intentos realizados en el archivo
/var/log/syslog
.
Respuesta2
La práctica común es utilizar fail2ban
el que funciona a nivel de red en lugar del nivel de pam y que guarda los recursos para todas las criptomonedas realizadas por sshd
.
De todos modos, ¿después de esa autenticación fallida, intentaste insertar la contraseña correcta? ¿Se acepta? ¿Qué está conectado /var/log/auth.log
?
sshd
El servidor siempre ejecuta toda la pila pam incluso si el usuario no existe, está suspendido o bloqueado para eliminar ataques utilizando canales laterales (identificación de usuarios existentes, por ejemplo). Este es el problema que parece estar enfrentando. Puede funcionar, pero no puedes verlo ssh
por motivos de seguridad.
Respuesta3
Intente cambiar el orden de las líneas, PAM las ejecuta 1 por 1.
Por ejemplo:
/etc/pam.d/common-auth
auth required pam_tally2.so deny=3 onerr=fail unlock_time=300 debug
auth [success=1 default=ignore] pam_unix.so nullok
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
funciona para mi.