Wie kann ein HID-Gerät an bestimmten USB-Anschlüssen verhindert werden?

7

Aus Sicherheitsgründen möchte ich verhindern, dass Eingabegeräte nicht an einem bestimmten USB-Anschluss verwendet werden können. An diesem Port müssen Funktionen ohne Eingabe (z. B. Massenspeicher oder ttyUSB) verfügbar sein. Eingabegeräte müssen noch an anderen USB-Anschlüssen arbeiten.

"kann nicht verwendet werden" bedeutet, dass z. B. kein entsprechendes /dev/input/eventXGerät erstellt wird und gängige Frameworks (X11, Linux-Konsole) keine Eingaben vom Gerät akzeptieren.

Ich kann den USB-Anschluss anhand von udev-Regeln wie identifizieren

DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7/2-1.7.1/*"

aber ich bin nicht sicher, wie ich es deaktivieren soll.

Alte udev-Versionen werden unterstützt, OPTIONS+="ignore_device"aber diese Option ist weg.

Wie kann ich das machen?

ensc
quelle

Antworten:

3

Sie müssen eine Regel für jeden der möglichen Arten von Eingabegeräten schreiben, dh:

  • ID_INPUT_KEYBOARD
  • ID_INPUT_KEY
  • ID_INPUT_MOUSE
  • ID_INPUT_TOUCHPAD
  • ID_INPUT_TABLET
  • ID_INPUT_JOYSTICK

Testen Sie in der Regel, ob die Umgebungsvariable mit diesem Namen nicht leer ist, z. B. stimmen Sie sie mit dem Glob-Muster ?*überein , das nur übereinstimmt, wenn mindestens ein Zeichen vorhanden ist. Z.B:

ENV{ID_INPUT_KEYBOARD}=="?*"

Wenn es übereinstimmt, setzen Sie in jeder Regel das authorizedAttribut des Geräts auf 0, z.

ATTR{authorized}="0"

Am besten ist es zu ersetzen =mit , :=damit es nicht durch eine spätere Regel überschrieben werden kann. Dies gibt eine typische Regel von:

ACTION=="add", DEVPATH=="...", ENV{ID_INPUT_KEYBOARD}=="?*", ATTR{authorized}:="0"

Siehe diese Präsentation von Adrian Crenshaw.

meuh
quelle