Zajedničko umreženo korištenje kriptografskog tokena korisnicima na temelju usbip

S obzirom na promjene u zakonodavstvu vezanim uz povjerljive usluge ("O elektroničkim povjerljivim uslugama" Ukrajina), pojavila se potreba da nekoliko odjela koristi ključeve smještene na tokenima (trenutno je pitanje broja hardverskih ključeva još otvoreno).

Kao najisplativiji alat (besplatno) odmah je odabran usbip. Poslužitelj na Ubintu 18.04 je počeo raditi zahvaljujući objavi Ukroćujemo USB/IP i uspješno je testiran na nekoliko USB flash memorija (iz nedostatka tokena u to vrijeme). Nisu otkriveni nikakvi posebni problemi, osim monopolskog vlasništva (rezerviranja za korisnika) u to vrijeme. Jasno je da za organizaciju pristupa više korisnika (barem dvojici, za početak) treba podijeliti im pristup vremenski i natjerati ih da rade naizmjenično.

Pojavio se pitanje: Kako s najmanje napora osigurati da svima sve radi…

Djelomično hack

Zajedničko umreženo korištenje kriptografskog tokena korisnicima na temelju usbip
Opcija 1. Nekoliko prečaca do bat datoteka, a to su
a) Povezivanje pristupnog ključa.
b) Svjesno isključivanje.

Točka "b" je sporna, stoga je odlučeno dati vrijeme za rad s ključem od 3 minuta.

Posebnost usbip klijenta je ta da nakon pokretanja ostaje aktivan u konzoli, bez prekidanja konzolne sesije, povezanost se može "grubo" prekinuti s strane klijenta, a i s strane poslužitelja.

Evo što nam je dobro uspjelo:

prvo: povezivanje on.bat

usbip -a 172.16.12.26 4-1
msg * "Potpis/token nije dostupan ili je zauzet"

drugo: isključivanje off.bat

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

ne oslanjajući se na savjesnost korisnika, skripte su spojene u token.bat

on.bat | off.bat

Što se događa: sve datoteke su u istom mapi, pokretanje datotekom token.bat, ako je veza prekinuta kod korisnika odmah je poruka o nedostupnosti ključa, u drugom slučaju, samo nakon 180 pinga. Prikazane linije koda mogu se opremiti "@ECHO OFF" i preusmjerenjem konzole u "> nul" kako ne bi previše šokirale korisnika, ali za testiranje pokretanje nije obavezno. Prvi "probni" test na USB memoriji pokazao je da je sve predvidljivo-pouzdano-precizno. Uz to, s strane poslužitelja nisu potrebne nikakve manipulacije.

Zajedničko umreženo korištenje kriptografskog tokena korisnicima na temelju usbip

Naravno, prilikom rada direktno s tokenom, sve nije išlo kako se očekivalo: pri fizičkom povezivanju u upravitelju uređaja, token se registrira kao 2 uređaja (WUDF i pametna kartica), dok se mrežno prikazuje samo kao WUDF (iako je za unos PIN-a to dovoljno).

Zajedničko umreženo korištenje kriptografskog tokena korisnicima na temelju usbip

Također se ispostavilo da nemilosrdni „taskkill“ nije toliko strog, i zatvaranje veze na klijentu je problematično, a čak i ako to uspije, ne garantira zatvaranje na serveru.

Žrtvovati sve konzole na klijentu, drugi skript je poprimio oblik:

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

iako je njegova učinkovitost manja od 50%, pošto je server tvrdoglavo nastavio smatrati vezu otvorenom.

Problemi s povezivanjem doveli su do razmišljanja o modernizaciji na serverskoj strani.

Serverska komponenta

Što je potrebno:

  1. Isključiti neaktivne korisnike iz servisa.
  2. Vidjeti tko trenutno koristi (ili još uvijek zauzima) token.
  3. Vidjeti je li token povezan s računalom.

Ova pitanja odlučeno je riješiti putem crontab i apache servisa. Diskretnost ponovnog zapisivanja stanja rezultata monitoringa za točne točke 2 i 3 ukazuje na to da se datotečni sustav može smjestiti na ramdrive. U /etc/fstab dodan je redak

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

U korijenu je stvorena mapa script s skriptama: odspajanje-povezivanje tokena 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

dobivanje popisa aktivnih uređaja 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

dobivanje popisa aktivnih IP adresa (uz daljnje dorade s prikazom identifikatora korisnika) usbip_client_ip.sh

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

sam crontab izgleda ovako:

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

Dakle, imamo: svaki 5 minuta se može spojiti novi korisnik, neovisno o tome tko je radio s tokenom. Do http servera putem simboličke veze povezana je mapa /ramdrive u kojoj se čuvaju 2 tekstna datoteka koja prikazuje stanje servera usbip.

Sljedeći dio: „Nešto ružno u ambalaži“

II opcija. Mali užitak korisnika s malo manje zastrašujućim sučeljem. Zabrinut zbog različitih verzija Windowsa s različitim okvirima i pravima, manje problematičan pristup od Lazarus nisam pronašao (naravno, preferiram C#, ali ne u ovom slučaju). Možete pokretati bat datoteke iz sučelja i u pozadini, smanjene, ali bez odgovarajućeg ispitivanja, osobno se držim mišljenja: treba vizualizirati kako bi se prikupila korisnička nezadovoljstva.

Zajedničko umreženo korištenje kriptografskog tokena korisnicima na temelju usbip

Sučeljem i programski dio riješili su se sljedeći zadaci:

  1. Prikaz kako je token u ovom trenutku zauzet.
  2. Pri prvom pokretanju prva konfiguracija s generiranjem „ispravnih“ bat datoteka koje realiziraju pokretanje i prekid rada s serverom tokena. Pri kasnijim pokretanjima implementacija „servisnog“ načina uz lozinku.
  3. Provjera veze s poslužiteljem, na temelju čega se ispituje njegova zauzetost ili se prikazuje poruka o problemima. Pri ponovnom uspostavljanju veze program automatski počinje raditi u standardnom režimu.

Rad s WEB poslužiteljem realiziran je sredstvima dodatnog alata fphttpclient.

Pogledajte video

ovdje će biti Link na trenutnu verziju klijenta

ima također i nastavak razmišljanja o predmetu članka, kao i djelomično prvobitno oduševljenje proizvodom VirtualHere i njegovim karakteristikama…

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster