На данном USB-порту я хочу принять только возможности USB Mass Storage и ничего больше. Нет устройств HID, нет адаптеров Bluetooth, нет преобразователей RS232, ничего. Есть ли способ сделать это, например, с помощью udev? Я знаю, что могу написать собственное правило udev для включения драйвера для данного устройства или для данного порта, но могу ли я как-то исключить все остальные драйверы? Я пытаюсь разрешить только один класс устройств, а именно USB Mass Storage; В этом классе есть множество различных моделей устройств, и я не знаю, какие из них будут подключаться к порту (клиенты будут приносить свои, у меня нет возможности повлиять на это).
Угрозы от перепрограммированной прошивки USB будут только усиливаться в обозримом будущем. Я пытаюсь смягчить их для этого случая использования: у меня есть компьютер с подключенными к нему USB-периферийными устройствами (сетевая карта, специализированная периферия, клавиатура) и одним общедоступным USB-портом, который должен использоваться только для передачи файлов. Поэтому я не могу занести в черный список другие USB-модули; но я бы хотел «санировать» этот конкретный порт, чтобы подключение другого типа устройства ничего не делало.
Корпус физически заблокирован, так что снаружи доступен только один конкретный USB-порт, и вмешательство в дело или соединение кабеля клавиатуры должно быть достаточно подозрительным, чтобы вызвать реакцию физической безопасности; Более того, я не ожидаю, что большинство пользователей будут активно злонамеренными, но я ожидаю, что количество невольных носителей перепрошитых USB-накопителей увеличится (как это было с заражением загрузочного сектора гибких дисков в прошлом). Что касается безопасности, на самом деле не имеет значения, использует ли пользователь «вооруженный» USB-диск со злым умыслом или просто не знает, что он «заражен».
Я знаю, что идеальная безопасность здесь невозможна, и позволить пользователю взаимодействовать с системой любым способом рискованно, но, увы, мне нужно сбалансировать безопасность с удобством использования: компьютер должен быть удобен для использования клиентом. Кроме того, я не пытаюсь защищаться от целенаправленного, решительного атакующего этим; скорее, я использую это как один из методов смягчения, так что система не является низко висящими.
Ответы:
Похоже, у меня работает в Ubuntu 14.04 с 2 флеш-клавишами и телефоном Android в качестве хранилища, сетевым адаптером USB и веб-камерой другого типа. (Я не смог проверить размещение USB-концентратора)
Проверьте порт USB (который является родительским устройством для подключенного устройства)
Создать правило udev, соответствующее имени ядра USB-порта без
usb-storage
драйвера/etc/udev/rules.d/90-remove-non-storage.rules
Разрешить любое устройство, которое имеет хранилище в качестве 1-го интерфейса (разрешены составные устройства)
Заблокируйте любое устройство с интерфейсом без хранилища (в составных устройствах отказано)
На самом деле, телефон
/dev/ttyACM0
подключается как модем к KERNELS == "2-1.2: 1.1". Это не позволит телефонам (составным устройствам) монтировать только простые устройства хранения данных.Блокировать только те интерфейсы, которые не являются хранилищами (составные устройства разрешены только как хранилища)
После некоторого поиска способа отключить только недопустимые интерфейсы. Отвязка драйверов, похоже, работает. Мой телефон может быть использован только в качестве хранилища, он не создает
/dev/ttyACM0
.Обновить правила Udev
Ссылки:
источник
authorized
тоже работает, ноremove
это более чистый способ, так как пользователь все равно отключит его. Я проверил несмонтированные диски, они все еще имеют вusb-storage
качестве драйвера для родительского узла. Я согласен, есть некоторые случаи, когдаusb-storage
не могут быть использованы. Кстати, :) вы потребляете слишком много комментариев (2 минуты, 1 минута), вы можете отредактировать 1-й (за <5