Alterator-usbguard

Материал из ALT Linux Wiki

Название пакета

alterator-usbguard

Назначение

Модуль USBGuard предназначен для настройки ограничений на использование USB-устройств. Модуль работает на основе функционала USBGuard, позволяет вести чёрный и белый списки ограничений и предоставляет два типа действий — allow/block.

Модуль предоставляет следующие возможности:

  • сканирование подключенных устройств;
  • выбор и добавление устройств в набор правил из списка подключенных устройств;
  • создание предустановленных правил для распространённых сценариев;
  • создание правил по дескрипторам интерфейса: CC:SS:PP;
  • создание правил по свойствам USB-устройства: PID, VID;
  • создание правил по хэшу устройства по PID+VID+SN;
  • создание сложных правил с дополнительными условиями;
  • загрузка правил из csv-файла;
  • редактирование значений в созданных правилах;
  • просмотр журнала событий подключения/отключения USB-устройств.

Для уведомления пользователя о подключённом и заблокированном устройстве сообщением в трее используется модуль уведомлений (пакет usbguard-notifier).

Примечание: Не рекомендуется использовать USB-устройства с не читаемым или коротким серийным номером.


Запуск

Модуль USBGuard доступен в веб-интерфейсе по адресу https://ip-address:8080 (раздел Система ▷ USBGuard):

Веб-интерфейс модуля USBGuard

Использование модуля

Информационное поле

В информационном поле отображается текущее состояние службы usbguard, список пользователей и групп, которые могут редактировать правила, сообщения об ошибках и предупреждения:

Информационное поле

Примечание: Добавить/удалить пользователя/группу, которые могут редактировать правила, можно в командной строке (см. USBGuard).


Для включения контроля за USB-устройствами необходимо установить отметку в пункте «Активировать контроль портов» и нажать кнопку «Проверить», а затем кнопку «Применить». Служба usbguard будет запущена и добавлена в автозагрузку:

Служба usbguard запущена и добавлена в автозагрузку

Список USB-устройств

Если служба usbguard запущена, в веб-интерфейсе будет отображён список текущих подключённых устройств:

Список текущих подключённых USB-устройств

В столбце «Статус» отображается текущее состояние USB-устройства («allow» — разрешённое устройство, «block» — заблокированное устройство).

Для редактирования состояния USB-устройства, необходимо выделить строку с нужным USB-устройством и нажать кнопку «Разблокировать»/«Заблокировать». При этом будет добавлено соответствующее правило в таблицу «Хэш».

Примечание: Если активен «Белый список», то для устройства со статусом «block» будет активна кнопка «Разблокировать», если активен «Чёрный список», то для устройства со статусом «allow» будет активна кнопка «Заблокировать».


Кнопка «Сканировать» позволяет обновить список подключённых USB-устройств.

Предустановки

Правила могут работать в режиме белого или чёрного списка. После установки режима «Чёрный список», будут заблокированы только перечисленные в данном списке USB-устройства. А после установки режима «Белый список», будут заблокированы все USB-устройства, кроме перечисленных в данном списке.

Предустановки

Кроме ручного режима добавления правил в списки существует возможность предварительной настройки списков. Для предварительной настройки правил необходимо:

  1. Выбрать соответствующий пункт:
    • «Белый список»:
      • «Заблокировать все, кроме подключенных устройств» — в правила (таблица «Хэш») с действием «allow» будут добавлены все подключенные устройства. Все новые USB-устройства будут заблокированы (будут отображаться в таблице «Список устройств» со статусом «block»);
      • «Заблокировать все, кроме подключенных и HID/HUB устройств» — в правила с действием «allow» будут добавлены все подключенные устройства (таблица «Хэш») и все устройства с интерфейсами 03:*:* и 09:*:* (таблица «Маски CC:SS:PP»). Все новые USB-устройства кроме HID/HUB-устройств (клавиатуры, мыши, джойстики, USB-концентраторы) будут заблокированы (будут отображаться в таблице «Список устройств» со статусом «block»);
      • «Ручной режим» — позволяет установить свои правила.
    • «Чёрный список»:
      • «Блокировать устройства по классам дескриптора интерфейса: 06 Image и 08 Mass Storage» — в правила (таблица «Маски CC:SS:PP») с действием «block» будут добавлены все устройства с интерфейсами 08:*:* и 06:*:*. Все USB-устройства Mass Storage Device (USB-накопитель, карта памяти, кардридер, цифровая фотокамера) и Image (веб-камера, сканер) будут заблокированы (будут отображаться в таблице «Список устройств» со статусом «block»);
      • «Блокировать устройства по списку известных PID:VID, использующих Аndroid Debug Bus» — в правила (таблица «Маски VID:PID») с действием «block» будут добавлены известные Android-устройства. Все Android-устройства будут заблокированы (будут отображаться в таблице «Список устройств» со статусом «block»);
      • «Ручной режим» — позволяет установить свои правила.
  2. Нажать кнопку «Проверить». Будут показаны планируемые изменения, например:
    Планируемые изменения
  3. Если изменения корректные, нажать кнопку «Применить».
  4. Для отмены изменений, до нажатия кнопки «Применить», следует выбрать пункт «Ручной режим» и нажать кнопку «Проверить», а затем «Применить».

Добавление/удаление правил

Для добавления нового правила должен быть выбран пункт «Ручной режим» в белом или чёрном списках. Если «Ручной режим» выбран в белом списке, правило будет добавлено с действием «allow», если в чёрном — с действием «block».

Правила по классу интерфейса

Назначение USB-устройств может определяться кодами классов, которые сообщаются USB-узлу для загрузки необходимых драйверов. Коды классов позволяют унифицировать работу с однотипными устройствами разных производителей. Устройство может поддерживать один или несколько классов, максимальное количество которых определяется количеством доступных endpoints. Например, широко известны устройства класса Human Interface Device, HID (мыши, клавиатуры, игровые манипуляторы и т.д.) или устройства Mass Storage (USB-накопители, карты памяти и т.д.).

Примечание: Класс интерфейса указывается как три 8-битных числа в шестнадцатеричном формате, разделенных двоеточием (CC:SS:PP). Числа обозначают класс интерфейса (CC), подкласс (SS) и протокол (PP). Вместо номера подкласса и протокола можно использовать символ *, чтобы соответствовать всем подклассам или протоколам. Сопоставление определенного класса и определенного протокола не допускается, т.е. если в качестве номера подкласса используется *, то для протокола также необходимо использовать *.


Добавление правила по маске:

  1. Под таблицей «Маски CC:SS:PP» нажать кнопку «Добавить».
  2. В поле «CC:SS:PP» вписать маску, например, правило для всех устройств с интерфейсами 09:*:*:
    Добавление правила для всех устройств с интерфейсами 09:*:*
  3. Нажать кнопку «Проверить». Корректное правило будет выделено зелёным цветом, некорректное — красным:
    Проверка правила
  4. Исправить или удалить некорректное правило и повторно нажать кнопку «Проверить».
  5. Нажать кнопку «Применить» для активации правила. Правило для всех устройств с интерфейсами 09:*:* добавлено:
    Правило для всех устройств с интерфейсами 09:*:* добавлено

Удаление правила по маске:

  1. В таблице «Маски CC:SS:PP» установить отметку в поле с соответствующим правилом.
  2. Нажать кнопку «Удалить». Правило будет готово к удалению (отображается зачёркнутым):
    Удаление правила для всех устройств с интерфейсами 03:*:*
  3. Нажать кнопку «Проверить».
  4. Нажать кнопку «Применить» для удаления правила.

Правила по VID&PID

Каждое USB-устройство содержит атрибуты, куда входит идентификатор разработчика устройства (VID) и идентификатор изделия (PID). На основании этих идентификаторов узел (компьютер) ищет методы работы с этим устройством (обычно это выражается в требовании установить драйверы, поставляемые разработчиком устройства).

Примечание: И VID и PID — это 16-битные числа в шестнадцатеричной системе счисления. В правиле можно также использовать символ *:
  • для соответствия любому идентификатору устройства *:*
  • для соответствия любому идентификатору продукта от конкретного поставщика, например, 090с:*
Соответствие любому идентификатору устройства от поставщика 090с


Добавление правила по VID&PID:

  1. Под таблицей «Маски VID:PID» нажать кнопку «Добавить».
  2. В поле «VID» вписать идентификатор разработчика устройства (VID), а в поле «PID» идентификатор изделия (PID). Например:
    Добавление правила по VID&PID
  3. Нажать кнопку «Проверить». Корректное правило будет выделено зелёным цветом, некорректное — красным:
    Проверка правила
  4. Исправить или удалить некорректное правило и повторно нажать кнопку «Проверить».
  5. Нажать кнопку «Применить» для активации правила.

Удаление правил(а) по VID&PID:

  1. В таблице «Маски VID:PID» установить отметку в поле с соответствующим правилами:
    Выделение правил
  2. Нажать кнопку «Удалить». Правила будут готовы к удалению (отображаются зачёркнутым):
    Правила готовы к удалению
  3. Нажать кнопку «Проверить».
  4. Нажать кнопку «Применить» для удаления правил.

Правила по хэшу

Для каждого USB-устройства USBGuard вычисляет хэш на основе значений атрибутов устройства и данных дескриптора USB (PID+VID+SN).

Добавление правила по хэшу:

  1. Под таблицей «Хэш» нажать кнопку «Добавить».
  2. В поле «Хэш» вписать хэш устройства. Например:
    Добавление правила по хэшу
  3. Нажать кнопку «Проверить». Корректное правило будет выделено зелёным цветом, некорректное — красным.
  4. Исправить или удалить некорректное правило и повторно нажать кнопку «Проверить».
  5. Нажать кнопку «Применить» для активации правила.

Удаление правил(а) по хэшу:

  1. В таблице «Хэш» установить отметку в поле с соответствующим правилом:
    Выделение правил
  2. Нажать кнопку «Удалить». Правила будут готовы к удалению (отображаются зачёркнутым).
  3. Нажать кнопку «Проверить».
  4. Нажать кнопку «Применить» для удаления правил(а).

Другие правила

Модуль позволяет создать сложные правил с дополнительными условиями.

Добавление правила:

  1. Под таблицей «Другие правила» нажать кнопку «Добавить».
  2. В поле «Правило» вписать правило. Например, правило, разрешающее подключение принтера только через определённый порт: allow id 04a9:177a name "Canon E400" serial "F572EC" via-port "1-2" hash "eql9yA8m+5VVMmhXOvbUzwNPDGCAPq+fxIQHvbptlsY=":
    Добавление сложного правила
  3. Нажать кнопку «Проверить». Корректное правило будет выделено зелёным цветом, некорректное — красным.
  4. Исправить или удалить некорректное правило и повторно нажать кнопку «Проверить».
  5. Нажать кнопку «Применить» для активации правила.
    Список сложных правил

Удаление правила:

  1. В таблице «Другие правила» установить отметку в поле с соответствующим правилом.
  2. Нажать кнопку «Удалить». Правила будут готовы к удалению (отображаются зачёркнутым):
    Правило готово к удалению
  3. Нажать кнопку «Проверить».
  4. Нажать кнопку «Применить» для удаления правила.

Загрузка правил из файла

Правила должны быть добавлены в csv-файл, по одному правилу в каждой строке. Строка должна иметь вид:

allow/block,Interface,PID:VID,Hash

Например:

allow,,090c:1000,"2dfdMHZxF5olAaNbsh68G4fpzD3iQLPL3+M7KHnSRjE="
allow,00:00:*,,
allow,,1000:*,
allow,,,"eql9yA8m+5VVMmhXOvbUzwNPDGCAPq+fxIQHvbptlsY="
Примечание: Файл не должен содержать конфликтные правила — должны быть либо все allow, либо все block.


Для загрузки правил из файла:

  1. Нажать кнопку «Обзор» (под таблицей «Хэш») и выбрать файл с правилами:
    Выбор файла с правилами
  2. Нажать кнопку «Загрузить из файла».
  3. Нажать кнопку «Проверить»:
    Проверка правил, загруженных из файла
  4. Нажать кнопку «Применить».
Внимание! При загрузке правил из файла политика тоже будет выбрана из файла. Если в файле указана политика противоположная текущей, все существующие правила будут удалены, например: Политика правил, загруженных из файла, противоположна текущей политике


Просмотр журнала аудита

Для просмотра журнала событий подключения/отключения USB-устройств необходимо нажать кнопку «Журнал», расположенную в левом нижнем углу модуля.

По нажатию на эту кнопку раскрывается журнал аудита:

Журнал аудита

Передвигаться по журналу к более старым или более новым записям можно с помощью кнопок «Назад» и «Вперёд».

Есть возможность фильтровать данные с помощью специального поля.

Примечание: Фильтрация по логу USBGuard — строгая, регистрозависимая.


Для того чтобы скрыть панель журнала, необходимо нажать кнопку «Свернуть».

Модуль уведомлений для USBGuard

Модуль уведомлений обрабатывает сообщения от USBGuard при подключении/отключении USB-устройств и выводит сообщения для пользователя, если устройство заблокировано, например:

Сообщение о блокировке USB-устройства

Для возможности оповещения пользователя о блокировке USB-устройств достаточно установить пакет usbguard-notifier:

# apt-get install usbguard-notifier
Примечание: После установки служба usbguard-notifier будет добавлена в автозагрузку. Если необходимо исключить данную службу из автозагрузки, необходимо выполнить команду:
# systemctl --global disable usbguard-notifier.service