GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar rsyslog para la administración centralizada de registros

Este tutorial explicará cómo configurar rsyslog como un servidor de administración de registros centralizado. La administración centralizada de registros significa recopilar todo tipo de registros de varios servidores físicos o virtualizados en un servidor de registro para monitorear el estado y la seguridad de los servicios del servidor. Usamos rsyslog en este tutorial porque ofrece alto rendimiento, gran seguridad y un diseño modular. También es capaz de almacenar registros en numerosas soluciones de bases de datos como MySQL, Oracle, Hadoop y otras para una mejor consolidación.

1. Nota Preliminar

Para este tutorial, estoy usando Oracle Linux 6.4 en la versión de 32 bits. Tenga en cuenta que aunque la configuración se realice en Oracle Linux, los mismos pasos funcionarán en CentOS y Red Hat OS Linux. En este tutorial, usaremos 2 servidores. El primero actuará como servidor rsyslog y el otro actuará como estación de trabajo / servidor cliente para el cliente rsyslog. Al final de este tutorial, veremos que una vez que un usuario inicia sesión en el servidor del cliente, el servidor rsyslog registrará la actividad realizada por él automáticamente.


2. Instalación de Rsyslog

Para la fase de instalación, solo requerimos tener instalados los paquetes rsyslog y sus dependencias. Primero, confirmemos nuestra versión del Sistema Operativo.

[[email protected] ~]# cat /etc/issue
Oracle Linux Server release 6.4
Kernel \r on an \m
[[email protected] ~]# arch
i686
[[email protected] ~]# uname -a
Linux RSYS01 2.6.32-358.el6.i686 #1 SMP Fri Feb 22 13:37:29 PST 2013 i686 i686 i386 GNU/Linux


A continuación, configuraré un nuevo repositorio para instalar los paquetes rsyslog a través de la utilidad yum.


[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# vi rsyslog.repo
[rsyslog-v7-devel]
name=Adiscon Rsyslog v7-devel for CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-devel/epel-$releasever/$basearch
enabled=0
gpgcheck=0
protect=1
[rsyslog-v7-stable]
name=Adiscon Rsyslog v7-stable for CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
protect=1

[[email protected] yum.repos.d]# yum list rsyslog
Loaded plugins: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Available Packages
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable


Listo, ahora comencemos a instalar la nueva versión de rsyslog. Los pasos se muestran a continuación:


[[email protected] yum.repos.d]# yum install rsyslog -y
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rsyslog.i686 0:7.6.7-1.el6 will be installed
--> Processing Dependency: liblogging-stdlog.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libjson-c.so.2 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgthttp.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgtbase.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgt for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libestr.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Running transaction check
---> Package json-c.i686 0:0.11-3.el6 will be installed
---> Package libestr.i686 0:0.1.9-1.el6 will be installed
---> Package libgt.i686 0:0.3.11-1.el6 will be installed
---> Package liblogging.i686 0:1.0.4-1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Installing for dependencies:
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k
Transaction Summary
===============================================================================================================
Install 5 Package(s)
Total download size: 1.0 M
Installed size: 3.2 M
Downloading Packages:
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03
---------------------------------------------------------------------------------------------------------------
Total 114 kB/s | 1.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgt-0.3.11-1.el6.i686 1/5
Installing : liblogging-1.0.4-1.el6.i686 2/5
Installing : libestr-0.1.9-1.el6.i686 3/5
Installing : json-c-0.11-3.el6.i686 4/5
Installing : rsyslog-7.6.7-1.el6.i686 5/5
Verifying : json-c-0.11-3.el6.i686 1/5
Verifying : libestr-0.1.9-1.el6.i686 2/5
Verifying : liblogging-1.0.4-1.el6.i686 3/5
Verifying : libgt-0.3.11-1.el6.i686 4/5
Verifying : rsyslog-7.6.7-1.el6.i686 5/5

Installed:
rsyslog.i686 0:7.6.7-1.el6

Dependency Installed:
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6

Complete!

[[email protected] yum.repos.d]# rsyslogd -v
rsyslogd 7.6.7, compiled with:
FEATURE_REGEXP: Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
uuid support: Yes
Number of Bits in RainerScript integers: 64

See http://www.rsyslog.com for more information.

[[email protected] ~]# rpm -qa|grep rsyslog
rsyslog-7.6.7-1.el6.i686


A continuación, procedamos con la fase de instalación. Para este tutorial, omitiremos la capa de seguridad para simplificar las cosas. Deshabilitaremos SELINUX para asegurarnos de que no haya problemas relacionados con aumentos de seguridad durante el camino. Tenga en cuenta que no debe deshabilitar SELinux y el Firewall en una configuración en vivo. A continuación se muestran los pasos:

Primero, verifique cuál es el estado actual de nuestra política SELINUX.

[[email protected] ~]# getenforce
Enforcing

Para deshabilitarlo permanentemente, siga el siguiente paso:

[[email protected] ~]# cd /etc/sysconfig/
[[email protected] ~]# vi selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted


Después de eso, asegurémonos de haber deshabilitado el firewall para evitar cualquier bloqueo entre el servidor y la conexión del cliente.

[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[[email protected] ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[[email protected] ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination

Chain FORWARD (policy ACCEPT)
num target prot opt source destination

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination


Hecho, ahora que la fase de instalación ha tenido éxito. Pasemos a la fase de configuración.


3. Configuración Rsyslog

Todas las dependencias del paquete ya se han instalado, centrémonos en la configuración de rsyslog. Vayamos al archivo de configuración y hagamos los cambios como se muestra a continuación:

[[email protected] ~]# vi /etc/rsyslog.conf 

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

$template Auditlog, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"
authpriv.* ?Auditlog

A continuación se muestra la explicación de los cambios de configuración que hicimos:

  • módulo(load="imudp") # debe hacerse solo una vez ==> Brindaremos la capacidad de recibir mensajes rsyslog entre el servidor y el cliente a través del protocolo UDP
  • entrada(tipo="imudp" puerto="514") ==> Usaremos el puerto 514 para los servicios rsyslog
  • $template Auditlog, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log" ==> Para cada cliente conectado al servidor rsyslog, el sistema creará automáticamente la carpeta del nombre de host del cliente y el nombre del archivo de servicios relacionados
  • $template TmplMsg, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log" ==> Para cada cliente conectado al servidor rsyslog, el sistema creará automáticamente la carpeta del nombre de host del cliente y el nombre del archivo de servicios relacionados


Una vez realizada la configuración, iniciemos el servicio rsyslog.

[[email protected] yum.repos.d]# /etc/init.d/rsyslog restart
Shutting down system logger: [FAILED]
Starting system logger: [ OK ]

Use netstat para asegurarse de que los servicios de rsyslog estén activos y funcionando:

[[email protected] yum.repos.d]# netstat -uanp|grep rsyslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 2430/rsyslogd
udp 0 0 :::514 :::* 2430/rsyslogd

Arriba puede ver que nuestro servicio rsyslog se está ejecutando con las asignaciones de puertos que hemos realizado. De forma predeterminada, rsyslog también audita su propio acceso al servidor, ya que trata al servidor rsyslog como un cliente. Para asegurarnos de que funciona, podemos echar un vistazo a la carpeta /var/log. Verifiquemos si existe o no una carpeta con el nombre RSYS01 (ese es el nombre de host del servidor).

[[email protected] log]# cd /var/log/
[[email protected] log]# ls -l|grep rsyslog
drwx------ 3 root root 4096 Oct 24 18:21 rsyslog_client
[[email protected] log]# cd rsyslog_client
[[email protected] rsyslog_client]# ls
RSYS01
[[email protected] rsyslog_client]# cd RSYS01/
[[email protected] RSYS01]# ls
rsyslogd.log

¡Bien, parece que todo funciona a las mil maravillas! Ahora procedamos con la fase de prueba para concluir que todas las configuraciones se realizaron como se esperaba.

4. Fase de prueba

Como el servidor que ejecuta el servicio rsyslog también funciona como cliente, podemos ver en el propio servidor si se supervisan los inicios de sesión locales. Para asegurarnos de que sea cierto, iniciemos sesión en el servidor rsyslog con otra sesión utilizando el servicio SSH. Para este paso, supondremos que el propio servidor ya ha configurado la configuración sin contraseña. A continuación se muestran los pasos:

[[email protected] RSYS01]# ssh [email protected]
Last login: Sat Oct 22 15:45:48 2016 from 172.20.181.70
[[email protected] ~]# who
root pts/0 2016-10-22 00:21 (172.20.181.11)
root pts/1 2016-10-24 18:22 (127.0.0.1)
[[email protected] ~]# exit
logout
Connection to RSYS01 closed.

Listo, tan simple como eso. Simplemente iniciamos sesión en el servidor rsyslog y luego, una vez que se crea la nueva sesión, simplemente iniciamos sesión nuevamente solo para asegurarnos de que el servicio rsyslog auditó la sesión. Ahora, verifiquemos si la sesión ha sido auditada o no. A continuación se muestran los pasos:

[[email protected] ~]# cd var/log/rsyslog_client/RSYS01
[[email protected] RSYS01]# ls
rsyslogd.log sshd.log
[[email protected] RSYS01]# tail -f sshd.log
Oct 24 18:22:46 RSYS01 sshd[2536]: Accepted password for root from 192.168.43.101 port 52862 ssh2
Oct 24 18:22:46 RSYS01 sshd[2536]: pam_unix(sshd:session): session opened for user root by (uid=0)
Oct 24 18:22:50 RSYS01 sshd[2536]: Received disconnect from 192.168.43.101: 11: disconnected by user
Oct 24 18:22:50 RSYS01 sshd[2536]: pam_unix(sshd:session): session closed for user root
^C


Excelente, el servicio rsyslog creó automáticamente un archivo sshd.log cuando se inició la sesión en el servidor. Dentro del archivo de registro, podemos ver que hay una lista de detalles que indican la hora, el puerto y el usuario creados en la sesión.

Ahora como todo funciona como se esperaba. Configuremos una estación de trabajo para que el cliente rsyslog sea auditado por nuestro servidor rsyslog. Para el cliente de rsyslog, solo necesita instalar los paquetes de rsyslog y realizar un cambio simple en el archivo de configuración para vincular al servidor de rsyslog. A continuación se muestran los pasos:

[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# yum list rsyslog
Loaded plugins: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Available Packages
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable

[[email protected] yum.repos.d]# yum install rsyslog -y
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rsyslog.i686 0:7.6.7-1.el6 will be installed
--> Processing Dependency: liblogging-stdlog.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libjson-c.so.2 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgthttp.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgtbase.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgt for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libestr.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Running transaction check
---> Package json-c.i686 0:0.11-3.el6 will be installed
---> Package libestr.i686 0:0.1.9-1.el6 will be installed
---> Package libgt.i686 0:0.3.11-1.el6 will be installed
---> Package liblogging.i686 0:1.0.4-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Installing for dependencies:
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k

Transaction Summary
===============================================================================================================
Install 5 Package(s)

Total download size: 1.0 M
Installed size: 3.2 M
Downloading Packages:
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03
---------------------------------------------------------------------------------------------------------------
Total 114 kB/s | 1.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgt-0.3.11-1.el6.i686 1/5
Installing : liblogging-1.0.4-1.el6.i686 2/5
Installing : libestr-0.1.9-1.el6.i686 3/5
Installing : json-c-0.11-3.el6.i686 4/5
Installing : rsyslog-7.6.7-1.el6.i686 5/5
Verifying : json-c-0.11-3.el6.i686 1/5
Verifying : libestr-0.1.9-1.el6.i686 2/5
Verifying : liblogging-1.0.4-1.el6.i686 3/5
Verifying : libgt-0.3.11-1.el6.i686 4/5
Verifying : rsyslog-7.6.7-1.el6.i686 5/5

Installed:
rsyslog.i686 0:7.6.7-1.el6

Dependency Installed:
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6

Complete!


Listo, ahora instalamos el paquete rsyslog en nuestra estación de trabajo cliente. Ahora hagamos una enmienda dentro del archivo de configuración rsyslog. Para una configuración de cliente, solo necesita modificar la configuración como se muestra a continuación:

[[email protected] ~]# vi /etc/rsyslog.conf

*.* @192.168.43.101:514

Eso es todo, tenga en cuenta que hemos incluido la IP 192.168.43.101 con el puerto 514 en el archivo de configuración. Esa IP es la IP para el servidor rsyslog. Ahora que todo está hecho, reiniciemos el servicio rsyslog en la estación de trabajo del cliente para cargar los cambios. A continuación se muestran los pasos:

[[email protected] ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [FAILED]
Starting system logger: [ OK ]


Ahora volvamos a nuestro servidor rsyslog y veamos si se ha creado una carpeta para el nombre de host del cliente rsyslog en el directorio de registro de rsyslog. A continuación se muestran los pasos:

[[email protected] ~]# cd var/log/rsyslog_client/
[[email protected] rsyslog_client]# ls
RSYS01 CLIENT01


Excelente, tenga en cuenta que se ha creado automáticamente una carpeta con el nombre de host del cliente rsyslog. Esto confirma que nuestra configuración es correcta y que el cliente rsyslog puede establecer una conexión UDP con el servidor rsyslog.

Para el siguiente procedimiento de prueba, iniciemos sesión en el cliente rsyslog como otro usuario y veamos si el servidor rsyslog logra capturar la actividad o no. A continuación se muestran los pasos:

::CLIENT01::
login as: shahril
[email protected]'s password:
Last login: Sun Oct 23 00:21:40 2016 from 172.20.181.11
[[email protected] ~]$ who
shahril pts/0 2016-10-24 17:01 (192.168.43.80)
[[email protected] ~]$ exit


Ahora, revisemos el directorio de registro dentro del servidor rsyslog para ver si logramos registrar la actividad creada desde el cliente rsyslog o no.

[[email protected] ~]# cd var/log/rsyslog_client/
[[email protected] rsyslog_client]# cd CLIENT01/
[[email protected] CLIENT01]# ls
rsyslogd.log sshd.log
[[email protected] CLIENT01]# tail -10 sshd.log
Oct 24 17:01:47 CLIENT01 sshd[2102]: Accepted password for shahril from 192.168.43.80 port 17002 ssh2
Oct 24 17:01:47 CLIENT01 sshd[2102]: pam_unix(sshd:session): session opened for user shahril by (uid=0)


Excelente, el resultado muestra que el proceso funciona como se esperaba. Ahora, para la prueba final, volvamos a iniciar sesión en el cliente rsyslog e instalemos un paquete para probar si el servicio rsyslog logra registrar otra actividad además de la creación de sesión. A continuación se muestran los pasos:

::CLIENT01::
login as: root
[email protected]'s password:
Last login: Sat Oct 22 10:21:40 2016 from 172.20.181.11
[[email protected] ~]# yum install firefox -y
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package firefox.i686 0:10.0.12-1.0.1.el6_3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
firefox i686 10.0.12-1.0.1.el6_3 OEL64 20 M

Transaction Summary
================================================================================
Install 1 Package(s)

Total download size: 20 M
Installed size: 23 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : firefox-10.0.12-1.0.1.el6_3.i686 1/1
Verifying : firefox-10.0.12-1.0.1.el6_3.i686 1/1

Installed:
firefox.i686 0:10.0.12-1.0.1.el6_3

Complete!

Lo anterior muestra que hemos instalado con éxito un instalador del navegador Firefox dentro de nuestra estación de trabajo del cliente rsyslog. Ahora regresemos a nuestro servidor rsyslog y verifiquemos si rsyslog pudo registrar el proceso de instalación de un paquete de terceros en la estación de trabajo. A continuación se muestran los pasos:

[[email protected] ~]# cd var/log/rsyslog_client/
[[email protected] CLIENT01]# ls
rsyslogd.log sshd.log yum.log
[[email protected] CLIENT01]# tail -20 yum.log
Oct 25 17:13:17 CLIENT01 yum[2319]: Installed: firefox-10.0.12-1.0.1.el6_3.i686

Excelente, el servicio rsyslog logró auditar la información de la actividad de instalación en la estación de trabajo del cliente.


Linux
  1. Configurar el servidor Rsyslog centralizado en CentOS 7

  2. Cómo configurar los privilegios de Sudo para el usuario en Linux

  3. Cómo configurar LogAnalyzer con Rsyslog y MySQL

  4. Configurar el servidor Rsyslog en Ubuntu 20.04 - ¿Cómo hacerlo?

  5. ¿Cómo configurar servidores de registro remotos con rsyslog?

Cómo configurar Apache como proxy frontend para Node.js

¡Administración centralizada de registros instalando rsyslog en Debian 11!

Zorin OS lanzará Zorin Grid para la gestión centralizada de escritorios Linux

Cómo configurar HAProxy como Load Balancer para Nginx en CentOS 7

Cómo configurar un servidor NGINX RTMP para transmisión

Cómo crear una configuración Rsyslog de registro centralizado