Netwurk dielen fan in kryptografysk token tusken usbip-basearre brûkers

Yn ferbân mei feroarings yn wetjouwing oangeande fertrouwen tsjinsten ("Oer elektroanyske fertrouwen tsjinsten" Oekraïne), it bedriuw hat in ferlet fan ferskate ôfdielings om te wurkjen mei kaaien leit op tokens (op it stuit is de fraach fan it oantal hardware kaaien noch iepen ).

As ark mei de leechste kosten (fergees) foel de kar daliks op usbip. De server op Ubintu 18.04 begon te wurkjen troch de publikaasje Meitsje USB / IP en mei súkses hifke op ferskate flash-driven (fanwege it ûntbrekken fan in token op dat stuit). Gjin spesjale problemen oars as monopoalje eigendom (reservearje foar de brûker) waarden op dat stuit identifisearre. It is dúdlik dat om tagong te organisearjen foar ferskate brûkers (op syn minst twa, om te begjinnen), is it nedich om har tagong yn 'e tiid te dielen en te twingen om beurten te wurkjen.

De fraach wie: hoe kin ik it mei it minste dûnsjen dwaan, sadat alles foar elkenien wurket...

It diel is ûnhandich

Netwurk dielen fan in kryptografysk token tusken usbip-basearre brûkers
Opsje XNUMX. Ferskate fluchtoetsen foar batbestannen, nammentlik
a) Ferbine de tagong kaai.
b) Opsetsin ôfbrekke.

alinea"б» kontroversjeel, dus waard besletten om de tiid te jaan om te wurkjen mei de kaai op 3 minuten.

De eigenaardichheid fan 'e usbip-kliïnt is dat nei't it is lansearre, it bliuwt hingjen yn' e konsole; sûnder de konsole-sesje te ûnderbrekken, kinne jo de ferbining "rûchwei" slute fan 'e kliïntkant en ek fan' e serverkant.

Hjir is wat goed foar ús wurke:

earst: ferbining on.bat

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

twadde: shutdown off.bat

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

Sûnder in berop dwaan op it bewustwêzen fan de brûker, de skripts waarden kombinearre yn token.bat

on.bat | off.bat

Wat bart: alle bestannen binne yn deselde map, lansearre troch de token.bat-bestân, as de ferbining is sletten, krijt de brûker fuortendaliks in berjocht oer de kaai dy't net beskikber is, yn in oar gefal, pas nei 180 pings. De boppesteande rigels fan koade kinne wurde foarsjoen fan "@ECHO OFF" en de konsole rjochting nei "> nul" om de brûker net te folle te skokken, mar it is net nedich om testen út te fieren. De earste "run" op in USB-stasjon liet sjen dat alles foarsisber, betrouber en dúdlik wie. Boppedat binne gjin manipulaasjes nedich fan 'e serverkant.

Netwurk dielen fan in kryptografysk token tusken usbip-basearre brûkers

Fansels, by it wurkjen direkt mei it token, gie alles net lykas ferwachte: mei in fysike ferbining yn 'e apparaatbehearder wurdt it token registrearre as 2 apparaten (WUDF en in smart card), en mei in netwurkferbining allinich as WUDF (hoewol't dit is genôch om in PIN-koade oan te freegjen).

Netwurk dielen fan in kryptografysk token tusken usbip-basearre brûkers

It docht ek bliken dat de brutale "taskkill" net sa slim is, en it sluten fan 'e ferbining op' e kliïnt is problematysk en sels as it suksesfol wie, garandearret it net dat it foar him op 'e tsjinner sluten wurdt.

Nei it offerjen fan alle konsoles op 'e kliïnt, naam it twadde skript de foarm oan:

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

hoewol't de effektiviteit is minder as 50%, sûnt de tsjinner koppich bleau te beskôgje de ferbining iepen.

Problemen mei de ferbining late ta gedachten oer it opwurdearjen fan de serverkant.

Server diel

Wat jo nedich binne:

  1. Ferbine ynaktive brûkers fan 'e tsjinst.
  2. Sjoch wa't op it stuit it token brûkt (of noch lient).
  3. Sjoch as it token is ferbûn mei de kompjûter sels.

Dizze problemen waarden oplost mei de crontab- en apache-tsjinsten. De diskrete aard fan it herskriuwen fan 'e tastân fan' e monitoaringsresultaten fan punten 2 en 3 dy't ús ynteressearje, jout oan dat it bestânsysteem op 'e ramdrive kin lizze. Regel tafoege oan /etc/fstab

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

In skriptmap mei skripts is makke yn 'e root: unmounting-mounting the token 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

it krijen fan in list mei aktive apparaten 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

it krijen fan in list mei aktive IP's (mei opfolgjende wiziging om brûkers-ID's wer te jaan) usbip_client_ip.sh

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

de crontab sels sjocht der sa út:

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

Sa hawwe wy: elke 5 minuten kin in nije brûker ferbine, nettsjinsteande wa't mei it token wurke. De map /ramdrive is ferbûn mei de http-tsjinner mei in symlink, wêryn 2 tekstbestannen bewarre wurde, dy't de status fan 'e usbip-tsjinner sjen litte.

Diel folgjende: "Ugly in a wrapper"

Opsje II. Om de brûker in bytsje te behagen mei op syn minst wat minder yntimidearjende ynterface. Ferbjustere troch it feit dat brûkers ferskate ferzjes fan Windows hawwe mei ferskillende kaders, oare rjochten, in minder problematyske oanpak as Lazarus Ik fûn it net (ik bin fansels foar C #, mar net yn dit gefal). Jo kinne batbestannen fan 'e ynterface op' e eftergrûn starte, minimalisearre, mar sûnder goede testen, bin ik persoanlik fan 'e miening: jo moatte it visualisearje om ûntefredenens fan brûkers te sammeljen.

Netwurk dielen fan in kryptografysk token tusken usbip-basearre brûkers

De folgjende taken waarden oplost troch de ynterface en software:

  1. Toant oft it token op it stuit drok is.
  2. By de earste lansearring omfettet de inisjele opset it generearjen fan de "korrekte" battriemmen dy't de lansearring en ûnderbrekking fan in sesje mei de tokenserver ymplementearje. By de folgjende start, ymplemintaasje fan 'e "tsjinst" modus mei in wachtwurd.
  3. Kontrolearje fan 'e oanwêzigens fan in ferbining mei de tsjinner, as gefolch dêrfan wurdt ûndersocht oft it drok is of berjochten oer problemen werjaan. As de kommunikaasje wurdt ferfongen, begjint it programma automatysk te wurkjen yn normale modus.

Wurkje mei de WEB-tsjinner wurdt ymplementearre mei de ekstra fphttp-client-snap-in.


hjir sil in keppeling wêze nei de aktuele ferzje fan 'e kliïnt

d'r binne ek fierdere oerwegingen oer it ûnderwerp fan it artikel, lykas ek in part inisjele entûsjasme foar it VirtualHere-produkt mei syn funksjes ...

Boarne: www.habr.com

Add a comment