Blog de Hacking ®

It's te Hack Generation!

  • Mensaje de Bienvenida

    Estimado Visitante. Le damos la más cordial bienvenida a nuestra Blog de Hacking. Esperamos que encuentre con nosotros la información que usted busca, y que como resultado de ello, nos veamos favorecidos con su elección y preferencia hacia nosotros. En este blog usted podra encontrar muchas cosas de su utilidad, desde herramientas, manuales, tutoriales hazta consejos los cuales ayudaran a seguir ampliando su conocimiento & siga aumentando su pasiòn por la informàtica. Le deceamos mucha suerte & que se divierta en nuestro Blog, esperemos este lugar sea de su agrado, un cordial saludo & bienvenido. Atte: SiriusBl@ck

OTP son las siglas de 'One Time Password' es decir, contraseñas de un solo uso. Habitualmente empleadas en entornos con elevados requerimientos de seguridad, fueron popularizadas a través de los tokens 'RSA SecureID' como herramientas para hacer logins empleando factor doble de autenticación.

Groso modo, el sistema funciona de la siguiente manera:
  • No existe un concepto de contraseña inmutable 
  • Cada vez que se quiera acceder al sistema se necesita una contraseña nueva
Es decir, en cada momento el servidor espera una contraseña que va cambiando de forma que si esa contraseña fuera interceptada, apenas serviría para un corto periodo de tiempo.

Existen varias implementaciones de OTP, en este caso vamos a usar Mobile-OTP ya que se integra perfectamente en el subsistema PAM de linux y además tiene clientes para Iphone, Android o Windows mobile.

Mobile-OTP es bastante sencillo y funciona de la siguiente manera:
  1. El cliente genera el valor de md5(PIN+SECRET+TIME)
  2. Envía el valor al servidor
  3. El servidor calcula el valor de md5(PIN+SECRET+TIME) en un intervalo de 3 minutos hacia atrás
  4. Si el valor suministrado por el cliente coincide con alguno de los generados por el servidor, la autenticación será positiva
Para instalarlo necesitamos dos cosas, un cliente para generar las contraseñas y el módulo PAM para el servidor.

Como cliente, podemos usar cualquiera de los disponibles para teléfonos móviles (interesante tener el generador de tokens en el móvil) o bien un sencillo cliente hecho en Javascript que podemos ejecutar en casi cualquier navegador (e instalarlo en nuestro servidor).


Para el servidor descargamos el módulo PAM desde aquí y lo compilamos de la forma habitual:

# make

Si todo ha ido bien (necesitarás pam-devel instalado en tu sistema) se habrá creado el fichero pam_mobile_otp.so que debemos copiar en /lib/security/

# cp pam_mobile_otp.so /lib/security/

Después de eso copiamos el fichero de configuración con el listado de usuarios + PIN + Token:

# cp motp.conf /etc/security/

Un ejemplo de fichero de configuración para tener acceso OTP para el usuario root sería el siguiente:

# cat /etc/security/motp.conf

root    1234567890abcdef        1234    0

Lo que significa que el PIN del usuario root es 1234 (el módulo PAM tiene una limitación de 4 caracteres en el PIN) y su semilla 1234567890abcdef. Estos datos deben ser cambiados en tu instalación.

Con esto hecho, procedemos a configurar el servicio SSH para que acepte esta nueva fórmula de autenticación editando /etc/pam.d/sshd dejándolo así:

#%PAM-1.0

auth  sufficient /lib/security/pam_mobile_otp.so not_set_pass
password required /lib/security/pam_mobile_otp.so debug
account required /lib/security/pam_mobile_otp.so

auth       required     pam_sepermit.so
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-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      system-auth

Con esta configuración seguimos aceptando autenticación 'normal' basada en contraseña mapeada en /etc/shadow y además passwords OTP. Si únicamente pretendemos aceptar contraseñas OTP podemos modificar /etc/pam.d/sshd

Una vez configurado el servidor, si volvemos a la pagina web generadora de contraseñas, podemos rellenar los campos

PIN --> 1234
Secret --> 1234567890abcdef

y nos dará como respuesta una contraseña temporal para acceder con el usuario root al sistema vía SSH.

Notas: Esta configuración ha sido probada en una Fedora Core 11. Es MUY IMPORTANTE que la hora del cliente y la del servidor estén sincronizadas, de lo contrario las contraseñas temporales NO funcionaran, asegúrate que el comando

# date +%s

devuelve valores parecidos en cliente y servidor

Categories:

0 Response for the "Contraseñas de un solo uso en Linux"

Publicar un comentario