Содержание

Как запретить USB-устройства на уровне ядра

В некоторых инфраструктурах 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 в следующих значениях:

Более подробно об утилите на официальной странице