مشاركة الشبكة لرمز تشفير مميز بين المستخدمين بناءً على usbip

نظرًا للتغييرات في التشريعات المتعلقة بخدمات الثقة ("بشأن خدمات الثقة الإلكترونية" بأوكرانيا) ، فإن الشركة بحاجة إلى العديد من الإدارات للعمل باستخدام المفاتيح الموجودة على الرموز (في الوقت الحالي ، لا يزال السؤال المتعلق بعدد مفاتيح الأجهزة مفتوحًا ).

كأداة بأقل التكاليف (مجانية) ، وقع الاختيار على الفور usbip. حصل الخادم على Ubuntu 18.04 بفضل المنشور ترويض USB / IP وتم اختباره بنجاح على العديد من محركات أقراص فلاش (لعدم وجود رمز مميز في ذلك الوقت). لم يتم تحديد أي مشاكل خاصة بخلاف الملكية الحصرية (الحجز لكل مستخدم) في ذلك الوقت. من الواضح أنه من أجل تنظيم الوصول لعدة مستخدمين (على الأقل اثنان ، كبداية) ، من الضروري تقسيمهم في الوقت المناسب وجعلهم يعملون بدورهم.

أصبح السؤال: كيف نجعل كل شيء يعمل مع كل من لديه أصغر الرقصات ...

جزء أخرق

مشاركة الشبكة لرمز تشفير مميز بين المستخدمين بناءً على usbip
أنا الخيار. عدة اختصارات لملفات الخفافيش وهي
أ) اتصال مفتاح الوصول.
ب) الانقطاع عن عمد.

فقرة "б"مثير للجدل ، لذلك تقرر إعطاء مقدار الوقت للعمل مع المفتاح في 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

بطبيعة الحال ، عند العمل مباشرة مع الرمز المميز ، لم يسير كل شيء كما هو متوقع: عند الاتصال فعليًا في مدير الجهاز ، يتم تسجيل الرمز المميز كجهازين (WUDF والبطاقة الذكية) ، وعند الاتصال بالشبكة ، فقط كـ WUDF (على الرغم من هذا يكفي لطلب رمز PIN).

مشاركة الشبكة لرمز تشفير مميز بين المستخدمين بناءً على usbip

كما اتضح أن "Taskkill" القاسية ليست شديدة ، وأن إغلاق الاتصال على العميل يمثل مشكلة ، وحتى إذا نجح ، فإنه لا يضمن إغلاقها له على الخادم.

بعد التضحية بجميع لوحات المفاتيح الخاصة بالعميل ، اتخذ النص الثاني الشكل:

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 التي تهمنا أنه يمكن وضع نظام الملفات على محرك رام. تمت إضافة سطر إلى / etc / fstab

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

يتم إنشاء مجلد البرنامج النصي مع البرامج النصية في الجذر: unmount-mount 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

يبدو crontab نفسه كما يلي:

*/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 باستخدام ارتباط رمزي ، حيث يتم حفظ ملفين نصيين يوضحان حالة خادم usbip.

الجزء التالي: "قبيح في غلاف"

الثاني الخيار. لإرضاء المستخدم قليلاً بواجهة أقل ترويعًا على الأقل. مرتبك من حقيقة أن المستخدمين لديهم إصدارات مختلفة من Windows مع أطر مختلفة وحقوق مختلفة ونهج أقل إشكالية من لازاروس لم أجده (بالطبع أنا مع C # ، لكن ليس في هذه الحالة). يمكنك تشغيل ملفات bat من الواجهة في الخلفية ، مصغرًا ، ولكن بدون اختبار مناسب ، أنا شخصياً من رأيي: تحتاج إلى التصور لتجميع استياء المستخدم.

مشاركة الشبكة لرمز تشفير مميز بين المستخدمين بناءً على usbip

تم حل المهام التالية من خلال الواجهة وجزء البرنامج:

  1. يعرض ما إذا كان الرمز المميز مشغولاً حاليًا.
  2. في البداية ، يتم الإعداد الأولي مع إنشاء ملفات bat "الصحيحة" التي تنفذ بدء تشغيل الجلسة وانقطاعها باستخدام خادم الرمز المميز. في عمليات الإطلاق اللاحقة ، تنفيذ وضع "الخدمة" بكلمة مرور.
  3. التحقق من الاتصال بالخادم ، ونتيجة لذلك يتم استطلاع الرأي حول الانشغال أو يتم عرض رسائل حول المشكلات. عند استئناف الاتصال ، يبدأ البرنامج تلقائيًا في العمل في الوضع العادي.

يتم تنفيذ العمل مع خادم WEB عن طريق المعدات الإضافية fphttpclient.


هنا سيكون رابط للإصدار الحالي من العميل

هناك أيضًا استمرار للاعتبارات حول موضوع المقالة ، فضلاً عن الحماس الأولي الجزئي لمنتج VirtualHere بميزاته ...

المصدر: www.habr.com

إضافة تعليق