Registrar una actividad de "personas" en Linux

11

Así que he leído muchas de las publicaciones relacionadas con esto y me he quedado más confundido que antes. Hay recomendaciones para varias herramientas, incluyendo ttyrec, snoopy, acct, rootsh, sudosh, ttyrpld, auditoría de Unix y más.

En mi caso, quiero poder registrar todos los comandos ejecutados en un sistema (como el historial con marcas de tiempo habilitadas), pero también quiero saber quién hizo qué. Sin embargo, todos iniciamos sesión a través de ssh en el mismo pequeño subconjunto de cuentas de usuario (dependiendo de lo que estemos haciendo). ¿Cómo puedo obtener un registro de comandos que incluya la información que me dará un "quién" (con respecto a la conexión) para que pueda rastrear la acción a una persona específica como presentada a un "usuario" genérico?

Ashimema
fuente
Snoopy debería poder hacer eso, y probablemente muchas otras alternativas.
3molo
2
¿Llamadas del sistema, sudo, historial de shell, cambios en el sistema de archivos? No todos los procesos de usuario se inician necesariamente desde shells de inicio de sesión.

Respuestas:

9

El auditdpaquete está diseñado para esto, puede usar PAM para asignar a cada inicio de sesión una ID de sesión para que pueda rastrear la actividad de una cuenta hasta el inicio de sesión original (y luego verificar el registro de inicio de sesión para determinar desde dónde inició sesión esa persona), y usar el ausearchcomando para localizar los eventos que le interesan. Puede leer una guía bastante completa aquí, aunque algunos de los detalles más finos deberán cambiarse para que coincidan con su distribución. Redhat tiene un sitio con preguntas frecuentes y algunos otros documentos aquí .

Dado que esto no depende de intentar registrar comandos escritos en shells o registrar el historial de comandos de los usuarios, debe registrar cosas como abrir vi (que tal vez se pueda hacer sobre X o adentro screen), escribir un script (tal vez un carácter a la vez tiempo con los comandos de cortar / pegar de vi y algunas ejecuciones :.!/usr/games/fortunepara obtener algunos datos de origen que quizás no pueda registrar) y luego ejecute el :%!/bin/bashcomando.

DerfK
fuente
Esta es la respuesta más prometedora ... Auditoría le permite realizar un seguimiento constante de las acciones de un usuario desde el inicio de sesión hasta el cierre de sesión, sin importar qué identidades pueda adoptar este usuario mediante el uso de ID de auditoría que se crean al iniciar sesión y se transmiten a cualquier proceso secundario del proceso de inicio de sesión original. Un poco más de lectura por mi parte ahora para descubrir cómo implementarlo realmente. ¡Gracias por reducir los lotes de elección!
Ashimema
Disculpas por haber tardado tanto en marcar esta respuesta como aceptada. ¡Lo estaba probando! Funciona un sueño .. ¡Salud chicos!
Ashimema
4

Ya hay una variedad de herramientas a su disposición, que su pregunta (y estas respuestas) sugieren como historial, snoopy, auditado, sudo logs, etc ... pero si tiene un "Subconjunto de cuentas" que la gente está usando, hay de ninguna manera en el servidor para saber quién hizo qué. La única forma en que puede saber específicamente quién lo hizo es si los usuarios tienen sus propias computadoras que usan específicamente y usan keyloggers para saber qué estaban escribiendo físicamente en ese teclado.

Cada vez que comparte cuentas, no puede saber qué estaba sucediendo realmente, ya que necesitaría más pruebas de quién estaba usando su cuenta raíz o cuenta bob o lo que sea que su gente estaba haciendo. Si está tratando de investigar qué sucedió en un incidente específico, es posible que deba revisar sus políticas y procedimientos de acceso, sus procedimientos de recuperación y evaluar a sus empleados y / o participar en una nueva capacitación si es necesario (o su confiabilidad con cuentas confidenciales) que enfocarse directamente en buscar quién hizo algo, ya que puede absorber más recursos de los que puede ganar para encontrar a la persona que lo hizo.

De lo contrario, es posible que desee buscar técnicas de investigación forense para rastrear lo que sucedió (imágenes de disco, rastreo de registros, etc.) Si no está investigando un incidente, revise sus políticas e instituya un mejor seguimiento y verificación de cuenta (solo usted tiene root, solo Bob usa su cuenta usando sudo para obtener acceso a privilegios más altos, instalar y monitorear auditados, etc.) y tenga cuidado de no hacer que su círculo de confianza se sienta como si estuviera bajo un microscopio o podría alienar a las personas que intentan para hacer su trabajo (o impedir que hagan su trabajo).

Bart Silverstrim
fuente
2

Linux auditado ( http://people.redhat.com/sgrubb/audit/ ) le dará más poder para ver quién hizo qué. Tienes más información al respecto en la respuesta de DerfK.

Sin embargo, nada le dirá, quien inició sesión como webadmin, si hay n personas que tienen acceso a la cuenta de webadmin. Sugeriría usar cuentas con nombre para cada usuario y luego usar su - o sudo para ejecutar comandos desde la cuenta de "función".

Paweł Brodacki
fuente