Whitelist für USB-Sticks erstellen?

oli1301

Active Member
Hallo zusammen,

stehe mal wieder vor einem Problem und hoffe, dass es dafür eine Lösung gibt.

Aus Datenschutzgründen, würden wir gerne so etwas wie eine Whitelist für USB-Devices einführen.
Unter Linux kann man einfach eine "rules.d" Datei erstellen, in der man die Seriennummer der Devices einträgt, die gemountet werden dürfen. ( auch als user möglich, nicht nur als root) Kleines Beispiel:
Code:
[...]
# Crypted USB-Sticks
SUBSYSTEMS=="usb", ATTRS{serial}=="11513080102012020550", GOTO="allow_mount"
SUBSYSTEMS=="usb", ATTRS{serial}=="12285130102714321008", GOTO="allow_mount"
[...]
Alle anderen Devices die nicht der Seriennummern entsprechen werden verweigert.
Bei FreeBSD bin ich auf die /etc/devd.conf gestoßen und hab da auch schon so einiges ausprobiert, was aber nicht zu dem gewünschten erfolgt geführt hat.
Das Programm von Kamikaze "automounter" ermöglicht schonmal das mounten von Devices als user, allerdings mountet das Programm alle Devices und es scheint nicht so, als könnte man dem Programm mitteilen, dass es nur bestimmte Geräte durchlässt.

Mit freundlichen Grüßen

Oliver
 
Denkt aber dran, dass das auf einer Stufe mit MAC-Filtering bei WLAN steht.
Die Seriennummer von USB Sticks ist recht frei editierbar
 
ähm ja also ich hatte schon mal das Vergnüngen, dass 2000 bestellte USB-Sticks mit Werbeaufdruck die selbe Seriennummer hatten. Von daher halte in von solchen Listen übärhaupt garnix.
Gruß Bummibär
 
Muss nicht unbedingt anhand der Seriennummer sein, soll halt irgendwie erreicht werden, dass nur eingetragene Sticks zugelassen werden. Gibt es denn irgendwas eindeutiges an einem USB-Stick wenn schon nicht die Seriennummer? Mit Vendor ID's wirds dann wohl genauso wenig funktionieren, die werden bei gleichen Sticks wahrscheinlich auch gleich sein oder?
 
Wie Kamikaze sagt, kriegt man das nicht wasserdicht hin. Aber "beinahe wasserdicht" ist doch auch schon was. Wie wär's hiermit:
Code:
dd if="code.dat" of="/dev/da0" bs=512 count=1 seek=1
Das schreibt einen Block Daten hinter den MBR, wo normalerweise Platz für den Bootloader ist. (Vorausgesetzt, da ist kein Bootloader.)
Auszulesen mit
Code:
dd if="/dev/da0" of="/tmp/code.dat" bs=512 count=1 skip=1
... und dann den Code mit diff vergleichen, bevor man mountet.
Damit das einer herauskriegt, muß er zumindest versiert sein.
 
Ja "beinahe wasserdicht" wäre auf jedenfall schonmal besser als gar nichts. :)
Allerdings, wenn der User den USB-Stick aus welchen Gründen auch immer formatiert, dann wird er wahrscheinlich das Problem bekommen, dass er den Stick nicht mehr erkennt oder hab ich da einen Denkfehler?
 
Formatiert wird normalerweise eine Partition, z. B. da0s1. Also sollte das Gezeigte soweit erhalten bleiben, weil es außerhalb von da0s1 liegt. Auch ein Neuanlegen des MBR sollte keine Rolle spielen. Nur wenn man den Stick bootfähig macht, wird der Code weggebügelt.
Wie Du das in den devd einbaust, weiß ich jetzt nicht auf die Schnelle, aber IIRC kann man da Shellskripte einbinden.

Vielleicht gibt es aber die einfachere Lösung, das Mounten mit Schreibrecht nur einem besonderen, privilegierten User-Account zu gestatten und dem Normalmenschen bloß read-only. Also ein User-Account "usb-king", dem der devd ausschließlich Schreibrechte gestattet, völlig unabhängig vom verwendeten Stick. Schreiben geht dann nur nach einem "su usb-king".
Kommt halt darauf an, was genau Du bezweckst.
 
/usr/local/etc/automounter.conf ist übrigens ein Shellscript, da kannst du einfach mit ". meinscript.sh" dein Prüfscript einbinden, dass kann dann blacklist_devs und blacklist_nodes setzen um Sticks die nicht akzeptiert werden sollen zu sperren.
 
Mit ein wenig Glück wird der neue, mit Solaris und Linux kompatible Automounter es in FreeBSD 10.1 schaffen. Eventuell könnte man damit was basteln, sodass nur genehmigte Sticks gemountet werden. Ich habe mich da allerdings noch nicht eingelesen.
 
Zurück
Oben