Как я могу обнаружить неизвестные / неутвержденные устройства с помощью udev?

Я разрабатываю чувствительную к безопасности настройку для клиента. Ситуация выглядит следующим образом:

Чувствительная информация должна храниться на сервере, доступ к которому может получить несанкционированный персонал. Не существует способа защитить оборудование таким образом, чтобы оно было на 100% защищено.

Вот мой подход:

Я шифрую корневую машину с помощью cryptsetup / luks, затем я шифрую образ с помощью cryptsetup / luks и монтирую его для жесткого диска виртуальной машины. Виртуальная машина снова имеет зашифрованный корневой FS.

Теперь я хочу запретить кому-либо доступ к аппаратному обеспечению устройства во время его работы. Я хочу обнаружить неизвестные устройства, подключенные к нему, такие как USB-накопитель, устройство Firewire и т. Д.

Есть ли способ элегантного обнаружения неизвестных устройств в udev? До сих пор я нашел только способы определения действий для устройств, которые я знаю. Но я хочу определить действие для подключения неизвестного устройства.

Спасибо за ваш вклад.

2
задан 12 September 2013 в 17:20

1 ответ

Если вы хотите что-то подобное, вам следует относиться к -all- устройствам как к подозрительным, и в любое время любое вставленное устройство запрашивает что-то, что может знать только владелец этого устройства. Вы не можете пропустить это для устройства, которое, по вашему мнению, было одобрено ранее, так как пользователь, вставивший его, не обязательно должен быть тем же лицом.

Есть ли способ элегантного обнаружения неизвестных устройств в udev?

udev не понимает «неизвестные устройства»: он либо понимает все, либо не распознает USB / Устройства FireWire из-за наличия записи в /dev/. Неизвестный udev будет означать, что устройство не работает в этой системе. И ID_VENDOR_ID, и ID_MODEL_ID не позволяют увидеть разницу между двумя устройствами одной марки и модели.

Возможный метод:

См. https://wiki.archlinux.org/index.php/Execute_on_USB_insert для базового скрипта, который выполняется при вставке устройства. Это заставит любое устройство показывать меню, где пользователь должен убедиться, что оно может иметь доступ.

Правило в ссылке ...

ACTION=="add", RUN+="/usr/bin/exdongle run /media/%k-%E{dir_name}"

будет работать на любом устройстве, которое пытается смонтировать в /media/, и запустит сценарий «exdongle» (сценарий может нуждаться в некоторой настройке, так как он имеет отказ от ответственности).


То, что вы считаете «неизвестным», - это конкретное устройство, которое в Linux известно как USB. Таким образом, при наличии поддержки USB все устройства USB обрабатываются одинаково. У устройств есть идентификатор производителя и продукта, но они уникальны для каждой марки / модели, а не для USB-устройства.


Единственным USB-устройством, имеющим уникальный идентификатор, является ключ ( http://en.wikipedia.org/wiki/Software_protection_dongle ). Они, как правило, поставляются с программным обеспечением для проверки (так же, как и для безголовых систем), но вы можете сохранить идентификацию в файл и написать скрипт, похожий на приведенный выше, для проверки на известный набор идентификаторов.

0
ответ дан 12 September 2013 в 17:20

Другие вопросы по тегам:

Похожие вопросы: