1 votes

Configurer auditd pour surveiller l'exécution d'une seule commande

Nous avons Ansible en place

Je veux mettre en place une vérification qui enregistre qui exécute une tâche.. Je veux donc seulement surveiller l'exécution de la commande ansible ou ansible-playbook.

Je peux configurer Ansible pour enregistrer toutes les commandes en utilisant ceci:

-a exit,toujours -F arch=b32 -S execve -k ansible
-a exit,toujours -F arch=b64 -S execve -k ansible

mais cela génère trop de bruit.

Comment peut-on contrôler l'utilisation de ansible et ansible-playbook...

Remarque : Je sais que ansible-playbook est un script Python donc la commande à surveiller est peut-être la commande python?

1voto

John Mahowald Points 28597

Originaire d'Ansible, vous pouvez utiliser son journalisation intégrée des tâches vers syslog, et des plugins de rappel qui peuvent envoyer vers divers destinations. Y compris des plugins personnalisés, c'est ainsi que l'addon ARA enregistre l'historique d'Ansible.

Les systèmes distants n'exécutent pas toujours ansible-playbook. Le code du module est copié, pour les modules Python avec Ansiballz. Seuls des fichiers temporaires ou des tuyaux stdin sont exécutés.

Remarque : notez que les modules Ansible non-Python sont techniquement possibles mais rares. Surveiller les execs Python ne permettra pas de attraper l'utilisateur dédié à Ansible qui a créé des modules Perl ou Go.


Linux auditd est limité en ce sens que l'exe sur lequel vous pouvez filtrer est le binaire de l'interpréteur (python) et pas le script (ansible-playbook). Filtrer sur le python système et vous verrez tous les scripts python s'exécuter sur le système. Avoir un python spécifique à Ansible (virtualenv) et toujours rien n'empêche d'autres choses (ansible-inventory) d'utiliser ce python.

Vous pouvez filtrer les événements d'audit pour un utilisateur spécifique, utile si vous exécutez toujours les plays en tant qu'utilisateur.


Remarque : auditd est efficace pour suivre l'escalade de privilèges en général. Si c'est quelque chose que vous voulez suivre de près, regardez les règles d'exemple dans le code source de l'espace utilisateur d'audit. Par exemple, la règle "Toute élévation des privilèges est enregistrée" pci-dss.

0 votes

Voici l'accord. Nous sommes dans un environnement sécurisé. Nous devons garder une trace de qui exécute quoi. Par exemple, nous avons un playbook ansible qui pousse un fichier sudoers. Nous devons suivre l'utilisateur qui lance le playbook pour repérer une utilisation non autorisée. Quel serait le meilleur moyen de surveiller cela.

0 votes

Ansible peut exécuter n'importe quel binaire à distance, et vous dites que vous ne voulez pas enregistrer tout. Utilisez le journal syslog d'Ansible ou le journal d'appel pour suivre les tâches exécutées, et auditd pour suivre l'élévation des privilèges. Voir mon édition.

0 votes

Je pense que votre audit sur l'élévation pourrait faire l'affaire.. Peu m'importe ce qui est exécuté sur les hôtes distants mais qui a exécuté un playbook sur le noeud ansible et, pour chaque instance, pousse un fichier sudoers qui casse les privilèges.. Je cherchais simplement un moyen de limiter la portée des règles de l'audit pour ne tracer que les processus ou les playbooks ansible.

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