pam_tally2 no cuenta los errores en ssh

pam_tally2 no cuenta los errores en ssh

He agregado una línea

auth required pam_tally2.so deny=3 unlock_time=180

a mi /etc/pam.d/loginarchivo, y eso está muy bien en tty, después de 3 intentos testuserse suspende.

Sin embargo, esa misma línea /etc/pam.d/sshdno 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 sshprohibir 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_configarchivo. 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.

  1. Deberías cambiar la /etc/ssh/sshd_configadición de la línea.

    MaxAuthTries 1
    
  2. 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    
      
  3. Puede consultar los intentos realizados en el archivo /var/log/syslog.

Respuesta2

La práctica común es utilizar fail2banel 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?

sshdEl 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 sshpor 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.

información relacionada