اشتراک گذاری شبکه یک توکن رمزنگاری بین کاربران مبتنی بر usbip

در ارتباط با تغییرات در قوانین مربوط به خدمات اعتماد ("درباره خدمات اعتماد الکترونیکی" اوکراین)، این شرکت به چندین بخش برای کار با کلیدهای واقع در نشانه ها نیاز دارد (در حال حاضر سؤال تعداد کلیدهای سخت افزاری هنوز باز است. ).

به عنوان ابزاری با کمترین هزینه (رایگان)، انتخاب بلافاصله روی آن افتاد usbip. سرور در Ubintu 18.04 به لطف انتشار شروع به کار کرد رام کردن USB/IP و با موفقیت روی چندین فلش درایو (به دلیل عدم وجود توکن در آن زمان) آزمایش شد. هیچ مشکل خاصی به جز مالکیت انحصاری (رزرو برای کاربر) در آن مقطع زمانی شناسایی نشد. واضح است که برای سازماندهی دسترسی برای چندین کاربر (برای شروع حداقل دو کاربر)، باید دسترسی آنها را به موقع تقسیم کرد و آنها را مجبور کرد که به نوبت کار کنند.

سوال این بود: چگونه می توانم با کمترین رقص این کار را انجام دهم تا همه چیز برای همه کار کند...

قسمت دست و پا چلفتی است

اشتراک گذاری شبکه یک توکن رمزنگاری بین کاربران مبتنی بر usbip
انتخاب 1. چند میانبر برای فایل های bat، یعنی
الف) اتصال کلید دسترسی.
ب) قطع عمدی.

پاراگراف "б» بحث برانگیز است، بنابراین تصمیم گرفته شد که مدت زمان کار با کلید در 3 دقیقه در نظر گرفته شود.

ویژگی مشتری usbip این است که پس از راه اندازی، در کنسول آویزان می ماند؛ بدون وقفه در جلسه کنسول، می توانید اتصال را "تقریبا" از سمت مشتری و همچنین از سمت سرور ببندید.

این چیزی است که برای ما خوب کار کرد:

اول: اتصال on.bat

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

دوم: خاموش شدن خاموش. خفاش

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

بدون تکیه بر آگاهی کاربر، اسکریپت ها با هم ترکیب شدند token.bat

on.bat | off.bat

چه اتفاقی می‌افتد: همه فایل‌ها در یک پوشه هستند که توسط فایل token.bat راه‌اندازی می‌شوند، اگر اتصال بسته شود، کاربر بلافاصله پیامی مبنی بر در دسترس نبودن کلید دریافت می‌کند، در مورد دیگر، تنها پس از 180 پینگ. خطوط کد بالا را می توان با "@ECHO OFF" و جهت کنسول به "> nul" مجهز کرد تا بیش از حد به کاربر شوک وارد نشود، اما نیازی به اجرای آزمایش نیست. "اجرای" اولیه در درایو 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

یک پوشه اسکریپت با اسکریپت در ریشه ایجاد شده است: 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

دریافت لیستی از دستگاه های فعال 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 را نشان می دهد.

قسمت بعدی: «زشت در لفاف»

گزینه دوم برای خوشحال کردن کاربر با حداقل یک رابط کاربری کمتر ترسناک. متعجب از این واقعیت که کاربران نسخه های مختلف ویندوز با چارچوب های مختلف، حقوق متفاوت، رویکردی کمتر مشکل ساز دارند. جذامی من آن را پیدا نکردم (البته من برای C# هستم، اما نه در این مورد). می‌توانید فایل‌های bat را از رابط در پس‌زمینه راه‌اندازی کنید، اما بدون آزمایش مناسب، من شخصاً بر این عقیده هستم: برای جمع‌آوری نارضایتی کاربران باید آن را تجسم کنید.

اشتراک گذاری شبکه یک توکن رمزنگاری بین کاربران مبتنی بر usbip

وظایف زیر توسط رابط و نرم افزار حل شد:

  1. نشان می دهد که آیا توکن در حال حاضر مشغول است یا خیر.
  2. در اولین راه‌اندازی، راه‌اندازی اولیه شامل تولید فایل‌های bat "درست" است که راه‌اندازی و قطع یک جلسه با سرور رمز را اجرا می‌کند. در شروع های بعدی، اجرای حالت "سرویس" با استفاده از رمز عبور.
  3. بررسی وجود اتصال با سرور، در نتیجه نظرسنجی می‌کند که آیا مشغول است یا پیام‌هایی درباره مشکلات نمایش می‌دهد. هنگامی که ارتباط از سر گرفته می شود، برنامه به طور خودکار در حالت عادی شروع به کار می کند.

کار با سرور وب با استفاده از اضافی fphttpclient snap-in پیاده سازی می شود.


در اینجا پیوندی به نسخه فعلی مشتری خواهد بود

همچنین ملاحظات بیشتری در مورد موضوع مقاله و همچنین اشتیاق اولیه جزئی برای محصول VirtualHere با ویژگی های آن وجود دارد ...

منبع: www.habr.com

اضافه کردن نظر