Mostrando las entradas con la etiqueta logs. Mostrar todas las entradas
Mostrando las entradas con la etiqueta logs. Mostrar todas las entradas

martes, 31 de marzo de 2020

redireccionar todos los comandos de bash de los usuarios al log messages (syslog) ( centos7 y centos 6 y derivados)

Un problema bien común, es que aveces no encontramos los comandos que ejecuto algún usuario dentro del log messages o bien secure o audit de una forma rápida o sencilla y es complicado hacer el tracking con bash history

Para esto hay varias formas de resolverlo

En centos 7 tenermos el siguiente comando (variable) 
[root@localhost ~]# shopt -s syslog_history
 
 para deshabilitara podemos usar : use shopt -u syslog_history 

  • Para hacer el cambio persistente en todas las sesiones de bash es necesario agregar al final del archivo /etc/bashrc file: shopt -s syslog_history

Hay otro método para copiar todos los comandos ejecutados por los usuarios a  syslog.
La cual es utilizar "trap" como parte de la programación de bash, personalmente es mi metodo preferido

  • Hay que agregar las siguientes lineas ya sea en el bash profile; ~/.bash_profile y/o en /etc/profile para que sea de forma global, personalmente lo realice cree el archivo dentro en /etc/profile.d/user-activity.sh  a manera de script y se agregan las siguentes lineas:
PORT=`who am i | awk '{ print $5 }' | sed 's/(//g' | sed 's/)//g'`
logger -p local7.notice -t "bash $LOGNAME $$" User $LOGNAME logged from $PORT
function history_to_syslog
{
declare cmd
declare p_dir
declare LOG_NAME
cmd=$(history 1)
cmd=$(echo $cmd |awk '{print substr($0,length($1)+2)}')
p_dir=$(pwd)
LOG_NAME=$(echo $LOGNAME)
if [ "$cmd" != "$old_command" ]; then
logger -p local7.notice -- SESSION = $$, from_remote_host = $PORT,  USER = $LOG_NAME,  PWD = $p_dir, CMD = "${cmd}"
fi
old_command=$cmd
}
trap history_to_syslog DEBUG || EXIT
 
bien otra forma seria la siguiente donde cambia el orden de los eventos
 
function bash_syslog
{
   declare COMMAND
   declare HOSTNAME
   declare IP_ADDR
   COMMAND=\$(fc -ln -0)
   HOSTNAME=\$(hostname)
   IP_ADDR=\$(ip addr show | grep "inet " | grep -v 127.0.0. | head -1 | cut -d" " -f6 | cut -d/ -f1)

   logger -p local4.info -t bash_syslog -i -- "\$HOSTNAME:\$IP_ADDR:\${USER}:\${SUDO_USER}:\${COMMAND}"
}
trap bash_syslog DEBUG 
 
Nota: Esta solución  creara un nuevo proceso por cada comando que se ejecute por lo cual pudiera afectar ligeramente el perfomance del servidor, para salvar el log messages en un archivo de log particular , agregaremos la siguiente linea en  /etc/syslog.conf (para RHEL4/5) o /etc/rsyslog.conf (para RHEL6):

local7.notice                           /var/log/cmd.log
  • Esto tambien manda a log todos los comandos a /var/log/messages .
  • To para evitar que  los comandos se vayan a  /var/log/messages , agrega la siguiente linea a /etc/syslog.conf (para RHEL4/5) or /etc/rsyslog.conf (para RHEL6/7):
*.info;mail.none;authpriv.none;cron.none;local7.!notice                     /var/log/messages
  • esto evitara que los mensajes con prioridad notice o mas altar se vayan al log /var/log/messages .
# service syslog restart
  • Centos 6
# service rsyslog restart
 
articulo original y traducido de :
https://access.redhat.com/solutions/20707
license GPL  

jueves, 11 de junio de 2015

Donde estan los logs del sistema en linux

Bueno hoy les traigo una entrada cortita pero muy util funciona en fedora, red hat, ubuntu, mint y varios mas, en donde se encuentran los logs de linux?, si bien no son todos estos son los que por lo menos concidero los basicos.

logs y para que sirve ?
/var/log/messages
la mayoria de los mensajes del syslog se guardan aqui. con excepcion de los mensajes relacionados a la autenticación y los mensajes del servicio de correo, algunos otros mensajes de debug
/var/log/secure
Aqui vamos a poder ver los logs relacionadios con la autenticación del sistema, es decir quien entro, quien salio y errores
/var/log/maillog
  Este es el log del servicio estandar de correos por lo general sendmail o postfix
/var/log/cron
Este es el log relacionado con las tareas programadas en el crontab de todos los usuarios y aqui podemos ver parte de su ejecucion y el resultado
/var/log/boot.log
 
Finalmente aqui podremos ver los logs relacionados con el arranque e inicio del sistema