jueves, 8 de septiembre de 2011

"sudo su" sin espera ( nodelay )

Pues como hoy me he tirado 30 minutos buscando esta opción y considerando que hay poca información sobre ella ( y menos en castellano ), así va:

¡NODELAY en pam_unix.so!

[¿De qué va el tema?]
Pues se trata de optimización de tiempo y comodiad en la consola. Cuando ejecutamos un comando con "sudo", normalmente nos pide la contraseña ( a menos que lo hayamos desactivado ). Esto es la política de seguridad bastante recomendada, ya que si no cualquier persona te podria juankear el ordenador si lo dejas solo un momento sin bloquear.

[Total, dónde está el problema, entonces?]
Pues que si al ejectuar cualquier comando con sudo, te equivocas al picar tu password, te tienes que esperar 3 segundos para volverlo a picar. Y esto es un coñazo. Ejemplo:

inedit@tpad:~$ sudo echo 1
[sudo] password for inedit: foo
- espera de tres segundos -
Invalid password, please try again:
[sudo] password for inedit: bar
- espera otra vez de tres segundos -
....etc...

[HOWTO]
Total, que esta opción se puede desactivar a través de las PAM de linux del siguiente modo:

sudo vim /etc/pam.d/common-auth

Y modificar la lína donde pone:
auth [success=2 default=ignore] pam_unix.so nullok_secure>

Y cambiarla por:
auth [success=2 default=ignore] pam_unix.so nullok_secure nodelay

De este modo se desactiva totalmente el tiempo de espera entre logins. Cuando te equivoques al escribir tu password, automáticamente te volverá a preguntar la clave.

[Precaución]
Y uno se preguntará, ¿por qué puñetas no estaba desactivado esto ya? Pues por motivos de seguridad: previene que se lanzen ataques de fuerza bruta contra el PC, ya que el hecho de que te tengas que esperar 3 segundos tras cada intento fallido, limita mucho los ataques ( los hace inviables por la cantidad de tiempo que se necesita probar un número acceptable de claves ). Aplicando la regla anterior estamos quiando esta restricción. O sea que cuidadín en ejecutar algo así en una máquina de producción donde tenga SSH expuesto en Internet y demás. Quien avisa no es traidor.

[Nota final]
Como siempre, en un extremo tenemos seguridad, y en el otro tenemos comodidad. No podemos elegir ambos. Por lo que lo mejor es quedarse siempre en un punto medio.

Un saludo, Jan.

Posdata: Si alguien consigue sacar algo en claro sobre el fichero /etc/pam.d/login y su parámetro "pam_faildelayso delay=3000000", que por favor deje un comentario y así completamos la información. Yo no he sido capaz de ajustarlo a un segundo. Gracias de antemano.

1 comentario:

  1. Vale, ya tengo la solución a mi "Postdata". Hechadle un vistazo al post de mi nuevo blog:
    http://www.krenel.org/pam-adjusting-timeout-in-invalid-logins-nodelay-faildelay/

    Un saludo!

    ResponderEliminar