Как отключить систему USB или определенные порты в Ubuntu 22.04
В этом руководстве показано, как отключить USB либо всю подсистему, либо определенные USB-порты в Ubuntu.
Для серверов или производственных компьютеров отключение USB может быть полезно для обеспечения конфиденциальности данных, защиты от вирусов и других соображений безопасности. Для Ubuntu и большинства других Linux здесь я покажу вам, как отключить USB тремя способами:
- Отключить всю подсистему USB
- Отключить только USB-накопитель: запретить доступ только для USB-накопителей и других устройств хранения данных.
- Отключить определенный USB-порт
Вариант 1. Отключить подсистему USB в Ubuntu и других Linux.
В ядре Linux есть параметр для отключения всей подсистемы USB. При загрузке с параметром ядра USB-клавиатура, мышь, флэш-накопитель и встроенные USB-устройства, такие как веб-камера, сканер отпечатков пальцев и Bluetooth, будут отключены. И USB-порты не имеют питания для зарядки.
Это отлично подходит для безопасности сервера, но для взаимодействия с машиной Linux вам придется использовать либо удаленный вход, либо клавиатуру и мышь PS2. И USB по-прежнему работает до загрузки ядра в пункте меню Grub. Если вы хотите отключить его при нажатии кнопки питания, настройте его в настройках BIOS.
1. Сначала либо подключитесь к серверу Ubuntu, либо нажмите Ctrl+Alt+T
на рабочем столе Ubuntu, чтобы открыть терминал. Когда он откроется, выполните команду для редактирования файла конфигурации загрузчика Grub:
sudo nano /etc/default/grub
В версии для настольных компьютеров вы можете заменить nano
на gedit
для Ubuntu 22.04 и более ранних версий на GNOME, gnome-text-editor
для 23.10 + с GNOME, pluma
для MATE или коврик для мыши
для XFCE.
Когда файл откроется, добавьте usbcore.nousb к значению GRUB_CMDLINE_LINUX_DEFAULT. Затем нажмите Ctrl+S для сохранения и Ctrl+X для выхода из текстового редактора nano.
2. Затем выполните команду для обновления конфигурации grub:
sudo update-grub
ПРИМЕЧАНИЕ. Эта команда может отличаться для других Linux. Когда закончите, перезагрузите компьютер, чтобы применить!
Для настольного компьютера Ubuntu с установленным Grub-Customizer пользователь также может запустить графическое приложение и добавить параметр ядра, перейдя на вкладку «Общие настройки».
Вариант 2. Отключить только USB-устройство хранения данных
Блокируя модуль ядра, пользователь может отключить только USB-накопитель и другие USB-накопители, оставив клавиатуру, мышь и другие встроенные USB-устройства работающими.
1. Сначала откройте терминал (Ctrl+Alt+T) или подключитесь к серверу и выполните команду для создания и редактирования файла конфигурации:
sudo nano /etc/modprobe.d/blacklist-usb-storage.conf
Кроме того, вы можете заменить nano
на свой любимый текстовый редактор. Когда файл откроется, добавьте следующие 2 строки:
blacklist usb_storage
blacklist uas
Затем нажмите Ctrl+S для сохранения и Ctrl+X для выхода из текстового редактора nano.
2. После этого запустите команду для обновления initramfs.
sudo update-initramfs -u
Наконец, перезагрузите компьютер. Ваша система прочитает файл конфигурации blacklist-usb-storage.conf
при запуске и заблокирует загрузку двух модулей ядра (usb_storage
и uas
). для доступа к USB-накопителям.
Вариант 3. Отключить определенный USB-порт
В каталоге /sys/bus/usb/devices
находится список подпапок, содержащих файлы для настройки USB-портов и подключенных устройств. Настроив всегда приостанавливать работу или использовать службу usbguard, пользователь может «отключить» соответствующие порты USB.
Шаг 1. Найдите папку системного устройства для указанного USB-порта.
В каталоге /sys/bus/usb/devices
имеется довольно много подпапок, вам нужно сначала выяснить, какая из них предназначена для вашего USB-порта.
1. Сначала подключите USB-устройство (клавиатуру, мышь или флэш-накопитель) к USB-порту, чтобы оно автоматически создало соответствующую подпапку в этом каталоге.
2. Затем откройте терминал (Ctrl+Alt+T) и выполните команду, чтобы просмотреть список всех USB-устройств:
lsusb
И запустите одиночную команду ниже, чтобы просмотреть подпапки, а также их обрабатываемые идентификаторы.
cd /sys/bus/usb/devices && for d in *; do if [ -f $d/idProduct ]; then prod=$( cat $d/idProduct ); vend=$( cat $d/idVendor ); echo Device: "${d}", ID: "${vend}:${prod}"; fi; done
В выводе команды lsusb
вы можете узнать идентификаторы подключенных USB-устройств. С помощью вывода второй команды вы можете использовать идентификатор, чтобы узнать имена папок устройства (например, 1-1, 1-2, usb1, usb2, …).
В моем случае (см. скриншот ниже) в ноутбуке всего 2 USB-порта. Подпапка «1-1» предназначена для 1c4f:0034, USB-порта, подключенного к мыши. Подпапка «1-2» предназначена для 3151:3020, порта USB, подключенного к беспроводной клавиатуре.
Шаг 2. (Необязательно) Автоматическая приостановка USB-устройства
На последнем шаге 1 я нашел соответствующие подпапки (1-1 и 1-2) для моих двух портов USB.
По выбору вы можете настроить автоматическую приостановку определенного USB-порта, например 1-1, и установить задержку на 0 мс, чтобы он всегда был в режиме ожидания.
echo 0 | sudo tee /sys/bus/usb/devices/1-1/power/autosuspend_delay_ms
echo "auto" | sudo tee /sys/bus/usb/devices/1-1/power/control
Однако это изменение работает только до тех пор, пока вы не отключите и снова не подключите устройство к USB-порту. Потому что после отключения USB-устройства соответствующая папка конфигурации (1-1 в случае) исчезнет. При повторном подключении эта папка снова создается автоматически, но со сбросом всех настроек.
Это означает, что этот метод работает только тогда, когда USB-устройство остается подключенным к порту. Если только вам не удалось автоматически запустить две приведенные выше команды для каждого плагина.
Шаг 2: (Лучший выбор) Используйте USBGuard
Большинство Linux включают пакет usbguard в системный репозиторий. Он запускает службу systemd в фоновом режиме для реализации основных возможностей белого и черного списка USB.
1. Сначала откройте терминал и выполните команду для установки пакета:
sudo apt install usbguard
2. Затем выполните команду для редактирования файла конфигурации для этой службы:
sudo nano /etc/usbguard/rules.conf
Для GNOME замените nano
на gedit
(22.04 и более ранние версии), gnome-text-editor
(23.10 и более поздние версии), коврик для мыши
для XFCE, pluma
для MATE, ….
Когда файл откроется, он должен содержать несколько строк для правил по умолчанию. Если ПУСТОЙ, закройте файл. Подождите немного, чтобы правила автоматически сгенерировались, а затем отредактируйте их повторно.
3. Перед редактированием файла лучше сделать копию содержимого по умолчанию. Итак, вы легко сможете восстановить изменения!
Когда файл откроется, удалите строку для вашего конкретного USB-порта/устройства (идентифицируйте его по идентификатору, имени и т. д.), наконец, добавьте новую строку блокировать через порт «1-1» (измените '1 -1' соответственно), чтобы отключить этот USB-порт.
4. Наконец, перезапустите службу.
systemctl restart usbguard.service
И изменение будет применено через несколько секунд.
Чтобы отменить это изменение, используйте команды для остановки служб, а затем удалите usbguard:
sudo systemctl disable --now usbguard.service
sudo systemctl stop usbguard-dbus.service
sudo systemctl mask usbguard-dbus.service
sudo apt remove --purge usbguard
Наконец, удалите файлы конфигурации из каталога /etc:
sudo rm -rf /etc/usbguard/