Ako zakázať systém USB alebo určité porty v Ubuntu 22.04


Tento tutoriál ukazuje, ako zakázať USB, buď celý podsystém alebo pre určité porty USB, v Ubuntu.

Pre servery alebo produkčné stroje môže byť vypnutie USB užitočné z dôvodu ochrany osobných údajov, ochrany pred vírusmi a iných bezpečnostných dôvodov. Pre Ubuntu a väčšinu ostatných Linuxov vám tu ukážem, ako deaktivovať USB 3 spôsobmi:

  • Zakázať celý podsystém USB
  • Zakázať iba ukladací priestor USB – Zakáže prístup iba pre USB flash disk a iné úložné zariadenia.
  • Zakázať konkrétny port USB

Možnosť 1: Zakážte podsystém USB v Ubuntu a inom systéme Linux

Linuxové jadro má parameter na vypnutie celého podsystému USB. Pri zavádzaní s parametrom Kernel budú všetky vypnuté USB klávesnica, myš, flash disk a vstavané USB zariadenia, ako je webová kamera, čítačka odtlačkov prstov, bluetooth. A porty USB nemajú energiu na nabíjanie.

Je to skvelé pre zabezpečenie servera, ale na interakciu so strojom Linux musíte použiť buď vzdialené prihlásenie alebo klávesnicu a myš PS2. A USB stále funguje pred zavedením jadra v položke ponuky Grub. Ak ho chcete deaktivovať stlačením tlačidla napájania, nakonfigurujte ho v nastaveniach systému BIOS.

1. Najprv sa buď pripojte k svojmu serveru Ubuntu, alebo stlačte Ctrl+Alt+T na pracovnej ploche Ubuntu, čím otvoríte terminál. Keď sa otvorí, spustite príkaz na úpravu konfiguračného súboru pre zavádzač Grub:

sudo nano /etc/default/grub

Vo verzii Desktop môžete nahradiť nano za gedit pre Ubuntu 22.04 a staršie za GNOME, gnome-text-editor pre 23.10 + s GNOME, pluma pre MATE alebo mousepad pre XFCE.

Keď sa súbor otvorí, pridajte usbcore.nousb k hodnote GRUB_CMDLINE_LINUX_DEFAULT. Potom stlačte Ctrl+S na uloženie a Ctrl+X na ukončenie nano textového editora.

2. Ďalej spustite príkaz na aktualizáciu konfigurácie grub:

sudo update-grub

POZNÁMKA: Tento príkaz sa môže líšiť pre iný Linux. Po dokončení reštartujte počítač, aby ste mohli použiť!

Pre Ubuntu Desktop s nainštalovaným Grub-Customizer môže používateľ spustiť aj grafickú aplikáciu a pridať parameter jadra prechodom na kartu „Všeobecné nastavenia“.

Možnosť 2: Zakázať iba úložné zariadenie USB

Zablokovaním modulu jadra môže používateľ zakázať iba USB flash disk a iné úložné zariadenia USB, ponechať klávesnicu, myš a ďalšie vstavané USB zariadenia stále funkčné.

1. Najprv otvorte terminál (Ctrl+Alt+T) alebo sa pripojte k serveru a spustite príkaz na vytvorenie a úpravu konfiguračného súboru:

sudo nano /etc/modprobe.d/blacklist-usb-storage.conf

Môžete tiež nahradiť nano svojim obľúbeným textovým editorom. Keď sa súbor otvorí, pridajte nasledujúce 2 riadky:

blacklist usb_storage
blacklist uas

Potom stlačte Ctrl+S pre uloženie a Ctrl+X pre ukončenie nano textového editora.

2. Potom spustite príkaz na aktualizáciu initramfs.

sudo update-initramfs -u

Nakoniec reštartujte počítač. Váš systém pri spustení prečíta konfiguračný súbor blacklist-usb-storage.conf a zablokuje načítanie 2 modulov jadra (usb_storage a uas) pre prístup k úložným zariadeniam USB.

Možnosť 3: Zakázať špecifický port USB

V adresári /sys/bus/usb/devices sa nachádza zoznam podpriečinkov, ktoré obsahujú súbory na konfiguráciu USB portov a pripojených zariadení. Nastavením vždy pozastaviť alebo použiť službu usbguard môže používateľ „zakázať“ príslušné porty USB.

