En relación con los cambios en la legislación sobre los servicios de confianza (“Acerca de los servicios de confianza electrónicos” Ucrania), la empresa necesita que varios departamentos trabajen con claves ubicadas en tokens (por el momento, la cuestión del número de claves de hardware aún está abierta ).
Como herramienta de menor coste (gratuita), la elección recayó inmediatamente en
La pregunta era: ¿Cómo puedo hacerlo con el mínimo baile para que todo funcione para todos...?
La parte es torpe
Opción XNUMX. Varios atajos para archivos bat, a saber
a) Conexión de la clave de acceso.
b) Desconectarse deliberadamente.
Párrafo "б» Controvertido, por lo que se decidió dar la cantidad de tiempo para trabajar con la llave en 3 minutos.
La peculiaridad del cliente usbip es que después de su lanzamiento permanece colgado en la consola, sin interrumpir la sesión de la consola, puedes cerrar la conexión “aproximadamente” desde el lado del cliente y también desde el lado del servidor.
Esto es lo que funcionó bien para nosotros:
primero: conexión en.bat
usbip -a 172.16.12.26 4-1
msg * "Подпись/токен недоступны или заняты "
segundo: apagado apagado.bat
ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /F
Sin depender de la conciencia del usuario, los guiones se combinaron en token.bat
on.bat | off.bat
Qué sucede: todos los archivos están en la misma carpeta, iniciada por el archivo token.bat, si se cierra la conexión, el usuario recibe inmediatamente un mensaje indicando que la clave no está disponible, en otro caso, solo después de 180 pings. Las líneas de código anteriores se pueden equipar con "@ECHO OFF" y la dirección de la consola en "> nul" para no sorprender demasiado al usuario, pero no es necesario realizar pruebas. La “ejecución” inicial en una unidad USB demostró que todo era predecible, confiable y claro. Además, no se requieren manipulaciones por parte del servidor.
Naturalmente, cuando se trabaja directamente con el token, no todo salió como se esperaba: con una conexión física en el administrador de dispositivos, el token se registra como 2 dispositivos (WUDF y una tarjeta inteligente), y con una conexión de red solo como WUDF (aunque esto es suficiente para solicitar un código PIN).
También resulta que el brutal "taskkill" no es tan severo, y cerrar la conexión en el cliente es problemático e incluso si fue exitoso, no garantiza cerrarla en el servidor.
Habiendo sacrificado todas las consolas del cliente, el segundo script tomó la forma:
ping 127.0.0.1 -n 180 > nul
taskkill /IM usbip.exe /F /T > nul
ping 127.0.0.1 -n 10 > nul
taskkill /IM conhost.exe /F /T > nul
aunque su efectividad es inferior al 50%, ya que el servidor obstinadamente seguía dando por abierta la conexión.
Los problemas con la conexión me llevaron a pensar en actualizar el lado del servidor.
parte del servidor
Lo que usted necesita:
- Desconectar a los usuarios inactivos del servicio.
- Vea quién está usando actualmente (o todavía tomando prestado) el token.
- Vea si el token está conectado a la computadora.
Estos problemas se resolvieron utilizando los servicios crontab y apache. La naturaleza discreta de reescribir el estado de los resultados de monitoreo de los puntos 2 y 3 que nos interesan indica que el sistema de archivos se puede ubicar en el ramdrive. Línea agregada a /etc/fstab
tmpfs /ram_drive tmpfs defaults,nodev,size=64K 0 0
Se ha creado una carpeta de scripts con scripts en la raíz: desmontar-montar el token usb_restart.sh
usbip unbind -b 1-2
sleep 2
usbip bind -b 1-2
sleep 2
usbip attach --remote=localhost --busid=1-2
sleep 2
usbip detach --port=00
obtener una lista de dispositivos activos usblist_id.sh
usbip list -r 127.0.0.1 | grep ':' |awk -F ":" '{print $1}'| sed s/' '//g | grep -v "^$" > /ram_drive/usb_id.txt
obtener una lista de IP activas (con modificación posterior para mostrar las ID de usuario) usbip_client_ip.sh
netstat -an | grep :3240 | grep ESTABLISHED|awk '{print $5}'|cut -f1 -d":" > /ram_drive/usb_ip_cli.txt
el crontab en sí se ve así:
*/5 * * * * /!script/usb_restart.sh > /dev/null 2>&1
* * * * * ( sleep 30 ; /!script/usblist_id.sh > /dev/null)
* * * * * (sleep 10 ; /!script/usbip_client_ip.sh > /dev/hull)
Entonces tenemos: cada 5 minutos puede conectarse un nuevo usuario, independientemente de quién trabajó con el token. La carpeta /ramdrive está conectada al servidor http mediante un enlace simbólico, en el que se guardan 2 archivos de texto que muestran el estado del servidor usbip.
Parte siguiente: “Feo en envoltorio”
Opción II. Para complacer un poco al usuario con al menos alguna interfaz menos intimidante. Desconcertado por el hecho de que los usuarios tienen diferentes versiones de Windows con diferentes marcos, diferentes derechos, un enfoque menos problemático que
La interfaz y el software resolvieron las siguientes tareas:
- Muestra si el token está actualmente ocupado.
- En el primer lanzamiento, la configuración inicial implica generar los archivos bat "correctos" que implementan el inicio y la interrupción de una sesión con el servidor token. En inicios posteriores, implementación del modo “servicio” mediante contraseña.
- Comprueba la presencia de una conexión con el servidor, como resultado de lo cual sondea si está ocupado o muestra mensajes sobre problemas. Cuando se reanuda la comunicación, el programa comienza a funcionar automáticamente en modo normal.
El trabajo con el servidor WEB se implementa utilizando el complemento fphttpclient adicional.
También hay más consideraciones sobre el tema del artículo, así como un entusiasmo inicial parcial por el producto VirtualHere con sus características...
Fuente: habr.com