staging.inyokaproject.org

usbauth

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Durch usbauth 🇬🇧 wird eine „USB-Firewall“ bereitgestellt. Sie eignet sich u. a. um Maßnahmen gegen BadUSB-Angriffe 🇬🇧 ergreifen zu können, aber auch um in IT-Landschaften eine definierte Nutzung von USB zu ermöglichen. Die USB-Firewall läuft nicht als Service, sondern wird beim Anschließen eines USB-Gerätes durch udev aufgerufen um ein vorgegebenes Regelwerk umzusetzen.

Für BadUSB-Angriffe eignen sich präparierte USB-Sticks, die sich durch modifizierte Firmware z. B. als Tastatur ausgeben. Diese können auf dem System bösartige Befehle ausführen und dadurch das System beschädigen. Hier es möglich mit usbauth beispielsweise die Anzahl der maximalen Tastaturen am System zu begrenzen und sie nur an einem bestimmten USB-Port zu erlauben. Auch weitergehende Attribute wie Hersteller-ID, Product-ID, etc. können in das Regelwerk aufgenommen werden. Die Steuerung erfolgt durch Regeln, welche in der Konfigurationsdatei /etc/usbauth.conf hinzugefügt werden können. Optional können durch usbauth-notifier auch Benachrichtigungen beim Anschluss von USB-Geräten eingeblendet werden.

Im Nachfolgenden werden USB-Geräte und -Interfaces erwähnt, ein physisches USB-Gerät bringt mindestens ein softwareseitiges USB-Interface mit. USB-Geräte nutzen in vielen Fällen mehrere softwareseitige USB-Interfaces. Ein einfacher USB-Stick nutzt ein Interface, um die Funktionalität eines Massenspeichers zu realisieren. Ein USB Headset kann mehrere USB-Interfaces nutzen, für die Audioausgabe, Audioeingabe sowie die Steuerungstasten. Eine genauere Beschreibung der USB-Architektur findet sich hier 🇩🇪 in Kapitel 2.

Die Entwicklung von usbauth erforderte eine Anpassung des Linux-Kernels. Deshalb unterstützt es Linux ab Version 4.4. Vor dieser Version war es möglich nur komplette USB-Geräte abzulehnen oder zuzulassen (Geräteautorisierung). Ab Linux 4.4 ist es möglich auch einzelne USB-Interfaces abzulehnen oder zuzulassen (Interfaceautorisierung). Diese von usbauth genutzte Kernel-Erweiterung erlaubt es also eine feinere Abstimmung vorzunehmen. Es können so beispielsweise USB-Headsets mit integriertem HID-Tastenfeld (für die Aktionen Lauter, Leiser und Stummschalten) angeschlossen werden, auch wenn Tastaturen grundsätzlich abgelehnt werden sollen. Hierbei ist es möglich nur dieses Tastenfeld zu deaktivieren, welches sich wie eine normale USB-Tastatur am System registriert. Die Audio-Funktionen können dabei aktiviert bleiben. Unter Verwendung der Geräteautorisierung könnte nur das komplette USB-Headset abgelehnt oder zugelassen werden. Es gibt noch eine alternative Lösung mit dem Namen USBGuard 🇬🇧, welche mit der Geräteautorisierung arbeitet. Aber auch mit usbauth ist es möglich, Regeln so zu schreiben, dass komplette USB-Geräte mit Hilfe der Interfaceautorisierung abgelehnt werden.

Installation

Die USB-Firewall gliedert sich in die Pakete libusbauth-configparser, usbauth und usbauth-notifier auf. Die Bibliothek libusbauth-configparser dient zum Parsen der Konfigurationsdatei. Die Firewall selbst wird durch das usbauth-Paket bereitgestellt. Durch das Paket usbauth-notifier werden grafische Benachrichtigungen beim Anschluss von USB-Geräten erzeugt, diese erlauben auch das manuelle Zulassen oder Ablehnen von den einzelnen Gerätefunktionen. Die usbauth-Pakete sind ab ubuntu 18.04 verfügbar.

