USB reglementieren

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
xsepp
Beiträge: 20
Registriert: 15.07.2009 09:50:11

USB reglementieren

Beitrag von xsepp » 03.10.2017 23:09:42

Hallo,

ich möchte gerne bei einem Rechner die USB Schnittstelle reglementieren.
Alle USB-Sticks, Cameras etc. sollen abgewiesen werden.
Lediglich eine bestimmte Camera und die dazugehörige SD-Card soll nutzbar sein.
Weiterhin muß natülich USB-Maus und USB-Tastatur, sowie der SD-Card-Reader für obige SD-Card funktionieren.

Wie kann ich so was realisieren?
Udev rule? Werde da irgendwie nicht fündig, wie ich das machen könnte.
Wie würdet ihr das machen?
Gruss xsepp

Benutzeravatar
smutbert
Moderator
Beiträge: 8320
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: USB reglementieren

Beitrag von smutbert » 03.10.2017 23:46:00

Mit udev-Regeln sollte das grundsätzlich gehen, aber manipulierte USB-Geräte können sich zweifellos mit beliebiger Vendor- und Model-ID melden. Es bringt also möglicherweise nicht die Sicherheit, die man sich erhofft.
Merkwürdigerweise habe ich auch kein wirklich passendes Beispiel gefunden, das ich hier posten könnte und ich bin was udev-Regeln angeht zu unerfahren, das was ich mir ausdenken könnte zu posten.

Ein interessantes Paket, das selbst geschrieben udev-Regeln vielleicht überflüssig machen könnte, habe ich aber noch gefunden: Debianusbguard


edit:
Ach was, ich poste meine Idee einfach. Irgendjemand wird mich hoffentlich korrigieren, wenn es allzu falsch ist:

Code: Alles auswählen

# Whitelist
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="046a", ATTR{idProduct}=="b092", GOTO="aktiviert_lassen"

# deaktivieren
ACTION=="add", SUBSYSTEM=="usb", ATTR{authorized}="0"

# Ende
LABEL="aktiviert_lassen"
habe nicht ausprobiert ob es so funktioniert - die Idee ist, dass man die erste (ok, eigentlich zweite) Zeile für alle Vendor- und Product-IDs wiederholt, so dass der zweite Absatz nur auf USB-Geräte angewendet wird, die nicht auf der Whitelist stehen (die IDs oben stammen von einer USB-Maus).
Ich nehme an es wäre sinnvoll mit dem Dateinamen (wie zB 00-aa.rule) dafür zu sorgen, dass diese Regel möglichst früh ausgeführt wird.

Selbst wenn es funktionieren sollte, habe ich selbst aber einen Kritikpunkt: Imho wäre es schöner, wenn zuerst einmal alle Geräte deaktiviert würde und nur Geräte auf der Whitelist wieder aktiviert würde und nicht umgekehrt, aber dazu fehlt mir eine Idee.

xsepp
Beiträge: 20
Registriert: 15.07.2009 09:50:11

Re: USB reglementieren

Beitrag von xsepp » 04.10.2017 20:51:13

Hallo smutbert,

danke für deine interessante Antwort.
Mit udev-Regeln sollte das grundsätzlich gehen, aber manipulierte USB-Geräte können sich zweifellos mit beliebiger Vendor- und Model-ID melden. Es bringt also möglicherweise nicht die Sicherheit, die man sich erhofft.
Ich denke, denen, den ich hiermit die Grenzen ihres Tuns aufzeigen will, fehlt dazu das nötige know how dazu. ;-)

Bezüglich deines "Kritikpunkts" deiner Idee könnte man das nicht einfach umdrehen, also etwa so:

Code: Alles auswählen

# deaktivieren
ACTION=="add", SUBSYSTEM=="usb", ATTR{authorized}="0"

# Whitelist
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="046a", ATTR{idProduct}=="b092", ATTR{authorized}="1"
Ich weiß das auch nicht, hab's ja auch noch nicht ausprobiert.

Aber einen Stolperstein könnte es meiner Meinung auch noch geben, denke ich.
Angenommen bei der Regel für Maus und Tastatur läuft was schief, bekommt man postwendend ein nicht bedienbares Gerät. Außer vielleicht per ssh. Sehe ich das richtig?
Gruss xsepp

Benutzeravatar
smutbert
Moderator
Beiträge: 8320
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: USB reglementieren

