USBip tabanlı kullanıcılar arasında kriptografik bir belirtecin ağ paylaşımı

Güven hizmetlerine ilişkin mevzuattaki değişikliklerle bağlantılı olarak (“Elektronik güven hizmetleri hakkında” Ukrayna), işletmenin jetonlar üzerinde bulunan anahtarlarla çalışacak birkaç departmanın ihtiyacı vardır (şu anda donanım anahtarlarının sayısı sorusu hala açıktır) ).

En düşük maliyetli (ücretsiz) bir araç olarak seçim hemen düştü usbip. Ubintu 18.04'teki sunucu, yayın sayesinde çalışmaya başladı USB/IP'yi evcilleştirme ve birkaç flash sürücüde başarıyla test edildi (o sırada jetonun bulunmaması nedeniyle). O dönemde tekel sahipliği (kullanıcı için rezervasyon) dışında herhangi bir özel sorun tespit edilmedi. Birkaç kullanıcının (başlangıçta en az iki) erişimini düzenlemek için, erişimlerini zamana bölmek ve onları sırayla çalışmaya zorlamak gerektiği açıktır.

Soru şuydu: Her şeyin herkes için işe yaraması için bunu en az dansla nasıl yapabilirim?

Bölüm beceriksiz

USBip tabanlı kullanıcılar arasında kriptografik bir belirtecin ağ paylaşımı
seçenek XNUMX. Yarasa dosyalarına çeşitli kısayollar, yani
a) Erişim anahtarını bağlama.
b) Kasıtlı olarak bağlantıyı kesmek.

paragraf "б» tartışmalı olduğundan, anahtarla çalışma süresinin 3 dakika olarak verilmesine karar verildi.

USBip istemcisinin özelliği, başlatıldıktan sonra konsolda asılı kalmasıdır; konsol oturumunu kesmeden, bağlantıyı istemci tarafından ve ayrıca sunucu tarafından "kabaca" kapatabilirsiniz.

İşte bizim için iyi sonuç veren şey:

ilk: bağlantı on.bat

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

ikincisi: kapatma kapalı.bat

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

Kullanıcının bilincine güvenilmeden, komut dosyaları birleştirildi belirteç.bat

on.bat | off.bat

Ne olur: tüm dosyalar token.bat dosyası tarafından başlatılan aynı klasörde bulunur; bağlantı kapatılırsa kullanıcı hemen anahtarın kullanılamadığına dair bir mesaj alır; başka bir durumda, yalnızca 180 ping'den sonra. Yukarıdaki kod satırları, kullanıcıyı çok fazla şaşırtmamak için “@ECHO OFF” ve konsol yönü “>nul” olarak donatılabilir, ancak test çalıştırmaya gerek yoktur. USB sürücüsündeki ilk "çalıştırma" her şeyin öngörülebilir, güvenilir ve net olduğunu gösterdi. Üstelik sunucu tarafında herhangi bir manipülasyon yapılmasına gerek yoktur.

USBip tabanlı kullanıcılar arasında kriptografik bir belirtecin ağ paylaşımı

Doğal olarak, doğrudan belirteçle çalışırken her şey beklendiği gibi gitmedi: cihaz yöneticisindeki fiziksel bağlantıyla belirteç 2 cihaz (WUDF ve akıllı kart) olarak ve ağ bağlantısıyla yalnızca WUDF olarak kaydedildi (gerçi bu bir PIN kodu istemek için yeterlidir).

USBip tabanlı kullanıcılar arasında kriptografik bir belirtecin ağ paylaşımı

Ayrıca, acımasız "görev öldürmenin" o kadar şiddetli olmadığı ve istemcideki bağlantıyı kapatmanın sorunlu olduğu ve başarılı olsa bile, sunucuda onun adına kapatılmasını garanti etmediği ortaya çıktı.

İstemcideki tüm konsolları feda ettikten sonra ikinci komut dosyası şu şekli aldı:

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

