Page 1 of 1

USBSecure Paket

Posted: 26. Nov 2005, 13:01
by Hendrik_Ambrosius
An dieser Stelle möchte ich gern Werbung machen für ein neues Paket, das wir in das KnowHowCenter gestellt haben.

Es blockiert nicht gewünschte USB Geräte und bietet die Möglichkeit, für einzelne PCs oder Gruppen Geräte wieder zu erlauben.

Für eine solche Funktionalität zahlt man sonst viel Geld!

Die Doku ist innerhalb der ZIP-Datei auch in deutsch vorhanden.
Feedback/Ideen sind willkommen.

----

Produkt : Configurator
Kurzbeschreibung : Empirum USBSecure - Disable and allow USB devices
Beschreibung :
The attached installation routine automatically creates 2 additional Empirum packages in the swdepot:

USBSecure:
Disables all USB devices (like memory sticks) by default.

USBDevices:
Reads the IDs of devices attached to a computer and writes it to the configurator\log-folder.
Via "external tools" the admin can access the list of attached devices and add the ones he wants to enable to the ALLOWED_USB_DEVICES-variable.
Reinstallation of USBSecure activates the changes.

Additional documentation can be found in the ZIP-file.

Operating systems supported: Windows XP only
Author: mdistefano@matrix42.de

Posted: 17. Jan 2006, 16:44
by Holoubek
Hallo,

hat schon jemand Erfahrungen mit diesem Paket?

Bei meinen Tests, werden alle USB-Geräte (auch die Erlaubten) ausgeworfen. USBSecure.CFG wird korrekt gefüllt. Wir nutzen XP/SP2.

H. Holoubek

Posted: 17. Jan 2006, 18:44
by jockisch
Hallo,

mit dieser speziellen Version nicht.

