Ühise võrgu kasutamine krüptograafilise tokeniga kasutajate poolt usbip baasil

Seoses seadusandluse muutmisega usaldusväärsete teenuste osas ("Elektrooniliste usaldusväärsete teenuste seadus" Ukrainas) on ettevõttes tekkinud vajadus mitmete osakondade jaoks töötada võtmetega, mis asuvad tokenites (praegu on küsimus füüsiliste võtmete arvu osas veel avatud).

Kuna madalaimad kulud (tasuta) tõid kohe valiku usbip. Server Ubintu 18.04-is hakkas töötama tänu avaldamisele Taltsutame USB/IP ja on edukalt testitud mitmete mälupulkade peal (sel hetkel polnud tokenit). Ükski märkimisväärne probleem, välja arvatud monopolne valdamine (kasutaja broneerimine), pole sel hetkel ilmnenud. Selge, et juurdepääsu korraldamiseks mitmele kasutajale (vähemalt kahele, alguses) on vajalik nende juurdepääsu jagamine ajaliselt ja sundimine töötama kordamööda.

Küsimus tekkis: Kuidas kõige vähem vaeva näha, et kõigil kõik töötaks…

Jüri variant

Ühise võrgu kasutamine krüptograafilise tokeniga kasutajate poolt usbip baasil
Esimene variant.Mõned otseteed bat-failidele, nimelt
a) Juurdepääsuvõtme ühendamine.
b) Teadlik väljalülitamine.

Punkt "b" on vaieldav, seetõttu otsustati anda võtme kasutamiseks aega 3 minutit.

Usbip kliendi eripära on see, et pärast selle käivitamist jääb see konsooli rippuma, ilma, et konsooli seanssi katkestades saaks ühenduse "jämedalt" katkestada kasutaja või serveri poolt.

Siin on see, mis meil korralikult töötas:

esimene: ühendamine on.bat

usbip -a 172.16.12.26 4-1
msg * "Allkiri/token on puudulik või hõivatud "

teine: väljalülitamine off.bat

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

Kasutaja teadlikkuse peale lootes, skriptid ühendati token.bat

on.bat | off.bat

Mis välja tuleb: kõik failid on ühes kaustas, käivitades faili token.bat, kui ühendus on kasutaja poolt katkestatud, saadetakse kohe teade võtme kättesaamatuse kohta; muudel juhtudel alles pärast 180 pingut. Tsiteeritud koodiread saab varustada "@ECHO OFF" ja suunata konsool "> nul" suunaga, et mitte väga šokeerida kasutajat, kuid testimiseks pole see vajalik. Esimene "proov" USB-mälupulgal näitas, et kõik on ettearvatav-usaldusväärne-selge. Ning serveri poolelt ei ole mingeid manipulatsioone vajalikud.

Ühise võrgu kasutamine krüptograafilise tokeniga kasutajate poolt usbip baasil

Muidugi, kui töötada otse tokeniga, läks kõik mitte nii, nagu oodati: füüsilise ühenduse korral seadmehalduses registreeritakse token kahena (WUDF ja nutikaart), kuid võrguühenduse korral ainult kui WUDF (kuigi PIN-koodi taotlemiseks on seda piisavalt).

Ühise võrgu kasutamine krüptograafilise tokeniga kasutajate poolt usbip baasil

Tuli välja, et karm „taskkill” ei ole üldse nii ranged ning ühenduse lõpetamine kliendil on probleemne ja isegi kui see õnnestub, ei garanteeri see, et see serveris lõpetatakse.

Loovutades kõik konsoolid kliendilt, sai teine skript järgmise kuju:

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 vähem kui 50%, kuna server püsivalt arvas, et ühendus ei ole lõpetatud.

Probleemid ühendusega tekitasid mõtteid serveriosa uuendamisest.

Serveri osa

Mida on vaja:

  1. Eemalda mitteaktiivsed kasutajad teenusest.
  2. Näha, kes praegu kasutab (või on veel hõivatud) tokenit.
  3. Näha, kas token on arvuti külge ühendatud.

Nende ülesannete lahendamine otsustati kasutada crontab ja apache teenuseid. Koormuse suurenemise jälgimise tulemuste 2. ja 3. punkti seisundite vahetamise diskreetne iseloom näitab, et failisüsteemi saab paigutada ramdrive'i. /etc/fstab on lisatud rida

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

Juurekausta on loodud script kaust skriptidega: usb_restart.sh tokeni desaktiveerimine-aktiveerimine

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

aktiveeritud seadmete loendi saamine 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

aktiveeritud IP-aadresside loendi saamine (hilisemate täiustustega kasutajaidentifikaatorite kuvamiseks) usbip_client_ip.sh

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

ise crontab 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/null)

Nii et meil on: iga 5 minuti järel saab ühenduda uus kasutaja, sõltumata sellest, kes tokeniga töötas. HTTP-serveriga on sümboolse lingina ühendatud kaust /ramdrive, milles hoitakse 2 tekstifaili, mis näitavad serveri usbip olekut.

Järgnev osa: „Inetu pakendis”

II variant. Veidi rõõmustada kasutajat mingisuguse vähem hirmutava liidese abil. Mõeldes sellele, et kasutajatel on erinevad Windowsi versioonid koos erinevate raamistikudega ja erinevate õigustega, ei leidnud ma vähem problemaatilist lähenemist kui Lazarus ma ei leidnud (ma olen C# poolt, aga mitte sel juhul). Bat-failide käivitamine liidesest on võimalik ka taustal, minimeeritud, kuid ilma korraliku katsetamiseta, isiklikult arvan, et parem on visualiseerida kasutajate rahulolematuse kogumiseks.

Ühise võrgu kasutamine krüptograafilise tokeniga kasutajate poolt usbip baasil

Liidese ja tarkvarasaidi kaudu lahendati järgmised ülesanded:

  1. Näidata, kas token on hetkel hõivatud.
  2. Esimesel käivitamisel toimub algne seadistus, genereerides "õigeid" bat-faile, mis teostavad sessioonide käivitamise ja katkestamise tokeni serveriga. Edasistes käivitustes реализatsioon 'teenuserežiimis' parooli põhjal.
  3. Kontrollitakse serveriga ühenduse olemasolu, mille tulemuste põhjal küsitakse serverit selle hõivatuse kohta või väljastatakse teated probleemidest. Ühenduse taastumisel hakkab programm automaatselt tööle tavarežiimis.

Tööd tehakse veebiserveriga, kasutades lisamoodulit fphttpclient.

Mängi videot

siin on link praegusele kliendi versioonile

on olemas ka jätk mõtetele artikli teemal, nagu ka osaline algne entusiasmi toode VirtualHere omaduste üle…

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster