Método n. ° 1: deshabilitar los inicios de sesión de contraseña
Si no necesita permitir el inicio de sesión con contraseña, simplemente deshabilitarlos le dará el efecto deseado. Simplemente agregue esta línea a /etc/ssh/sshd_config
:
PasswordAuthentication no
Además, puede limitar el uso de contraseñas a ciertos usuarios que usan el Match
operador en sshd_config
:
Match User root,foo,bar
PasswordAuthentication no
Match User user1,user2
PasswordAuthentication yes
Método # 2 - iptables
También puede usar iptables
para rastrear intentos fallidos de inicio de sesión y soltarlos después de un cierto umbral. Esto es similar a su ejemplo de hostingfu pero es más fácil de entender.
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
NOTA: La primera línea básicamente crea una regla que solo se aplica a los paquetes utilizados para nuevos intentos de conexión en el puerto ssh. La segunda línea dice que si hay más de 4 intentos de una IP en 60 segundos, entonces cualquier tráfico de esa IP debe ser bloqueado. A esta solución no le importa si los intentos en diferentes cuentas de usuario.
Método # 3 - usa PAM
Me di cuenta de que dijiste que no tienes PAM disponible, pero si lo hiciste, así es como podrías retrasar los intentos fallidos de inicio de sesión. Si su intención es simplemente retrasar las fallas de inicio de sesión ssh, entonces puede usar el módulo PAM pam_faildelay
. Este módulo PAM generalmente se incluye con la mezcla predeterminada.
En mi sistema Fedora 19 es parte de la instalación predeterminada.
Ejemplo
Busque archivos relacionados con pam_faildelay
.
$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz
Vea qué RPM son proporcionados por:
$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686
Uso
Para crear un retraso en caso de falla, simplemente agregue una línea como esta a su sshd
archivo de configuración de pam. De nuevo en / CentOS / RHEL sistemas Fedora este archivo se encuentra aquí: /etc/pam.d/sshd
.
Para crear un retraso de 10 segundos:
auth optional pam_faildelay.so delay=10000000
Un retraso de 60 segundos:
auth optional pam_faildelay.so delay=60000000
Ejemplo
Con un retraso de 20 segundos usando el método anterior, cambié mi sshd
archivo de configuración PAM de esta manera:
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
auth optional pam_faildelay.so delay=20000000
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
Ahora cuando inicio sesión:
$ date
Tue Dec 17 09:16:30 EST 2013
$ ssh blah@localhost
blah@localhost's password:
Permission denied, please try again.
blah@localhost's password:
...Control + C....
$ date
Tue Dec 17 09:16:50 EST 2013
Referencias