Ndarja e rrjetit të një token kriptografik midis përdoruesve të bazuar në usbip

Në lidhje me ndryshimet në legjislacion në lidhje me shërbimet e besimit ("Rreth shërbimeve të besimit elektronik" Ukrainë), ndërmarrja ka nevojë që disa departamente të punojnë me çelësat e vendosur në argumente (për momentin, çështja e numrit të çelësave harduerikë është ende e hapur ).

Si një mjet me koston më të ulët (pa pagesë), zgjedhja ra menjëherë usbip. Serveri në Ubintu 18.04 filloi të funksionojë falë publikimit Zbutja e USB/IP dhe u testua me sukses në disa disqe flash (për shkak të mungesës së një token në atë kohë). Nuk u identifikuan probleme të veçanta përveç pronës monopol (rezervimi për përdoruesit) në atë moment. Është e qartë se për të organizuar akses për disa përdorues (të paktën dy, për të filluar), është e nevojshme të ndani aksesin e tyre në kohë dhe t'i detyroni ata të punojnë me radhë.

Pyetja ishte: Si mund ta bëj këtë me sa më pak kërcim, në mënyrë që gjithçka të funksionojë për të gjithë...

Pjesa është e ngathët

Ndarja e rrjetit të një token kriptografik midis përdoruesve të bazuar në usbip
opsioni XNUMX. Disa shkurtore për skedarët bat, domethënë
a) Lidhja e çelësit të hyrjes.
b) Shkëputja e qëllimshme.

Paragraf "б» e diskutueshme, kështu që u vendos që të jepet koha për të punuar me çelësin në 3 minuta.

E veçanta e klientit usbip është se pasi të lansohet, ai mbetet i varur në tastierë; pa ndërprerë seancën e konsolës, mund ta mbyllni lidhjen "afërsisht" nga ana e klientit dhe gjithashtu nga ana e serverit.

Ja çfarë funksionoi mirë për ne:

e para: lidhje në.bat

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

e dyta: mbyllja off.bat

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

Pa u mbështetur në vetëdijen e përdoruesit, skriptet u kombinuan në token.bat

on.bat | off.bat

Çfarë ndodh: të gjithë skedarët janë në të njëjtën dosje, të nisur nga skedari token.bat, nëse lidhja mbyllet, përdoruesi merr menjëherë një mesazh se çelësi nuk është i disponueshëm, në një rast tjetër, vetëm pas 180 ping. Linjat e dhëna të kodit mund të pajisen me "@ECHO OFF" dhe drejtimin e konsolës në "> nul" në mënyrë që të mos tronditet shumë përdoruesi, por nuk është e nevojshme të filloni testimin. "Vendosja" fillestare në një disk USB tregoi se gjithçka ishte e parashikueshme, e besueshme dhe e qartë. Për më tepër, nuk kërkohen manipulime nga ana e serverit.

Ndarja e rrjetit të një token kriptografik midis përdoruesve të bazuar në usbip

Natyrisht, kur punoni drejtpërdrejt me token, gjithçka nuk shkoi siç pritej: me një lidhje fizike në menaxherin e pajisjes, shenja regjistrohet si 2 pajisje (WUDF dhe një kartë inteligjente), dhe me një lidhje rrjeti vetëm si WUDF (megjithëse kjo është e mjaftueshme për të kërkuar një kod PIN).

Ndarja e rrjetit të një token kriptografik midis përdoruesve të bazuar në usbip

Rezulton gjithashtu se "taskkill" brutale nuk është aq e rëndë, dhe mbyllja e lidhjes në klient është problematike dhe edhe nëse ka qenë e suksesshme, nuk garanton mbylljen e saj në server për të.

Pasi kishte sakrifikuar të gjitha konsolat në klient, skenari i dytë mori formën:

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

megjithëse efektiviteti i tij është më pak se 50%, pasi serveri me kokëfortësi vazhdoi ta konsideronte lidhjen të hapur.

Problemet me lidhjen çuan në mendime për përmirësimin e anës së serverit.

Pjesa e serverit

Çfarë ju nevojitet:

  1. Shkëputni përdoruesit joaktivë nga shërbimi.
  2. Shihni se kush është duke përdorur (ose ende duke huazuar) shenjën.
  3. Shihni nëse token është i lidhur me vetë kompjuterin.

Këto probleme u zgjidhën duke përdorur shërbimet crontab dhe apache. Natyra diskrete e rishkrimit të gjendjes së rezultateve të monitorimit të pikave 2 dhe 3 që na interesojnë tregon se sistemi i skedarëve mund të vendoset në ramdrive. Linja e shtuar në /etc/fstab

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

Një dosje skripti me skripta është krijuar në rrënjë: çmontimi-montimi i tokenit 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

duke marrë një listë të pajisjeve aktive 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

marrja e një liste të IP-ve aktive (me modifikim të mëvonshëm për të shfaqur ID-të e përdoruesve) usbip_client_ip.sh

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

vetë krontabi duket kështu:

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

Pra, kemi: çdo 5 minuta një përdorues i ri mund të lidhet, pavarësisht se kush ka punuar me token. Dosja /ramdrive lidhet me serverin http duke përdorur një lidhje simbolike, në të cilën ruhen 2 skedarë teksti, duke treguar statusin e serverit usbip.

Pjesa tjetër: "E shëmtuar në një mbështjellës"

Opsioni II. Për të kënaqur pak përdoruesin me të paktën një ndërfaqe më pak frikësuese. Të hutuar nga fakti që përdoruesit kanë versione të ndryshme të Windows me korniza të ndryshme, të drejta të ndryshme, një qasje më pak problematike sesa Lazarus Nuk e gjeta (sigurisht jam për C#, por jo në këtë rast). Ju mund të lëshoni skedarë bat nga ndërfaqja në sfond, të minimizuar, por pa testimin e duhur, unë personalisht jam i mendimit: ju duhet ta vizualizoni atë për të mbledhur pakënaqësinë e përdoruesit.

Ndarja e rrjetit të një token kriptografik midis përdoruesve të bazuar në usbip

Detyrat e mëposhtme u zgjidhën nga ndërfaqja dhe softueri:

  1. Tregon nëse token është aktualisht i zënë.
  2. Në nisjen e parë, konfigurimi fillestar përfshin gjenerimin e skedarëve "korrektë" bat që zbatojnë nisjen dhe ndërprerjen e një sesioni me serverin token. Në fillimet e mëvonshme, zbatimi i mënyrës "shërbim" duke përdorur një fjalëkalim.
  3. Kontrollimi i pranisë së një lidhjeje me serverin, si rezultat i së cilës ai anketon nëse është i zënë ose shfaq mesazhe për probleme. Kur komunikimi rifillon, programi fillon automatikisht të punojë në modalitetin normal.

Puna me serverin WEB zbatohet duke përdorur snap-in shtesë fphttpclient.


këtu do të jetë një lidhje me versionin aktual të klientit

ka gjithashtu konsiderata të mëtejshme për temën e artikullit, si dhe entuziazëm të pjesshëm fillestar për produktin VirtualHere me veçoritë e tij...

Burimi: www.habr.com

Shto një koment