GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar tlog en hosts Linux para el registro de terminales

El registro de la terminal puede sonar como una invasión de la privacidad, pero hay muchas razones por las que puede querer saber qué comandos están ejecutando sus usuarios. Ya sea por razones de cumplimiento o simplemente por una buena administración del sistema, a veces solo desea saber qué están haciendo sus usuarios. Si está administrando una flota de sistemas Linux y necesita saber qué están haciendo las personas a las que le ha confiado un shell, es posible que desee considerar tlog . tlog es un registrador de E/S de terminal que se incluye con RHEL y varias otras distribuciones. Registra más que solo pulsaciones de teclas; también registra la salida recibida. Se puede usar para reproducir literalmente una sesión.

En este artículo, lo guío a través de un tlog básico configuración y demostrar parte del poder que ejerce. Linux es bastante bueno registrando acciones. Puede, por ejemplo, registrar comandos que se ejecutaron a través de sudo . El seguro log puede decirle quién inició sesión o quién no pudo iniciar sesión, pero nada listo para usar registra de forma centralizada cada acción tomada por un usuario sin privilegios. Sí, la mayoría de los shells mantienen un historial, pero los usuarios pueden modificarlo o incluso eliminarlo si saben lo que están haciendo. El tlog La utilidad en sí no es infalible, pero una capa adicional de registro no hace daño. Sin embargo, tiene sus limitaciones y preocupaciones, que se describen a continuación en la documentación vinculada de Red Hat. Además, tlog inicia sesión en JSON para que pueda analizarse o incluso reproducirse más tarde.

Mi objetivo es mostrarte el poder de tlog junto con la cabina. Cockpit, si no lo sabe, es una interfaz de administración web incluida con RHEL. Usar Cockpit es opcional, y si desea usar tlog sin eso, está bien. Simplemente omita los pasos de instrucciones que incluyen la configuración de la cabina.

[ También te puede interesar: Configurar logrotate en Linux]

Configurar tlog

Para este procedimiento, estoy usando un sistema RHEL 8.3 mínimo recién instalado. La documentación oficial de Red Hat Enterprise Linux 8 sobre el registro de terminales se puede encontrar aquí. Para comenzar, todo lo que necesita es un sistema RHEL 8 con una suscripción. Este proceso también debería ser casi idéntico en CentOS 8. Instale tlog y Cockpit y luego habilite la grabación de sesiones en sssd (el daemon de servicios de seguridad del sistema). Puedes usar tlog de algunas otras maneras, pero este enfoque le permite administrar tlog a través de sssd, en lugar de por usuario.

Primero, instala los paquetes necesarios:

[root@gangrif-tlogtest ~]# yum install -y tlog cockpit cockpit-session-recording

Una vez completada la instalación, habilite e inicie Cockpit:

[root@gangrif-tlogtest ~]# systemctl enable cockpit.socket --now
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.

Puede probar Cockpit dirigiendo su navegador web a https://your-server's-IP:9090 . Si eso no funciona, es posible que deba habilitar Cockpit en el firewall basado en el host o en la red. En mi caso, eso no fue necesario.

A continuación, agregue tlog a la configuración de sssd. El demonio sssd permite muchas personalizaciones en su pila de autenticación, incluidas cosas como directorios de usuarios remotos. En este caso, lo estás usando para tlog local integración. Hay algunas maneras de configurar esto. Voy a agregar tlog grabación de sesión a un grupo específico llamado usuarios sospechosos , por lo que cualquier usuario agregado a ese grupo se registra. Puede registrar usuarios individuales o todos los usuarios si lo desea. Agregue la siguiente configuración a /etc/sssd/conf.d/sssd-session-recording.conf . Asegúrese de que este archivo sea propiedad de root:root , y los usuarios/otros no pueden leer ni escribir el archivo. Sssd es exigente con esto por una buena razón.

[root@gangrif-tlogtest ~]# cat /etc/sssd/conf.d/sssd-session-recording.conf
[session_recording]
scope = some
groups = suspicious-users

Si no usa o no puede usar sssd, hay una opción que configura manualmente tlog para los usuarios La opción se describe en la documentación mencionada anteriormente.