Die USB-Firewall usbauth kann ist in dem folgenden Paket:

  • usbauth (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install usbauth 

Oder mit apturl installieren, Link: apt://usbauth

Notifier für grafische Benachrichtigungen

Die folgenden Schritte sind optional und nur erforderlich, falls Benachrichtigungen am Desktop angezeigt werden sollen. So können Entscheidungen der Firewall durch den Benutzer kontrolliert und ggf. überstimmt werden.

Der Notifier wird durch folgendes Paket bereitgestellt:

  • usbauth-notifier (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install usbauth-notifier 

Oder mit apturl installieren, Link: apt://usbauth-notifier

Der Benutzer muss berechtigt sein, den Notifier zu benutzen. Dazu muss er der Gruppe usbauth-notifier beitreten:

sudo usermod -a -G usbauth-notifier $USER 

Nach einem Neustart des Rechners erscheinen Benachrichtigungen auf dem Desktop beim Anschluss von USB-Geräten.

Falls auf den Neustart des Rechners verzichtet werden soll, ist ein Neuladen des D-Bus Services notwendig.

sudo systemctl reload dbus.service 

Außerdem muss sich der aktive Desktopbenutzer in diesem Fall auch aus- und wieder einloggen. Es sollte folgender Befehl genutzt werden, um ein vollständiges Ausloggen sicherzustellen.

loginctl terminate-user $USER 

Danach startet der Notifier unabhängig von der verwendeten Desktopumgebung und gibt beim Einstecken von USB-Geräten eine Benachrichtigung für jedes USB-Interface des Gerätes aus.

Wichtig: Ohne gültige Konfiguration unter /etc/usbauth.conf werden keine Benachrichtigungen ausgegeben.

Benutzung

Der Standardbetrieb von usbauth erfolgt im Hintergrund. In der Konfigurationsdatei /etc/usbauth.conf definierte Regeln werden beim Anschluss von USB-Geräten für jedes USB-Interface verarbeitet. Der Aufruf von usbauth erfolgt durch udev, es ist dabei kein spezieller Service von usbauth erforderlich.

Optional können durch usbauth-notifier unabhängig von der verwendeten Desktopumgebung Benachrichtigungen beim Anschluss von USB-Geräten angezeigt werden. Benachrichtigungen werden für jedes USB-Interface des Gerätes erzeugt und erlauben eine gezielte Überstimmung des in der Konfigurationsdatei hinterlegten Standardvorgehens (erlauben oder ablehnen). So ist es z. B. möglich das Tastenfeld eines USB-Headsets gezielt durch Klick des Benutzers zu aktivieren.

Damit usbauth aktiv wird, muss eine gültige Konfiguration unter /etc/usbauth.conf existieren. Ohne eine solche können auch keine Benachrichtigungen mit usbauth-notifier ausgegeben werden.

Im folgenden Abschnitt werden ein paar Beispiele vorgestellt. Eine ausführliche Beschreibung findet sich hier 🇩🇪 in Kapitel 4.4 (Szenarien in Kapitel 3 und passende Regelbeispiele in Kapitel 5) und in den Manpages 🇬🇧.

Regelbeispiele

Werte von Attributen der Regeln werden immer Hexadezimal oder als Zeichenkette angegeben.

Um im System nur zwei HID Geräte zuzulassen würde sich folgende Konfiguration eignen, hierzu muss die Konfigurationsdatei /etc/usbauth.conf wie folgt editiert werden.

1
2
allow all # erlaubt alle USB Geräte
deny bInterfaceClass==03 devcount > 2 # lehnt HID Interfaces ab, sobald mehr als zwei Geräte angeschlossen sind

Es ist auch möglich HID Geräte nur an bestimmten USB-Ports oder nur solche von bestimmten Herstellern zuzulassen. Dafür würde sich folgende Regeln anbieten:

1
2
3
4
allow all # erlaubt alle USB Geräte
deny bInterfaceClass==03 # lehnt alle HID Interfaces ab
allow bInterfaceClass==03 idVendor==046d busnum==1 devpath==3 # erlaubt ein HID-Gerät vom Hersteller 046d am USB-Port 1-3
allow bInterfaceClass==03 idVendor==046d busnum==1 devpath==4 # erlaubt ein HID-Gerät vom Hersteller 046d am USB-Port 1-4

Die USB-Firewall kann auch für viele andere Zwecke verwendet werden – unabhängig von den BadUSB-Angriffen. Beispielsweise das Verbieten von Speichersticks um Malware oder dem Diebstahl von vertraulichen Informationen vorzubeugen. Eintrag für die Konfigurationsdatei:

1
2
allow all # erlaubt alle USB Geräte
deny bInterfaceClass==08 # lehnt USB Massenspeicher ab

Grafische Benachrichtigungen

Falls usbauth-notifier installiert ist, werden Benachrichtigungen auf dem Desktop angezeigt. Beispiel einer Benachrichtigung bei Anschluss einer Tastatur unter ubuntu 18.04:

usbauth-notifier_1.png

usbauth-notifier_2.png

Diese Revision wurde am 12. April 2021 23:07 von stefan-koch erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Hardware, System, Firewall