Изначально выпуск USB-накопителей задумывался производителями как средство хранения или инструмент для удобного переноса данных, но со временем спектр применения таких устройств заметно расширился. На рынке в изобилии встречаются решения, которые обеспечивают дополнительную по сравнению с антивирусами защиту. Это, например, портативный брандмауэр USG USB за 60 долл., но в формате USB имеются и более экзотические решения. В прошлом году появился накопитель USB Kill 2.0, способный за считанные секунды уничтожить аппаратную часть любого устройства с поддержкой USB.

Разумеется, флэш-накопители представляют интерес и для хакеров, которые вряд ли могли пройти мимо возможностей, которые перед ними открывают столь мобильные устройства. Более того, они стали одним из самых популярных способов распространения вредоносных программ. Очень сложный для удаления Win32/Adware.Virtumonde и использующий технику записи в MBR и секторы жёсткого диска Mebroot — это малая часть вредоносного ПО, которое может попасть через флэшку на ПК и вывести его из строя. Что уж говорить, если в мае этого года IBM и Lenovo предупредили своих клиентов, сообщив, что логистическая цепочка систем хранения данных Storwize на одном из этапов производства была скомпрометирована, в результате чего USB-накопители, которые поставляются в комплекте с устройствами, заражены вирусом.

Ситуация усложняется тем, что современными вирусописателями для взлома ПК используются специальные дистрибутивы Linux, которые не оставляют никаких следов, например Tails. Подключившись к внутренней сети предприятия, в умелых руках хакера любой вредоносный USB-накопитель может повлечь атаку типа BadUSB и привести к серьезным рискам, таким как утечка конфиденциальной информации. Для предотвращения таких атак существуют специализированные утилиты, и одной из наиболее эффективных из них является USBGuard.

Известный мантейнер стабильной ветки Linux-ядра Грег Кроа-Хартманн недавно отметил, что эта программа отметила своё десятилетие, но, что примечательно, она не очень известна в кругу Linux-разработчиков. Тем не менее, будучи инструментом для управления доступом к USB-устройствам, USBGuard может обеспечить дополнительную защиту против любого типа атак на компьютеры или серверы на Linux. USBGuard — это, по сути, отдельная программная среда, которая предназначена для сличения атрибутов устройств с «белым» и «черным» списками, что позволяет ей блокировать любые подключения внешних устройств.

В качестве предустановленного софта в популярных дистрибутивах USBGuard не найти, но эту проблему легко обойти, воспользовавшись исходным кодом программы. Владельцы семейства Linux-дистрибутивов Red Hat для развертывания USBGuard могут подключить репозиторий Extra Packages for Enterprise Linux (EPEL), с выходом Ubuntu 16.10 опция быстрой установки этого ПО имеется и в репозитории Universe, но он поддерживается силами сообщества, а не разработчиком дистрибутива.

После установки USBGuard потребуется провести настройку конфигурационного файла usbguard-daemon.conf. Подключившись затем к ОС, программа сканирует подключенные к системе USB-устройства или хабы и последовательно применяет прописанные настройки сетевой защиты. По итогам сканирования она может разрешить (активировать) работу накопителя, запретить (деактивировать) его либо заблокировать (выключить). Параметр «usb-device-id» позволяет включить все одобренные устройства USB или, если USBGuard обнаружит попытку подключения к порту неавторизованного устройства, заблокировать его. Ещё одна важная особенность программы — она может отключить пустые порты (требуется настроить параметр «port-id»).

Для управления USBGuard можно использовать командную оболочку (она требуется для запуска скриптов, состоящих из списка команд и помогает упростить настройку разрешенных подключений) и генератор шаблонов, который позволяет осуществить тонкую настройку исходных политик ОС. Кроа-Хартманн рассказывает, как настроить политику подключений. Для этого нужно выполнить последовательность команд:

# usbguard generate-policy > rules.conf

# vi rules.conf (review/modify the rule set)

# sudo install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf

# sudo systemctl restart usbguard

Далее задаем конкретизирующие настройки. Для примера: allow 1050:0011 name «Linux user» serial «0001234567» via-port «1-2» hash «044b5e168d40ee0245478416caf3d998» reject via-port «1-2»

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