Los métodos más robustos parecen ser auditados:
http://blog.ptsecurity.com/2010/11/requirement-10-track-and-monitor-all.html
Auditd básicamente intercepta todas las llamadas al sistema y las compara con su conjunto de reglas. Entonces en su /etc/audit/audit.rules
archivo tendría algo como lo siguiente:
# 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 última regla es la única regla no predeterminada.
El principal inconveniente de este enfoque (y la razón por la que encontré esta pregunta mientras buscaba alternativas) es que los archivos de registro sin procesar son bastante crípticos y solo son útiles después de ejecutar el programa de consulta en el archivo de registro sin procesar: ausearch
Una consulta de ejemplo para esa regla sería:
ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f
Una solución de sentido común probablemente sería crear un cron que consultará sus registros auditados sin procesar y luego los enviará a su solución de registro.
En las distribuciones de Red Hat, generalmente usa el
/var/log/secure
registro para identificar quién ha estado iniciando sesión o haciendo uso de élsudo
en un sistema Fedora / CentOS / RHEL.Ejemplos
ejemplo de sudoresultado del registro:
su ejemploresultado del registro:
fuente
Si tiene usuarios cooperantes, puede configurar rooth para registrar todo lo que el usuario root escribe en syslog.
http://linux.die.net/man/1/rootsh
Los rpms de rooth están disponibles en EPEL.
La versión de sudo en RHEL6 también es capaz de registrar stdout en un archivo para cada sesión de sudo. Mire la página de manual de sudo_plugins.
Ninguno de estos enfoques es completamente a prueba de balas.
fuente