Nisu

ClaBlock: Control de accesos vía clauer

29 Noviembre 2005

by Manuel Mollar
mm at nisu.org

Contenido.

  1. Objetivo.
  2. Características principales.
  3. Requisitos y procedimiento de instalación.
  4. Funcionamiento.
  5. Comunicación con el servidor.
  6. Créditos.
  7. Por hacer.

Objetivo.

Esta página pretende dar información sobre el control de accesos, mediante el clauer y el paquete de software ClaBlock, a las aulas de ordenadores de uso libre.

Características principales.

  • Autonomía: El sistema no requiere ningún mantenimiento, ni siquiera para las incidencias, los usuarios gestionan su autorización cooperativamente, con toda la operativa registrada.
  • Simplicidad: El programa puede instalarse en un sistema Windows XP sin más requerimientos, no interaccionando con Windows en forma alguna.
  • Seguridad: No se conoce forma de dejar el programa inoperativo sin que se detecte y se anule. Si un usuario mata el proceso (posible, pues corre a nivel de sesión), a los 5 minutos se apaga el ordenador, después de emitir sonidos de alarma durante un minuto, que sirven para delatar el intento de vulneración.

Requisitos y procedimiento de instalación.

El programa requiere:
  • El soft base del clauer funcionando.
  • Que exista un usuario no privilegiado que sea el que los alumnos utilicen en su trabajo, quedando la cuenta de administrador reservada a los operadores. Este usuario debe iniciar sesión automáticamente, el cierre e inicio de sesión debe tardar un máximo de 1 minuto (se cumple en ordenadores muy lentos).
  • Para evitar comportamientos improcedentes, es conveniente que esté inaccesible el administrador de tareas.
  • La cuenta de usuario debe estar correctamente securizada. Este requerimiento no se cumple a fecha de hoy en ningún aula de las que hemos probado.
Para la instalación se facilita un programa instalador, pero puede realizarse manualmente. Los ingredientes de la instalación son los siguientes:
  • El programa ClaBlock debe instalarse en un directorio donde el usuario no tenga permisos de escritura, por defecto se instala en Archivos de programa, donde es esperable que no pueda escribir. El programa debe iniciarse automáticamente al inicio de sesión, lo que es realizado por el instalador, modificando el registro.
  • El programa usa las variables de registro:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Universitat Jaume I\Projecte Clauer\CLABLOCK_AULA
      que debe contener un código de ubicación de 6 letras, por ejemplo MEDIAT .
    • HKEY_LOCAL_MACHINE\SOFTWARE\Universitat Jaume I\Projecte Clauer\CLABLOCK_SESION
      que contiene los minutos que transcurren desde que se retira el clauer hasta que se cierra la sesión si no se introduce otro clauer (ver apartado correspondiente).
    • HKEY_LOCAL_MACHINE\SOFTWARE\Universitat Jaume I\Projecte Clauer\CLABLOCK_HOST
      con el nombre del servidor donde conectar por TLS sin autenticación (explicado en el apartado correspondiente), por ejemplo clablock.nisu.org.
    • HKEY_LOCAL_MACHINE\SOFTWARE\Universitat Jaume I\Projecte Clauer\CLABLOCK_PATH
      con el path del script invocado dentro de ese servidor, poe ejemplo /x.php.
    • HKEY_LOCAL_MACHINE\SOFTWARE\Universitat Jaume I\Projecte Clauer\CLABLOCK_HOSTSSL
      con el nombre del servidor donde conectar con autenticación por certificados.
    • HKEY_LOCAL_MACHINE\SOFTWARE\Universitat Jaume I\Projecte Clauer\CLABLOCK_PATHSSL
      con el path del script invocado dentro de ese servidor.
    Las variables son establecidas por el instalador previa consulta.
  • El programa BlockCheck debe instalarse en el mismo directorio donde se ha instalado ClaBlock. BlockCheck es un Servicio de Windows y por ello se inicia con el sistema, no con la sesión.
  • En el mismo directorio donde se instalan ambos programas, debe encontrarse una imagen tipo bitmap, que es la imagen que se muestra cuando está el ordenador bloqueado, es un archivo de nombre insert.bmp.

Funcionamiento.