Etkinliği %50'den az olmasına rağmen sunucu inatla bağlantıyı açık olarak görmeye devam etti.

Bağlantıyla ilgili sorunlar, sunucu tarafının yükseltilmesiyle ilgili düşüncelere yol açtı.

Sunucu kısmı

Size gerekenler:

  1. Etkin olmayan kullanıcıların hizmetle bağlantısını kesin.
  2. Şu anda jetonu kimin kullandığını (veya hala ödünç aldığını) görün.
  3. Belirtecin bilgisayara bağlı olup olmadığına bakın.

Bu sorunlar crontab ve apache hizmetleri kullanılarak çözüldü. Bizi ilgilendiren 2. ve 3. noktaların izleme sonuçlarının durumunu yeniden yazmanın ayrık doğası, dosya sisteminin ramdrive'da bulunabileceğini gösterir. /etc/fstab dosyasına satır eklendi

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

Kökte komut dosyaları içeren bir komut dosyası klasörü oluşturuldu: usb_restart.sh belirtecinin bağlantısının kesilmesi-takılması

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 etkin cihazların listesini alma

usbip list -r 127.0.0.1 | grep ':' |awk -F ":" '{print $1}'| sed s/' '//g | grep -v "^$" > /ram_drive/usb_id.txt

aktif IP'lerin bir listesinin elde edilmesi (daha sonra kullanıcı kimliklerini görüntülemek için yapılan değişikliklerle) usbip_client_ip.sh

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

crontab'ın kendisi şöyle görünür:

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

Yani elimizde: jetonla kimin çalıştığına bakılmaksızın her 5 dakikada bir yeni bir kullanıcı bağlanabilir. /ramdrive klasörü, usbip sunucusunun durumunu gösteren 2 metin dosyasının kaydedildiği bir sembolik bağlantı kullanılarak http sunucusuna bağlanır.

Sonraki bölüm: “Paketlenmiş çirkin”

Seçenek II. Kullanıcıyı en azından daha az korkutucu bir arayüzle biraz memnun etmek. Kullanıcıların farklı çerçevelere, farklı haklara ve daha az sorunlu bir yaklaşıma sahip farklı Windows sürümlerine sahip olması beni şaşırttı. Lazarus Bulamadım (tabii ki C#'tan yanayım ama bu durumda değil). Yarasa dosyalarını arka plandaki arayüzden simge durumuna küçültülmüş olarak başlatabilirsiniz, ancak uygun testler yapılmadan kişisel olarak benim görüşüme göre: Kullanıcı memnuniyetsizliğini toplamak için onu görselleştirmeniz gerekir.

USBip tabanlı kullanıcılar arasında kriptografik bir belirtecin ağ paylaşımı

Aşağıdaki görevler arayüz ve yazılım tarafından çözüldü:

  1. Belirtecin şu anda meşgul olup olmadığını görüntüler.
  2. İlk başlatmada, ilk kurulum, belirteç sunucusuyla bir oturumun başlatılmasını ve kesilmesini sağlayan "doğru" yarasa dosyalarının oluşturulmasını içerir. Sonraki başlatmalarda, "hizmet" modunun bir şifre kullanılarak uygulanması.
  3. Sunucuyla bir bağlantının varlığının kontrol edilmesi, bunun sonucunda meşgul olup olmadığının sorgulanması veya sorunlarla ilgili mesajların görüntülenmesi. İletişim yeniden başlatıldığında program otomatik olarak normal modda çalışmaya başlar.

WEB sunucusuyla çalışma, ek fphttpclient ek bileşeni kullanılarak gerçekleştirilir.


burada istemcinin mevcut sürümüne bir bağlantı olacak

Makalenin konusuyla ilgili başka değerlendirmeler ve VirtualHere ürününün özellikleriyle ilgili başlangıçtaki kısmi heyecan da var...

Kaynak: habr.com

Yorum ekle