2.11.2 Ограничение доступа к USB накопителям
Примеры выбора устройств по определенным свойствам
Запрет автомонтирования с параметром UDISKS_IGNORE
Создание белого списка с параметром UDISKS_IGNORE
Запрет автомонтирования с параметром authorized
Создание белого списка с параметром authorized
Алгоритм создания белого списка USB-флеш-накопителей состоит из 2 этапов:
Вариант 1:
- Запрет монтирования всех USB-флеш-накопителей
- Разрешение монтирования некоторых устройств
Вариант 2:
- Разрешение монтирования некоторых устройств
- Запрет монтирования всех иных USB-флеш-накопителей
На нашем Youtube-канале вы можете подробнее ознакомиться с информацией по ограничению доступа к USB-накопителям, просмотрев видео Ограничение доступа к USB накопителям, а также найти много другой полезной информации.
Примеры выбора устройств по определенным свойствам
Для создания белого списка USB-флеш-накопителей, нужно знать атрибуты накопителя.
1) Определяем нашу флешку:
ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 июн 30 12:59 /dev/sda
brw-rw---- 1 root disk 8, 1 июл 22 12:59 /dev/sda1
brw-rw---- 1 root disk 8, 2 июл 22 12:59 /dev/sda2
brw-rw---- 1 root disk 8, 3 июн 30 12:59 /dev/sda3
brw-rw---- 1 root disk 8, 16 июл 22 13:43/dev/sdb # нужная нам строка
brw-rw---- 1 root disk 8, 17 июн 30 13:43 /dev/sdb1
2) Смотрим атрибуты (символы после sd* вводите в соответствии с вашим выводом ls -l /dev/sd*): udevadm info -a -p /sys/block/sdb
Запрет автомонтирования с параметром UDISKS_IGNORE
Для отключения автомонтирования USB-флеш-накопителей нужно будет создать правило для udev.
Создаем файл /etc/udev/rules.d/99-usb.rules
nano /etc/udev/rules.d/99-usb.rules
со следующим содержанием:
ENV{ID_USB_DRIVER}=="usb-storage",ENV{UDISKS_IGNORE}="1"
Флаг ENV{UDISKS_IGNORE}
отвечает за «Игнорировать ли устройство». “0” – false, “1” - true
Для того, чтобы новое правило вступило в силу, нужно ввести команду обновления правил udev
sudo udevadm control --reload-rules
После этого, можете проверить и подключить USB-флеш-накопитель, как результат, он не откроется.
Создание белого списка с параметром UDISKS_IGNORE
Выборка разрешения доступа по трем параметрам:
- серийному номеру устройства
- модели
- максимальному потребления тока
Для их определения выполним команды по очереди:
udevadm info -a -p /sys/block/sdb | grep serialudevadm info -a -p /sys/block/sdb | grep modeludevadm info -a -p /sys/block/sdb | grep bMaxPower
в выводе мы увидим серийный номер, модель и значение максимального потребления тока:
ATTRS{serial}=="04GS1F3LBIBDWU05"
ATTRS{model}=="Silicon-Power8G "ATTRS{bMaxPower}=="200mA"
Запишем эти значения в файл правил в качестве разрешающих
Конечный вариант файла /etc/udev/rules.d/99-usb.rules:
ENV{ID_USB_DRIVER}=="usb-storage",ENV{UDISKS_IGNORE}="1" ATTRS{serial}=="04GS1F3LBIBDWU05",ENV{UDISKS_IGNORE}="0" ATTRS{model}=="Silicon-Power8G ",ENV{UDISKS_IGNORE}="0" ATTRS{bMaxPower}=="200mA",ENV{UDISKS_IGNORE}="0"
Здесь:
1 - блокируем все usb-накопители 0 - разрешаем накопитель по определенным свойствам.
Для того чтобы новое правило вступило в силу, нужно ввести команду обновления правил udev
sudo udevadm control --reload-rules
Полный список атрибутов, по которым можно осуществить выборку, находится в выводе команды:
udevadm info -a -p /sys/block/sdb
Запрет автомонтирования с параметром authorized
Для отключения автомонтирования USB-флеш-накопителей нужно будет создать правило для udev и исполняемый скрипт запрета монтирования USB-флеш-накопителей.
Создадим скрипт:
nano /usr/bin/remove_usb.sh
#!/bin/bashvar=$1var2=$(echo $1 | sed 's/.*usb[[:digit:]]//' | sed 's/[a-z].*//'| sed 's/[0-9]-[0-9].//')echo 0 > '/sys/bus/usb/devices'$var2'authorized'
Измените права на скрипт:
chmod +x /usr/bin/remove_usb.sh
Параметр authorized
отвечает за монтирование USB-флеш-накопителя в момент подключения к ПК.
Создаем файл /etc/udev/rules.d/99-usb.rules
nano /etc/udev/rules.d/99-usb.rules
со следующим содержанием:
ENV{ID_USB_DRIVER}=="usb-storage",RUN+="/bin/sh -c '/usr/bin/remove_usb.sh $devpath'"
Для того, чтобы новое правило вступило в силу, нужно ввести команду обновления правил udev
sudo udevadm control --reload-rules
После этого, можете проверить и подключить USB-флеш-накопитель, как результат, он не откроется.
Создание белого списка с параметром authorized
Выборка по серийному номеру устройства
ATTRS{serial}=="0DM97KDQ", GOTO="dont_remove_usb"
Выборка по названию модели. Точное название смотрите в выводе команды
udevadm info -a -p /sys/block/sdb
ATTRS{model}=="Transcend 16GB ", GOTO="dont_remove_usb"
Для удобства, когда полный список параметров устройства известен, можно производить отбор по конкретному параметру:
udevadm info -a -p /sys/block/sdb | grep "ATTRS{serial}"
udevadm info -a -p /sys/block/sdb | grep "ATTRS{model}"
Конечный вариант файла /etc/udev/rules.d/99-usb.rules:
ACTION!="add", GOTO="dont_remove_usb" ENV{ID_USB_DRIVER}!="usb-storage", GOTO="dont_remove_usb" ATTRS{model}=="Transcend 16GB ", GOTO="dont_remove_usb" ATTRS{serial}=="0DM97KDQ", GOTO="dont_remove_usb" ENV{ID_USB_DRIVER}=="usb-storage", RUN+="/bin/sh -c '/usr/bin/remove_usb.sh $devpath'" LABEL="dont_remove_usb"
Логика данного правила отлична от первого варианта. В 1 варианте происходило блокирование сразу всех usb флеш-накопителей и лишь потом разграничение на белый список шло. В данном варианте сначала происходит разграничение на белый список. Только потом добавление устройства в черный список. Такое действие связано с тем, что параметр authorized
появляется в момент монтирования и если его изменить в 0, то далее он становится недоступен. Соответственно, сначала требуется проверить подходит флешка под белый список и если да, то разрешить ей монтирование.
Для того, чтобы новое правило вступило в силу, нужно ввести команду обновления правил udev
sudo udevadm control --reload-rules
Полный список атрибутов, по которым можно осуществить выборку, находится в выводе команды:
udevadm info -a -p /sys/block/sdb
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.