U vezi s promjenama u zakonodavstvu u vezi s uslugama povjerenja („O elektroničkim uslugama povjerenja” Ukrajina), poduzeće ima potrebu za nekoliko odjela za rad s ključevima koji se nalaze na tokenima (trenutačno je pitanje broja hardverskih ključeva još uvijek otvoreno) ).
Kao alat s najnižom cijenom (besplatan), izbor je odmah pao
Pitanje je bilo: Kako to učiniti s najmanje plesa tako da sve funkcionira za sve...
Dio je nespretan
opcija 1. Nekoliko prečaca do bat datoteka, naime
a) Spajanje pristupnog ključa.
b) Namjerno prekidanje veze.
Paragraf "б» kontroverzno, pa je odlučeno dati količinu vremena za rad s ključem od 3 minute.
Posebnost usbip klijenta je da nakon pokretanja ostaje visjeti u konzoli, bez prekidanja sesije konzole, vezu možete zatvoriti “grubo” sa strane klijenta, ali i sa strane servera.
Evo što nam je dobro funkcioniralo:
prvo: veza na.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 /F
Bez oslanjanja na svijest korisnika, skripte su kombinirane u žeton.šišmiš
on.bat | off.bat
Što se događa: sve su datoteke u istoj mapi, pokreće ih datoteka token.bat, ako se veza prekine korisnik odmah dobiva poruku o nedostupnosti ključa, u drugom slučaju tek nakon 180 pingova. Gornji redovi koda mogu biti opremljeni s “@ECHO OFF” i smjerom konzole na “> nul” kako ne bi previše šokirali korisnika, ali nije potrebno izvoditi testiranje. Početni "progon" na USB pogonu pokazao je da je sve predvidljivo, pouzdano i jasno. Štoviše, sa strane poslužitelja nisu potrebne nikakve manipulacije.
Naravno, kod izravnog rada s tokenom nije sve išlo kako se očekivalo: kod fizičke veze u upravitelju uređaja token je registriran kao 2 uređaja (WUDF i pametna kartica), a kod mrežne veze samo kao WUDF (iako to je dovoljno za traženje PIN koda).
Također se pokazalo da brutalni "taskkill" nije tako težak, a zatvaranje veze na klijentu je problematično i čak i ako je bilo uspješno, ne jamči ga zatvaranje za njega na poslužitelju.
Žrtvujući sve konzole na klijentu, druga skripta je poprimila 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%, budući da je poslužitelj tvrdoglavo nastavio vezu smatrati otvorenom.
Problemi s vezom doveli su do razmišljanja o nadogradnji poslužiteljske strane.
Serverski dio
Što vam je potrebno:
- Isključite neaktivne korisnike iz usluge.
- Pogledajte tko trenutno koristi (ili još uvijek posuđuje) token.
- Provjerite je li token povezan sa samim računalom.
Ovi problemi su riješeni korištenjem servisa crontab i apache. Diskretna priroda prepisivanja stanja rezultata praćenja točaka 2 i 3 koji nas zanimaju ukazuje na to da se datotečni sustav može nalaziti na ramdriveu. Dodan redak u /etc/fstab
tmpfs /ram_drive tmpfs defaults,nodev,size=64K 0 0
Stvorena je mapa skripti sa skriptama u korijenu: demontaža-montaža 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-ova (s naknadnim izmjenama za prikaz ID-ova 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/hull)
Dakle imamo: svakih 5 minuta novi korisnik se može spojiti, bez obzira na to tko je radio s tokenom. Mapa /ramdrive povezana je s http poslužiteljem pomoću simboličke veze u kojoj su spremljene 2 tekstualne datoteke koje prikazuju status usbip poslužitelja.
Sljedeći dio: “Ružno u omotu”
Opcija II. Da malo ugodi korisniku s barem nekim manje zastrašujućim sučeljem. Zbunjen činjenicom da korisnici imaju različite verzije sustava Windows s različitim okvirima, različitim pravima, manje problematičnim pristupom od
Sučeljem i softverom riješeni su sljedeći zadaci:
- Prikazuje je li token trenutno zauzet.
- Pri prvom pokretanju, početno postavljanje uključuje generiranje "ispravnih" bat datoteka koje provode pokretanje i prekid sesije s poslužiteljem tokena. Pri sljedećim pokretanjima, implementacija "servisnog" načina rada pomoću lozinke.
- Provjerava prisutnost veze s poslužiteljem, zbog čega provjerava je li zauzet ili prikazuje poruke o problemima. Kada se komunikacija nastavi, program automatski počinje raditi u normalnom načinu rada.
Rad s WEB poslužiteljem implementiran je pomoću dodatnog fphttpclient snap-ina.
postoje i dodatna razmatranja o temi članka, kao i djelomično početno oduševljenje proizvodom VirtualHere sa svojim značajkama...
Izvor: www.habr.com