Krok 1: Nájdite priečinok zariadenia sys pre váš špecifikovaný port USB

Adresár /sys/bus/usb/devices má pomerne veľa podpriečinkov, najprv musíte zistiť, ktorý z nich je pre váš USB port.

1. Najprv zapojte USB zariadenie (klávesnicu, myš alebo flash disk) do USB portu, aby sa automaticky vygeneroval zodpovedajúci podpriečinok v tomto adresári.

2. Potom otvorte terminál (Ctrl+Alt+T) a spustite príkaz na zobrazenie všetkých zariadení USB:

lsusb

A spustením jediného príkazu nižšie zobrazíte zoznam podpriečinkov, ako aj ich obsluhované ID.

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

Vo výstupe príkazu lsusb  môžete zistiť ID pripojených zariadení USB. S výstupom 2. príkazu môžete použiť ID na zistenie názvov priečinkov zariadenia (napr. 1-1, 1-2, usb1, usb2, ...).

V mojom prípade (pozri snímku obrazovky nižšie) mám v notebooku iba 2 porty USB. Podpriečinok „1-1“ je určený pre 1c4f:0034, port USB pripojený k myši. A podpriečinok „1-2“ je určený pre 3151:3020, port USB pripojený k bezdrôtovej klávesnici

Krok 2: (Voliteľné) Automatické pozastavenie zariadenia USB

V poslednom kroku 1 som našiel zodpovedajúce podpriečinky (1-1 a 1-2) pre moje 2 USB porty.

Na výber môžete nastaviť automatické pozastavenie určitého USB portu, napríklad 1-1, a nastaviť oneskorenie na 0 ms, takže bude vždy pozastavený.

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

Zmena však funguje iba dovtedy, kým neodpojíte a znova nepripojíte zariadenie k portu USB. Pretože po odpojení USB zariadenia príslušný konfiguračný priečinok (1-1 v prípade) zmizne. Keď sa znova pripojíte, tento priečinok sa znova automaticky vytvorí, ale všetky nastavenia sa vynulujú.

Znamená to, že táto metóda funguje iba vtedy, keď je zariadenie USB stále pripojené k portu. Pokiaľ sa vám nepodarilo automaticky spustiť 2 vyššie uvedené príkazy na každom doplnku.

Krok 2: (Lepšia voľba) Použite USBGuard

Väčšina Linuxu obsahuje balík usbguard v systémovom úložisku. Na pozadí beží službu systemd, ktorá implementuje základné funkcie USB whitelisting a blacklisting.

1. Najprv otvorte terminál a spustite príkaz na inštaláciu balíka:

sudo apt install usbguard

2. Potom spustite príkaz na úpravu konfiguračného súboru pre túto službu:

sudo nano /etc/usbguard/rules.conf

Pre GNOME nahraďte nano za gedit (22.04 a staršie), gnome-text-editor (23.10 a novšie), mousepad pre XFCE, pluma pre MATE, ….

Keď sa súbor otvorí, mal by obsahovať niekoľko riadkov pre predvolené pravidlá. Ak je PRÁZDNY, zatvorte súbor. Chvíľu počkajte, kým sa automaticky vygenerujú pravidlá, a potom ich znova upravte.

3. Pred úpravou súboru je lepšie vytvoriť kópiu predvoleného obsahu. Takže môžete ľahko obnoviť zmeny!

Keď sa súbor otvorí, vymažte riadok pre váš špecifický USB port/zariadenie (identifikujte ho pomocou ID, názvu atď.), nakoniec pridajte nový riadok blokujte cez port „1-1“ (zmena „1“ -1'), aby ste deaktivovali tento port USB.

4. Nakoniec reštartujte službu.

systemctl restart usbguard.service

A zmena sa použije o chvíľu neskôr.

Ak chcete túto zmenu vrátiť späť, pomocou príkazov zastavte služby a potom odinštalujte usbguard:

sudo systemctl disable --now usbguard.service
sudo systemctl stop usbguard-dbus.service
sudo systemctl mask usbguard-dbus.service
sudo apt remove --purge usbguard

Nakoniec odstráňte konfiguračné súbory v adresári /etc:

sudo rm -rf /etc/usbguard/