Ocejon Hardware Key Logon Manager

Noticias

  • 10/01/2006 - La edición personal va a ser la primera liberada, ya está casi lista. Al final de esta página hay un mensaje con instrucciones rústicas, pendiente de formalizar, preparar herramienta gráfica de mantenimiento y empaquetar.
  • 22/05/2005 - La cosa va despacio pero esta en marcha. He decidido utilizar el hyperactivediirectory had como base para el hardware key logon manager y ocejon como el nombre de producto para la suite que incluira las herramientas de gestion de usuarios grupos equipos y llaves usb. El hyperactivedirectory esta muy avanzado pero aun no tiene interfaz ldap. En cuanto tenga una instalacion de referencia estoy en ello publicare el codigo.
  • 12/04/2004 - Caja Guadalajara aportará tiempo al desarrollo del proyecto. Detalles adicionales de seguridad del proyecto especificados.
  • 11/04/2004 - creación de la página del proyecto (AndresSH). http://www.andressh.net/wiki/Ocejon temporalmente.
  • 07/04/2004 - idea de la creación del servicio (Alvaro)

Objetivos

  • Llave USB con lo mínimo necesario para iniciar la sesión y cerrarla al extraerlo del conector
  • Seguridad ante pérdidas de la llave
  • Ningún dato confidencial en la llave
  • Seguridad en las comunicaciones
  • Verificación del origen del intento de acceso (solo desde equipos "asociados")

Términos

  • Hardware Key - Llave Hardware, disco USB con los datos necesarios para actuar de llave
  • Asociated - Asociado, equipo desde el que es posible iniciar una sesión autentificando la llave en un servidor llavero
  • Keyring server - servidor llavero, el que contiene la bd con los datos de las llaves y equipos asociados, asociación de nuermos
  • Key Serial Number - Número de serie de la llave, el número utilizaod para
  • Agent - Agente, el soft en el equipo que finalmente usa el usuario, donde se inserta la llave hardware.

Arquitectura y seguridad

  • Agente en los equipos asociados, genera par de claves, envia publica al Keyring server, para que este tras verificar manualmente la huella dactilar, acepte al equipo como Asociated.
  • Lista de equipos en los que se acepta logon
  • El par usuario/clave nunca viaja sin cifrar
  • Cifrado GnuPG (podría usarse tambien ssl)
  • "silent errors" - no se nota nada en el equipo asociado cuando la cosa va mal

BD

  • Sobre ldap o mysql, ventajas e inconvenientes para cada uno.
  • Dado que sobre ldap la bd sería común con la de inicio de sesión que usen los equipos (pam-ldap, aunque tambien hay pam-mysql) y se incorpora control de acceso por máquinas, es posible que finalmente se decida utilizar ldap, o dejar esto como opción en la instalación.

Posibles nombres de paquetes

  • Servidor
    • ocejon-server
    • ocejon-server-ldap
  • Agente
    • ocejon-agent-usb
    • ocejon-agent-kdm
  • Otros que pueden realizarse posteriormente
    • ocejon-server-mysql
    • ocejon-agent-cd
    • ocejon-agent-floppy
    • ocejon-agent-gdm
    • ocejon-agent-xdm
    • ocejon-agent-getty

