A jogszabályok változása miatt a bizalmi szolgáltatásokra vonatkozóan (az Ukrajnában bevezetett "Elektronikus bizalmi szolgáltatások kínálatára"), a vállalatnál szükségessé vált, hogy több részleg is kulcsokkal dolgozzon, amelyek tokeneken találhatók (jelenleg a hardveres kulcsok száma még nyitva áll).
Mint a legalacsonyabb költségű eszköz (ingyenesen) azonnal a következőre esett a választás: . A szerver az Ubintu 18.04-en a publikáció révén kezdte meg működését, és sikeresen tesztelték több flash meghajtón (tökéletesen működött abban az időben token hiányában). Különösebb problémák nem merültek fel, kivéve a monopóliumot (a felhasználóra való fenntartást) abban az időpontban. Nyilvánvaló, hogy ahhoz, hogy több felhasználónak is hozzáférése legyen (legalább két személynek, kezdetben) az ő időbeli hozzáférésüket meg kell osztani és sorban kell dolgoztatni őket.
Felmerült a kérdés: Hogyan lehet a legkevesebb megoldással elérni, hogy mindenki számára működjön...
Durva verzió

I. lehetőség. Néhány parancsikon a bat fájlokhoz, mégpedig:
a) A hozzáférési kulcs csatlakoztatása.
b) Tudatos lekapcsolás.
A "b" pont vitás, ezért úgy döntöttek, hogy 3 percet biztosítanak a kulccsal való munkához.
Az usbip kliens tulajdonsága, hogy miután elindították, a konzolban függőben marad, a konzolos munkamenet megszakítása nélkül az ügyféltől "durván" lehet a kapcsolatot megszüntetni, és ugyanezt a szerver oldaláról is.
Ez az, ami nálunk normálisan működött:
első: csatlakozás on.bat
usbip -a 172.16.12.26 4-1
msg * "A kulcs/token nem elérhető vagy foglalt"második: lekapcsolás off.bat
ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /FA felhasználó tudatosságába vetett bizalom nélkül a szkripteket egyesítették a token.bat
on.bat | off.batA végeredmény: minden fájl egy mappában található, a token.bat fájllal indítva, ha a felhasználónál a kapcsolat megszakad, azonnal értesítést kap a kulcs elérhetetlenségéről, ellenkező esetben csak 180 ping után. A megadott kódvonalakat lehet "@ECHO OFF"-al és a konzola irányításával "> nul"-ba felszerelni, hogy ne sokkolja a felhasználót, de teszteléshez nem kötelező. Az első "futás" egy USB meghajtón megmutatta, hogy minden várhatóan megbízható és pontos. A szerver részéről nem szükséges semmilyen manipuláció.

Természetesen, a tokennel való közvetlen munka során minden máshogy alakult, mint várható volt: fizikális csatlakozás esetén az eszközkezelőben a token 2 eszközként regisztrálódik (WUDF és okos kártya), míg hálózati kapcsolaton csak mint WUDF (bár a PIN-kód kéréséhez ez elegendő).

Kiderült az is, hogy a brutális „taskkill” nem is annyira kegyetlen, és a kliens oldalon a kapcsolat lezárása problémás, és még ha ez sikerül is, nem garantálja a kapcsolat lezárását a szerveren.
A kliens összes konzoljának feláldozásával a második szkript így nézett ki:
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 > nulbár a hatékonysága 50% alatt van, mivel a szerver makacsul továbbra is nyitottnak tekintette a kapcsolatot.
A kapcsolati problémák a szerveroldali korszerűsítés gondolatához vezettek.
Szerver rész
A szükségletek:
- A inaktív felhasználók lecsatlakoztatása a szolgáltatásról.
- Látni, hogy ki használja (vagy foglalja) éppen a tokent.
- Látni, hogy a token csatlakozik-e a számítógéphez.
Ezeket a feladatokat a crontab és apache szolgáltatások segítségével oldottuk meg. A figyelésünk alatt lévő 2. és 3. pont állapotának felülírásainak diszkrét volta azt jelzi, hogy a fájlrendszert RAM-meghajtón lehet elhelyezni. A /etc/fstab fájlhoz ezt a sort adtuk hozzá:
tmpfs /ram_drive tmpfs defaults,nodev,size=64K 0 0
A gyökérben létrejött egy script mappa a szkriptekkel: az usb_restart.sh amely a token leválasztására és visszakapcsolására szolgál.
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=00aktív eszközök listájának beszerzése usblist_id.sh
usbip list -r 127.0.0.1 | grep ':' |awk -F ":" '{print $1}'| sed s/' '//g | grep -v "^$" > /ram_drive/usb_id.txtaktív IP-k listájának beszerzése (későbbi továbbfejlesztéssel, amely megjeleníti a felhasználók azonosítóit) usbip_client_ip.sh
netstat -an | grep :3240 | grep ESTABLISHED|awk '{print $5}'|cut -f1 -d":" > /ram_drive/usb_ip_cli.txtmaga a crontab így néz ki:
* /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)Tehát most azt mondhatjuk: 5 percenként új felhasználó csatlakozhat, függetlenül attól, hogy ki dolgozott a tokennel. A HTTP szerverhez a /ramdrive könyvtárat szimbolikus linkkel csatlakoztattuk, amely két szöveges fájlt tárol, amelyek a usbip szerver állapotát mutatják.
Következő rész: „Csúnya csomagolásban”
II. változat. Kicsit megörvendeztetni a felhasználót egy kevésbé félelmetes felülettel. Az különböző Windows verziókkal, különböző keretrendszerekkel és jogokkal rendelkező felhasználók problémáira való tekintettel nem találtam kevesebb problémával járó megoldást, mint Nem találtam (persze én C# párti vagyok, de nem ebben az esetben). A bat fájlokat a felületről a háttérben, minimalizálva is lehet futtatni, de megfelelő tesztelés nélkül szerény véleményem szerint vizualizálni kell a felhasználói elégedetlenségek összegyűjtéséhez.

A felülettel és a szoftveres résszel a következő feladatokat oldottuk meg:
- Megjeleníteni, hogy a token éppen foglalt-e.
- Első indításkor az alapbeállítás magában foglalja a „helyes” bat fájlok generálását, amelyek elindítják és megszakítják a token szerverrel folytatott munkamenetet. A következő indításoknál a jelszóval védett „szerviz” üzemmód kerül megvalósításra.
- A szerverrel való kapcsolattartás ellenőrzése, amely alapján lekérdezzük a foglaltságát, vagy hibaüzeneteket adunk meg. A kapcsolat helyreállítása után automatikusan a program normál üzemmódban kezd működni.
A WEB szerverrel való munka az fphttpclient kiegészítő eszköz segítségével valósult meg.

továbbá van egy folytatása a cikk témájának, valamint részleges kezdeti lelkesedés a VirtualHere termék iránt és annak sajátosságai iránt...
Forrás: habr.com
