Verwendete Software:

  • Ubuntu 22.04
  • USBGuard 1.1.1

USBGuard kann mit folgendem Befehl installiert werden.

apt install usbguard

Die Default-Regeln von USBGuard sollten um folgende Einstellungen in der Datei /etc/usbguard/usbguard-daemon.conf erweitert werden:

PresentDevicePolicy=apply-policy
PresentControllerPolicy=apply-policy

Mit diesen zwei Parametern wird sicher­gestellt, dass alle Regeln auch für USB-Geräte angewendet werden, die vor dem Booten eingesteckt wurden.

Alle USB Geräte, die keiner Regel zugewiesen sind, werden beim Starten von USBGuard mit folgendem Parameter in der Datei /etc/usbguard/usbguard-daemon.conf blockiert:

ImplicitPolicyTarget=block

Initalen Regelsatz (Policy) erzeugen:

Nach der USBGuard Daemon Konfiguration wird ein initaler Regelsatz (Policy) erzeugt, der die integrierten sowie angeschlossenen USB Geräte freigibt. Es ist von Vorteil, alle benötigten USB Geräte (z.B USB-Stick, Yubikey etc.) anzuschließen, die später in Benutzung sein werden.

Mit folgendem Befehl die initiale Konfiguration erstellen und Rechte setzen:

# usbguard generate-policy > /etc/usbguard/rules.conf
# chmod 0600 /etc/usbguard/rules.conf

Nach der Initialisierung des Relgelsatzes wird der USBGuard Service mit folgendem Befehl durchgestartet:

# systemctl restart usbguard.service

Damit der Service automatisch beim Booten startet, wird er enabled:

# systemctl enable usbguard.service

USB-Geräte auflisten: Um sich alle angesteckten USB-Geräte anzeigen zu lassen benutzt man den den Befehl “usbguard” mit der Option “list-devices”:

# usbguard list-devices

10: allow id 1d6b:0002 serial "0000:00:0d.0" name "xHCI Host Controller" hash "d3YN7OD60Ggqc9hClgdTehcd7ajjceuI03=" parent-hash "XjauE1kBdG1uWQr5CjULQs7zzdjiwidhU7cWLk83v+tE=" via-port "usb1" with-interface 09:00:00
11: allow id 1d6b:0002 serial "0000:00:14.0" name "xHCI Host Controller" hash "jEP/6WzZdgUwdJ5dghcejd7375/d6378OqdplND/o=" parent-hash "rV09okjfdELq7c2eA4tYjVhdjZZwoxj73/hdbcj=" via-port "usb2" with-interface 09:00:00
14: block id 058f:6387 serial "E84615B5" name "Intenso Alu Line" hash "eY9PSaUQeCKDLyxToadj5EZChdgtwuZsjw72/2eT9k=" parent-hash "jEPhU/dw1viqdJ5VSeUidnjfh9jeuTwqo2OqdplND/o=" with-interface 08:06:50 with-connect-type "hotplug"

Im Beispiel ist ersichtlich, dass jedes USB-Gerät eine eindeutige ID hat, über die es referenziert werden kann. Es ist auch zu erkennen, dass zwei USB-Geräte freigegeben sind und eines blockiert ist.

USB-Geräte freigeben und blockieren:

Wir sehen, dass der USB-Stick mit der ID 14 blockiert ist. Um den Stick freizugeben, wird folgender Befehl genutzt:

# usbguard allow-device 14

Standardmäßig ist die Freigabe eines USB-Gerätes nur vorrübergehend gültig. Nach dem Aus- und erneuten Einstecken des USB-Gerätes wird dieses wieder blockiert. Durch den Parameter -p wird es dauerhaft erlaubt.

# usbguard allow-device 14 -p

Mit folgendem Befehl macht ihr die Freigabe dauerhaft rückgängig:

# usbguard block-device 14 -p

Weitere Informationen zu USBGuard:

Genauere Auskunft zu USBGuard, z.B. wie ihr eigene Regeln schreibt oder wie ihr das integrierte USB-Authorization-Feature benutzt, findet ihr unter folgenden Links:

Jeremias Brödel
Jeremias Brödel arbeitet seit 2010 als Linux-Consultant bei B1 Systems und beschäftigt sich mit den Themen Monitoring, Automatisierung, Container, Mail, Software Paketierung.