Beitrag von smutbert » 04.10.2017 23:26:02

Ja, so ist das. Ich habe es auf einem System getestet, das headless läuft - war also kein Problem, dass bei meinen Versuchen USB komplett lahm gelegt wurde.


Tatsächlich bin ich glaube ich einen kleinen Schritt weiter gekommen. Statt dem nicht funktionierenden authorized, kann man die Geräte deaktivieren, indem man ihnen einfach keinen Treiber zuweist, also sozusagen das USB-Gerät an sich zulässt, aber dafür sorgt, dass der USB-Stick nicht als Massenspeichergeräte, also als Blockgerätedatei auftaucht (bzw. gleich wieder verschwindet?). Das Vorgehen für USB-Sticks ist hier (in der Antwort) beschrieben:
https://askubuntu.com/questions/626744/ ... -no-others

Das entscheidende ist der Befehl »RUN+="/bin/sh -c 'echo -n %k >/sys%p/driver/unbind'"«, der dem Gerät sozusagen den Treiber wegnimmt.
Das ganze funktioniert soweit ich das erkenne eigentlich korrekt, aber ich habe es nicht geschafft, das auf alle USB-Geräte zu erweitern. Versucht habe ich es zuletzt so

Code: Alles auswählen

# Whitelist
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="8087", GOTO="keep"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1d6b", GOTO="keep"

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="4146", ATTR{idProduct}=="ba01", GOTO="keep"

# alle anderen deaktivieren
#ACTION=="add", SUBSYSTEM=="usb", ATTR{authorized}="0"
ACTION=="add", SUBSYSTEM=="usb", RUN+="/bin/sh -c 'echo -n %k >/sys%p/driver/unbind'"

# Sprungmarke für erlaubte Geräte
LABEL="keep"
Die Whitelist habe ich hier testweise etwas großzügiger gestaltet - es hilft aber nix die USB-Geräte von Intel, also eigentlich die USB-Controller/Hubs (Vendor 8087) überleben diese Regel nicht und USB ist wieder komplett lahmgelegt.


EDIT:
Das wollte ich schreiben, hab es aber vergessen. Mit der authorized-Regel scheitert es mit der Meldung

Code: Alles auswählen

systemd-udevd[1786]: error opening ATTR{/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/authorized} for writing: No such file or directory
und USB funktioniert überhaupt nicht. Ich weiß aber nicht wieso.

xsepp
Beiträge: 20
Registriert: 15.07.2009 09:50:11

Re: USB reglementieren

Beitrag von xsepp » 06.10.2017 09:30:54

Hallo smutbert,

erst mal Danke für deine Bemühungen.
Hätte nicht gedacht, dass sich mein Wunsch so schwierig gestaltet. Ich dachte eher es gibt dafür eventuell schon lange eine übliche Standardlösung und ich war nur zu ungeschickt die zu finden. Das Bedürfnis, "Anstöpselwut" von Angestellten irgendwelche USB Devices an Firmenrechner anzuschließen, zu reglementieren haben scheinbar nicht viele Admins. Oder bei den bisher über 200 Aufrufen dieses Threads waren die nicht dabei. ;-)
Ich werde wohl am WE da noch etwas rumprobieren müssen. Wenn dir oder natürlich auch jedem anderen noch was dazu einfällt, bitte immer her damit.
Heute Abend werde ich da auch noch mal mit ein paar Jungs bei einem Bierchen drüber plaudern.
Gruss xsepp

schwedenmann
Beiträge: 5525
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: USB reglementieren

Beitrag von schwedenmann » 07.10.2017 20:37:21

Hallo


habe gerade mal den Tip von @smutbert getestet (Debian stretch, nox, ohne Tastatur und Maus!), echt super das tool :!:

Um z.B. einen USB-Stick und alle andern angesteckten USB-devices zuzulassen

#usbguard generate-policy > rules.conf
#install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf
#systemctl restart usbguard.service

danach wird ein anderer USB-Stick zwar per lsusb erkannt, aber per fdisk -l nicht !
Derselbe 1.Stick funktioniert in einem anderen USB-Slot, was man aber auch einschränken kann, sodaß nur ein Einstecken in Slot6 funktioniert, alle anderen USB-slots werden abgelehnt.

mfg
schwedenmann

Antworten