Sieťové zdieľanie kryptografického tokenu medzi používateľmi založenými na usbip

V súvislosti so zmenami v legislatíve v oblasti dôveryhodných služieb („O elektronických dôveryhodných službách“ Ukrajina) podnik potrebuje, aby niekoľko oddelení pracovalo s kľúčmi umiestnenými na tokenoch (v súčasnosti je stále otvorená otázka počtu hardvérových kľúčov ).

Ako nástroj s najnižšími nákladmi (zadarmo) voľba okamžite padla usbip. Server na Ubintu 18.04 začal fungovať vďaka zverejneniu Skrotenie USB/IP a úspešne testované na niekoľkých flash diskoch (kvôli tomu, že v tom čase chýbal token). V tom čase neboli identifikované žiadne osobitné problémy okrem monopolného vlastníctva (rezervácia pre používateľa). Je jasné, že na organizovanie prístupu pre viacerých používateľov (na začiatok aspoň dvoch), je potrebné ich prístup časovo rozdeliť a prinútiť ich pracovať striedavo.

Otázka znela: Ako to urobiť s čo najmenším množstvom tanca, aby všetko fungovalo pre všetkých...

Časť je nemotorná

Sieťové zdieľanie kryptografického tokenu medzi používateľmi založenými na usbip
možnosť XNUMX. Niekoľko skratiek k súborom bat, menovite
a) Pripojenie prístupového kľúča.
b) Úmyselné odpojenie.

Odstavec "б» kontroverzné, preto sa rozhodlo dať čas na prácu s kľúčom 3 minúty.

Zvláštnosťou klienta usbip je, že po spustení zostáva visieť v konzole, bez prerušenia relácie konzoly môžete spojenie „približne“ ukončiť zo strany klienta aj zo strany servera.

Tu je to, čo pre nás fungovalo dobre:

prvé: spojenie on.bat

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

druhá: vypnutie off.bat

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

Bez toho, aby sme sa spoliehali na vedomie používateľa, boli skripty spojené do token.bat

on.bat | off.bat

Čo sa stane: všetky súbory sú v rovnakom priečinku, spúšťanom súborom token.bat, ak sa spojenie uzavrie, používateľ okamžite dostane správu o nedostupnosti kľúča, v inom prípade až po 180 pingoch. Vyššie uvedené riadky kódu môžu byť vybavené „@ECHO OFF“ a nasmerovaním konzoly na „> nul“, aby používateľa príliš nešokovali, ale nie je potrebné spustiť testovanie. Počiatočný „beh“ na jednotke USB ukázal, že všetko bolo predvídateľné, spoľahlivé a jasné. Okrem toho nie sú potrebné žiadne manipulácie zo strany servera.

Sieťové zdieľanie kryptografického tokenu medzi používateľmi založenými na usbip

Pri priamej práci s tokenom samozrejme nešlo všetko podľa predstáv: pri fyzickom pripojení v správcovi zariadení je token zaregistrovaný ako 2 zariadenia (WUDF a smart karta), pri sieťovom pripojení len ako WUDF (aj keď to stačí na vyžiadanie PIN kódu).

Sieťové zdieľanie kryptografického tokenu medzi používateľmi založenými na usbip

Ukazuje sa tiež, že brutálna „taskkill“ nie je taká vážna a zatvorenie spojenia na klientovi je problematické a ak aj bolo úspešné, nezaručuje mu to zatvorenie na serveri.

Po obetovaní všetkých konzol na klientovi dostal druhý skript podobu:

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

aj keď jeho účinnosť je nižšia ako 50%, pretože server tvrdohlavo naďalej považoval pripojenie za otvorené.

Problémy s pripojením viedli k úvahám o aktualizácii servera.

Serverová časť

Čo budete potrebovať:

  1. Odpojte neaktívnych používateľov zo služby.
  2. Pozrite sa, kto práve používa (alebo si stále požičiava) token.
  3. Skontrolujte, či je token pripojený k samotnému počítaču.

Tieto problémy boli vyriešené pomocou služieb crontab a apache. Diskrétny charakter prepisovania stavu výsledkov monitorovania bodov 2 a 3, ktorý nás zaujíma, naznačuje, že súborový systém môže byť umiestnený na ramdrive. Pridaný riadok do /etc/fstab

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

V koreňovom adresári bol vytvorený priečinok skriptov so skriptami: odpojenie-pripojenie tokenu 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

získanie zoznamu aktívnych zariadení 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

získanie zoznamu aktívnych adries IP (s následnou úpravou na zobrazenie ID používateľov) usbip_client_ip.sh

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

samotný crontab vyzerá takto:

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

Takže máme: každých 5 minút sa môže pripojiť nový používateľ bez ohľadu na to, kto s tokenom pracoval. Priečinok /ramdrive je pripojený k serveru http pomocou symbolického odkazu, v ktorom sú uložené 2 textové súbory zobrazujúce stav servera usbip.

Ďalšia časť: „Škaredá v obale“

Možnosť II. Trochu potešiť používateľa aspoň nejakým menej zastrašujúcim rozhraním. Zmätený tým, že používatelia majú rôzne verzie Windowsu s rôznymi frameworkami, inými právami, menej problematickým prístupom ako Lazar Nenašiel som to (samozrejme som za C#, ale nie v tomto prípade). Súbory bat môžete spúšťať z rozhrania na pozadí, minimalizované, ale bez riadneho testovania, osobne zastávam názor: musíte ho vizualizovať, aby ste zhromaždili nespokojnosť používateľov.

Sieťové zdieľanie kryptografického tokenu medzi používateľmi založenými na usbip

Rozhraním a softvérom boli vyriešené nasledujúce úlohy:

  1. Zobrazuje, či je token momentálne zaneprázdnený.
  2. Pri prvom spustení počiatočné nastavenie zahŕňa vygenerovanie „správnych“ bat súborov, ktoré implementujú spustenie a prerušenie relácie s tokenovým serverom. Pri následných štartoch implementácia „servisného“ režimu pomocou hesla.
  3. Kontrola prítomnosti spojenia so serverom, v dôsledku čoho sa pýta, či je zaneprázdnený alebo zobrazuje správy o problémoch. Po obnovení komunikácie program automaticky začne pracovať v normálnom režime.

Práca s WEB serverom je implementovaná pomocou dodatočného modulu fphttpclient.


tu bude odkaz na aktuálnu verziu klienta

sú tu aj ďalšie úvahy k téme článku, ako aj čiastočné prvotné nadšenie z produktu VirtualHere s jeho funkciami...

Zdroj: hab.com

Pridať komentár