Wir hatten vor einiger Zeit (seit Win XP) die jetzt von matrix angebotene Programme auch laufen. (Ursprunglich von der c't)
Allerdings ohne DB Unterstützung.

Vor einigen Monaten haben wir jedoch festgestellt, dass es dabei Probleme gibt.
Sobald ein USB - Massenspeichergerät eingesteckt wurde, welches nicht erlaubt war und sein soll, werden danach alle USB Massenspeichergeräte ausgeworfen. :cry:
Egal ob erlaubt oder nicht.
Beheben lässt sich dies dann gar nicht mehr, weil der Wert des USB Gerätes in der Registry steht und immer wieder auftaucht.

Wir haben jetzt das VBS Script umgestellt und ein anderes Auswurfprogramm im Einsatz.
Damit haben wir bis jetzt bessere Erfahrungen.
(Allerdings erst bei ein paar Rechnern verteilt)


Viele Grüße
Stephan Jockisch

Posted: 17. Jan 2006, 18:49
by Hendrik_Ambrosius
Dieses Auswurfprogramm würde uns auch interessieren, vielleicht können wir es stattdessen in das o.a. Script integrieren.
Läuft es auch mit Windows 2000?

Posted: 17. Jan 2006, 20:23
by jockisch
Hallo,

ups ich habe eben gesehen, dass matrix auch das Auswurfprogramm von c`t verwendet, da hatten wir immer ein andere Version ( wo die genau her war weiss ich gar nicht mehr :oops: )

Allerdings werfen wir das Gerät nicht nach Name sondern nach ID aus.
Deshalb sieht unser vb script etwas anders.

An der cfg- Datei ändert sich nichts.

Nicht wundern bei uns heisst das Auswurfprogramm deveject - ist aber das von der ct.

Zusätzlich überprüfen wir nur Massenspeicher und als unbekanntes Gerät erkannte Devices.
Der Aufwand für jeden Drucker Tastatur, Maus, Scanner etc. die Liste zu pflegen ist einfach zu hoch. :lol:


Viele Grüße
Stephan Jockisch

----
' Stephan Jockisch
' V. 2.0 29.09.2005

CfgFileName = "C:\Programme\USBSec\USBSecure.cfg"
TxtFileName = "C:\Programme\USBSec\UsbDevices.txt"

Set Reg = GetObject("winmgmts:root\Default:StdRegProv")
Set Shell = CreateObject("Wscript.Shell")

Const HKEY_LOCAL_MACHINE = &H80000002
Dim UsbDevices(255)
Dim UsbDeviceTypes(255)
Dim UsbDeviceDescription(255)
Dim UsbDeviceHW(255)
Dim AllowedUsbDevices(255)

Do

Key = "SYSTEM\CurrentControlSet\Enum\USB"
return = Reg.EnumKey(HKEY_LOCAL_MACHINE, Key, subkeys)
' Im Array subkeys befinden sich jetzt alle USB-Gerätetypen, d.h. alle Untereinträge
' von HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB

DeviceTypeCounter = 0
For Each subkey In subkeys
UsbDeviceTypes(DeviceTypeCounter) = subkey
DeviceTypeCounter = DeviceTypeCounter + 1
Next


' Jetzt werden alle Untereinträge von_ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
' ausgelesen, um an die eigentlichen Geräteeinträge zu gelangen
For DeviceCounter = 0 To DeviceTypeCounter - 1
Key = "SYSTEM\CurrentControlSet\Enum\USB" & "\" & UsbDeviceTypes(DeviceCounter)
return = Reg.EnumKey(HKEY_LOCAL_MACHINE, Key, subkeys)
i = 0
For Each subkey In subkeys
UsbDevices(i) = subkey
i = i + 1
Next
Key = "SYSTEM\CurrentControlSet\Enum\USB" & "\" & UsbDeviceTypes(DeviceCounter) & "\" & UsbDevices(0)
Name = "DeviceDesc"
return = Reg.GetStringValue(HKEY_LOCAL_MACHINE, Key, Name, Description)
UsbDeviceDescription(DeviceCounter) = Description
'Hardwarenamen für USBeject benötigt
UsbDeviceHW(DeviceCounter) = (Usbdevices(0))
Next

' UsbDevices.txt erzeugen, falls Parameter /c mitgegeben wurde
If WScript.Arguments.Count > 0 Then
If WScript.Arguments(0) = "/c" Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set TxtFile = fs.OpenTextFile(TxtFileName, 2, True)
For j = 0 To DeviceTypeCounter - 1
TxtFile.Writeline UsbDeviceDescription(j) & ": " & UsbDeviceTypes(j)
Next
TxtFile.Close
Exit Do
End If
End If


' Einlesen der Datei USBSecure.cfg in das Array AllowedUsbDevices()
Set fs = CreateObject("Scripting.FileSystemObject")
Set CfgFile = fs.OpenTextFile(CfgFileName)
AllowedDeviceCounter = 0
Do Until CfgFile.AtEndOfStream
AllowedUsbDevices(AllowedDeviceCounter) = CfgFile.ReadLine
AllowedDeviceCounter = AllowedDeviceCounter + 1
Loop
CfgFile.Close


' Vergleich der beiden Arrays AllowedUsbDevices() und UsbDeviceDescription()
For x = 0 To DeviceTypeCounter - 1
OK = False
For y = 0 To AllowedDeviceCounter - 1
'Auswurf nur für unbekannte- und Massenspeichergeräte
If NOT UsbDeviceDescription(x) = "USB-Massenspeichergerät" XOR NOT UsbDeviceDescription(x) <> "Unbekanntes Gerät" Then OK = True
If UsbDeviceDescription(x) & ": " & UsbDeviceTypes(x) = AllowedUsbDevices(y) Then OK = True

Next
If OK = False Then ' Angeschlossenes Gerät steht nicht in USBSecure.cfg

' Parameter für das sichere Entfernen vorbereiten

Parameter = " -EjectId:" & "USB\" & UsbDeviceTypes(x) & "\" & UsbDeviceHW(x)

'USB Gerät auswerfen
return = shell.Run ("C:\Programme\USBSec\usbeject.exe" & Parameter,0,False)

'msgbox (" Ausgeworfen: " & parameter)
'return = MsgBox("Unzulässiges Gerät an der USB-Schnittstelle: " & UsbDeviceDescription(x), 4096, "USBSecure")
End If
Next

WScript.Sleep 30000

Loop

Posted: 17. Jan 2006, 21:41
by Hendrik_Ambrosius
OK - werde ich mal an den Kollegen weiterleiten, der das schöne Script für das KHC gebaut hat.

Posted: 19. Jan 2006, 15:58
by Holoubek
Hallo Zusammen,

habe heute einige Tests durchgeführt. Folgendes konnte ich feststellen:

Habe ich mehrere Geräte mit gleicher VID und PID, aber unterschiedlichen HW-ID´s wird nur das erste Gerät ausgeworfen. D.h. auf alle weiteren Geräte (obwoh lt. USBSecure.cfg nicht erlaubt) kann zugegriffen werden.

Schöne Grüße
H. Holoubek

Posted: 19. Jan 2006, 19:05
by jockisch
Hallo,

ich werde das nochmal morgen in Ruhe testen.
Was ich allerdings schon jetzt direkt sagen kann, bei gleichen USB - Sticks
(Hersteller und Typ) werden diese natürlich nicht unterschieden und auch nicht ausgeworfen :roll:

Ciao
Stephan

Posted: 03. May 2006, 10:30
by jockisch
Hallo,

ich muss gestehen, dass ich nicht mehr ans testen gedacht habe :oops:

(ist auch schwierig man braucht 2 identische USB Sticks)

Allerdings läuft unser Script nun seit einigen Monaten und es sind bisher keine Beschwerden aufgetreten.

In diesem Zusammenhang möchte ich aber noch auf eine Weiterentwicklung von Seiten der c't hinweisen (4/2006). Das darin aufgeführte Konzept macht einen guten Eindruck. Da wir jedoch mit unserer Variante sehr gut fahren werden wir die Änderungen vorerst nicht aktivieren.

Allerdings kann für andere Benutzer und auch matrix die Gechichte interessant sein. Neben einer Unterstützung für Win2000 können auch Disketten und CDrom deaktiviert werden.
Berechtigungen nach Benutzern vergeben werden und Logfiles angelegt werden.

Nähere Info's bei der c't Softlink "0604216".


Viele Grüße
Stephan Jockisch