Krüptograafilise märgi võrgu jagamine usbip-põhiste kasutajate vahel

Seoses usaldusteenuseid puudutavate õigusaktide muudatustega (Ukraina elektrooniliste usaldusteenuste kohta) on ettevõttel vajadus mitme osakonna järele, mis töötaksid žetoonidel asuvate võtmetega (hetkel on riistvaravõtmete arvu küsimus veel lahtine ).

Kõige odavama tööriistana (tasuta) langes valik koheselt usbip. Ubintu 18.04 server alustas tööd tänu väljaandele USB/IP taltsutamine ja edukalt testitud mitmel välkmälupulgal (sel ajal tokeni puudumise tõttu). Sel hetkel ei tuvastatud mingeid erilisi probleeme peale monopoolse omandiõiguse (kasutaja reserveerimine). On selge, et mitme kasutaja (alguses vähemalt kahe) juurdepääsu korraldamiseks on vaja nende ligipääs ajaliselt ära jagada ja sundida neid kordamööda töötama.

Küsimus oli: Kuidas ma saan seda teha kõige vähema tantsuga, et kõik toimiks kõigile...

Osa on kohmakas

Krüptograafilise märgi võrgu jagamine usbip-põhiste kasutajate vahel
valik XNUMX. Mitu otseteed nahkhiirte failidele, nimelt
a) Pääsuvõtme ühendamine.
b) Ühenduse tahtlik katkestamine.

Lõik "б» vastuoluline, mistõttu otsustati võtmega töötamise ajaks anda 3 minutit.

Usbip-kliendi eripära on see, et pärast käivitamist jääb see konsooli rippuma, konsooli seanssi katkestamata saab ühenduse “umbes” sulgeda nii kliendi kui ka serveri poolelt.

Siin on see, mis meie jaoks hästi töötas:

esiteks: ühendus on.bat

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

teine: väljalülitamine off.bat

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

Kasutaja teadvusele lootmata ühendati skriptid üheks märk.nahkhiir

on.bat | off.bat

Mis juhtub: kõik failid on samas kaustas, mille käivitab fail token.bat, kui ühendus katkeb, saab kasutaja kohe teate võtme kättesaamatuse kohta, muul juhul alles pärast 180 pingi. Antud koodiread võib varustada tähisega “@ECHO OFF” ja konsooli suunaga “> nul”, et kasutajat mitte liigselt šokeerida, kuid testima hakata pole vaja. USB-draivi esialgne "töötamine" näitas, et kõik oli etteaimatav, usaldusväärne ja selge. Lisaks pole serveri poolelt mingeid manipuleerimisi vaja.

Krüptograafilise märgi võrgu jagamine usbip-põhiste kasutajate vahel

Otse tokeniga töötades ei läinud loomulikult kõik ootuspäraselt: seadmehalduris oleva füüsilise ühenduse korral registreeritakse token kahe seadmena (WUDF ja kiipkaart) ning võrguühendusega ainult WUDF-ina (ehkki sellest piisab PIN-koodi küsimiseks).

Krüptograafilise märgi võrgu jagamine usbip-põhiste kasutajate vahel

Selgub ka, et jõhker "taskkill" polegi nii ränk ning kliendi peal ühenduse sulgemine on problemaatiline ja isegi kui see õnnestus, ei garanteeri see tema jaoks selle sulgemist serveris.

Olles ohverdanud kõik kliendi konsoolid, võttis teine ​​skript järgmiselt:

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

kuigi selle efektiivsus on alla 50%, kuna server pidas kangekaelselt ühendust avatuks.

Probleemid ühendusega tekitasid mõtteid serveri poole uuendamisest.

Serveri osa

Mida on vaja:

  1. Ühendage mitteaktiivsed kasutajad teenusest lahti.
  2. Vaadake, kes praegu märki kasutab (või laenab).
  3. Vaadake, kas token on arvutiga ühendatud.

Need probleemid lahendati teenuste crontab ja apache abil. Meid huvitava punktide 2 ja 3 jälgimistulemuste oleku ümberkirjutamise diskreetsus näitab, et failisüsteem võib asuda ramdrive'il. Lisati rida faili /etc/fstab

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

Juures on loodud skriptide kaust skriptidega: märgi lahtiühendamine-monteerimine 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

aktiivsete seadmete loendi hankimine 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

aktiivsete IP-de loendi hankimine (koos hilisemate muudatustega kasutaja ID-de kuvamiseks) usbip_client_ip.sh

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

crontab ise näeb välja selline:

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

Nii et meil on: iga 5 minuti järel saab ühenduse luua uus kasutaja, olenemata sellest, kes tokeniga töötas. Kaust /ramdrive on ühendatud http-serveriga sümlingi abil, kuhu on salvestatud 2 tekstifaili, mis näitavad usbip-serveri olekut.

Järgmine osa: "Kole ümbrises"

II variant. Et kasutajale natukenegi meeldida vähemalt mõne vähem hirmutava liidesega. Hämmeldunud asjaolust, et kasutajatel on erinevad Windowsi versioonid erinevate raamistikega, erinevate õigustega, vähem problemaatiline lähenemine kui Lazarus Ma ei leidnud seda (muidugi olen C# poolt, aga mitte antud juhul). Bat faile saate käivitada taustal liidesest, minimeeritult, kuid ilma korraliku testimiseta olen mina isiklikult arvamusel: kasutajate rahulolematuse kogumiseks peate selle visualiseerima.

Krüptograafilise märgi võrgu jagamine usbip-põhiste kasutajate vahel

Liidese ja tarkvara abil lahendati järgmised ülesanded:

  1. Näitab, kas märk on hetkel hõivatud.
  2. Esmakordsel käivitamisel hõlmab esialgne seadistus "õigete" nahkhiirfailide genereerimist, mis käivitavad ja katkestavad seansi tokenserveriga. Järgnevatel käivitamistel "teenindus" režiimi rakendamine parooli abil.
  3. Serveriga ühenduse olemasolu kontrollimine, mille tulemusena küsib see, kas see on hõivatud, või kuvab teateid probleemide kohta. Kui side jätkub, hakkab programm automaatselt tööle tavarežiimis.

Veebiserveriga töötamine toimub täiendava fphttpclient lisandmooduli abil.


siin on link kliendi praegusele versioonile

Samuti on artikli teemal täiendavaid kaalutlusi, samuti osalist esialgset entusiasmi VirtualHere'i toote ja selle funktsioonide vastu...

Allikas: www.habr.com

Lisa kommentaar