Objavljeno:

USB Guard - orodje za nadzor nad priključenimi USB napravami

Zlonamerne USB naprave lahko ogrozijo naš računalnik na različne načine. Najbolj enostaven način je, da USB disk vsebuje zlonamerno kodo, ki jo po možnosti še samodejno zažene (tim. autorun). Zato je funkcijo samodejnega zagona programske opreme iz prenosnih nosilcev podatkov smiselno onemogočiti. V Ubuntu to nastavimo, med Nastavitve – Podrobnosti, a četudi je samodejen zagon programske opreme omogočen, nas bo Ubuntu pred zagonom še vedno vprašal ali naj se aplikacija zažene ali ne.

Autorun funkcija v Ubuntu sistemu.

Autorun funkcija v Ubuntu sistemu.

Naslednja skupina zlonamernih naprav so strojni prestrezniki tipkanja. Gre za napravice, ki jih napadalec priključi med tipkovnico in računalnik in prestrezajo pritisnjene tipke. Nekatere teh naprav se predstavijo kot USB razdelilci in jih je mogoče zaznati, nekatere pa so povsem pasivne. Take naprave je sicer mogoče zaznati s fizičnim pregledom računalnika, saj so večinoma zunanje, čeprav obstajajo tudi USB naprave, ki jih je mogoče skriti v notranjost računalnika.

Obstajajo tudi simulatorji tipkanja, ki se sprožijo ob določenem dogodku. Tako bo na primer zlonamerna naprava počaka, da se nekdo v sistem prijavi z administratorskimi privilegiji, nato pa s pomočjo simulacije tipkovnice vnese serijo ukazov za spremembo nastavitev požarnega zidu ali dodajanje novega uporabnika.

Obstajajo pa tudi naprave, ki jih pri forenzičnem zasegu uporablja policija. Gre za naprave, ki preprečujejo zaklep zaslona, na primer tako, da simulirajo stalno premikanje miške.

Na srečo za nekatere teh napadov obstajajo rešitve. Poleg fizičnega pregleda kaj vse je priključeno v računalnik, pa obstajajo tudi rešitve, ki na nivoju operacijskega sistema zaznajo katera USB naprava je bila vključena v računalnik in potem na podlagi določenih pravil uporabo dovolijo ali pa onemogočijo.

Ena izmed takšnih aplikacij je USB Guard. Gre za programsko ogrodje, ki omogoča določanje pravil dostopa do USB naprav. Ko je v računalnik vstavljena nova USB naprava, USB Guard na podlagi pravil uporabo naprave dovoli, blokira ali napravo nemudoma odklopi iz sistema. Privzeta akcija je blokada, lahko pa to spremenimo.

Prevajanje in namestitev

Žal USB Guard (še) ni na voljo za Ubuntu sisteme, oziroma bo na voljo z naslednjo različico Ubuntuja. Tisti, ki uporabljamo Ubuntu 16.04 LTS (Xenial), moramo USB Guard namestiti ročno.

Na srečo namestitev ni preveč težavna.

Najprej iz interneta na naš računalnik potegnemo programsko kodo USB Guarda:

git clone https://github.com/dkopecek/usbguard

Nato namestimo potrebne programske pakete:

sudo apt install libgcrypt11-dev libsodium-dev protobuf-compiler libprotobuf-dev libdbus-1-dev libdbus-glib-1-dev libpolkit-gobject-1-dev

Na koncu pa prevedemo in namestimo programsko kodo:

cd usbguard/
./autogen.sh
./configure --prefix=/usr --sysconfdir=/etc --with-bundled-catch --with-bundled-pegtl --with-gui-qt=qt4 --enable-systemd
make
sudo make install

Če želimo, poženemo še test:

make check

Na koncu poženemo še ldconfig, da bo aplikacijo mogoče takoj zaganjati (brez potrebe po ponovnem zagonu sistema):

sudo ldconfig

Priprava na zagon

Sedaj določimo začetno politiko – dovolimo uporabo vseh trenutno priključenih USB naprav:

sudo usbguard generate-policy > rules.conf
sudo install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf

Sedaj je potrebno odpreti in nekoliko popraviti nastavitveno datoteko:

