J'ai été proposé par mon patron pour être l'administrateur système de notre serveur de production redhat. Il m'a demandé de renforcer la sécurité pour éviter rm -f *
que de tels incidents ne se produisent il n'y a pas longtemps.
À l'heure actuelle, nous avons 53 utilisateurs qui entrent dans la machine et c'est un cauchemar d'audit. Je me demande s'il est possible d'autoriser l'accès des utilisateurs uniquement certains jours de la semaine.
Par exemple, puis-je autoriser l'utilisateur «Joe» à se connecter les mardis et jeudis UNIQUEMENT et «Jane» uniquement le dimanche? Peut etc/sudoers
être personnalisé pour permettre cela?
Existe-t-il un meilleur moyen au lieu d'utiliser des sudoers?
permissions
security
sudo
Chris
la source
la source
rm -rf /
.Réponses:
sudo
fait son authentification via PAM, comme à peu près tout le reste sur une boîte Linux.Vous devriez donc pouvoir l'utiliser
pam_time.so
pour cela.Par défaut sur Debian au moins, ce module n'est pas activé. Vous devez ajouter une ligne qui ressemble à ceci:
soit
/etc/pam.d/sudo
pour activer uniquement sudo, soit pour/etc/pam.d/common-account
(après le bloc pam-auth-update) activer pour tous les programmes du système.Modifiez ensuite
/etc/security/time.conf
pour définir vos restrictions. Le nom du service doit êtresudo
. Par exemple, pour autoriser Fred à n'utilisersudo
qu'entre 15 h et 17 h le vendredi:(REMARQUE: je n'ai pas testé cela.)
edit: Pour être clair, je suis d'accord avec l'autre réponse et les différents commentateurs, vous semblez avoir trop de personnes exécutant trop de commandes en tant que root, et vous avez vraiment besoin de corriger cela. Et bien sûr, s'ils peuvent devenir root, ils peuvent éditer la configuration pam ...
la source
Je me demande pourquoi 53 utilisateurs ont besoin de sudo pour faire leur travail quotidien - pour la plupart des utilisateurs (même les développeurs), sudo devrait être une exception rare, pas une chose si routinière que quelqu'un exécuterait une
sudo rm -rf *
commande avec désinvolture .Pouvez-vous utiliser des autorisations de groupe (ou même des listes de contrôle d'accès plus avancées) pour donner aux gens l'accès aux fichiers dont ils ont besoin pour faire leur travail, peut-être avec des scripts ou des binaires setuid ou sudo'ed pour leur permettre de faire des choses comme redémarrer les services? (notez qu'il est difficile d'écrire un script setuid / sudo sécurisé, donc c'est plus pour garder les gens honnêtes honnêtes).
Même si vous pouvez restreindre les utilisateurs à un jour par semaine d'accès sudo, cela fait toujours 53 personnes avec accès sudo dans une semaine, donc cela n'aide pas vraiment avec votre problème principal.
D'ailleurs, je me demande si de nombreux utilisateurs ont besoin d'accéder à un serveur de production - pouvez-vous envoyer des journaux ou les données / fichiers dont ils ont besoin à une machine hors production?
la source
vi/cp/mv/rm
. Seulementcd
etmore
. Rien d'autre.La manière la plus simple serait d'utiliser suders.d (via inludedir) pour votre configuration. Vous pourriez alors avoir des tâches cron qui pourraient placer les règles de chaque utilisateur dans ce répertoire pour les moments que vous désirez.
La directive #includedir peut être utilisée dans / etc / sudoers pour créer un répertoire sudo.d dans lequel vous pouvez déposer des règles sudoers dans le cadre de vos règles. Par exemple, étant donné:
#includedir /etc/sudoers.d
sudo lira chaque fichier dans /etc/sudoers.d, en ignorant les noms de fichiers se terminant par '~' ou contenant un '.' pour éviter de causer des problèmes avec le gestionnaire de packages ou l'éditeur de fichiers temporaires / de sauvegarde. Les fichiers sont analysés dans un ordre lexical trié. Autrement dit, /etc/sudoers.d/01_first sera analysé avant /etc/sudoers.d/10_second. N'oubliez pas que le tri étant lexical et non numérique, /etc/sudoers.d/1_whoops serait chargé après /etc/sudoers.d/10_second. L'utilisation d'un nombre cohérent de zéros non significatifs dans les noms de fichiers peut être utilisée pour éviter de tels problèmes.
Notez que contrairement aux fichiers inclus via #include, visudo ne modifiera pas les fichiers dans un répertoire #includedir sauf si l'un d'eux contient une erreur de syntaxe. Il est toujours possible d'exécuter visudo avec l'indicateur ‑f pour modifier directement les fichiers.
/etc/sudoers.d/joe serait présent lorsque vous souhaitez que joe ait accès et que vous puissiez simplement supprimer le fichier pour lui retirer l'accès.
la source
Vous pouvez ajouter une crontab pour placer un utilisateur dans un groupe sudo, puis une deuxième crontab pour retirer cet utilisateur.
la source