1 votes

Voulez-vous empêcher les arrêts, redémarrages, etc. accidentels en créant des alias pour des commandes telles que shutdown ?

Je tente de créer des alias pour des commandes telles que shutdown, reboot, etc. Je suis conscient que ce n'est pas une méthode infaillible pour bloquer l'accès, mais c'est juste pour prévenir les exécutions accidentelles.

J'ai consulté superuser.com/questions/244342 et tous les liens donnés dedans.

Pour créer un alias pour quelque chose comme sudo /sbin/shutdown, je devrais d'abord créer un alias pour sudo individuellement, puis pour /sbin/shutdown comme echo 'Non autorisé'.

Cependant, cela ne semble pas fonctionner car sudo l'exécute évidemment en root. Ainsi, créer des alias dans le fichier .bashrc de l'utilisateur est inutile. Comment puis-je résoudre mon problème ? Je ne veux pas modifier les attributs système tels que le fichier .bashrc de l'utilisateur root, etc.

1voto

janos Points 3017

Comme vous l'avez correctement observé, les alias shell ne sont pas adaptés à votre objectif.

La bonne façon d'éviter l'exécution accidentelle de ces commandes avec sudo est de mettre à jour votre configuration de sudo (en utilisant visudo) et d'empêcher l'accès complètement. Vous pourriez désigner un groupe dont les membres sont autorisés à exécuter ces commandes avec sudo, et personne d'autre.

1voto

user38001 Points 59

*D'accord donc l'approche 'correcte' est de ne pas donner aux utilisateurs sudo, mais il semble que c'est l'une de ces situations où vous ne pouvez pas éviter de donner à ces utilisateurs cet accès (Disons que vous les avez empêchés d'exécuter shutdown, ils pourraient simplement `rm -rf /` à la place)**

Cependant, pour les empêcher d'exécuter des commandes spécifiques via sudo, vous pouvez le contrôler dans le fichier sudoers :

Tout d'abord, nous définissons un alias pour arrêter un système dans /etc/sudoers.conf

Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown

Et ensuite, nous supprimons la capacité pour quiconque dans le groupe wheel, d'exécuter cette commande :

%wheel ALL = ALL, !SHUTDOWN

Cela signifie que tous les utilisateurs peuvent exécuter toutes les commandes sur toutes les machines, sauf ceux du cmnd_Alias shutdown.

man sudoers expliquera cela de manière beaucoup plus détaillée et contient en fait presque cette même explication. Notez également que cela n'empêcherait pas quelqu'un essayant délibérément d'exécuter la commande shutdown, seulement ceux qui l'ont exécutée accidentellement sans s'en rendre compte (peut-être parce qu'ils sont connectés à la mauvaise machine).

0voto

Giuseppe R Points 1325

Même si vous réussissez à empêcher l'utilisateur d'exécuter toutes les commandes qui sont directement responsables d'un redémarrage, un utilisateur avec un accès sudo (où l'accès sudo n'est pas sur liste blanche pour un ensemble spécifique de binaires qu'ils n'ont pas la permission de modifier, et qui ne peuvent pas être manipulés pour exécuter du code de redémarrage) peut quand même redémarrer le système via :

  1. Téléchargez le code source d'un programme comme reboot ou halt (par exemple dans GNU binutils, si je me souviens bien), compilez-le avec gcc, puis exécutez sudo ./reboot sur votre copie locale.

  2. Écrivez un programme en Ruby, Python, C/C++, Java, etc. qui appelle les appels système appropriés pour initier un redémarrage ou un arrêt.

  3. Il y a probablement des choses compliquées qu'ils peuvent faire avec des liens symboliques ou physiques pour contourner une liste noire. Ces choses sont toujours difficiles à gérer d'un point de vue sécurité, mais je n'ai pas d'exemples concrets en tête pour le moment.

Si vous êtes certain à 100% que tous les binaires auxquels vous donnez la permission à l'utilisateur d'exécuter sous sudo ne peuvent pas être manipulés pour exécuter du code arbitraire (ce qui mène aux points 1 ou 2 ci-dessus), alors peut-être que ça irait. Mais un utilisateur astucieux (ou un programme s'exécutant en tant qu'utilisateur) peut toujours exploiter les vulnérabilités de sécurité de ces programmes pour s'élever et redémarrer/arrêter.

Si vous avez une confiance totale que tous les utilisateurs avec un accès sudo vont coopérer avec vous et ne pas tenter de faire des choses auxquelles ils n'ont pas le droit, alors la liste noire devrait suffire pour prévenir les "accidents". Mais alors vous devriez être prêts à accepter les conséquences si quelqu'un décide de s'écarter de la politique pour une raison quelconque.

Si vous avez le moindre doute concernant les utilisateurs, il vaut mieux donner à chaque utilisateur une machine virtuelle ou un conteneur sécurisé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X