В некоторых инфраструктурах USB-устройства являются реальным вектором атак.
Для решения задач безопасности инфраструктуры от несанкционированного доступа посредством USB-устройств, в Linux существует довольно мощный инструмент встроенный в ядро USBGuard.
USBGuard создаёт политику разрешённых USB-устройств по их VID/PID и серийному номеру. Всё, что не разрешено — автоматически блокируется.
Debian/Ubuntu
$ sudo apt install usbguard
Fedora
$ sudo dnf install -y usbguard usbguard-selinux usbguard-notifier
Arch
$ sudo pacman -S usbguard
Генерируем политику
$ sudo usbguard generate-policy > /etc/usbguard/rules.conf
Включаем автозапуск службы
$ sudo systemctl enable --now usbguard
По умолчанию все текущие устройства будут разрешены. После запуска новые — блокируются
Синтаксис команды usbguard:
usbguard [ОПЦИИ] <команда> [ОПЦИИ КОМАНДЫ]
где команда может принимать одно из следующих значений:
Дополнительную информацию можно узнать на соответствующих страницах руководства, например:
$ usbguard add-user -h
Примеры:
вывести список подключенных устройств:
# usbguard list-devices
1: allow id 1d6b:0002 serial "0000:00:06.7" name "EHCI Host Controller" hash "JDOb0BiktYs2ct3mSQKopnOOV2h9MGYADwhT+oUtF2s=" parent-hash "4PHGcaDKWtPjKDwYpIRG722cB9SlGz9l9Iea93+Gt9c=" via-port "usb1" with-interface 09:00:00 ... 6: allow id 1b1c:1ab1 serial "000024937962" name "Voyager" hash "CrXgiaWIf2bZAU+5WkzOE7y0rdSO82XMzubn7HDb95Q=" parent-hash "JDOb0BiktYs2ct3mSQKopnOOV2h9MGYADwhT+oUtF2s=" via-port "1-3" with-interface 08:06:50
временно заблокировать устройство с id 6:
# usbguard block-device 6
для постоянной блокировки и авторизации USB-устройство, следует использовать опцию -p. В этом случае в текущую политику будет добавлено правило для конкретного устройства:
# usbguard block-device 6 -p
1: allow id 1d6b:0002 serial "0000:00:06.7" name "EHCI Host Controller" hash "JDOb0BiktYs2ct3mSQKopnOOV2h9MGYADwhT+oUtF2s=" parent-hash "4PHGcaDKWtPjKDwYpIRG722cB9SlGz9l9Iea93+Gt9c=" via-port "usb1" with-interface 09:00:00 ... 6: block id 1b1c:1ab1 serial "000024937962" name "Voyager" hash "CrXgiaWIf2bZAU+5WkzOE7y0rdSO82XMzubn7HDb95Q=" parent-hash "JDOb0BiktYs2ct3mSQKopnOOV2h9MGYADwhT+oUtF2s=" via-port "1-3" with-interface 08:06:50
USBGuard использует термины block и reject в следующих значениях:
Более подробно об утилите на официальной странице