usbgurd
Installation de l'USBGuard et d'autres utilitaires
USBGuard ne fonctionne que sur Linux, et le tutoriel suivant ne fonctionnera pas avec d'autres systèmes d'exploitation tels que *BSD ou macOS.
Nous devons installer USBGuard comme suit, selon la version de votre distro Linux.
Debian/Ubuntu ou Linux mint
Utilisez la commande apt ou apt-get sur une Debian/Ubuntu ou Linux mint :
$ sudo apt install usbguard usbutils udisks2
[sudo] password for vivek: Reading package lists... Done Building dependency tree Reading state information... Done usbutils is already the newest version (1:012-2). udisks2 is already the newest version (2.8.4-1ubuntu2). The following packages were automatically installed and are no longer required: linux-headers-5.4.0-84 linux-headers-5.4.0-84-generic linux-image-5.4.0-84-generic linux-modules-5.4.0-84-generic linux-modules-extra-5.4.0-84-generic Use 'sudo apt autoremove' to remove them. The following additional packages will be installed: libqb0 libumockdev0 libusbguard0 The following NEW packages will be installed: libqb0 libumockdev0 libusbguard0 usbguard 0 upgraded, 4 newly installed, 0 to remove and 4 not upgraded. Need to get 580 kB of archives. After this operation, 2,131 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 libqb0 amd64 1.0.5-1 [63.9 kB] Get:2 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 libumockdev0 amd64 0.14.1-1ubuntu0.1 [34.2 kB] Get:3 http://archive.ubuntu.com/ubuntu focal/universe amd64 libusbguard0 amd64 0.7.6+ds-1build1 [350 kB] Get:4 http://archive.ubuntu.com/ubuntu focal/universe amd64 usbguard amd64 0.7.6+ds-1build1 [132 kB] Fetched 580 kB in 3s (229 kB/s) Selecting previously unselected package libqb0:amd64. (Reading database ... 419085 files and directories currently installed.) Preparing to unpack .../libqb0_1.0.5-1_amd64.deb ... Unpacking libqb0:amd64 (1.0.5-1) ... Selecting previously unselected package libumockdev0:amd64. Preparing to unpack .../libumockdev0_0.14.1-1ubuntu0.1_amd64.deb ... Unpacking libumockdev0:amd64 (0.14.1-1ubuntu0.1) ... Selecting previously unselected package libusbguard0. Preparing to unpack .../libusbguard0_0.7.6+ds-1build1_amd64.deb ... Unpacking libusbguard0 (0.7.6+ds-1build1) ... Selecting previously unselected package usbguard. Preparing to unpack .../usbguard_0.7.6+ds-1build1_amd64.deb ... Unpacking usbguard (0.7.6+ds-1build1) ... Setting up libqb0:amd64 (1.0.5-1) ... Setting up libumockdev0:amd64 (0.14.1-1ubuntu0.1) ... Setting up libusbguard0 (0.7.6+ds-1build1) ... Setting up usbguard (0.7.6+ds-1build1) ... Created symlink /etc/systemd/system/dbus-org.usbguard.service → /lib/systemd/system/usbguard-dbus.service. Created symlink /etc/systemd/system/multi-user.target.wants/usbguard-dbus.service → /lib/systemd/system/usbguard-dbus.service. Created symlink /etc/systemd/system/basic.target.wants/usbguard.service → /lib/systemd/system/usbguard.service. Processing triggers for systemd (245.4-4ubuntu3.13) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for dbus (1.12.16-2ubuntu2.1) ... Processing triggers for libc-bin (2.31-0ubuntu9.3) ...
Fedora ou RHEL et ses amis
Pour Fedora, RHEL et clone, utilisez la commande dnf :
$ sudo dnf install usbguard usbutils udisks2
Installer USBGuard sur RHEL ou Fedora Linux
SUSE/OpenSUSE Linux
Utilisateur de SUSE Enterprise Linux ou OpenSUSE Linux, essayez la commande zypper comme suit :
$ sudo zypper in usbguard usbutils udisks2 usbguard-tools
Loading repository data... Reading installed packages... Resolving package dependencies... The following 5 NEW packages are going to be installed: udisks2 udisks2-lang usbguard usbguard-tools usbutils The following recommended package was automatically selected: udisks2-lang 5 new packages to install. Overall download size: 725.3 KiB. Already cached: 0 B. After the operation, additional 3.0 MiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package udisks2-2.8.1-1.39.x86_64 (1/5), 261.9 KiB (929.5 KiB unpacked) Retrieving: udisks2-2.8.1-1.39.x86_64.rpm ..............................[done] Retrieving package usbguard-0.7.8-bp153.1.19.x86_64 (2/5), 122.1 KiB (314.0 KiB unpacked) Retrieving: usbguard-0.7.8-bp153.1.19.x86_64.rpm .......................[done] Retrieving package udisks2-lang-2.8.1-1.39.noarch (3/5), 163.3 KiB ( 1.2 MiB unpacked) Retrieving: udisks2-lang-2.8.1-1.39.noarch.rpm .........................[done] Retrieving package usbguard-tools-0.7.8-bp153.1.19.x86_64 (4/5), 66.1 KiB (179.7 KiB unpacked) Retrieving: usbguard-tools-0.7.8-bp153.1.19.x86_64.rpm .................[done] Retrieving package usbutils-014-3.3.1.x86_64 (5/5), 111.9 KiB (362.2 KiB unpacked) Retrieving: usbutils-014-3.3.1.x86_64.rpm ..............................[done] Checking for file conflicts: ...........................................[done] (1/5) Installing: udisks2-2.8.1-1.39.x86_64 ............................[done] (2/5) Installing: usbguard-0.7.8-bp153.1.19.x86_64 .....................[done] (3/5) Installing: udisks2-lang-2.8.1-1.39.noarch .......................[done] (4/5) Installing: usbguard-tools-0.7.8-bp153.1.19.x86_64 ...............[done] (5/5) Installing: usbutils-014-3.3.1.x86_64 ............................[done]
Contrôler le service usbguard
Utilisez la commande systemctl pour configurer le service usbguard au démarrage ou le redémarrer lorsque vous appliquez une nouvelle politique. La syntaxe est la suivante :
$ sudo systemctl enable usbguard.service --now
$ sudo systemctl start usbguard.service
$ sudo systemctl stop usbguard.service
$ sudo systemctl restart usbguard.service
$ sudo systemctl status usbguard.service
Le service usbguard persistera à travers les redémarrages et la recherche de l'état actuel en utilisant la commande systemctl sur Linux
Liste des périphériques USB actuels
Utilisez la commande lsusb ou la commande usb-devices pour afficher des informations sur les bus USB du système et les périphériques qui y sont connectés. Par exemple :
$ lsusb
$ usb-devices | less
lsusb en action sur mon portable ThinkPad
$ sudo usbview
usbview GUI en action
Visualisation des règles USBGuard
Ensuite, entrez dans le répertoire /etc/usbguard en tant qu'utilisateur root. Donc, connectez-vous en tant qu'utilisateur root :
$ sudo -i
$ su -
Lister les fichiers et rechercher le fichier rules.conf :
$ ls -l
total 16 drwxr-xr-x. 2 root root 4096 Mar 31 13:32 IPCAccessControl.d -rw-------. 1 root root 0 Mar 31 13:32 rules.conf drwxr-xr-x. 2 root root 4096 Mar 31 13:32 rules.d -rw-------. 1 root root 5366 Mar 31 12:57 usbguard-daemon.conf
Types de règles :
Il existe trois types de règles cibles pour chaque périphérique USB :
- permettre - Autoriser le périphérique USB.
- bloc - Ne pas autoriser le périphérique USB, mais le système peut toujours voir (visible) le périphérique en utilisant la commande lsusb. Cependant, les utilisateurs ne peuvent pas utiliser le périphérique USB car il reste bloqué jusqu'à ce que l'administrateur système l'autorise. (bloquer le périphérique)
- rejeter - Le périphérique USB n'est pas autorisé, et le périphérique n'est pas visible pour le système ou les utilisateurs. Le périphérique USB doit être réinséré à nouveau pour redevenir visible. (rejeter le périphérique)
Comprendre /etc/usbguard/usbguard-daemon.conf
Le service usbguard lit ses valeurs par défaut et ses options dans un fichier nommé /etc/usbguard/usbguard-daemon.conf :
$ sudo less /etc/usbguard/usbguard-daemon.conf
$ sudo grep -vE ^#|^$ /etc/usbguard/usbguard-daemon.conf
Sorties :
RuleFile=/etc/usbguard/rules.conf ImplicitPolicyTarget=block PresentDevicePolicy=apply-policy PresentControllerPolicy=keep InsertedDevicePolicy=apply-policy AuthorizedDefault=none RestoreControllerDeviceState=false DeviceManagerBackend=uevent IPCAllowedUsers=root IPCAllowedGroups=root plugdev IPCAccessControlFiles=/etc/usbguard/IPCAccessControl.d/ DeviceRulesWithPort=false AuditBackend=FileAudit AuditFilePath=/var/log/usbguard/usbguard-audit.log
RuleFile=path | Le démon USBGuard utilisera ce fichier pour charger l'ensemble de règles de politique à partir de celui-ci et pour écrire de nouvelles règles reçues via l'interface IPC. |
ImplicitPolicyTarget=target | Comment traiter les périphériques USB qui ne correspondent à aucune règle de la politique. La cible doit être l'une des options suivantes : autoriser, bloquer ou rejeter (retirer logiquement le nœud de périphérique du système). |
PresentDevicePolicy=policy | Comment traiter les périphériques USB qui sont déjà connectés lorsque le démon démarre. La politique doit être l'une des suivantes : allow, block, reject, keep (conserver l'état actuel du périphérique) ou apply-policy (évaluer l'ensemble de règles pour chaque périphérique présent). |
PresentControllerPolicy=policy | Comment traiter les périphériques du contrôleur USB qui sont déjà connectés lorsque le démon démarre. L'une des options suivantes : allow, block, reject, keep ou apply-policy. |
InsertedDevicePolicy=policy | Comment traiter les périphériques USB qui sont déjà connectés après le démarrage du démon. Une des options suivantes : block, reject, apply-policy. |
RestoreControllerDeviceState=boolean | Le démon USBGuard modifie certains attributs des périphériques du contrôleur comme l'état d'autorisation par défaut des nouvelles instances de périphériques enfants. En utilisant ce paramètre, vous pouvez contrôler si le démon va essayer de restaurer les valeurs d'attribut à l'état avant la modification lors de l'arrêt. |
DeviceManagerBackend=backend | Quelle implémentation du backend du gestionnaire de périphériques utiliser. Le backend doit être l'un de uevent (par défaut) ou umockdev. |
IPCAllowedUsers=username [username ...] | Une liste délimitée par des espaces de noms d'utilisateurs dont le démon acceptera les connexions IPC. |
IPCAllowedGroups=groupname [groupname ...] | Une liste délimitée par des espaces de noms de groupes pour lesquels le démon acceptera des connexions IPC. |
IPCAccessControlFiles=path | Les fichiers à cet emplacement seront interprétés par le démon comme des fichiers de définition du contrôle d'accès IPC. Voir la section Contrôle d'accès IPC pour plus de détails. |
DeviceRulesWithPort=boolean | Générer des règles spécifiques au dispositif, y compris l'attribut "via-port". |
AuditBackend=backend | Le backend du journal des événements d'audit de USBGuard. La valeur du backend doit être l'une de FileAudit ou LinuxAudit. |
AuditFilePath=filepath | Chemin du fichier journal des événements d'audit d'USBGuard. Requis si AuditBackend est défini sur FileAudit. |
Création d'une politique de base par défaut
Exécutez la commande suivante si le fichier rules.conf est vide ou lorsque vous devez définir une nouvelle politique.
Presque toutes les distributions Linux sont livrées sans règles. Le fichier est donc vide. Pour générer un ensemble de règles (politique) qui autorise les périphériques USB actuellement connectés, exécutez :
$ sudo usbguard generate-policy -X >/etc/usbguard/rules.conf
Une note sur la politique d'attrape-tout
La dernière règle par défaut doit être soit le rejet, soit le blocage. Par exemple, pour générer une nouvelle politique de base avec une cible de règle de rejet, exécutez :
$ sudo usbguard generate-policy -X -t block > > > >/etc/usbguard/rules.conf
OU
$ sudo usbguard generate-policy -X -t reject > > > >/etc/usbguard/rules.conf
La politique de rejet ou de blocage comme politique de base est recommandée car :
- Il a défini une politique USBGuard permanente qui permet à un périphérique USB spécific d'interagir avec le système Linux.
- En d'autres termes, actuellement, les dispositifs connectés sont acceptés, mais USBGuard bloquera ou rejettera tout dispositif USB supplémentaire.
$ sudo more /home/student/rules.conf
Exemples de résultats :
allow id 1d6b:0002 serial "0000:00:14.0" name "xHCI Host Controller" hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type "" allow id 1d6b:0003 serial "0000:00:14.0" name "xHCI Host Controller" hash "prM+Jby/bFHCn2lNjQdAMbgc6tse3xVx+hZwjOPHSdQ=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type "" allow id 1d6b:0002 serial "0000:2c:00.0" name "xHCI Host Controller" hash "PwX8KDBTGiYfCyqnWn9KXV2puYMRc5J2oaMUcSSODtY=" parent-hash "pvCnfx3ZtzZduIZZbt74WeR01YZKEEkrJ0aOxulLMOA=" with-interface 09:00:00 with-connect-type "" allow id 1d6b:0003 serial "0000:2c:00.0" name "xHCI Host Controller" hash "B2IRioS6Q505Wfk3rv9C5jLWo4iRtvS1rx0ZHSJGEl0=" parent-hash "pvCnfx3ZtzZduIZZbt74WeR01YZKEEkrJ0aOxulLMOA=" with-interface 09:00:00 with-connect-type "" allow id 045e:082c serial "603378194521" name "Microsoft Ergonomic Keyboard" hash "/XFAtSRVsaZuf7PFiE9mvgEyRjrYL8NVMyDOqboFhrc=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" with-interface { 03:01:01 03:00:00 } with-connect-type "hotplug" allow id 2109:2813 serial "" name "USB2.0 Hub" hash "TysTMKnN62ygTFPyigZ+0VmUsx067cMepEk76682Bo8=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-7" with-interface 09:00:00 with-connect-type "hotplug" allow id 06cb:00bd serial "46b6e9623725" name "" hash "a9PN3kg0s7LvZgUVOnrGXSBaVPGD2RkCo/lm5dEjTRM=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" with-interface ff:00:00 with-connect-type "not used" allow id 2109:0813 serial "" name "USB3.0 Hub" hash "VXFbt2m/i5krELu+kCSJysCj+m3eetVv3nfC72o9ceg=" parent-hash "B2IRioS6Q505Wfk3rv9C5jLWo4iRtvS1rx0ZHSJGEl0=" via-port "4-2" with-interface 09:00:00 with-connect-type "hotplug" allow id 8087:0029 serial "" name "" hash "ATK8pCmQtUYaUnwqUVuYssrOMkW8pdCSdZO4OC6zEtg=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-14" with-interface { e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 } with-connect-type "not used" allow id 1a40:0101 serial "" name "USB 2.0 Hub" hash "xe96rjr8V53Jw+g7q/yi0C1czVxatehiq7r4gn2dH6s=" parent-hash "TysTMKnN62ygTFPyigZ+0VmUsx067cMepEk76682Bo8=" via-port "1-7.4" with-interface 09:00:00 with-connect-type "unknown" allow id 2109:0102 serial "0000000000000001" name "USB 2.0 BILLBOARD " hash "9D+MQzO58xal2wcN4ROFKY33xyDuRLfAqDBlArhZi3M=" parent-hash "xe96rjr8V53Jw+g7q/yi0C1czVxatehiq7r4gn2dH6s=" with-interface 11:00:00 with-connect-type "unknown"
Liste des règles (politique) utilisées par le démon USBGuard.
Cours :
$ sudo usbguard list-rules
Vous voulez afficher tous les dispositifs qui sont affectés par la règle spécifique ? Essayez :
$ sudo usbguard list-rules -d
$ sudo usbguard list-rules --show-devices
Nous pouvons également afficher les règles ayant une étiquette spécifique :
$ sudo usbguard list-rules -l {label_here}
$ sudo usbguard list-rules --label
Pour lister tous les périphériques USB reconnus par le démon USBGuard :
$ sudo usbguard list-devices
$ sudo usbguard list-devices -a ## list allowed devices ##
$ sudo usbguard list-devices -b ## list blocked devices ##
Tester USBGuard
Je vais insérer mon modem USB 4G LTE et voir s'il est bloqué par défaut et lancer lsusb :
$ lsusb
Exemples de sorties indiquant que la clé USB HUAWEI est connectée au port USB (Device 009 : ID 12d1:157c) et visible par le système :
Bus 004 Device 002: ID 2109:0813 VIA Labs, Inc. USB3.0 Hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 06cb:00bd Synaptics, Inc. Bus 001 Device 007: ID 2109:0102 VIA Labs, Inc. Microsoft Ergonomic Keyboard Bus 001 Device 005: ID 1a40:0101 Terminus Technology Inc. Hub Bus 001 Device 003: ID 2109:2813 VIA Labs, Inc. USB2.0 Hub Bus 001 Device 009: ID 12d1:157c Huawei Technologies Co., Ltd. HUAWEI_MOBILE Bus 001 Device 006: ID 8087:0029 Intel Corp. Bus 001 Device 002: ID 045e:082c Microsoft Corp. Microsoft Ergonomic Keyboard Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Cependant, ce périphérique est bloqué par USBGuard. Vous verrez des messages du noyau indiquant que l'utilisation du périphérique USB HUAWEI n'est pas autorisée, comme suit :
$ sudo dmesg
$ sudo dmesg | grep -i authorized
Exemples de sorties indiquant que par défaut USBGuard a bloqué le modem USB :
[87467.670280] usb 1-2: new high-speed USB device number 8 using xhci_hcd [87467.820572] usb 1-2: New USB device found, idVendor=12d1, idProduct=157c, bcdDevice= 1.02 [87467.820578] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [87467.820581] usb 1-2: Product: HUAWEI_MOBILE [87467.820584] usb 1-2: Manufacturer: HUAWEI_MOBILE [87467.820587] usb 1-2: SerialNumber: 0123456789ABCDEF [87467.820928] usb 1-2: Device is not authorized for usage [87477.196260] usb 1-2: USB disconnect, device number 8 [87477.682044] usb 1-2: new high-speed USB device number 9 using xhci_hcd [87477.831578] usb 1-2: New USB device found, idVendor=12d1, idProduct=157c, bcdDevice= 1.02 [87477.831583] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [87477.831587] usb 1-2: Product: HUAWEI_MOBILE [87477.831590] usb 1-2: Manufacturer: HUAWEI_MOBILE [87477.831593] usb 1-2: SerialNumber: 0123456789ABCDEF [87477.831931] usb 1-2: Device is not authorized for usage
Nous pouvons utiliser la commande suivante pour afficher les périphériques USB bloqués :
$ sudo usbguard list-devices -b
Sorties :
24: block id 12d1:157c serial "0123456789ABCDEF" name "HUAWEI_MOBILE" hash "8tSOgfYNylANtACo0ysV5qRAx5Ht+geWMd+QOVNcK70=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-2" with-interface { 08:06:50 02:0e:00 0a:00:02 0a:00:02 08:06:50 } with-connect-type "hotplug"
Où la politique cible du bloc est la suivante :
- NULL24 - Numéro du dispositif
- NULLid de bloc 12d1:157c - ID du dispositif USB
- NULLsérie 0123456789ABCDEF - Numéro de série du dispositif USB
- NULLnom HUAWEI_MOBILE - Nom du dispositif USB
Le numéro du périphérique USB est généré dynamiquement et sera différent sur votre système Linux.
Autoriser temporairement l'accès aux périphériques USB
Par défaut, nous savons que USBGuard bloque le périphérique USB attaché et restera bloqué pour toujours. Cela signifie que les attaques basées sur l'USB sont bloquées. Mais, que se passe-t-il si je veux donner accès à un périphérique USB légitime ? Essayez la commande suivante qui change la politique de blocage pour permettre l'utilisation du périphérique #. NULL24 avec l'ID du bloc du dispositif NULL12d1:157c:
$ sudo usbguard allow-device {device_ID}
$ sudo usbguard allow-device 24
Je peux aussi utiliser la règle comme suit :
$ sudo usbguard allow-device 12d1:157c serial 0123456789ABCDEF
$ sudo usbguard allow-device 12d1:1506 serial 0123456789ABCDEF
Règle permanente
Nous pouvons rendre cette décision permanente. Une règle d'autorisation spécifique au dispositif sera ajoutée à la politique actuelle :
$ sudo usbguard allow-device {device_ID} -p
$ sudo usbguard allow-device 24 -p
Règle au lieu d'ID :
$ sudo usbguard allow-device 12d1:157c serial 0123456789ABCDEF -p
Voici mes règles ajoutées au rules.conf à l'aide d'un éditeur de texte :
$ sudo /etc/usbguard/rules.conf
Ajoutez les éléments suivants
allow id 12d1:157c serial "0123456789ABCDEF" name "HUAWEI_MOBILE" hash "8tSOgfYNylANtACo0ysV5qRAx5Ht+geWMd+QOVNcK70=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-2" with-interface { 08:06:50 02:0e:00 0a:00:02 0a:00:02 08:06:50 } with-connect-type "hotplug" allow id 12d1:1506 serial "" name "HUAWEI_MOBILE" hash "1lr2516yYIsSGGyDZrcgBBNJPlzzthtHbpH1SN5E/VA=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-2" with-interface { ff:02:12 ff:02:01 ff:02:16 ff:02:16 08:06:50 08:06:50 } with-connect-type "hotplug"
Enregistrez et fermez le fichier. Redémarrez le service :
$ sudo systemctl restart usbguard.service
Vérification
L'USBGurad donnera l'accès au périphérique USB immédiatement après l'ajout de la règle. Maintenant, je peux me connecter à Internet en utilisant le modem USB LTE ou visualiser le disque USD :
udisksctl status
MODEL REVISION SERIAL DEVICE -------------------------------------------------------------------------- SAMSUNG MZVLB1T0HBLR-000L7 5M2QEXF7 xyzfooooooooo1 nvme0n1 SAMSUNG MZVLB1T0HBLR-000L7 5M2QEXF7 xyzfooooooooo2 nvme1n1 HUAWEI TF CARD Storage 2.31 HUAWEI_TF_CARD_Storage-0:0 sda HUAWEI Mass Storage 2.31 HUAWEI_Mass_Storage-0:0 sr0
Plus d'erreurs non plus :
$ sudo dmesg
Et oui, mon nmcli ou gestionnaire de réseau s'est connecté à Internet en utilisant un modem USB LTE également. Voici la sortie de la commande ip et de la commande nmcli :
$ nmcli device status
$ nmcli device show ttyUSB0
$ ip a s | more
$ ip a s wwx001e101f0000
J'ai autorisé le modem USB LTE et l'accès au disque en utilisant l'USBGuard.
Suppression du périphérique USB
Pour supprimer du jeu de règles une règle identifiée par l'identifiant de la règle, exécutez la commande suivante
$ sudo usbguard list-devices -a # list rules #
Notez le numéro d'identification 27. Par exemple :
27: allow id 12d1:1506 serial "" name "HUAWEI_MOBILE" hash "1lr2516yYIsSGGyDZrcgBBNJPlzzthtHbpH1SN5E/VA=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-2" with-interface { ff:02:12 ff:02:01 ff:02:16 ff:02:16 08:06:50 08:06:50 } with-connect-type "hotplug"
Ensuite :
$ usbguard block-device {ID_HERE} -p
$ sudo usbguard block-device 27 -p
Ce qui précède va annuler l'autorisation du dispositif avec l'ID # 27. Mais on peut aussi utiliser la règle :
$ usbguard block-device {RULE} -p
$ sudo usbguard block-device 12d1:157c serial 0123456789ABCDEF -p
$ sudo usbguard block-device 12d1:1506 serial 0123456789ABCDEF -p
Bien sûr, vous pouvez modifier le fichier de configuration :
$ sudo /etc/usbguard/rules.conf
Supprimez ensuite l'entrée pour le périphérique USB, puis redémarrez le service :
$ sudo systemctl restart usbguard.service
$ sudo systemctl status usbguard.service
Conseils de dépannage
Si vous êtes un nouveau développeur ou administrateur système Linux, vous pouvez trouver la configuration un peu délicate. Essayez les commandes suivantes pour visualiser et résoudre les problèmes :
Le système peut-il visualiser mon périphérique USB ?
$ lsusb
$ sudo usbguard watch
Le périphérique USB est-il bloqué ou autorisé ?
$ sudo usbguard list-rules
$ sudo usbguard list-devices -b # blocked #
$ sudo usbguard list-devices -a # allowed #
Vérifiez les journaux du système
$ sudo dmesg
$ sudo dmesg | more
$ sudo journalctl -b -e
$ sudo journalctl -b -e -u usbguard.service
$ sudo cat /var/log/usbguard/usbguard-audit.log
$ sudo tail -f /var/log/usbguard/usbguard-audit.log
Autres outils liés à l'USB
$ nmcli
$ nmcli device status # usb network #
$ ip a s # networking #
$ lsblk # usb block device #
$ udisksctl status
Obtenir de l'aide
Cours :
$ usbguard -h
$ usbguard {sub-command} -h
$ usbguard list-devices -h
Voici ce que je vois
Usage: usbguard [OPTIONS] [COMMAND OPTIONS] ... Options: Commands: get-parameter Get the value of a runtime parameter. set-parameter Set the value of a runtime parameter. list-devices List all USB devices recognized by the USBGuard daemon. allow-device Authorize a device to interact with the system. block-device Deauthorize a device. reject-device Deauthorize and remove a device from the system. list-rules List the rule set (policy) used by the USBGuard daemon. append-rule Append a rule to the rule set. remove-rule Remove a rule from the rule set. generate-policy Generate a rule set (policy) based on the connected USB devices. watch Watch for IPC interface events and print them to stdout. read-descriptor Read a USB descriptor from a file and print it in human-readable form. add-user Add USBGuard IPC user/group (requires root privilges) remove-user Remove USBGuard IPC user/group (requires root privileges)
Résumé
Ce guide explique comment utiliser USBGuard qui protège votre ordinateur de bureau ou votre serveur Linux contre les périphériques USB malveillants en mettant en œuvre des règles d'autorisation et de blocage basées sur des attributs tels que l'ID et le numéro de série du périphérique USB. Le service usbguard s'exécute en arrière-plan et se base sur des règles, et il autorise ou bloque l'accès à un périphérique USB. La commande usbguard est utilisée pour gérer les règles d'autorisation des périphériques USB et pour déboguer les problèmes.
Références
Veuillez consulter les pages de manuel suivantes à l'aide de la commande man :
$ man lsusb
$ man usbview
$ man usb-devices
$ man usbguard
$ man usbguard-daemon