Consigner toutes les activités root avec le nom d'utilisateur d'origine qui a su / sudoed à root

11

Quelle est la méthode préférée pour garder une trace de qui agit en tant que root dans les journaux lorsque la connexion root est désactivée (SSH) mais que les utilisateurs peuvent exécuter sudo -iou su -devenir root? Je voudrais également suivre chaque commande avec le nom d'utilisateur d'origine. RHEL 6 ou tout rsyslog Linux, etc.

Gregg Leventhal
la source

Réponses:

7

Les méthodes les plus robustes semblent être auditées:

http://blog.ptsecurity.com/2010/11/requirement-10-track-and-monitor-all.html

Auditd intercepte essentiellement tous les appels système et les compare à votre ensemble de règles. Donc, dans votre /etc/audit/audit.rulesfichier, vous auriez quelque chose comme ceci:

# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.

# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Feel free to add below this line. See auditctl man page
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION

La dernière règle étant la seule règle non par défaut.

Le principal inconvénient de cette approche (et la raison pour laquelle j'ai trouvé cette question lors de la recherche d'alternatives) est que les fichiers journaux bruts sont assez cryptiques et ne sont utiles qu'après l'exécution du programme de requête sur le fichier journal brut: ausearch

Un exemple de requête pour cette règle serait:

ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f

Une solution de bon sens serait probablement de créer un cron qui interrogera vos journaux d'audit bruts et les enverra ensuite à votre solution de journalisation.

freb
la source
Si vous cherchez quelque chose qui remplace auditd et fait la corrélation des événements bruts pour vous, consultez: github.com/slackhq/go-audit
freb
3

Sur les distributions Red Hat, vous utilisez généralement le /var/log/securejournal pour identifier qui s'est connecté ou utilise sudoun système Fedora / CentOS / RHEL.

Exemples

exemple sudo
$ sudo -Es

résultat du journal:

1 sept. 19:32:51 greeneggs sudo: saml: TTY = pts / 2; PWD = / home / saml; USER = root; COMMANDE = / bin / bash

par exemple
$ su -

résultat du journal:

1 septembre 19:34:49 greeneggs su: pam_unix (su-l: session): session ouverte pour l'utilisateur root par saml (uid = 1000)

slm
la source
3

Si vous avez des utilisateurs coopérants, vous pouvez configurer rootsh pour enregistrer tout ce que l'utilisateur root tape dans syslog.

http://linux.die.net/man/1/rootsh

les rpms rootsh sont disponibles dans EPEL.

La version de sudo sur RHEL6 est également capable d'enregistrer stdout dans un fichier pour chaque session sudo. Consultez la page de manuel sudo_plugins.

Aucune de ces approches n'est complètement à l'épreuve des balles.

Fred le chien magique
la source