Fælles netværksbrug af kryptografiske tokens for brugerne baseret på usbip.

I forbindelse med ændringerne i lovgivningen om tillidstjenester ("Om elektroniske tillidstjenester" i Ukraine) er der opstået et behov for, at flere afdelinger arbejder med nøgler, der er placeret på tokens (i øjeblikket er spørgsmålet om antallet af hardware-nøgler stadig åbent).

Som et værktøj med de laveste omkostninger (gratis) faldt valget straks på usbip. Serveren på Ubintu 18.04 fungerede takket være en publikation Vi tæmmer USB/IP. og blev med succes testet på flere USB-nøgler (på det tidspunkt var der ikke mulighed for at bruge en token). Ingen særlige problemer, bortset fra monopolret (reservation til brugeren) blev opdaget på det tidspunkt. For at organisere adgang for flere brugere (mindst to, i starten) er det nødvendigt at dele deres adgang i tid og få dem til at arbejde skiftevis.

Spørgsmålet opstod: Hvordan kan man med færrest mulige omkostninger sikre, at alle har det til at fungere ...

Den primitive del

Fælles netværksbrug af kryptografiske tokens for brugerne baseret på usbip.
Variant 1. Flere genveje til bat-filer, nemlig
a) Tilslutning af adgangsnøglen.
b) Bevidst frakobling.

Punkt "b" er tvivlsomt, derfor blev det besluttet at give en arbejdstid på 3 minutter med nøglen.

En særegenhed ved usbip-klienten er, at efter lanceringen hænger den i konsollen; forbindelsen kan "groft" lukkes fra både klient- og serversiden uden at afbryde konsolsessionen.

Her er hvad der fungerer normalt for os:

første: tilslutning on.bat

usbip -a 172.16.12.26 4-1
msg * "Nøgle/token ikke tilgængelig eller optaget "

anden: frakobling off.bat

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

uden at stole på brugerens opmærksomhed blev scriptsene samlet i token.bat

on.bat | off.bat

Hvad får vi: alle filer er i én mappe, lancering med filen token.bat; hvis forbindelsen lukkes af brugeren, vises der straks en meddelelse om, at nøglen ikke er tilgængelig, i et andet tilfælde først efter 180 pings. De givne kodestykker kan udstyres med "@ECHO OFF" og retningen af konsollen til "> nul" for ikke at chokere brugeren for meget, men til teststart er det ikke nødvendigt. Den første "køring" på USB-nøglen viste, at alt er forudsigeligt-pålideligt-præcist. Desuden kræver serveren ingen manipulationshandlinger.

Fælles netværksbrug af kryptografiske tokens for brugerne baseret på usbip.

Det viste sig, at når der arbejdes direkte med tokenet, gik alt ikke som forventet: ved fysisk tilslutning i enhedshåndteringen registreres tokenet som 2 enheder (WUDF og smartkort), mens det ved netværksforbindelse kun registreres som WUDF (selvom det er tilstrækkeligt til at anmode om PIN-koden).

Fælles netværksbrug af kryptografiske tokens for brugerne baseret på usbip.

Det viste sig også, at det brutale 'taskkill' ikke er så strengt, og lukning af forbindelsen på klienten er problematisk, og selv hvis det lykkes, garanterer det ikke, at den lukkes på serveren.

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

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 dets effektivitet er under 50%, da serveren insisterede på at betragte forbindelsen som ikke lukket.

Problemer med forbindelsen førte til overvejelser om opgradering på serversiden.

Serverdel

Hvad der er nødvendigt:

  1. Frakobling af inaktive brugere fra tjenesten.
  2. At se, hvem der bruger (eller stadig optager) tokenet.
  3. At se, om tokenet er tilsluttet selve computeren.

Disse opgaver blev besluttet at løse ved hjælp af crontab- og apache-tjenester. Diskrethed i overvågningens resultatgenoprettelse for punkterne 2 og 3 viser, at filsystemet kan placeres på en ramdrive. Strengen blev tilføjet til /etc/fstab

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

I roden blev der oprettet en mappe kaldet script med scripts: afmontering-montage 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

hentning af listen 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

hentning af listen over aktive IP'er (med efterfølgende tilføjelse med visning af brugeridentifikatorer) usbip_client_ip.sh

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

Crontab ser således 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/null)

Så vi har: en ny bruger kan tilsluttes hvert 5. minut, uanset hvem der arbejdede med tokenet. Til HTTP-serveren er mappen /ramdrive tilsluttet via en symlink, hvor 2 tekstfiler gemmes, der viser status for serveren usbip.

Næste del: 'Ubehageligt indpakning'

II variant. At lidt glæde brugeren med en mindre skræmmende grænseflade. Da brugerne har forskellige versioner af Windows med forskellige rammer og rettigheder, er der ikke nogen mindre problematisk tilgang end Lazarus , som jeg ikke fandt (jeg er helt klart for C#, men ikke i dette tilfælde). Man kan køre bat-filer fra grænsefladen, også i baggrunden og minimere dem, men uden ordentlig testning mener jeg personligt, at man skal visualisere for at indsamle brugernes utilfredshed.

Fælles netværksbrug af kryptografiske tokens for brugerne baseret på usbip.

Følgende opgaver blev løst med grænsefladen og den softwaremæssige del:

  1. Visning af, om tokenet er optaget lige nu.
  2. Ved første opstart implementeres den indledende konfiguration med generering af de "korrekte" bat-filer, der udfører starten og afslutningen af sessionen med serverens token. Ved efterfølgende opstarter implementeres "service"-tilstand med kodeord.
  3. Kontrol af forbindelsen til serveren, hvorpå spørgsmålet om optagelse foretages, eller der vises beskeder om problemer. Når forbindelsen genoptages, begynder programmet automatisk at fungere i normal tilstand.

Arbejdet med WEB-serveren er implementeret ved hjælp af det ekstra værktøj fphttpclient.

Afspil video

her vil være Et link til den nuværende version af klienten

der er også fortsættelse af tankerne om emnet i artiklen, samt delvis indledende begejstring for produktet VirtualHere med dets særlige funktioner…

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster