Configurar un servidor syslog en RHEL/CentOS

 En este artículo vamos a montar un servidor syslog en un sistema CentOS para recoger las logs de nuestros equipos. Es un proceso muy sencillo.

  La distribución trae rsyslogd como demonio syslog por defecto.


  Lo primero que necesitamos hacer es crear el directorio donde posteriormente dejaremos los log de los diferentes equipos. La mayoría de los ficheros de log se encuentran en /var/log/. Ahí  crearemos un nuevo directorio llamado syslog.

[root@gestion log]# pwd
/var/log
[root@gestion log]# mkdir syslog


  Después necesitamos modificar el fichero /etc/sysconfig/rsyslog y añadir el parámetro -r a la línea de opciones, para permitir el logging desde equipos remotos:

# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-c 2 -r"

Configurando rsyslog.

  A continuación necesitamos modificar el fichero de configuración de rsyslog.  El fichero es /etc/rsyslog.conf

  Quitaremos el comentario de las líneas referentes a los módulos TCP y UDP para habilitar que rsyslogd escuche en el puerto 514:

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

  Si queremos restringir los sistemas que tienen permitido enviar mensajes de syslog al servidor añadiremos la redes permitidas mediante el comando:

$AllowedSender UDP, 127.0.0.1, 192.168.0.0/24
$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24

  Por último añadimos la configuración que indica la forma de almacenar los mensajes dentro del directorio /var/log/syslog/.  En mi caso la estructura que quiero es año/mes/ y dentro del mes un fichero diario por cada uno de los equipos:

 $template DailyPerHostLogs,"/var/log/syslog/%$YEAR%/%$MONTH%/%$DAY%_%HOSTNAME%_messages.log"
 *.info;mail.none;authpriv.none;cron.none                -?DailyPerHostLogs


Rotación de ficheros.

  Para finalizar la configuración del servidor únicamente nos queda establecer la rotación de los ficheros. El fin de la misma es reescribir los ficheros de log para ahorrar espacio.

  El paquete logrotate está instalado por defecto en RHEL y derivados, así como en Ubuntu, Suse y otras distribuciones Linux.

  Para incluir nuestro directorio de logs en la rotación  tenemos que añadir el directorio que creamos dentro del fichero syslog ubicado en /etc/logrotate.d/ :

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/syslog
{
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}


  A continuación muestro el fichero de configuración que trae por defecto el sistema, logrotate.conf . Este rota los ficheros semanalmente y mantiene 4 copias de los mismos. Si queréis modificarlo se encuentra en ./etc/

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

Arrancando servicio.

  Para terminar solo queda arrancar el servicio: 
[root@gestion /]# service rsyslog start

y comprobar que la máquina está escuchando en el puerto de syslog:
[root@gestion /]# netstat -nlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1304/rpcbind       
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1419/cupsd         
udp        0      0 0.0.0.0:632                 0.0.0.0:*                               1304/rpcbind       
udp        0      0 0.0.0.0:46074               0.0.0.0:*                               1349/rpc.statd     
udp        0      0 0.0.0.0:514                 0.0.0.0:*                               26809/rsyslogd     
udp        0      0 0.0.0.0:677                 0.0.0.0:*                               1349/rpc.statd     
udp        0      0 0.0.0.0:69                  0.0.0.0:*                               31788/xinetd       
udp        0      0 :::111                      :::*                                    1304/rpcbind       
udp        0      0 :::39154                    :::*                                    1349/rpc.statd     
udp        0      0 :::631                      :::*                                    1304/rpcbind       
udp        0      0 :::514                      :::*                                    26809/rsyslogd


  Para hacer que el servicio de rsyslog esté activo en el siguiente inicio del sistema, en todos los niveles de ejecución (2, 3, 4 y 5), se ejecuta lo siguiente:

chkconfig rsyslog on

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.