Beschränken Sie den USB-Zugriff auf ein Debian

7

Ist es möglich, die Berechtigungen von USB-Ports auf einem Debian (Linux) -System einzuschränken?

Zum Beispiel :

  • Die Möglichkeit unterdrücken, jegliches Material außer dem USB-Stick anzuschließen ?
  • Die Möglichkeit geben, einen USB-Stick zu lesen, aber nicht darauf zu schreiben ?
  • Senden eines Warnsignals, wenn ein USB-Stick an ein System angeschlossen ist?
JeanJouX
quelle
Der "Vorschlaghammer" -Ansatz besteht darin, den Kernel-Flags "nousb" hinzuzufügen, z. B. "kernel /vmlinuz-2.6.18-128.1.1.el5 ro root = LABEL = / console = tty0 console = ttyS1,19200n8 nousb". Dies wird sicherlich die Berechtigungen von USB-Anschlüssen einschränken.
Steve

Antworten:

4

Wenn der Linux-Kernel ein neues Gerät erkennt, sendet er eine Nachricht an udev . Die Aufgabe von udev ist es, das neue Gerät dem Benutzerland zugänglich zu machen. Für viele Geräte muss udev lediglich Einträge in erstellen /dev. Bei Blockgeräten kann das Gerät so montiert werden. Auf diese Weise können dedizierte Anwendungen das Gerät für Zeichengeräte wie serielle Ports und Sound-Ports verwenden. Für Netzwerkschnittstellen kann udev einen Namen festlegen. Für Tastaturen kann udev auch zusätzliche Scancodes definieren. Wenn udev keinen Geräteeintrag erstellt, wird das Gerät effektiv nicht verwendet.

Udev kann durch Regeln gesteuert werden ; Standardregeln sind in vorhanden /lib/udev/udev.dund können vom Administrator über Dateien in überschrieben werden /etc/udev/udev.d. Jede udev-Regel hat Bedingungen der Form ; Die Regel gilt, wenn alle diese Regeln erfüllt sind. Sie können die Bedingungen, die für ein Gerät gelten, anzeigen, indem Sie oder ausführen .VARIABLE==VALUEudevadm info -a -n /dev/…udevadm info -a /sys/…

Soweit ich weiß, gibt es keinen generischen Mechanismus, um ein Gerät zu ignorieren. Wenn es sich nicht um eine Netzwerkschnittstelle handelt (unter der kein Geräteknoten verwendet wird /dev), können Sie sie effektiv unbrauchbar machen, indem Sie ihr keine Berechtigungen erteilen:

BEDINGUNGEN , MODE = "000"

USB-Geräte verfügen über einen Autorisierungsmechanismus : Wenn das authorizedAttribut auf 0 (false) gesetzt ist, greift das System nicht auf das Gerät zu. Mit dieser Regel ist kein anderes USB-Gerät als USB-Speichergeräte verfügbar.

ACTION=="add", SUSYSTEMS=="usb", DRIVERS!="usb-storage", ATTR{authorized}="0"

Es ist auch möglich , USB-Geräte nach der Startsequenz zu deaktivieren, indem Sie alle USB-Host-Ports mit diesem Snippet deaktivieren /etc/rc.local:

for x in /sys/bus/usb/devices/usb*; do
  echo 0 >"$x/authorized_default"
done

Einzelne Geräte können über eine udev-Regel (oder manuell) aktiviert werden, die das authorizedAttribut auf 1 setzt.

Wenn Sie ein Speichergerät schreibgeschützt machen möchten, setzen Sie sein roAttribut auf 1.

Wenn Sie einen Befehl ausführen möchten, verwenden Sie den RUNSchlüssel in einer udev-Regel (beachten Sie, dass Sie den vollständigen Pfad zum Befehl benötigen und die verfügbaren Escape-Sequenzen und Umgebungsvariablen im Handbuch finden ). Wenn Sie möchten, dass dieser Befehl auf die GUI zugreift, lesen Sie Öffnen eines Fensters auf einer Remote-X-Anzeige (warum "Anzeige kann nicht geöffnet werden").

Gilles 'SO - hör auf böse zu sein'
quelle
1

Sie sollten einige udev-Regeln einrichten.

Schritte für Ihre Anforderungen:

  1. Whitelist der zulässigen Geräte
  2. Wenden Sie restriktive Rechte / Eigentumsrechte auf alle anderen an
  3. Konfigurieren Sie das Skript so, dass es auch durch Einfügen in eine Regeldatei ausgelöst wird.

Hier ist ein releated Thread: /ubuntu/15570/configure-udev-to-change-permissions-on-usb-hid-device

Es sollte helfen, zu erklären und weitere Hinweise zu geben. Wenn Sie nicht weiterkommen, fügen Sie Ihrer Frage die nächste Straßensperre hinzu.

Alex Stragies
quelle