El programa ClaBlock se ejecuta como usuario, al inicio de sesión. El programa intercepta el teclado, bloquea las funciones especiales del teclado y muestra la imagen que se superpone al escritorio. El usuario no puede trabjar.
Al introducir un clauer, el programa obtiene su identificador y consulta a un servidor por la autorización:
  • Si el identificador es conocido y le queda tiempo, se elimina la imagen y se desbloquea gran parte del teclado.
  • Si le quedan sólo 5 minutos le avisa, si no le queda tiempo, le imforma y no desbloquea.
  • Si no conoce el identificador, procede a su inserción en la base de datos, procedimiento que requiere autenticación fuerte contra los certificados.
Si se extrae el clauer, el bloqueo se activa de nuevo. El programa permanece en espera un tiempo fijado en la instalación. Si en ese tiempo, se introduce de nuevo el mismo clauer, se desbloquea y todo está como antes.
Pero si se introduce otro clauer o se agota el tiempo, la sesión se cierra incondicionalmente.
El usuario puede matar a ClaBlock simplemente usando taskkill. Es ahí donde interviene BlockCheck, que cada 3 minutos testea si ClaBlock está activo. Si no lo está repite el test un poco después y si la situación persiste, hace sonar una alarma durante un minuto, que puede ser aprovechada por los responsables de la sala para averiguar que pasa, y después cierra incondicionalmente el sistema.

Comunicación con el servidor.

ClaBlock se comunica con un servidor web para su funcinamiento. Si el servidor no responde, se decanta a favor del usuario, desbloqueando la sesión sin más. Si el servidor responde, devuelve una serie de códigos de resultado y ClaBlock actúa en consecuencia. La url por defecto es:
https://{CLABLOCK_HOST}{CLABLOCK_PATH}
Es invocada por ClaBlock cada 5 minutos. Y los parámetros (GET) son:
  • ID: Identificación del clauer.
  • accion: puede tomar 3 valores:
    • ini: un nuevo clauer se ha intertado.
    • act: es el mismo clauer.
  • aula: ubicación lógica del equipo, que no tiene porqué coincidir con una ubicación física, puede ser por ejemplo ESTCE1 o MEDIATE. Es un código de 6 caracteres.
Los códigos esperados por ClaBlock desde esta url son:
  • 0: Quedan 5 minutos de uso.
  • 1: Todo OK, podemos continuar.
  • 2: Identificador de clauer desconocido.
  • 3: Se acabó el tiempo.
  • 4: Usuario no autorizado.
Deben ser devueltos como cadena de caracteres (algo como "echo '1'").
Cuando se produce el código 2, ClaBlock invoca a la url:
https://{CLABLOCK_PATH}{CLABLOCK_PATH}
Esta url requiere autenticación fuerte por certificados. Nótese que se usan dos urls por comodidad, pues en los servidores "apache", es fácil indicar qué urls requieren autenticación SSL/TLS y cuales no. ClaBlock admite renegociación, y al ser requerida la autenticación, muestra al usuario la lista de certificados disponibles, y se realiza la autenticación. La url recibe los mismos parámetros que la anterior y ClaBlock espera los códigos:
  • 0: Quedan 5 minutos de uso.
  • 1: Todo OK, podemos continuar.
  • 2: Error accediendo a la base de datos.
  • 3: Se acabó el tiempo.
  • 4: Usuario no autorizado.
  • 5: No se pudo verificar la identidad.
El servidor web extrae el DNI del certificado y si es persona autorizada, debe insertar el identificador del clauer en la base de datos, asociado a esa persona.
Una sencilla colección de scripts, implementa un modelo de uso basado en limitación de tiempo.

Créditos.

ClaBlock ha sido programado por Mauro con la colaboración de Paul, sobre la base de un conjunto de funciones que desarrollaron Lionel y Mathias, El proyecto ha sido dirigido por el firmante.

Por hacer.

  • Red: El hecho que, si no hay red, funcione siempre, puede ser aprovechado por alguien que no pretenda hacer uso de la red y que no quiera que le cuenten las horas de uso. Hay que buscar una política que solucione esto.
  • Reloj: El programa podría mostrar el tiempo restante (por ejemplo del día y de la semana) en un reloj discreto.
  • Limpieza: El programa actualmente no realiza ninguna función sobre el contenido del disco duro. Podría revertir todo lo que el usuario ha hecho en la sesión. No es probable que tengamos tiempo de implementar esto.
Select Style - Legal