sudo nano /etc/usbguard/usbguard-daemon.conf

Poiščemo naslednji dve nastavitvi:

IPCAllowedUsers=root
IPCAllowedGroups=wheel

Ti dve nastavitvi povesta kateri uporabniki in katere skupine lahko nastavljajo pravila za USB naprave. Težava je v tem, da Ubuntu in Debian sistemi privzeto sploh nimajo skupine wheel. Zato bodo nastavitve lahko spreminjali kar vsi uporabniki! To je seveda resna varnostna ranljivost, zato skupino wheel zamenjamo s sudo:

IPCAllowedGroups=sudo

Nato pa lahko zaženemo demona:

sudo systemctl restart usbguard

Ali USB Guard res teče lahko preverimo z ukazom:

sudo systemctl status usbguard.service

Dobimo približno takle izpis:

● usbguard.service - USBGuard daemon
Loaded: loaded (/lib/systemd/system/usbguard.service; disabled; vendor preset: enabled)
Active: active (running) since pon 2016-12-12 11:01:25 CET; 6s ago
Docs: man:usbguard-daemon(8)
Main PID: 29930 (usbguard-daemon)
CGroup: /system.slice/usbguard.service
└─29930 /usr/sbin/usbguard-daemon -k -c /etc/usbguard/usbguard-daemon.conf

Zagon grafičnega vmesnika

Na koncu zaženemo še grafični vmesnik, oziroma tim. aplet, ki bdi nad dogajanjem na USB vodilu in nas v primeru priključitve nove naprave vpraša kaj storiti.

Aplet zaženemo z ukazom:

usbguard-applet-qt

Še bolje je, če v Ubuntu sistemu nastavimo, da se samodejno zažene ob prijavi uporabnika v sistem. To storimo preko aplikacije “Začetni programi“:

Samodejni zagon USB Guard apleta.

Samodejni zagon USB Guard apleta.

Po zagonu se bo aplet v obliki modrega ščita pojavil v menijski vrstici zgoraj desno.

Uporaba

Sedaj v USB vmesnik vtaknemo novo USB napravo. USB Guard bo napravo zaznal in nas vprašal ali naj uporabo dovoli ali ne.

USB Guard v akciji.

USB Guard v akciji.

Uporabnik ima sedaj 20 sekund časa za določitev pravila. Če ne stori nič, bo uporaba naprave blokirana.

Pravila sicer lahko tudi ročno popravljamo v datoteki /etc/usbguard/rules.conf. Za urejanje potrebujemo skrbniški dostop. Pravila so v obliki:

allow id XXXX:XXXX serial "099XXXAD205U2XXX" name "Mass Storage Device" hash "87lv9bcYDR1HRSSXXJ0XXXCIAbXXXjwIepdz9mmNfng=" with-interface XX:XX:XX

V primeru, da želimo pravilo spremeniti, samo poiščemo ustrezno napravo in spremenimo prvo besedo (allow/block/reject), nato pa USB Guard demon ponovno zaženemo:

sudo systemctl restart usbguard

Podrobnejša navodila za pisanje pravil (npr. pravilo, da blokiramo vse nosilce podatkov, ki imajo tudi funkcionalnost tipkovnice, itd.) so na voljo na spletu.

Naj za konec dodamo, da ima aplikacija še nekaj porodnih težav. Nekateri uporabniki so poročali, da jim je USB Guard po nadgradnji sistema zablokiral priklop vseh USB naprav (tudi tipkovnice in miške), zato je ob večjih nadgradnjah sistema morda smiselno delovanje aplikacije začasno onemogočiti.

Predvsem pa je problematična varnostna ranljivost povezana z neobstoječo skupino wheel ter dejstvo, da za spreminjanje nastavitev UB Guard aplet ne zahteva vnosa sistemskega (oz. sudo) gesla. No, napaka je sicer razvijalcem že prijavljena…

A te težave bodo slej ko prej odpravljene in upajmo, da bo aplikacija nekoč postala obvezen del vsakega Linux sistema.

Kategorije: Informacijska varnost, Odprta koda
Ključne besede: Linux, USB