¿Cómo registrar todos los comandos de Bash por todos los usuarios en un servidor? -- bash campo con logging camp askubuntu Relacionados El problema

How to log all Bash commands by all users on a server?


24
vote

problema

Español

Nuestra pequeña empresa ejecuta un servidor Ubuntu 11.10, a la que un par de personas tiene acceso SSH. Los terminales reales se utilizan a veces también. ¿Cómo podemos registrar localmente todos los comandos de Bash, junto con el usuario y la sello de tiempo?

Podemos asumir que nadie es nefaria y está intentando activamente para evitar el registro, pero aún así preferiríamos que los usuarios no tengan acceso de escritura directa a sus archivos de registro. Las sesiones simultáneas deben ser manejadas correctamente.

Original en ingles

Our small company runs an Ubuntu Server 11.10, to which a couple of people have SSH access. The actual terminals are sometimes used, too. How can we locally log all Bash commands run, along with user and time stamp?

We can assume that no-one is nefarious and actively trying to avoid the logging, but we'd still prefer the users not to have direct write-access to their log files. Simultaneous sessions must be handled correctly.

     

Lista de respuestas

36
 
vote
vote
La mejor respuesta
 

Para Shells Bash, edite el archivo de configuración de tiempo de ejecución de Bash Wide System:

  sudo -e /etc/bash.bashrc   

Anexar al final de ese archivo:

  export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]+[ ]*//" ) [$RETRN_VAL]"'   

Configure el registro para "local6" con un nuevo archivo:

  sudo -e /etc/rsyslog.d/bash.conf   

y los contenidos ...

  local6.*    /var/log/commands.log   

reinicio rsyslog:

  sudo service rsyslog restart   

cerrar sesión. Iniciar sesión. ¿Voila!

pero me olvidé de la rotación de registro:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN5   

Hay una lista de archivos de registro para girar de la misma manera ...

  /var/log/mail.warn /var/log/mail.err [...] /var/log/message   

Entonces agregue el nuevo archivo de registro de comandos Bash en esa lista:

  /var/log/commands.log   

guardar.

 

For BASH shells, edit the system-wide BASH runtime config file:

sudo -e /etc/bash.bashrc 

Append to the end of that file:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"' 

Set up logging for "local6" with a new file:

sudo -e /etc/rsyslog.d/bash.conf 

And the contents...

local6.*    /var/log/commands.log 

Restart rsyslog:

sudo service rsyslog restart 

Log out. Log in. Voila!

But I forgot about log rotation:

sudo -e /etc/logrotate.d/rsyslog 

There is a list of log files to rotate the same way...

/var/log/mail.warn /var/log/mail.err [...] /var/log/message 

So add the new bash-commands log file in that list:

/var/log/commands.log 

Save.

 
 
         
         
4
 
vote

Un sistema de contabilidad de procesos puede ser útil a este respecto, particularmente el Paquete ACCT que proporciona el apellido y comandos de CA.

Los comandos de CA imprimen estadísticas sobre el tiempo de conexión de los usuarios, en horas. Esta es la cantidad de tiempo que el usuario se ha conectado al sistema, ya sea de forma remota a través de SSH o un terminal serial, o mientras está en la consola.

El comando de lastComm muestra información sobre los comandos ejecutados anteriormente. Las entradas más recientes se dan en la parte superior de la lista. También se muestra la cantidad total de tiempo de CPU que se utiliza cada proceso.

Un antiguo tutorial que puede ser útil es aquí:

http://www.linuxjournal.com/article/6144?page= 0,1

Otros comandos contables Como el último y así sucesivamente se pueden encontrar en este tutorial:

http://www.techrepublic.com/article/system- contabilidad en lineux / 1053377

 

A process accounting system may be helpful in this regard, particularly the acct package that provides the lastcomm and ac commands.

The ac commands prints out statistics about users' connection time, in hours. This is the amount of time that the user has been connected to the system, either remotely via SSH or a serial terminal, or while on the console.

The lastcomm command displays information about the previously executed commands. The most recent entries are given at the top of the list. Also displayed is the total amount of CPU time that each process used.

An old tutorial that may be helpful is here:

http://www.linuxjournal.com/article/6144?page=0,1

Other accounting commands like last and so on can be found in this tutorial:

http://www.techrepublic.com/article/system-accounting-in-linux/1053377

 
 
 
 
3
 
vote

Podrías usar snoopy .

Snoopy Logger puede adaptarse bien a su propósito. No pretende ser una solución de registro inevitable, sino una herramienta útil para los administradores diligentes que prefieren realizar un seguimiento de sus propias acciones.

Divulgación: Soy Mantenery Snoopy.

 

You could use snoopy.

Snoopy logger may suit your purpose well. It is not intended to be unavoidable logging solution, but rather a helpful tool for diligent admins who prefer to keep track of their own actions.

