sudoers
Linux

Empêcher les utilisateurs sudoers d’exécuter des cmds sudo

Sudoers ou super-utilisateurs sont des utilisateurs avec des privilège root. Un utilisateur sudoers a la possibilité d’exécuter une ou plusieurs commandes en tant que root. Il suffit de précéder la commande avec la commande sudo ( abréviation de substitute user do ).

sudo "commande"

En tant qu’administrateur, dans quelques cas je ne souhaite pas que le super utilisateur ait tout le pouvoir du compte root. Par exemple je ne veux pas qu’il touche aux firewalld local ( firewalld ),de créer des nouveaux comptes utilisateurs ou bien la plus important de switcher au compte root avec la commande sudo -su .

[superuser@Linux ~]$ sudo su
[root@Linux superuser]#

Heureusement, il y a un moyen pour contrôler ce que les sudoers peuvent faire, c’est par le fichier /etc/sudoers.

Dans cette article, nous allons voir comment interdire l’exécution de certain commande root par les utilisateurs sudoers.

Le fichier sudoers

Comme on a vu précédemment, les autorisations pour utiliser sudo sont définies dans le fichier /etc/sudoers.

Le fichier sudoers est un fichier que les administrateurs Linux utilisent pour attribuer des droits système aux utilisateurs du système. Cela permet à l’administrateur de contrôler qui fait quoi.

Empêcher les utilisateurs sudo d’exécuter des commandes

En tant que root, éditer le fichier /etc/sudoers ou bien tous simplement taper la commande visudo :

# vi /etc/sudoers

Disant que je ne veux pas qu’un utilisateur sudo soit capable d’éditer le fichier /etc/sudoers :

user1        ALL=(ALL)       ALL, !/usr/sbin/visudo, !/etc/sudoers

Essayons d’éditer le fichier sudoers avec l’utilisateur user1 :

[user1@Linux ~]$ sudo visudo
[sudo] password for test:
Sorry, user user1 is not allowed to execute '/sbin/visudo' as root on Linux.
[user1@Linux ~]$ sudo vi /etc/sudoers
/bin/vi: line 23: /usr/libexec/vi: Permission denied

Comme vous pouvez le constater, notre utilisateur n’arrive pas à éditer le fichier /etc/sudoers alors qu’il a le droits sudo.

Vous pouvez bloquer ce que vous voulez. Prenons un autre exemple, je souhaite que l’utilisateur ayant les droits sudo soit incapable de toucher le pare-feu local firewalld.

user1         ALL=(ALL)       ALL, !/bin/systemctl stop firewalld, !/bin/systemctl disable firewalld, !/usr/bin/firewall-cmd
[user1@Linux ~]$ sudo firewall-cmd --zone=public --add-port=53/tcp --permanent
Sorry, user user1 is not allowed to execute '/bin/firewall-cmd --zone=public --add-port=53/tcp --permanent' as root on Linux.

Comme vous avez pu le constater, l’utilisateur n’a pas pu autoriser le port 53 ( DNS) avec la commande firewalld-cmd.

Interdire de switcher au compte root

Bien sur tous ce qu’on a vu précédemment ne valent rien si l’utilisateur sudoers passe au root via la commande sudo -su :

[superuser@Linux ~]$ sudo su
[root@Linux superuser]#

Voici donc comment interdire de switcher au compte root :

user1         ALL=(ALL)       ALL, !/bin/su

Maintenant essayons de switcher au compte root :

[user1@Linux ~]$ sudo su
[sudo] password for user1:
Sorry, user user1 is not allowed to execute '/bin/su' as root on Linux.

Comme vous pouvez le constater notre user1 n’arrive pas à switcher vers root.

Par contre ce n’est pas suffisant, l’utilisateur peut toujours switcher vers root en tapant la commande : sudo -s

[user1@Linux ~]$ sudo su
[root@Linux user1]#

Par contre, j’ai trouvé un solution, il suffit de d’ajouter NOEXEC comme montré ci-dessous :

test            ALL=(ALL)       NOEXEC: ALL, !/usr/bin/firewall-cmd, !/bin/systemctl stop firewalld, !/bin/systemctl disable firewalld, !/usr/sbin/visudo, !/etc/sudoers, !/etc/sudoers.d/*, !/bin/su, !/usr/bin/dnf update, !/usr/bin/yum update

Maintenant vous pouvez être rassuré que l’utilisateur ne peux ni exécuter les commandes que vous spécifier ni de switcher au compte root.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *