Im Zusammenhang mit Gesetzesänderungen zu Vertrauensdiensten („Über elektronische Vertrauensdienste“ in der Ukraine) besteht für das Unternehmen die Notwendigkeit, dass mehrere Abteilungen mit auf Tokens befindlichen Schlüsseln arbeiten (derzeit ist die Frage nach der Anzahl der Hardwareschlüssel noch offen). ).
Als Tool mit den niedrigsten Kosten (kostenlos) fiel die Wahl sofort auf
Die Frage war: Wie schaffe ich es mit möglichst wenig Tanz, dass alles für alle funktioniert...
Das Teil ist ungeschickt
Option XNUMX. Mehrere Verknüpfungen zu Bat-Dateien, nämlich
a) Anschließen des Zugangsschlüssels.
b) Absichtliche Trennung.
Absatz "б» umstritten, daher wurde beschlossen, die Zeit zum Arbeiten mit dem Schlüssel auf 3 Minuten anzugeben.
Die Besonderheit des usbip-Clients besteht darin, dass er nach dem Start in der Konsole hängen bleibt; ohne Unterbrechung der Konsolensitzung kann man die Verbindung sowohl von der Client-Seite als auch von der Server-Seite „grob“ schließen.
Folgendes hat bei uns gut funktioniert:
Erstens: Verbindung on.bat
usbip -a 172.16.12.26 4-1
msg * "Подпись/токен недоступны или заняты "
Zweitens: Herunterfahren off.bat
ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /F
Ohne sich auf das Bewusstsein des Benutzers zu verlassen, wurden die Skripte zusammengefasst token.bat
on.bat | off.bat
Was passiert: Alle Dateien befinden sich im selben Ordner, der von der Datei token.bat gestartet wird. Wenn die Verbindung geschlossen wird, erhält der Benutzer sofort eine Meldung, dass der Schlüssel nicht verfügbar ist, in einem anderen Fall erst nach 180 Pings. Die obigen Codezeilen können mit „@ECHO OFF“ und der Konsolenrichtung auf „> nul“ ausgestattet werden, um den Benutzer nicht zu sehr zu schockieren, es ist jedoch nicht erforderlich, Tests durchzuführen. Der erste „Durchlauf“ auf einem USB-Laufwerk zeigte, dass alles vorhersehbar, zuverlässig und klar war. Darüber hinaus sind keine Manipulationen seitens des Servers erforderlich.
Bei der direkten Arbeit mit dem Token lief natürlich nicht alles wie erwartet: Bei einer physischen Verbindung im Gerätemanager wird der Token als 2 Geräte (WUDF und eine Smartcard) registriert, bei einer Netzwerkverbindung nur als WUDF (obwohl). dies reicht aus, um einen PIN-Code anzufordern).
Es stellt sich auch heraus, dass der brutale „Taskkill“ nicht so schwerwiegend ist und das Schließen der Verbindung auf dem Client problematisch ist und selbst wenn es erfolgreich war, es nicht garantiert, dass es für ihn auf dem Server geschlossen wird.
Nachdem alle Konsolen auf dem Client geopfert wurden, nahm das zweite Skript die Form an:
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
obwohl seine Effektivität weniger als 50 % beträgt, da der Server die Verbindung hartnäckig weiterhin als offen betrachtete.
Probleme mit der Verbindung führten zu Überlegungen über ein Upgrade auf der Serverseite.
Serverteil
Was Sie brauchen:
- Trennen Sie inaktive Benutzer vom Dienst.
- Sehen Sie, wer den Token derzeit nutzt (oder noch leiht).
- Überprüfen Sie, ob das Token mit dem Computer selbst verbunden ist.
Diese Probleme wurden mithilfe der Dienste crontab und apache gelöst. Die diskrete Natur des Umschreibens des Status der Überwachungsergebnisse der Punkte 2 und 3, die uns interessieren, weist darauf hin, dass sich das Dateisystem auf dem RAM-Laufwerk befinden kann. Zeile zu /etc/fstab hinzugefügt
tmpfs /ram_drive tmpfs defaults,nodev,size=64K 0 0
Im Stammverzeichnis wurde ein Skriptordner mit Skripten erstellt: Aushängen/Einhängen des Tokens 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
Abrufen einer Liste der aktiven Geräte 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
Abrufen einer Liste aktiver IPs (mit anschließender Änderung zur Anzeige von Benutzer-IDs) usbip_client_ip.sh
netstat -an | grep :3240 | grep ESTABLISHED|awk '{print $5}'|cut -f1 -d":" > /ram_drive/usb_ip_cli.txt
Die Crontab selbst sieht so aus:
*/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)
Wir haben also: Alle 5 Minuten kann sich ein neuer Benutzer verbinden, unabhängig davon, wer mit dem Token gearbeitet hat. Der Ordner /ramdrive ist über einen Symlink mit dem http-Server verbunden, in dem zwei Textdateien gespeichert sind, die den Status des USBIP-Servers anzeigen.
Nächster Teil: „Hässlich in einer Hülle“
Option II. Um den Benutzer mit einer zumindest weniger einschüchternden Benutzeroberfläche ein wenig zu erfreuen. Verwirrt durch die Tatsache, dass Benutzer unterschiedliche Windows-Versionen mit unterschiedlichen Frameworks und unterschiedlichen Rechten haben, ein weniger problematischer Ansatz als
Folgende Aufgaben wurden durch die Schnittstelle und Software gelöst:
- Zeigt an, ob der Token derzeit belegt ist.
- Beim ersten Start umfasst die Ersteinrichtung die Generierung der „richtigen“ Bat-Dateien, die den Start und die Unterbrechung einer Sitzung mit dem Token-Server implementieren. Bei späteren Starts erfolgt die Implementierung des „Service“-Modus über ein Passwort.
- Es wird überprüft, ob eine Verbindung zum Server besteht. Dabei wird abgefragt, ob dieser ausgelastet ist, oder Meldungen über Probleme angezeigt. Wenn die Kommunikation wieder aufgenommen wird, beginnt das Programm automatisch im Normalmodus zu arbeiten.
Die Arbeit mit dem WEB-Server wird über das zusätzliche fphttpclient-Snap-In realisiert.
Darüber hinaus gibt es weitere Überlegungen zum Thema des Artikels sowie teilweise anfängliche Begeisterung für das VirtualHere-Produkt mit seinen Funktionen ...
Source: habr.com