Disclosure: I am snoopy maintainer.

 
 
         
         
0
 
vote

Para cuidar de múltiples sesiones, no sobrecargar el archivo historial, tendrá que poner "Shopt -s Histapnd" en un archivo de inicio de Bash. Vea, también esta pregunta en el mismo problema.

 

To take care of multiple sessions not over-writing the history file, you will have to put "shopt -s histappend" in a Bash startup file. See, also this question on the same problem.

 
 
0
 
vote

Pruebe esto (las soluciones anteriores no funcionarán 100% con Bash 4.3):

  ABCDEFGHIJKLMNABCDEFGHIJKLMN8   

Esto hace el registro y evita el registro de marcas de tiempo que se utilizan para el archivo de historia de Bash. La trampa es necesaria, ya que Bash enviará las señales a la "Subquob" después de presionar STRG + C varias veces (probado con Bash 4.3). Esto forzará el cierre de sesión del usuario actual (por ejemplo, iniciado sesión con sudo)

 

try this (the solutions above will not work 100% with bash 4.3):

export HISTTIMEFORMAT="%Y-%m-%d %T " export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;' 

this does the logging AND it prevents logging of timestamps that are used for the bash history file. the trap is needed, since bash will send the signals to the "subjob" after pressing strg+c multiple times (tested with bash 4.3). this will force the logout of the current user (e.g. logged in with sudo)

 
 
0
 
vote

También puede intentar instalar ACCT. ACCT mantiene una pista de auditoría detallada de lo que se está realizando en sus sistemas Linux.

  ABCDEFGHIJKLMNABCDEFGHIJKLMN9   
 

You can also try installing acct. Acct keeps a detailed audit trail of whatxe2x80x99s being done on your Linux systems.

sudo apt-get install acct 
 
 

Relacionados problema

0  ¿Por qué enlazar no se puede escribir (registro) para archivar?  ( Why bind cant writelog to file ) 
resuelto: agregar /etc/bind/rndc.key resolvió el problema. u16. Estoy configurando el registro en mi servidor maestro local. Aquí está mi named.conf.opti...

1  Problema iniciando sesión con una antigua cuenta de inicio  ( Problem logging in with an old home account ) 
Acabo de instalar Ubuntu 11.10 y estoy tratando de usar un directorio de inicio de un usuario antiguo. Mi red se configura con un servidor NIS para la autenti...

1  Rápidamente: el registro de la aplicación de Python  ( Quickly logging from python application ) 
Considere el siguiente archivo fuente truncado (una aplicación rápida vacía con líneas innecesarias despojadas): import logging logger = logging.getLogger(...

1  Togging Sensors Data cada segundo  ( Logging sensors data every second ) 
Soy nuevo en este foro, así que si he hecho algo mal, por favor dime. Hice una investigación, pero no puedo entender la respuesta correcta a mi problema. Nece...

1  "MCP Power o Límite térmico excedido" excesivo en mensajes  ( Mcp power or thermal limit exceeded excessive in messages log ) 
Sigo obteniendo ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Cada cinco segundos mientras mi computadora está encendida, independientemente de lo que está haciendo. Encont...

2  ¿Por qué no puedo acceder a mi escritorio después de instalar Lubuntu?  ( Why cant i access my desktop after installing lubuntu ) 
Instalé Lubuntu 12.10 en mi netbook a través de la unidad USB. Ahora no puedo obtener acceso en mi escritorio después de iniciar sesión. Solo puedo ver una co...

0  Necesito devolver la contraseña de inicio de sesión  ( Need to return log in password ) 
He eliminado la cuenta de invitado y solo tengo una cuenta de administrador, con una contraseña activa. Hace un par de semanas he deshabilitado la contraseñ...

1  FOUDNODE FETCHNEWS: recibió saludo falso (498)  ( Leafnode fetchnews received bogus greeting 498 ) 
¿Cómo ejecuto algún tipo de diagnóstico para verificar la conexión a una versión arriba hojas de hoja nnttp ¿Servidor que se ejecuta en la misma red? thu...

1  Ejecute un proceso en segundo plano y dé STDROUT para ello, incluso si la terminal está cerrada  ( Run a process in background and give stdout for it even if terminal is closed ) 
Encontré algo de enlace aquí ( Ocultar STOUT de un proceso solo cuando se está ejecutando en el fondo ) sobre la redirección de la salida del proceso de ejecu...

0  Cómo dar acceso a un programa para hacer un archivo en el directorio raíz  ( How to give a program access to make file in root directory ) 
Estoy ejecutando un programa que utiliza Log4j.El LOG4J usa el archivo Rolling Archivo. Sin embargo, no puede crear el archivo. Supongo que es porque la cre...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos