Zbog promjena u zakonodavstvu koje se odnose na usluge povjerenja („O elektronskim uslugama povjerenja“ Ukrajina), kompanija ima potrebu za nekoliko odjela za rad s ključevima koji se nalaze na tokenima (trenutno je još uvijek otvoreno pitanje broja hardverskih ključeva ).
Kao alat sa najnižim troškovima (besplatan), izbor je odmah pao . Server na Ubuntu 18.04 zaradio je zahvaljujući publikaciji i uspješno testiran na nekoliko fleš diskova (zbog nedostatka tokena u to vrijeme). U tom trenutku nisu identifikovani nikakvi posebni problemi osim ekskluzivnog vlasništva (rezervacije po korisniku). Jasno je da je za organizovanje pristupa za više korisnika (za početak barem dva), potrebno ih vremenski razdvojiti i naterati da rade redom.
Pitanje je glasilo: Kako učiniti da sve radi za svakoga uz najmanje plesove...
Dio nespretan

I opcija. Nekoliko prečica do bat fajlova, naime
a) Veza sa pristupnim ključem.
b) Namjerno gašenje.
paragraf "б” je kontroverzna, pa je odlučeno da se količina vremena za rad s ključem da za 3 minute.
Posebnost usbip klijenta je u tome što nakon pokretanja ostaje da visi u konzoli, bez prekida sesije konzole, možete zatvoriti vezu „grubo“ sa strane klijenta, ali i sa strane servera.
Evo šta nam je pošlo za rukom:
prvo: veza on.bat
usbip -a 172.16.12.26 4-1
msg * "Подпись/токен недоступны или заняты "drugo: gašenje off.bat
ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /Fne oslanjajući se na svijest korisnika, skripte su objedinjene u token.bat
on.bat | off.batŠta se dešava: svi fajlovi su u istom folderu, pokreću se pomoću datoteke token.bat, ako je veza prekinuta, korisnik odmah ima poruku o nedostupnosti ključa, inače tek nakon 180 pingova. Gornje linije koda mogu biti opremljene sa “@ECHO OFF” i smjerom konzole na “> nul” kako ne bi previše šokirali korisnika, ali nije potrebno pokrenuti testiranje. Prvobitno "trčanje" na USB drajvu pokazalo je da je sve bilo predvidljivo, pouzdano i jasno. A sa strane servera nisu potrebne nikakve manipulacije.

Naravno, kada se radi direktno sa tokenom, sve nije išlo kako se očekivalo: kada se fizički poveže u upravitelju uređaja, token se registruje kao 2 uređaja (WUDF i pametna kartica), a kada je povezan na mrežu, samo kao WUDF (iako ovo je dovoljno da zatražite PIN kod).

Ispostavilo se i da okrutni "taskkill" nije tako ozbiljan, a zatvaranje veze na klijentu je problematično, a čak i ako je uspjelo, ne garantuje mu zatvaranje na serveru.
Nakon što je žrtvovao sve konzole na klijentu, druga skripta je dobila 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 su njegove performanse manje od 50%, pošto je server tvrdoglavo nastavio da smatra vezu otvorenom.
Problemi sa vezom doveli su do razmišljanja o nadogradnji pozadi.
Serverski dio
Šta vam treba:
- Isključite neaktivne korisnike sa usluge.
- Pogledajte ko trenutno koristi (ili još drži) token.
- Pogledajte da li je token povezan sa samim računarom.
Ovi zadaci su riješeni korištenjem crontab i apache servisa. Diskretnost ponovnog pisanja stanja rezultata praćenja tačaka 2 i 3 koje nas zanimaju sugeriše da se sistem datoteka može nalaziti na ram drajvu. Dodata linija u /etc/fstab
tmpfs /ram_drive tmpfs defaults,nodev,size=64K 0 0
Fascikla skripti sa skriptama je kreirana u korijenu: unmount-mount the 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=00dobijanje liste 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 liste aktivnih IP-ova (sa naknadnim preciziranjem za prikaz korisničkih ID-ova) 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/hull)Dakle, imamo: svakih 5 minuta novi korisnik se može povezati, bez obzira na to ko je radio sa tokenom. Fascikla /ramdrive je povezana sa http serverom pomoću simbolične veze, u kojoj su sačuvane 2 tekstualne datoteke koje pokazuju status usbip servera.
Sljedeći dio: "Ružno u omotu"
II opcija. Da malo ugodim korisniku barem nekim manje zastrašujućim sučeljem. Zbunjeni činjenicom da korisnici imaju različite verzije Windowsa sa različitim okvirima, različitim pravima, manje problematičnim pristupom od Nisam ga našao (naravno da sam za C#, ali ne u ovom slučaju). Možete pokrenuti bat fajlove iz interfejsa u pozadini, minimizirano, ali bez odgovarajućeg testiranja, ja sam lično mišljenja: morate vizualizirati da biste prikupili nezadovoljstvo korisnika.

Interfejs i softverski dio su riješili sljedeće zadatke:
- Prikazuje da li je token trenutno zauzet.
- Pri prvom startu, početno podešavanje sa generisanjem „ispravnih“ bat fajlova koji implementiraju pokretanje i prekid sesije sa token serverom. Prilikom narednih pokretanja, implementacija "servisnog" moda po lozinki.
- Provjera veze sa serverom, uslijed čega se provjerava zauzetost ili se prikazuju poruke o problemima. Kada se veza nastavi, program automatski počinje da radi u normalnom režimu.
Rad sa WEB serverom se realizuje uz pomoć dodatne opreme fphttpclient.

tu je i nastavak razmatranja na temu članka, kao i djelomično početno oduševljenje VirtualHere proizvodom sa njegovim karakteristikama...
izvor: www.habr.com
