Nettverksdeling av et kryptografisk token mellom usbip-baserte brukere

I forbindelse med endringer i lovgivningen angående tillitstjenester (“Om elektroniske tillitstjenester” Ukraina), har virksomheten behov for at flere avdelinger jobber med nøkler plassert på tokens (for øyeblikket er spørsmålet om antall maskinvarenøkler fortsatt åpent ).

Som et verktøy med lavest kostnad (gratis), falt valget umiddelbart på usbip. Serveren på Ubintu 18.04 begynte å fungere takket være publiseringen Taming USB/IP og vellykket testet på flere flash-stasjoner (på grunn av mangelen på et token på den tiden). Ingen spesielle problemer utover monopoleierskap (reservasjon for bruker) ble identifisert på det tidspunktet. Det er klart at for å organisere tilgang for flere brukere (minst to, til å begynne med), er det nødvendig å dele tilgangen deres i tid og tvinge dem til å jobbe etter tur.

Spørsmålet var: Hvordan kan jeg gjøre det med minst mulig dansing slik at alt fungerer for alle...

Delen er klønete

Nettverksdeling av et kryptografisk token mellom usbip-baserte brukere
valg 1. Flere snarveier til bat-filer, nemlig
a) Koble til tilgangsnøkkelen.
b) Forsettlig frakobling.

Avsnitt "б» kontroversielt, så det ble besluttet å gi tiden til å jobbe med nøkkelen på 3 minutter.

Det særegne med usbip-klienten er at etter at den er lansert, forblir den hengende i konsollen uten å avbryte konsolløkten, du kan lukke forbindelsen "omtrent" fra klientsiden og også fra serversiden.

Her er det som fungerte bra for oss:

først: tilkobling på.bat

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

andre: avstengning off.bat

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

Uten å stole på brukerens bevissthet, ble skriptene kombinert til token.bat

on.bat | off.bat

Hva skjer: alle filene er i samme mappe, lansert av filen token.bat, hvis tilkoblingen er lukket, mottar brukeren umiddelbart en melding om at nøkkelen er utilgjengelig, i et annet tilfelle, først etter 180 ping. De gitte kodelinjene kan utstyres med "@ECHO OFF" og konsollretningen til "> nul" for ikke å sjokkere brukeren for mye, men det er ikke nødvendig å starte testingen. Den første "kjøringen" på en USB-stasjon viste at alt var forutsigbart, pålitelig og klart. Dessuten kreves det ingen manipulasjoner fra serversiden.

Nettverksdeling av et kryptografisk token mellom usbip-baserte brukere

Når du jobber direkte med tokenet, gikk naturligvis ikke alt som forventet: med en fysisk tilkobling i enhetsbehandlingen blir tokenet registrert som 2 enheter (WUDF og et smartkort), og med en nettverkstilkobling kun som WUDF (selv om dette er nok til å be om en PIN-kode).

Nettverksdeling av et kryptografisk token mellom usbip-baserte brukere

Det viser seg også at den brutale "oppgavekillen" ikke er så alvorlig, og å stenge tilkoblingen på klienten er problematisk, og selv om det var vellykket, garanterer det ikke å stenge den for ham på serveren.

Etter å ha ofret alle konsoller på klienten, tok det andre skriptet 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

selv om effektiviteten er mindre enn 50 %, siden serveren hardnakket fortsatte å vurdere tilkoblingen som åpen.

Problemer med tilkoblingen førte til tanker om å oppgradere serversiden.

Server del

Hva du trenger:

  1. Koble inaktive brukere fra tjenesten.
  2. Se hvem som bruker (eller fortsatt låner) tokenet.
  3. Se om tokenet er koblet til selve datamaskinen.

Disse problemene ble løst ved hjelp av crontab- og apache-tjenestene. Den diskrete naturen ved å omskrive tilstanden til overvåkingsresultatene i punkt 2 og 3 som interesserer oss, indikerer at filsystemet kan lokaliseres på ramstasjonen. Lagt til linje i /etc/fstab

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

En skriptmappe med skript er opprettet i roten: avmontering-montering av 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år en liste over aktive enheter 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

hente en liste over aktive IP-er (med påfølgende endring for å vise bruker-IDer) 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 slik ut:

*/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. minutt kan en ny bruker koble seg til, uavhengig av hvem som jobbet med tokenet. /ramdrive-mappen er koblet til http-serveren ved hjelp av en symlink, der 2 tekstfiler er lagret, som viser statusen til usbip-serveren.

Del neste: «Stygg i en innpakning»

Alternativ II. For å glede brukeren litt med minst et mindre skremmende grensesnitt. Forundret over det faktum at brukere har forskjellige versjoner av Windows med forskjellige rammer, forskjellige rettigheter, en mindre problematisk tilnærming enn Lazarus Jeg fant det ikke (jeg er selvfølgelig for C#, men ikke i dette tilfellet). Du kan kjøre bat-filer fra grensesnittet i bakgrunnen, minimert, men uten skikkelig testing er jeg personlig av den oppfatning: du må visualisere det for å samle brukermisnøye.

Nettverksdeling av et kryptografisk token mellom usbip-baserte brukere

Følgende oppgaver ble løst av grensesnittet og programvaren:

  1. Viser om tokenet er opptatt.
  2. Ved første lansering involverer det første oppsettet å generere de "riktige" bat-filene som implementerer lanseringen og avbruddet av en økt med token-serveren. Ved påfølgende oppstart, implementering av "tjeneste" -modus ved hjelp av et passord.
  3. Kontrollerer tilstedeværelsen av en forbindelse med serveren, som et resultat av at den spør om den er opptatt eller viser meldinger om problemer. Når kommunikasjonen gjenopptas, begynner programmet automatisk å fungere i normal modus.

Arbeid med WEB-serveren implementeres ved hjelp av den ekstra snapin-modulen fphttpclient.


her vil det være en lenke til gjeldende versjon av klienten

det er også ytterligere betraktninger om emnet for artikkelen, samt delvis innledende entusiasme for VirtualHere-produktet med dets funksjoner...

Kilde: www.habr.com

Legg til en kommentar