Généralement quand nous parlons de sécurité informatique, nous pensons plus rapidement à la sécurité applicative des équipements. Mais ce n’est pas la seule. La sécurité physique est aussi un axe à prendre dans sa politique de sécurité informatique. Aujourd’hui nous allons voir comment appliquer un filtre/barrage au périphérique externe étranger sur une machine Linux (Distribution Ubuntu).

USBGuard est un petit daemon qui fournit une protection face à des périphériques externe potentiellement intrusifs. Il met en œuvre des fonctionnalités de base (blacklist, whitelist) sur les attributs (ID unique, Nom…) de périphérique de stockage uniquement. Pour appliquer une politique définie par l’utilisateur, USBGuard utilise notamment la fonction d’autorisation de périphérique USB du noyau Linux du système.

Ce tutoriel est réalisé sous Ubuntu 20.04.

Nb: Les utilisateurs de REDHat, Centos peuvent suivre aussi ce tutoriel, la simple commande qui varie est lors de l’installation du paquet usbguard non pas avec apt mais avec yum.

Démonstration

Toutes les commandes ci-dessous seront exécutées par l’intermédiaire de l’utilisateur root.

Dans un premier temps, nous allons installer le paquet usbguard, par l’intermédiaire de la fameuse commande apt.

apt install usbguard

Dès lors que l’installation est achevée, nous allons générer la politique par défaut d’usbguard. (Par défaut celle-ci autorise tous les périphérique de stockage externe déjà connecté à la machine, lors de son exécution).

usbguard generate-policy > /etc/usbguard/rules.conf

Bien, nous pouvons maintenant démarrer le service usbguard.

systemctl restart usbguard.service
systemctl enable usbguard.service

Tests

Pour réaliser nos tests, nous allons brancher une clé USB à notre machine.

Si vous utilisez VMware Workstation comme logiciel de virtualisation, il faudra autoriser que le périphérique de stockage soit branché à notre machine virtuelle. (Dans certains cas les VMware Tools peuvent être requis)

Normalement votre clé USB ne doit pas apparaitre, et bien sur cela est normal. 🙂

Pour vérifier que notre système détecte la présence de cette clé USB (mais qu’elle n’est pas monté), nous allons exécuter les commandes suivantes.

lsusb # commande universelle 

Mais celle qui nous intéresse réellement est :

usbguard list-devices

Comme vous pouvez le constater, la ligne commençant par 13, qui représente l’ID du périphérique USB que je viens de brancher. Automatiquement usbguard l’a détecté, et l’a bloqué.

J’insiste sur le fait qu’Usbguard ne désactive pas les ports, il effectue un contrôle permanent sur ce qui est branché ou non. Voyons un peu ce principe comme la police douanière à une frontière entre deux pays. Celle-ci autorise ou non une personne à rentrer sur son territoire (sauf dans l’espace Schengen 🙂 ). Et bien cela est le même principe sur le fond avec usbguard, sauf qu’ici nous parlons pas de pays mais de système informatique.

Usbguard est capable de faire la différence entre périphériques de stockage et périphériques d’accessibilités (Clavier/Souris). C’est pour ça que si vous branché un de ses deux équipements usbguard ne les vous bloquera pas !

Poursuivons, Pour obtenir un accès à cette clé USB qui le besoin s’en fait ressentir, bien sûr, nous le pouvons :

usbguard allow-device 13

Quelques secondes après, votre périphérique apparaît sur votre écran, ainsi que par l’intermédiaire de l’explorateur de fichier.

Pour rebloquer le périphérique

usbguard block-device 13

Automatiquement le périphérique se verra « démonté » de notre système d’exploitation.

Autoriser de manière permanente un périphérique externe

Si pour une raison qui vous appartient, vous souhaitez monter de manière permanente un périphérique de stockage externe, sans avoir à autoriser systématiquement celui-ci par l’intermédiaire de la commande : usbguard allow-device 13, usbguard à la solution à votre problème 🙂

Pour ce faire, nous devons copier la ligne correspondant au périphérique que nous souhaitons autoriser. Réexécutons la commande suivante, afin d’obtenir la ligne en question.

usbguard list-devices

La ligne qui nous intéresse est celle commençant par l’id 13. Copier son contenu à partir de du b de « block ».

nano /etc/usbguard/rules.conf

Collez cette ligne à la fin du fichier.

Voilà, il nous manque plus qu’une action, redémarrer notre service afin que les modifications soient prises en compte.

Automatiquement, lors du démarrage de l’OS, notre périphérique sera monté à partir de la séquence de démarrage « système d’initialisation ».

++

Brlndtech


Geoffrey Sauvageot-Berland

Ingénieur diplômé par l’état en Informatique et Cybersécurité. Généraliste, à l'origine administrateur systèmes et réseaux, j’occupe actuellement un poste d’auditeur en sécurité offensive. J’apprécie également la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"