Netværksdeling af et kryptografisk token mellem usbip-baserede brugere

I forbindelse med ændringer i lovgivningen vedrørende tillidstjenester (“Om elektroniske tillidstjenester” Ukraine) har virksomheden behov for, at flere afdelinger arbejder med nøgler placeret på tokens (i øjeblikket er spørgsmålet om antallet af hardwarenøgler stadig åbent ).

Som et værktøj med den laveste pris (gratis) faldt valget straks på usbip. Serveren på Ubintu 18.04 begyndte at fungere takket være udgivelsen Taming USB/IP og testet med succes på flere flashdrev (på grund af manglen på et token på det tidspunkt). Der blev ikke identificeret særlige problemer udover monopolejerskab (forbehold for brugeren) på det tidspunkt. Det er klart, at for at organisere adgang for flere brugere (mindst to, til at begynde med), er det nødvendigt at opdele deres adgang i tid og tvinge dem til at arbejde på skift.

Spørgsmålet var: Hvordan kan jeg gøre det med mindst mulig dans, så alt fungerer for alle...

Delen er klodset

Netværksdeling af et kryptografisk token mellem usbip-baserede brugere
Mulighed XNUMX. Flere genveje til bat-filer, nemlig
a) Tilslutning af adgangsnøglen.
b) Forsætlig afbrydelse.

afsnit "б» kontroversielt, så det blev besluttet at give den tid til at arbejde med nøglen på 3 minutter.

Det særlige ved usbip-klienten er, at efter den er startet, forbliver den hængende i konsollen; uden at afbryde konsolsessionen kan du lukke forbindelsen "omtrent" fra klientsiden og også fra serversiden.

Her er hvad der fungerede fint for os:

først: forbindelse på.bat

usbip -a 172.16.12.26 4-1
msg * "Подпись/токен недоступны или заняты "

andet: nedlukning off.bat

ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /F

Uden at stole på brugerens bevidsthed blev scripts kombineret til token.bat

on.bat | off.bat

Hvad sker der: alle filerne er i den samme mappe, lanceret af filen token.bat, hvis forbindelsen lukkes, modtager brugeren straks en besked om, at nøglen er utilgængelig, i et andet tilfælde, først efter 180 ping. Ovenstående kodelinjer kan udstyres med "@ECHO OFF" og konsolretningen til "> nul" for ikke at chokere brugeren for meget, men det er ikke nødvendigt at køre test. Den indledende "kørsel" på et USB-drev viste, at alt var forudsigeligt, pålideligt og klart. Desuden kræves ingen manipulationer fra serversiden.

Netværksdeling af et kryptografisk token mellem usbip-baserede brugere

Når man arbejdede direkte med tokenet, gik alt naturligvis ikke som forventet: med en fysisk forbindelse i enhedshåndteringen registreres tokenet som 2 enheder (WUDF og et smart card), og med en netværksforbindelse kun som WUDF (selvom dette er nok til at anmode om en PIN-kode).

Netværksdeling af et kryptografisk token mellem usbip-baserede brugere

Det viser sig også, at det brutale "taskkill" ikke er så alvorligt, og at lukke forbindelsen på klienten er problematisk, og selvom det lykkedes, garanterer det ikke, at han lukker den på serveren.

Efter at have ofret alle konsoller på klienten, tog det andet script formen:

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

selvom dens effektivitet er mindre end 50%, da serveren stædigt fortsatte med at betragte forbindelsen som åben.

Problemer med forbindelsen førte til tanker om at opgradere serversiden.

Server del

Hvad du har brug for:

  1. Afbryd forbindelsen til inaktive brugere fra tjenesten.
  2. Se, hvem der i øjeblikket bruger (eller stadig låner) tokenet.
  3. Se om tokenet er forbundet til selve computeren.

Disse problemer blev løst ved hjælp af crontab- og apache-tjenesterne. Den diskrete karakter af omskrivning af tilstanden af ​​overvågningsresultaterne i punkt 2 og 3, som interesserer os, indikerer, at filsystemet kan findes på ramdrevet. Tilføjet linje til /etc/fstab

tmpfs   /ram_drive      tmpfs   defaults,nodev,size=64K         0       0

En scriptmappe med scripts er blevet oprettet i roden: afmontering-montering af 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

få en liste over aktive enheder 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

opnåelse af en liste over aktive IP'er (med efterfølgende ændring for at vise bruger-id'er) usbip_client_ip.sh

netstat -an | grep :3240 | grep ESTABLISHED|awk '{print $5}'|cut -f1 -d":" > /ram_drive/usb_ip_cli.txt

selve crontab ser sådan ud:

*/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)

Så vi har: hvert 5. minut kan en ny bruger oprette forbindelse, uanset hvem der arbejdede med tokenet. /ramdrive-mappen er forbundet til http-serveren ved hjælp af et symlink, hvori 2 tekstfiler er gemt, som viser status for usbip-serveren.

Del næste: "Gryst i en indpakning"

Mulighed II. For at glæde brugeren lidt med i det mindste en mindre skræmmende grænseflade. Forundret over det faktum, at brugere har forskellige versioner af Windows med forskellige rammer, forskellige rettigheder, en mindre problematisk tilgang end Lazarus Jeg fandt det ikke (jeg er selvfølgelig til C#, men ikke i dette tilfælde). Du kan starte bat-filer fra grænsefladen i baggrunden, minimeret, men uden ordentlig test er jeg personligt af den opfattelse: du skal visualisere det for at indsamle brugernes utilfredshed.

Netværksdeling af et kryptografisk token mellem usbip-baserede brugere

Følgende opgaver blev løst af grænsefladen og softwaren:

  1. Viser, om tokenet i øjeblikket er optaget.
  2. Ved den første lancering involverer den indledende opsætning generering af de "korrekte" bat-filer, der implementerer lanceringen og afbrydelsen af ​​en session med token-serveren. Ved efterfølgende opstart, implementering af "service" -tilstand ved hjælp af en adgangskode.
  3. Kontrollerer tilstedeværelsen af ​​en forbindelse med serveren, som et resultat af hvilken den spørger, om den er optaget eller viser meddelelser om problemer. Når kommunikationen genoptages, begynder programmet automatisk at fungere i normal tilstand.

Arbejdet med WEB-serveren implementeres ved hjælp af den ekstra fphttpclient-snap-in.


her vil være et link til den aktuelle version af klienten

der er også yderligere overvejelser om emnet for artiklen, såvel som delvis indledende begejstring for VirtualHere-produktet med dets funktioner...

Kilde: www.habr.com

Tilføj en kommentar