Después de colocar ese archivo, reinicie sssd. Ahora, prueba la configuración.

Registrar sesiones de usuario

Ese gangrifo usuario, parece sospechoso. Póngalo en la lista de usuarios-sospechosos grupo que tlog está configurado para grabar.

[root@gangrif-tlogtest tlog]# groupmems -g suspicious-users -a gangrif
[root@gangrif-tlogtest ~]# id gangrif
uid=1000(gangrif) gid=1000(gangrif) groups=1000(gangrif),10(wheel),1001(suspicious-users)

Cuando inicias sesión como gangrif , se muestra un bonito cartel de advertencia que indica que está siendo observado. Este banner se puede modificar o eliminar utilizando el aviso directiva en /etc/tlog/tlog-rec-session.conf . Es posible que deba informar a los usuarios que están siendo monitoreados. Para mí, tlog es más poderoso si no notifica a un atacante potencial que está siendo monitoreado. Decirles lo que tienes en su lugar solo les permite saber qué intentar deshabilitar.

[nlager@batou-lan ~]$ ssh [email protected]
[email protected]'s password:
Web console: https://gangrif-tlogtest.tamlab.rdu2.redhat.com:9090/ or https://10.8.109.214:9090/

Last login: Tue Dec 22 15:29:44 2020 from 10.10.116.62

ATTENTION! Your session is being recorded!

[gangrif@gangrif-tlogtest ~]$

Ver la sesión en Cockpit

Por defecto, tlog registra en el diario del sistema. La forma más fácil de recuperar los datos registrados es utilizar el registro de sesión de Cockpit. panel. En realidad, es bastante elegante y está bien organizado. Puede reproducir una sesión y ver qué comandos se ingresaron, incluidos errores tipográficos, comandos que se escribieron pero fallaron o comandos que se cerraron usando Ctrl+C . Si presiona la vista de registro , este visor incluso le mostrará los registros del sistema relacionados que se actualizaron durante la sesión. Realmente es una buena herramienta.

Cambiar del diario del sistema al registro de archivos

Si no está usando Cockpit, ver los registros se vuelve un poco más complicado, ya que los datos que está buscando están en el diario del sistema. En este caso, me resultó más fácil simplemente cambiar tlog a grabar en un archivo. También podría iniciar sesión en syslog, lo que tendría un efecto similar y tal vez sería más fácil de mantener. En aras de la simplicidad, solo voy a escribir directamente en un archivo. Debo advertirte que mover tlog cierra sesión en el diario del sistema y en un archivo interrumpe la integración de Cockpit.

Primero, cree un lugar para almacenar los archivos y asegúrese de que el tlog pueda escribir en él. usuario. Agregué un directorio en /var/log llamado tlog y establezca la propiedad en tlog:tlog .

A continuación, en /etc/tlog/tlog-rec-session.conf , dile a tlog dónde almacenar sus registros. Encontrará estrofas en el archivo para diferentes configuraciones. Uno está etiquetado como Parámetros del escritor de archivos . Este parámetro le permite definir la ruta para el archivo de salida. La configuración de mi ruta se veía así:

    // File writer parameters
    "file": {
            // The "file" writer log file path.
            "path" : "/var/log/tlog/tlog.log"
    },

Ahora dile a tlog para utilizar el editor de archivos en lugar del predeterminado, que es el diario. En la parte inferior del archivo de configuración, encontrará una línea justo antes del cierre } que contiene un //"escritor":"diario" entorno. Cambie esa configuración a archivo, así:

        // The type of "log writer" to use for logging. The writer needs
        // to be configured using its dedicated parameters.
        "writer" : "file"
}

La próxima vez que su usuario objetivo inicie sesión, el archivo /var/log/tlog/tlog.log debe crearse y las sesiones deben registrarse allí. Querrá configurar la rotación de registros en esto, y si tiene un registrador externo, debe enviar este archivo allí. Estos datos solo son útiles si están disponibles cuando los necesita. Si un atacante lo encuentra y lo elimina, no te servirá de nada.

Ver la sesión con tlog-play

Una vez que tenga estos registros en un archivo, puede echarles un vistazo. Podrías usar journalctl , pero como los registros tienen formato JSON, no son fáciles de leer para los humanos. Como ejemplo, mi rm -rf El ejemplo de comando de arriba se parece a esto:

{"ver":"2.2","host":"gangrif-tlogtest.tamlab.rdu2.redhat.com","rec":"2a5a7ca40dd6424e91f587c0e012e623-3cf2-1f1e2d","user":"gangrif","term":"xterm-256color","session":31,"id":1,"pos":0,"timing":"=185x50+31>61+136>1+105>1+135>1+193>1+218>1+202>4+161>4+111>1+167>1+181>1+93>1+196>1+1412>2+2>166+1897>1+251>1+208>1+159>1+73>1+110>1+90>1+73>1+119>1+285>1+504>1+143>1+136>1+961>1+175>1+144>1+865>4","in_txt":"","in_bin":[],"out_txt":"\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ rm rf\b\u001b[K\b\u001b[K-rf /\r\nrm: it is dangerous to operate recursively on '/'\r\nrm: use --no-preserve-root to override this failsafe\r\n\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ mwahahaha!!!!   \b\u001b[K","out_bin":[]}

La información no es fácil de leer, pero afortunadamente hay una herramienta que lo hace simple. Puedes usar tlog-play con las sesiones registradas en el diario, y le permite especificar la ID de grabación para generar esa grabación específica. Al analizar un archivo en su lugar, la ID de grabación no funciona. Todas las grabaciones terminan en el mismo archivo y no puede simplemente reproducirlas todas porque las ID de sesión no son las mismas. Tienes que dividirlos. Puede identificar el ID de sesión que le gustaría ver y luego grep ese ID de sesión en un nuevo archivo antes de tlog-play estará feliz con eso. Tal vez syslog se pueda configurar para dividir automáticamente estos archivos a medida que se escriben.

[root@gangrif-tlogtest tlog]# grep 2a5a7ca40dd6424e91f587c0e012e623-3da9-1fdf38 tlog.log >> session.log
[root@gangrif-tlogtest tlog]# tlog-play -i session.log
[gangrif@gangrif-tlogtest ~]$ rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
[gangrif@gangrif-tlogtest ~]$ logout

[root@gangrif-tlogtest tlog]#

La sesión se reproduce en la pantalla utilizando los datos de tiempo del registro JSON. Es bastante resbaladizo. Puede imaginar cómo esto podría ser útil al realizar análisis forenses después de que se haya detectado una interrupción o un compromiso. Incluso podrías usar tlog para cosas como grabar una demostración de algo en la línea de comando.

[ Obtenga este libro gratuito de Red Hat y O'Reilly - Operadores de Kubernetes:Automatización de la plataforma de orquestación de contenedores. ] 

Resumir

Toda esta charla sobre monitorear la entrada de su usuario puede generar algunas preguntas. Como, ¿se registran las entradas de contraseña? ¿Qué pasa con las sesiones SSH que saltan a otro host? ¿Qué pasa con las sesiones X? La documentación enumera X sesiones como advertencia, pero tlog no los captura. El registro de contraseñas está desactivado de forma predeterminada, pero se puede habilitar si es necesario.

Entonces, ya sea para cumplir con las normas o simplemente para grabar una demostración ingeniosa de alguna tecnología nueva, espero que este artículo lo ayude a hacer el trabajo usando tlog.


Linux
  1. Cómo configurar o cambiar el nombre de host del sistema en Linux

  2. Cómo establecer la variable $Path en Linux

  3. Cómo establecer la configuración de proxy en la línea de comandos o terminal de Linux

  4. Cómo configurar la ID del proceso en Linux para un programa específico

  5. ¿Cómo configuro un nick predeterminado para nuevas conexiones irssi?

Cómo abrir una ventana de terminal de Linux

Cómo configurar un clúster de Pacemaker para Linux de alta disponibilidad

Cómo establecer un fondo de pantalla diferente para cada monitor en Linux

Cómo abrir un PDF en la terminal de Linux

Cómo configurar un Killswitch de Linux para VPN

Cómo configurar una red externa para contenedores en contenedores de Linux (LXC)