[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] Durch [github:kochstefan/usbauth-all:usbauth] {en} wird eine „USB-Firewall“ bereitgestellt. Sie eignet sich u. a. um Maßnahmen gegen [https://srlabs.de/wp-content/uploads/2014/11/SRLabs-BadUSB-Pacsec-v2.pdf BadUSB-Angriffe] {en} 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 [https://epub.uni-bayreuth.de/3048/1/koch2017sicherheitsaspekte.pdf hier] {de} 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 [https://usbguard.github.io USBGuard] {en}, 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: {{{#!vorlage Paketinstallation usbauth, universe }}} == 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: {{{#!vorlage Paketinstallation usbauth-notifier, universe }}} Der Benutzer muss berechtigt sein, den Notifier zu benutzen. Dazu muss er der Gruppe usbauth-notifier beitreten: {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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. {{{#!vorlage Befehl loginctl terminate-user $USER }}} Danach startet der Notifier unabhängig von der verwendeten [:Desktop: 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 [https://epub.uni-bayreuth.de/3048/1/koch2017sicherheitsaspekte.pdf hier] {de} in Kapitel 4.4 (Szenarien in Kapitel 3 und passende Regelbeispiele in Kapitel 5) und in den [man:usbauth: Manpages] {en}. == 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. {{{#!code text 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: {{{#!code text 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: {{{#!code text 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: [[Bild(usbauth-notifier_1.png)]] [[Bild(usbauth-notifier_2.png)]] = Links = * [github:kochstefan/usbauth-all:Projekt auf Github] {en} * [https://epub.uni-bayreuth.de/3048/1/koch2017sicherheitsaspekte.pdf Sicherheitsaspekte] {de} - Weitergehende Informationen, Angriffsszenarien und Firewall-Regelbeispiele * [github:kochstefan/usbauth-all/blob/master/usbauth/README:README] {en} - Beschreibung des kompletten Funktionsumfangs sowie Regelbeispiele * [man:usbauth:] {en} - Manpage * [https://srlabs.de/wp-content/uploads/2014/11/SRLabs-BadUSB-Pacsec-v2.pdf Überblick über BadUSB-Angriffe] {en} #tag: Hardware, System, Sicherheit, Firewall