Mon entreprise exige que chaque fois qu'un utilisateur se connecte à un serveur de production, la raison pour laquelle la personne s'est connectée et les modifications que l'utilisateur a l'intention d'apporter doivent être enregistrées. Mon équipe veut le faire, mais c'est facile à oublier. Je voudrais les aider à se souvenir. J'ai considéré un motd, mais je veux quelque chose d'un peu plus fort.
Ma première pensée a été de changer le shell de l'utilisateur en un script qui fait quelque chose comme
vim /logs/logindate.txt
bash -l
Existe-t-il une technique meilleure ou plus standard?
Remarque: L'idée est que ces utilisateurs sont des administrateurs système et souhaitent effectuer l'entrée de journal sans renverser le système - ils oublient souvent de le faire. Donc, s'ils peuvent le ctrl-c, eh bien ... nous supposons qu'ils ne le feront pas.
Réponses:
Regardez pam_exec.so . Vous pouvez exécuter un script lors de la connexion dans l'interface de session de l'authentification système de PAM. Le script s'exécute en tant que root avant que l'utilisateur n'obtienne un shell, il ne peut donc pas capturer d'entrée avec
read
? Vous pouvez cependant essayer et utiliserread
pour obtenir une raison de l'utilisateur et l'enregistrer dans syslog avec unelogger
instruction. (J'ai omis ci-dessous, mais vous pouvez intercepter CTRL + C pour empêcher quiconque de quitter sans raison.) $ PAM_USER sera défini sur la personne qui se connecte, vous pouvez donc l'inclure dans l'instruction logger.Exemple:
En haut de la session dans /etc/pam.d/system-auth:
Et / usr / local / sbin / getreason:
Toutes mes excuses si cela ne fonctionne pas parfaitement. Je ne l'ai pas testé, mais j'ai récemment fait quelque chose de similaire. (Il n'a pas capturé d'entrée.)
Edit: Plus j'y pense, plus je ne pense pas que cela fonctionnera en raison de l'étape dans laquelle il s'exécute. Le même
getreason
script devrait fonctionner après le remplacement$PAM_USER
par$(logname)
, mais il peut être nécessaire de l'exécuter dans/etc/profile
. (Testez d'abord le shell interactif.)Je vais laisser les deux options en place, car cela devrait au moins vous faire penser dans la bonne direction, si rien d'autre.
la source
L'alternative est une solution de gestion de compte privilégiée, où plutôt que de donner aux administrateurs un accès avec leur propre compte, les comptes d'administrateur sont détenus par un tiers et les procédures obligatoires doivent être suivies avant que les administrateurs puissent accéder aux systèmes de production http: // fr. m.wikipedia.org/wiki/Privileged_Identity_Management
la source
Une autre façon d'y parvenir serait d'avoir votre installation de journalisation centralisée (je pense à Logstash, mais vous pouvez le faire d'autres façons) de prendre votre auth.log sur les systèmes de production, de l'intégrer dans une application où les gens peuvent enregistrer leurs justifications .
la source
La façon dont j'ai vu cela implémenté chez les clients qui exécutent HP Server Automation *, c'est qu'ils s'appuient sur la journalisation innée de l'outil avec une combinaison d'étapes d'approbation (je suis allé chez plusieurs clients où il n'y a pas de sudo ou de privilèges root, sauf dans Dev ).
Les approbations peuvent être effectuées via quelque chose comme Remedy and Operations Orchestration, ou une connexion administrative dans SA, etc.
Cela étant dit, en dehors des outils d'automatisation et de gestion d'entreprise, la réponse de @ Aaron Copley est un excellent choix.
* Je suis un HPSA senior, HPOO, et d'autres aspects du consultant HP Automation Suite
la source
En cherchant une solution, j'ai lu la réponse d'Aaron Copley et j'ai pensé: "Et si je change le shell de mon utilisateur?"
Je l'ai fait avec succès sur ma machine Ubuntu 14.04:
Sur votre script, vous pouvez simplement saisir la raison de la connexion. Le mien est comme ça:
Une chose que vous devez noter: le script n'est pas exécuté en tant que root, vous devrez donc peut-être donner à l'utilisateur certaines autorisations pour que cela fonctionne.
la source