Мрежно споделување на криптографски токен помеѓу корисници базирани на usbip

Во врска со промените во законодавството во врска со доверливите услуги („За услугите за електронска доверба“ Украина), претпријатието има потреба од неколку одделенија да работат со клучеви лоцирани на токени (во моментот, прашањето за бројот на хардверски клучеви е сè уште отворено ).

Како алатка со најниска цена (бесплатно), изборот веднаш падна usbip. Серверот на Ubintu 18.04 започна да работи благодарение на објавувањето Припитомување USB/IP и успешно тестиран на неколку флеш драјвови (поради недостаток на токен во тоа време). Во тој момент не беа идентификувани посебни проблеми освен монополската сопственост (резервација за корисникот). Јасно е дека за да се организира пристап за неколку корисници (најмалку двајца, за почеток), потребно е да се подели нивниот пристап навреме и да се принудат да работат наизменично.

Прашањето беше: Како можам да го направам тоа со најмалку танцување, така што сè работи за секого...

Делот е невешт

Мрежно споделување на криптографски токен помеѓу корисници базирани на usbip
Опција XNUMX. Неколку кратенки до датотеки со лилјак, имено
а) Поврзување на клучот за пристап.
б) Намерно исклучување.

Параграф "б» контроверзно, па беше одлучено да се даде време за работа со клучот на 3 минути.

Особеноста на клиентот usbip е што откако ќе се стартува, тој останува да виси во конзолата; без да ја прекинете сесијата на конзолата, можете да ја затворите врската „грубо“ од страната на клиентот, а исто така и од страната на серверот.

Еве што добро функционираше за нас:

прво: поврзување на.лилјак

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

второ: исклучување исклучен.лилјак

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

Без потпирање на свеста на корисникот, скриптите беа комбинирани во токен.лилјак

on.bat | off.bat

Што се случува: сите датотеки се во иста папка, стартувана од датотеката token.bat, ако врската е затворена, корисникот веднаш добива порака дека клучот е недостапен, во друг случај, само по 180 пингови. Горенаведените линии код може да бидат опремени со „@ECHO OFF“ и насоката на конзолата до „> нула“ за да не се шокира премногу корисникот, но не е неопходно да се изврши тестирање. Првичното „пуштање“ на USB-уред покажа дека сè е предвидливо, сигурно и јасно. Покрај тоа, не се потребни никакви манипулации од страната на серверот.

Мрежно споделување на криптографски токен помеѓу корисници базирани на usbip

Природно, при работа директно со токенот, сè не одеше како што се очекуваше: со физичка врска во менаџерот на уреди, токенот е регистриран како 2 уреди (WUDF и паметна картичка), а со мрежна врска само како WUDF (иако ова е доволно за да побарате ПИН-код).

Мрежно споделување на криптографски токен помеѓу корисници базирани на usbip

Исто така, излегува дека бруталната „задача“ не е толку тешка, а затворањето на врската на клиентот е проблематично и дури и да беше успешно, не гарантира дека ќе ја затворите на серверот.

Откако ги жртвуваше сите конзоли на клиентот, втората скрипта ја зеде формата:

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

иако неговата ефикасност е помала од 50%, бидејќи серверот тврдоглаво продолжи да ја смета врската отворена.

Проблемите со поврзувањето доведоа до размислувања за надградба на страната на серверот.

Серверски дел

Што ви е потребно:

  1. Исклучете ги неактивни корисници од услугата.
  2. Погледнете кој моментално го користи (или сè уште го позајмува) токенот.
  3. Погледнете дали токенот е поврзан со самиот компјутер.

Овие проблеми беа решени со помош на услугите crontab и apache. Дискретната природа на препишување на состојбата на резултатите од мониторингот од точките 2 и 3 што нè интересираат укажува на тоа дека датотечниот систем може да се наоѓа на ramdrive. Додадена е линија во /etc/fstab

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

Создадена е папка со скрипти во коренот: демонтирање-монтажа на токенот 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

добивање листа на активни уреди 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

добивање листа на активни IP адреси (со последователна модификација за прикажување на кориснички ИД) usbip_client_ip.sh

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

самиот кронтаб изгледа вака:

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

Значи имаме: на секои 5 минути нов корисник може да се поврзе, без разлика кој работел со токенот. Папката /ramdrive е поврзана со серверот http со помош на симврска, во која се зачувани 2 текстуални датотеки, што го прикажува статусот на серверот usbip.

Следен дел: „Грди во обвивка“

Опција II. Малку да му угоди на корисникот со барем некој помалку застрашувачки интерфејс. Збунети од фактот што корисниците имаат различни верзии на Windows со различни рамки, различни права, помалку проблематичен пристап од Лазар Не го најдов (секако дека сум за C#, но не во овој случај). Можете да стартувате bat-датотеки од интерфејсот во позадина, минимизирани, но без соодветно тестирање, јас лично сум на мислење: треба да го визуелизирате за да го соберете незадоволството на корисниците.

Мрежно споделување на криптографски токен помеѓу корисници базирани на usbip

Следниве задачи беа решени со интерфејс и софтвер:

  1. Прикажува дали токенот е моментално зафатен.
  2. При првото лансирање, првичното поставување вклучува генерирање на „точни“ датотеки со лилјак што го спроведуваат стартувањето и прекинувањето на сесијата со серверот за токени. На следните стартови, имплементација на режимот „сервис“ со помош на лозинка.
  3. Проверка на присуство на врска со серверот, како резултат на што тој анкетира дали е зафатен или прикажува пораки за проблеми. Кога ќе продолжи комуникацијата, програмата автоматски започнува да работи во нормален режим.

Работата со WEB серверот се имплементира со помош на дополнителниот додаток fphttpclient.


тука ќе има врска до тековната верзија на клиентот

има и дополнителни размислувања за темата на статијата, како и делумен почетен ентузијазам за производот VirtualHere со неговите карактеристики...

Извор: www.habr.com

Додадете коментар