Otras cosas

 From: 	Andrés Seco Hernández
 Sent: 	sábado 10 de abril de 2004 10:05
 To: 	Salvador García García; Gestión de Red
 Subject: 	RE: usb key logon - listo para hacerlo...
 Todo controlado, la parte que no sabía como hacerla, ya la se.
 Para abrir la sesión desde una aplicación, kdm (el gestor de arranque gráfico
 para recibir usuario y clave) tiene un interface FIFO al que se puede escribir
 desde linea de comando de root:
 echo -e "login\t:0\tnow\tandres\tclave" > /var/run/xdmctl/xdmctl
 y andres inicia la sesión como si hubiera tecleado sus datos.
 dcop ksmserver MainApplication-Interface quit
 y el tio cierra la sesión limpiamente, como si hubiera pulsado la opción con
 el ratón.
 Solo basta lanzar esos comandos desde un "agente" que tenemos que crear
 que sea ejecutado cuando haya eventos sobre el bus usb (trivial desde los
 script de ejecución de usbmgr) y crear una gestion de bd para las llaves usb,
 usuarios, contraseñas y permisos de acceso en diferentes equipos, más alguna
 utilidad para "grabar" y "borrar" una llave usb.
 __
 Andrés Seco Hernández.
 
 Clave pública PGP en http://www.rediris.es/cert/servicios/keyserver/
 tel. +34 629 867165, +34 949 888139, fax +34 949 888105.
 Area Técnica. Informática.
 Caja de Guadalajara.
 http://CajaGuadalajara.biz
 __
 ----------
 From: 	Andres Seco Hernandez[SMTP:AndresSH@alamin.org]
 Sent: 	jueves 8 de abril de 2004 16:29
 To: 	andresseco@cajaguadalajara.biz
 Subject: 	usb key logon
 http://usbsec.sf.net - este es el objetivo, pero no ha generado aun nada
 de codigo, aunque el proyecto nacio el 16-11-2004. Proyecto muerto, pero
 teoricamente hace lo que queremos que haga.
 http://freshmeat.net/projects/pam_usb/ - necesitas teclear usuario, la
 clave la pone la llave usb con un certificado. Herramientas de gestion
 de acceso aparentemente adecuadas.
 http://pam-x509.sf.net - ya hay version 1.0.1, 11/2003, tiene buena
 pinta y hace automontaje del dispositivo usb, pero delega en los
 certificados x509 en la cuenta del usuario en la máquina para hacer
 logon.
 Me temo que ninguno se ajusta a lo que queremos. Tendremos que
 desarrollarlo nosotros (por otra parte, parece poca cosa, tan solo veo
 el desconocimiento que tenemos de enviar eventos a aplicaciones kde
 desde una aplicación).
 --
 Andres Seco Hernandez
	http://andressh.net
	mailto:AndresSH@alamin.org
        jabber:sslowly@jabber.guadawireless.org
 ---------------------------------------------------------------------------
 http://guadawireless.net  http://www.debian.org       http://www.alamin.org
 http://www.redlibre.net   http://www.gulalcarria.org    http://andressh.net
                          http://objetivosubjetivo.com
 ---------------------------------------------------------------------------
 Por favor, NO utilice formatos de archivo propietarios para el intercambio
 de documentos, como DOC y XLS, sino HTML, PDF, TXT, CSV o cualquier otro
 que no obligue a utilizar un programa de un fabricante concreto.

Andres Seco Hernandez wrote:

 La edición personal, v0.1, para correr sobre hotplug y udev, poco
 parametrizada y un poco rústica, pero eficiente:
 - poned el script de más abajo en /etc/hotplug.d/scsi, con el nombre
 ocejon.hotplug, con permiso de ejecución
 - dejad en vuestro disco usb un directorio ocejon con un fichero de
 nombre "personal-XXXXX.xxxxx.yyy", donde XXXXX.xxxxx.yyy es el hostname
 -f de vuestro equipo (lanzad desde linea de comando "hostname -f"), y
 dentro poneis el usuario en la primera linea y vuestra clave en la
 segunda (si, de momento en claro).
 y a jugar ;-)
 T0552P03:~# cat /etc/hotplug.d/scsi/ocejon.hotplug
 #!/bin/sh
 #
 # ocejon.hotplug, v0.1, Tue, 10 Jan 2006 01:53:17 +0100
 # (C) Andres Seco Hernandez, AndresSH@alamin.org
 # Licensed under GNU/GPL
 #
 # This file is part of the OCEJON distribution.
 # Hotplug USB hook for OCEJON
 cd /etc/hotplug
 . ./hotplug.functions
 DEBUG=yes export DEBUG
 debug_mesg "arguments ($*) env (`env`)"
 if [ "$ACTION" == "add" ]; then
     sleep 4
     mount /dev/sda1 /mnt
     PERSONALFILE=/mnt/ocejon/personal.`hostname -f`
     if [ -f $PERSONALFILE ]; then
         PERSONALUSER=`cat $PERSONALFILE | head -1`
         PERSONALPASS=`cat $PERSONALFILE | head -2 | tail -1`
         mesg "login as user '$PERSONALUSER'"
         echo -e "login\t:0\tnow\t$PERSONALUSER\t$PERSONALPASS" >
 /var/run/xdmctl/xdmctl
         mkdir -p /var/cache/ocejon
         touch /var/cache/ocejon/personal-`hostname -f`
         chmod 600 /var/cache/ocejon/personal-`hostname -f`
         {
             date -R
             hostname -f
             echo $PERSONALUSER
 #            echo $PERSONALPASS
         } > /var/cache/ocejon/personal-`hostname -f`
     fi
     umount /dev/sda1 /mnt
 fi
 if [ "$ACTION" == "remove" ]; then
     CURRENTFILE=/var/cache/ocejon/personal-`hostname -f`
      CURRENTUSER=`cat $CURRENTFILE | head -3 | tail -1`
     dcop --user $CURRENTUSER ksmserver MainApplication-Interface quit
     rm /var/cache/ocejon/personal-`hostname -f`
 fi
 exit 0