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 . Poslužitelj na Ubintu 18.04 je počeo raditi zahvaljujući objavi 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

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 /Fne 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.

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).

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 > nuliako 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:
- Isključiti neaktivne korisnike iz servisa.
- Vidjeti tko trenutno koristi (ili još uvijek zauzima) token.
- 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=00dobivanje 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.txtdobivanje 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.txtsam 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 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.

Sučeljem i programski dio riješili su se sljedeći zadaci:
- Prikaz kako je token u ovom trenutku zauzet.
- 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.
- 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.

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
