Gestion des sudoers

Sudo est probablement le binaire le plus connu sous Linux et pour une bonne raison : c’est lui qui va autoriser un utilisateur non privilégié à exécuter des commandes avec de hauts niveaux de droits.

Comme vous le savez, « un grand pouvoir implique de grandes responsabilités » et une mauvaise configuration de vos sudoers peut s’avérer fatal pour votre serveur. Il est donc nécessaire de bien comprendre le fonctionnement de ce binaire et surtout comment configurer les droits de vos utilisateurs de manières safe.

A l’origine les règles sudoers étaient configurables dans le fichier :

/etc/sudoers

Aujourd’hui il est possible d’éditer les règles sudoers dans le fichier /etc/sudoers.d/. Cela permet, entres autres, de gagner en lisibilité puisqu’on pourra créer un fichier de configuration pour chacun de nos utilisateurs et/ou services.

Avant d’aller plus loin il va falloir installer le binaire sudo qui n’est pas présent par défaut sous Debian :

apt install sudo

Une règle sudoers respecte toujours ce pattern :

identifant host = user commande(s)

L’identifiant c’est le nom de l’utilisateur à qui vous attribuez un droit. Host, c’est la machine sur laquelle l’utilisateur pourra exécuter la commande. User désigne l’utilisateur dont on prend les droits et commande(s) listent l’ensemble des commandes que l’on va pouvoir exécuter en tant que user.

Comme toujours des exemples valent mieux que des mots donc voici quelques règles sudoers et leurs descriptions.

– Je veux que l’utilisateur defte puisse utiliser le binaire fdisk en tant que root :

defte ALL=(root) /sbin/fdisk

– Je veux que l’utilisateur davy puisse exécuter n’importe quel binaire en tant que n’importe quel utilisateur :

davy ALL=(ALL) ALL

– Je veux que l’utilisateur devarel puisse exécuter le binaire mount en tant que root sans avoir à entrer de mot de passe :

devarel ALL=(root) NOPASSWD:/bin/mount

– Je veux que l’utilisateur defte puisse exécuter le binaire fdisk avec l’option -l (et seulement celle-ci) en tant que root sans avoir à entrer son mot de passe :

defte ALL=(root) NOPASSWD:/sbin/fdisk -l

NOTE : pour utiliser le ou les binaires en tant qu’un autre utilisateur il faudra utiliser cette commande :

sudo -u "utilisateur dont on prend les droits" commande(s)

Que faut il retenir de ces règles ? Eh bien la première chose c’est qu’il est possible d’indiquer à sudo que pour certains utilisateurs et commandes on peut ne peut pas avoir à entrer le mot de passe de l’utilisateur courant via la directive NOPASSWD:.

Ensuite il est important de noter qu’on peut restreindre l’utilisation d’une commande à certains arguments (comme je l’ai fait avec fdisk -l). C’est particulièrement utile quand vous avez la flemme, comme moi 😁, de taper :

sudo fdisk -l

Suivi de votre mot de passe à chaque fois que vous voulez lister les devices connectés à votre PC par exemple.

ATTENTION ! L’édition de règles sudoers se fait via l’utilitaire visudo. N’éditez JAMAIS vos règles sudoers via un autre binaire vous risqueriez de complètement casser le fonctionnement de sudo. Et comme seul un utilisateur privilégié peut éditer ces règles vous vous retrouverez dans un cercle vicieux ou vous ne pourrez plus utilisez sudo et donc plus modifier vos règles sudoers.

Votre seule solution pour réparer votre OS sera de booter en mode recovery ou d’utiliser un live CD pour réparer manuellement le ou les fichiers de configurations.

Faites vraiment très attention quand vous configurez vos sudoers. Soyez toujours le plus restrictif possible. La première commande lancée par un attaquant lorsqu’il compromet un serveur est toujours :

sudo -l

Cette commande lui donnera la liste des binaires qu’il peut utiliser en tant qu’un autre utilisateur :

Capture du 2019-10-06 13-05-38.png

Suivant les binaires utilisables l’attaquant sera potentiellement en mesure d’élever ses privilèges et donc de compromettre totalement votre serveur.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s