Es gibt so einige Wege unter Linux, sein System vor unberechtigten Zugriff, bzw. kompromittierten USB-Datenträgern zu schützen. Eine Möglichkeit wurde bereits in diesem Beitrag dargestellt.
Wir befassen uns heute mit USB-Guard für Linux – es reglementiert die Nutzung von USB-Geräten. Dieses Tool – von Red Hat entwickelt – kann Ihren Linux-PC vor BadUSB-Angriffen schützen – also vor USB-Geräten, deren Firmware insoweit verändert wurde, um gezielt einen Schadcode einzuschleusen.
Zum Einsatz kommt dabei das im Linux-Kernel integrierte USB-Authorization-Feature. Mit Hilfe von White- & Blacklisting lassen sich Anweisungen erstellen, USB-Geräte zuzulassen oder eben zu sperren.
Installation
USB-Guard ist in den meisten Distribution im Repository verfügbar und wird unter Debian, Ubuntu und Linux Mint mit dem Befehl im Terminal:
sudo apt install usbguard
installiert.
Den Standard-Regelsatz von USB-Guard erweitern wir Schritt für Schritt mit folgenden Einstellungen in der Datei /etc/usbguard/usbguard-daemon.conf.
Dazu öffnen wir ein Terminal und fügen den Befehl:
sudo nano /etc/usbguard/usbguard-daemon.conf
ein.
Mit der Pfeil-Taste (nach unten) bewegen wir uns ans Ende der Config-Datei…
… und fügen hier folgende Zeilen ein:
PresentDevicePolicy=apply-policy
PresentControllerPolicy=apply-policy
Diese zwei Parameter stellen sicher, dass alle Regeln auch für USB-Geräte angewendet werden, die vor dem Booten angeschlossen wurden.
Alle USB-Geräte, die keiner Regel zugewiesen sind, werden beim Starten von USBGuard mit folgendem – weiteren – Parameter blockiert:
ImplicitPolicyTarget=block
Speichern Sie jetzt diese Ergänzungen mit der Tastenkombi [Strg + O], bestätigen mit [Enter] und verlassen den Nano-Editor mit [Strg + X].
Initialen Regelsatz (Policy) generieren:
Nach diesen Konfigurationsschritten wird ein initialer Regelsatz (Policy) erzeugt, der die integrierten sowie angeschlossenen USB-Geräte freigibt.
Schließen Sie alle häufig benötigten USB-Geräte an, die später regelmäßig benutzt werden.
Das ist zum einem sinnvoll, da sonst Tastatur und Maus nicht mehr korrekt arbeiten.
Wir erstellen also mit folgenden Befehl die initiale Konfiguration :
sudo usbguard generate-policy > rules.conf
Diese wird nun in das Konfigurationsverzeichnis „/etc/usbguard“ kopiert:
sudo cp rules.conf /etc/usbguard/rules.conf
…und die entsprechenden Rechte gesetzt:
sudo chmod 0600 /etc/usbguard/rules.conf
Nach der Initialisierung des Relgelsatzes wird der USBGuard Service mit folgendem Befehl neu gestartet:
systemctl restart usbguard.service
Damit der USB-Guard Service beim Booten automatisch startet:
systemctl enable usbguard.service
Die mehrfach aufpoppenden Passwort-Abfragen bestätigen Sie bitte jeweils mit der entsprechenden Eingabe.
USB-Geräte auflisten:
Um sich alle angeschlossenen USB-Geräte auflisten zu lassen, benutzt man den den Befehl “usbguard” mit der Option “list-devices”:
usbguard list-devices
Im Ausgabe-Beispiel ist erkennbar, dass jedes USB-Gerät eine eindeutige ID hat, über die es angesprochen werden kann.
Alle laut Regelsatz festgelegten USB-Geräte sind freigegeben (allow ID 11 – 20) – ein nachträglich angeschlossener „fremder“ USB-Stick mit der Kennung 21 ist hingegen blockiert.
USB-Geräte freigeben und blockieren:
Um den blockierten USB-Stick freizugeben, nutzen wir folgenden Befehl:
usbguard allow-device 21
Der „fremde“ USB-Stick wurde nun zur Verwendung freigegeben.
Standardmäßig ist die Freigabe eines USB-Gerätes nur vorübergehend gültig. Nach dem Aus- und erneuten Einstecken des USB-Sticks wird dieser wieder blockiert. Durch den Parameter -p wird es dauerhaft erlaubt:
usbguard allow-device 21 -p
Folgender Befehl macht die Freigabe dauerhaft rückgängig:
usbguard block-device 21 -p
Die Eingabe von „21“ bezieht sich hier natürlich auf das Beispiel. Verwenden Sie die ID Ihres gesperrten USB-Gerätes.
Verwendung des USB-Guard-Notifier
Für USB-Guard ist ein sogenannter Notifier – also Benachrichtigungsdienst verfügbar. Wird ein unbekanntes USB-Gerät angeschlossen, öffnet sich ein Popup-Fenster, das per Mausklick das Mounten gestattet.
Die Verwendung widerspricht eigentlich dem Sicherheitsgedanken hinter USB-Guard.
Hat ein Angreifer unbemerkt Zugang zum PC, könnte er seinen infizierten USB-Stick anschließen und mit einem Mausklick problemlos freigeben – sofern der Bildschirm nicht gesperrt ist.
Zudem verleitet der Dienst dem Anwender einfach immer auf „Allow“ zu klicken, sobald das Fenster erscheint. Diese Bequemlichkeit hat eine verringerte Sicherheit zur Folge.
Möchten Sie diesen Dienst trotzdem nutzen, muss das Tool USBGuard-Notifier nachträglich mit folgenden Befehl:
sudo apt install usbguard-notifier
installiert werden.
Achtung – Die Installation von USBGuard-Notifier sollte erst nach Abschluß der Einrichtung von USB-Guard erfolgen. Andernfalls laufen Sie Gefahr, Maus und Tastatur nicht mehr bedienen zu können!
Starten Sie den PC neu. Schließen Sie nun einen „fremden“ USB-Stick an, erhalten Sie ein Hinweis-Fenster – mit Klick auf Allow wird das USB-Gerät freigegeben…
…und erhalten anschließend eine Bestätigung…
Nota
Für den privaten PC zuhause, i.d.R. ein Einzelarbeitsplatz – an dem lediglich eigene USB-Geräte angeschlossen werden – ist die Nutzung einer USB-Sperre abzuwägen.
Bei Laptops, die auch unterwegs zum Einsatz kommen, ist diese Methode eine sinnvolle Ergänzung zum verschlüsselten Linux-System.
3 Reaktionen
Danke, zebolon, für diese klare und klärende Darstellung. Der Grundgedanke lautet: zunächst zu allem nein sage, dann die regulären Ausnahmen definieren.
Eine Frage habe ich noch für die Situation, dass ich einen dem Rechner unbekannten USB-Stick anstecke: Erinnert mich der USB-Guard-Service daran, dass es ihn gibt und ich ihm sagen muss, dass das Gerät koscher ist?
Grüßle, Bostaurus
Hallo @Bostaurus,
auf Wunsch auch eines weiteren Lesers habe ich den Beitrag mit der Nutzung des USB-Guard-Notifiers ergänzt.
Wie bereits erwähnt, widerspricht dieser Dienst den Sicherheitsgedanken hinter USB-Guard. Im Vorfeld habe ich nicht zuletzt deshalb darauf verzichtet.
Grüße
zebolon
Sehr nett, danke 🙂