USBGuard

Материал из ALT Linux Wiki
Версия от 16:14, 6 мая 2024; Elena Mishina (обсуждение | вклад) (Новая страница: «{{Stub}} USBGuard (https://usbguard.github.io/) предлагает механизм белого/чёрного списка для USB-устройств. USBGuard решает, какое USB-устройство авторизовать, на основе политики, определенной набором правил. При подключении USB-устройства к системе служба последовательно скани...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

USBGuard (https://usbguard.github.io/) предлагает механизм белого/чёрного списка для USB-устройств.

USBGuard решает, какое USB-устройство авторизовать, на основе политики, определенной набором правил. При подключении USB-устройства к системе служба последовательно сканирует существующие правила. Если соответствующее правило найдено, оно либо авторизует (разрешает), деавторизует (блокирует) или удаляет (отклоняет) устройство в зависимости от цели правила. Если соответствующее правило не найдено, решение принимается на основе неявной цели по умолчанию. Это неявное значение по умолчанию заключается в блокировке устройства до тех пор, пока пользователь не примет решение.

Примечание: Для выполнения задач по администрированию модуля можно также воспользоваться модулем ЦУС USBGuard.


Установка и первоначальная настройка

Установить пакет usbguard:

# apt-get install usbguard

Создать исходный набор правил на основе подключенных в данный момент USB-устройств (в правила с действием «allow» будут добавлены все подключенные устройства):

#usbguard generate-policy > /etc/usbguard/rules.conf
Примечание: Создать исходный набор правил, не генерируя атрибуты хеш-функции для устройств:
#usbguard generate-policy --no-hashes > /etc/usbguard/rules.conf


Запустить службу usbguard и добавить её в автозагрузку:

# systemctl enable --now usbguard

Команда usbguard

Синтаксис команды usbguard:

usbguard [ОПЦИИ] <команда> [ОПЦИИ КОМАНДЫ]

где команда может принимать одно из следующих значений:

  • get-parameter <name> — получить значение параметра времени выполнения;
  • set-parameter <name> <value> — установить значение параметра времени выполнения;
  • list-devices — вывести список всех USB-устройств, распознаваемых демоном USBGuard;
  • allow-device <id|rule|p-rule> — разрешить устройству взаимодействовать с системой;
  • block-device <id|rule|p-rule> — деавторизовать устройство;
  • reject-device <id|rule|p-rule> — деавторизовать и удалить устройство из системы;
  • list-rules — вывести набор правил (политику), используемый демоном USBGuard;
  • append-rule <rule> — добавить правило в набор правил;
  • remove-rule <id> — удалить правило из набора правил;
  • generate-policy — сгенерировать набор правил (политику) на основе подключенных USB-устройств;
  • watch — следить за событиями интерфейса IPC и выводить их на стандартный вывод;
  • read-descriptor — прочитать дескриптор USB из файла и вывести его в удобочитаемой форме;
  • add-user <name> — добавить пользователя/группу USBGuard IPC (требуются права root);
  • remove-user <name> — удалить пользователя/группу USBGuard IPC (требуются права root).

Дополнительную информацию смотрите на соответствующих страницах руководства, например:

$ usbguard add-user -h

Примеры:

  • вывести список подключенных устройств:
    $ usbguard list-devices
    1: allow id 1d6b:0002 serial "0000:00:0b.0" name "EHCI Host Controller" hash "SEiVqUWwefEKDMN9OJUyXkFIvvFPJmvPTRKIlVCvlvE=" parent-hash "BfFg9THiKJIvTnHGCjHfrWc00WcrIzhayJ9C3BiPYho=" via-port "usb1" with-interface 09:00:00 with-connect-type ""
    2: allow id 1d6b:0001 serial "0000:00:06.0" name "OHCI PCI host controller" hash "lUN32sIeMBBlD8Pd82mxu95iCTw8oKlT8iZDeg628/o=" parent-hash "XokStAV3JXWqQkW0l6YD7ZPFcHse1OtwuGmVNBCe46E=" via-port "usb2" with-interface 09:00:00 with-connect-type ""
    3: allow id 13fe:3e00 serial "11101094E6BA1A00A4A5200A" name "Silicon-Power4G" hash "0Dcf+ZVj7NkORO+RN1kxcP0rgDl6CqvqkcYkcf+0X/k=" parent-hash "SEiVqUWwefEKDMN9OJUyXkFIvvFPJmvPTRKIlVCvlvE=" via-port "1-1" with-interface 08:06:50 with-connect-type "unknown"
    
  • временно заблокировать устройство с id 3:
    $ usbguard block-device 3
    
  • для постоянной блокировки или и авторизации USB-устройство, следует использовать опцию -p. В этом случае в текущую политику будет добавлено правило для конкретного устройства:
    $ usbguard block-device 3 -p
    
  • вывести список правил:
    $ usbguard list-rules
    4: allow id 1d6b:0002 serial "0000:00:0b.0" name "EHCI Host Controller" hash "SEiVqUWwefEKDMN9OJUyXkFIvvFPJmvPTRKIlVCvlvE=" parent-hash "BfFg9THiKJIvTnHGCjHfrWc00WcrIzhayJ9C3BiPYho=" via-port "usb1" with-interface 09:00:00 with-connect-type ""
    5: allow id 1d6b:0001 serial "0000:00:06.0" name "OHCI PCI host controller" hash "lUN32sIeMBBlD8Pd82mxu95iCTw8oKlT8iZDeg628/o=" parent-hash "XokStAV3JXWqQkW0l6YD7ZPFcHse1OtwuGmVNBCe46E=" via-port "usb2" with-interface 09:00:00 with-connect-type ""
    6: block id 090c:1000 serial "2010121200000186" name "USB DISK" hash "2dfdMHZxF5olAaNbsh68G4fpzD3iQLPL3+M7KHnSRjE=" parent-hash "SEiVqUWwefEKDMN9OJUyXkFIvvFPJmvPTRKIlVCvlvE=" via-port "1-1" with-interface 08:06:50 with-connect-type "unknown"
    
  • дать пользователю user полный доступ к разделам «devices» и «exceptions», также, user будет иметь возможность просматривать и изменять текущую политику:
    # usbguard add-user -u user --devices ALL --policy modify,list --exceptions ALL
    
  • удалить права у пользователя user:
    # usbguard remove-user -u user
    

Конфигурация

Основной файл конфигурации USBGuard — /etc/usbguard/usbguard-daemon.conf.

В параметре PresentDevicePolicy определяется как обращаться с устройствами, которые уже подключены, при запуске службы. По умолчанию для PresentDevicePolicy установлено значение apply-policy, т.е. USBGuard оценивает набор правил для каждого подключенного устройства. Это наиболее безопасный параметр, который обеспечивает безопасность даже при перезагрузке службы.

В параметре ImplicitPolicyTarget настраивается политика обработки устройств по умолчанию, если ни одно правило не соответствует. Самый безопасный вариант здесь — block.

По умолчанию служба usbguard записывает события в файл /var/log/usbguard/usbguard-audit.log (параметр AuditFilePath).

Правила

Набор правил USBGuard по умолчанию хранится в файле /etc/usbguard/rules.conf. Но ручное редактирование правил обычно не требуется.

Пример правила для принтера Canon, подключенного через USB:

allow id 04a9:177a name "Canon E400" serial "F572EC" via-port "1-2" hash "eql9yA8m+5VVMmhXOvbUzwNPDGCAPq+fxIQHvbptlsY="

Первое слово в правиле определяет политику:

  • allow — добавляет устройство в белый список;
  • block — останавливает обработку устройства;
  • reject — удаляет устройство из системы.

Затем следует набор атрибутов с их параметрами.

USBGuard использует термины block и reject в следующих значениях:

  • block — пока не взаимодействовать с этим устройством;
  • reject — игнорировать это устройство, как будто его не существует.