¿Cómo registro cada comando ejecutado por un usuario?

32

Quiero monitorear la actividad de todos los usuarios en mi servidor.

Incluso cuando el usuario ejecuta un comando de shell desde algún editor como vim, quiero verlos en el archivo de registro.

He comprobado la herramienta acct pero no enumera los comandos completos. (Corríjame si me he perdido algunas opciones que ya lo hace).

¿Qué herramienta de Linux debería mirar para resolver este problema?

Supratik
fuente
1
. guión man (1)
adaptr
Una buena referencia 8gwifi.org/docs/linux-monitor-commands.jsp
anish

Respuestas:

32

Agregue esta línea a su configuración de pam responsable de los inicios de sesión (su autenticación del sistema en distribuciones basadas en redhat)

session    required     pam_tty_audit.so enable=*

Para saber qué se hizo, puede usar.

ausearch -ts <some_timestamp> -m tty -i

Esto produce una salida como esta:

 type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
 auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>

El único inconveniente de esto es que puede ser un poco difícil de leer, pero es mucho mejor que la mayoría de las soluciones propuestas, ya que en teoría podría usarse para grabar una sesión completa, verrugas y todas.

Editar: Ah, y puede usar un puerto para generar una lista que puede ser más útil.

# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>
Matthew Ife
fuente
Gracias por los detalles Estoy usando Ubuntu 10.04 LTS Cuando verifico la carpeta / lib / security / el módulo no está presente pero hay una página de manual presente para ese módulo. Creo que he encontrado este error bugs.launchpad.net/ubuntu/+source/pam/+bug/588547 ¿Hay alguna otra forma de instalar ese módulo?
Supratik
El informe de error sugiere una distribución y actualización distribuida.
Matthew Ife
@Mlfe Compilé el código fuente de PAM y copié el archivo .so en / lib / security / y funcionó. Gracias de nuevo.
Supratik
1
@CameronKerr: el problema de contraseña está solucionado: redhat.com/archives/linux-audit/2013-May/msg00007.html
Yohann
3
Tenga en cuenta que vale la pena mencionar que para que lo anterior funcione, el auditddaemon debe habilitarse primero (no estaba por defecto en mi instalación de CentOS 6.7). Para iniciar el demonio, use: service auditd starty para que este cambio sea persistente (después de reiniciar), use chkconfig auditd on Source: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/… y access.redhat.com/documentation/en-US/ Red_Hat_Enterprise_Linux /…
jonny
8

La mejor solución a su problema sería el sistema de auditoría incorporado de Linux . Utilice man 8 auditdo consulte esta página para obtener más información: http://linux.die.net/man/8/auditd .

Además, puede consultar este tutorial : aunque está un poco fuera del alcance de su pregunta, muestra cómo funciona el sistema de auditoría.

Vladimir Blaskov
fuente
2

Podrías usar snoopy .

Es una biblioteca de registro de comandos simple, y no una solución de auditoría adecuada (fácil de eludir). Divulgación: Soy actual mantenedor de snoopy.

Bostjan Skufca
fuente
2

Un truco menos conocido, pero fácilmente el más asombroso es usar las capacidades de auditoría incorporadas sudo. Sudo se envía con un sudoreplaycomando que facilita la reproducción de sesiones. Incluso retransmitirá vimsesiones (como sugiere).

Aquí se explica cómo usarlo en unos pocos pasos:

  1. Instalar sudoshen su sistema; Este es un contenedor de shell alrededor del sudocomando que hace que un usuario sudomismo (no root) y se pueda usar como un shell de inicio de sesión del sistema
  2. Habilitar sudoregistro. Editar /etc/sudoers.d/sudosh: Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. Agregue este comando a /etc/shellspara permitir inicios de sesión usándolo: /usr/bin/sudosh

    Consejo : para evitar que los usuarios utilicen otros shells para iniciar sesión, elimine esos otros shells /etc/shells.

  4. Actualice al usuario foobarpara usar el sudoshshell. chsh -s /usr/bin/sudosh foobar

Para obtener información más detallada, consulte: https://github.com/cloudposse/sudosh/

Erik Osterman
fuente
1

Aquí hay una solución mágica: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html

  • yum install psacct (redhat)
  • sudo apt-get install acct

puede mostrar estadísticas sobre comandos de usuario / conexión, etc.

Listar todos los comandos invocados por un usuario determinado ...

Busque en los registros de contabilidad por nombre de comando: $ lastcomm rm $ lastcomm passwd

y así sucesivamente, para obtener más información, visite el enlace anterior.

Med Ali Difallah
fuente
3
En la pregunta se dijo: 'acct no está enumerando los comandos completos'.
Putnik