InicioLinuxcontrol centralizado de logs por medio de rsyslog

control centralizado de logs por medio de rsyslog

Linux9/5/2013
El principal objetivo de este artículo es la configuración del Rsyslog de forma que las distintas máquinas con distintos Sistemas Operativos envien sus logs del sistema para un servidor centralizado a traves de la red.

Como sabemos los logs son archivos de textos generados por el sistema y que pueden ayudar a descubrir problemas en la ejecución de softwares, porblemas de hardware, intentos de ataque, accesos indevidos, entre otras cosas.

Es importante mantener estos archivos seguros y intactos. En una auditoria de sistemas estos logs son bastante importantes, almenos para un administrador de redes.

Utilizando el Rsyslog, que tiene soporte para la mayoria de los sistemas operativos utilizados en el mercado, la centralización de los logs es posible y fácil de configurar, con una gran capacidad de configuración y personalización de acuerdo a la necesidad, sin causar ningun impacto en la red.


Que es el Rsyslog

El Rsyslog es un syslog con enfocado en la seguridad y confiabilidad, ofreciendo soporte para diversas operaciones tales como la demanda de almacenamiento en búfer, syslog confiable para TCP, SSL y TLS, grabando diversos bases de datos (MySQL, PostgreSQL, Oracle,...) e-mails de alerta, formatos de salidad totalmente configurables, siendo posible filtrar cualquier parte del mensaje, compresión de mensaje, conversión de archivos textos para Rsyslog.

Como funciona
Es necesario qeu se instale el Rsyslog en todas las computadoras que deben ser monitoreados y en el servidor central.
control centralizado de logs por medio de rsyslog

El Rsyslog funciona tanto en GNU/Linux, así como en Window$, solo con instalar dos módulos correspondientes a cada distribución y configurar de acuerdo con la necesidad de la disposición de la red.
Una vez configurado el servidor y el cliente, el agente del cliente se comunicara con el agente del servidor central.
La base de datos en el cual el Rsyslog del servidor central ira insertando los logs podrá ser cualquierda, en este caso estaremos utilizando el PostgreSQL 9.1.

Instalación y Configuración


Instalando el Rsyslog
Esta instalación será basada en la distribución CentOS 6.0, via YUM.
Antes de isntalar el Rsyslog, deverá ser verificado si tenemos algún servicio syslog, en el caso de que se encuentre, debera ser desinstalado para que el Rsyslog sea instalado.

Para instalar el Rsyslog:

# yum install rsyslog

Con el servicio de Rsyslog instalado, ahora será necesario configurar para iniciar la herramienta.

Configuración del servidor
Rsyslog es configurado a traves del archivo rsyslog.conf, normalmente encontrado en /etc.

Antes de iniciar la configuradión del archivo rsyslog.conf, que será direccionado a una base de datos, será necesario que haya un motor de base de datos instalado y activo, para que sea creado la base de datos y sus tablas por defecto.

El script de creación de la base de datos original, que se ve en el paquete durante la instalación, esta disponible en el archivo /usr/share/doc/rsyslog-versión/createDB.sql:

CREATE DATABASE 'Syslog' WITH ENCODING 'SQL_ASCII';

c Syslog;

CREATE TABLE SystemEvents

(

      ID serial not null primary key,

      CustomerID bigint,

      ReceivedAt timestamp without time zone NULL,

      DeviceReportedTime timestamp without time zone NULL,

      Facility smallint NULL,

      Priority smallint NULL,

      FromHost varchar(60) NULL,

      Message text,

      NTSeverity int NULL,

      Importance int NULL,

      EventSource varchar(60),

      EventUser varchar(60) NULL,

      EventCategory int NULL,

      EventID int NULL,

      EventBinaryData text NULL,

      MaxAvailable int NULL,

      CurrUsage int NULL,

      MinUsage int NULL,

      MaxUsage int NULL,

      InfoUnitID int NULL ,

      SysLogTag varchar(60),

      EventLogType varchar(60),

      GenericFileName VarChar(60),

      SystemID int NULL

);


CREATE TABLE SystemEventsProperties

(       ID serial not null primary key,

      SystemEventID int NULL ,

      ParamName varchar(255) NULL ,

      ParamValue text NULL

);


Este archivo esta en lenguaje SQL, es compatible con cualquier base de datos que trabaje con ese lenguaje.

* Un punto importante a resaltar en cuanto a la codificación de la base de datos utilizado por el Rsyslog, que es por defecto SQL_ASCIII.

Por defecto de instalación del PostgreSQL, caso no sea elegido una codificación diferente, es "LATIN1" y considerada por defecto por contar contener todos los caracteres de lenguas europeas. Pero la mayoria de los Base de datos utilizan "UTF-8", por la interoperabilidad de los simbolos (pudiendo contener caracteres de todas las lenguas).

Al intentar crear un base de datos en la condificación "SQL_ASII", en una instalación que ya posee por defecto una codificación diferente a la misma presentará errores.

Para subsanar este error, es necesario crear un bd "SYSLOG" (de acuerdo al archivo de creacion de base de datos createBD.sql) en otra carpeta que no sea la principal donde fue creado la base de datos psotgres).
En la instalación, por defecto, con creados mas dos carpetas: "template0" y la "template1". Cree la base de datos en una de ellas.

La modificación sugerida para el PostgreSQL 9.1 es la que tenemos abajo.

CREATE DATABASE 'Syslog' WITH ENCODING 'SQL_ASCII' TEMPLATE=template0;

c Syslog;

CREATE TABLE SystemEvents

(

      ID serial not null primary key,

      CustomerID bigint,

      ReceivedAt timestamp without time zone NULL,

      DeviceReportedTime timestamp without time zone NULL,

      Facility smallint NULL,

      Priority smallint NULL,

      FromHost varchar(60) NULL,

      Message text,

      NTSeverity int NULL,

      Importance int NULL,

      EventSource varchar(60),

      EventUser varchar(60) NULL,

      EventCategory int NULL,

      EventID int NULL,

      EventBinaryData text NULL,

      MaxAvailable int NULL,

      CurrUsage int NULL,

      MinUsage int NULL,

      MaxUsage int NULL,

      InfoUnitID int NULL ,

      SysLogTag varchar(60),

      EventLogType varchar(60),

      GenericFileName VarChar(60),

      SystemID int NULL

);


CREATE TABLE SystemEventsProperties

(

      ID serial not null primary key,

      SystemEventID int NULL ,

      ParamName varchar(255) NULL ,

      ParamValue text NULL

);

Después de crear la base de datos y las tablas, algunas configuraciones deveran ser echas en el archivo rsyslog.conf. Inicialmente iremos a habilitar el soporte a base de datos.
Soprote de base de datos en Rsyslog es integrado por módulos (plugin) cargables. Para usar la funcionalidades de base de datos, el plugin de base de datos debe ser habilitado en el archivo de configuración antes que la primera tabla de base de datos sea usada.

Esto realizamos a través de la configuración siguiente, en el inicio del archivo de configuración:

$ModLoad ompgsql

En este caso estaremos habilitando el soporte de base de datos PostgreSQL, escojido por defecto. Varias Base de datos son soportados. La lista de las especificaciones están disponibles en el sitio:



Como siguiente paso necesitamos decirle al Rsyslogd para grabar datos en la base de datos. Como usamos el esquema por defecto no necesitamos definir un modelo para eso.
Podemos usar el hardcoded (rsyslogd
Podemos usar a hardcoded (rsyslogd aborda el modelo apropiado para un enlace). Entonces, todo lo que necisamos hacer, por ejemplo para PostgreSQL, es agregar una línea simple en el archivo /etc/rsyslog.conf:

*.* :ompgsql:database-server,database-name,database-userid,database-password

Donde:


    database-server : Es el nombre o dirección de IP del servidor;
    database-name : Es el nombre de la base de datos donde las tablas fueron creadas;
    database-userid : Es el nombre de usuario que tiene acceso a la base de datos;
    database-password : Es la contraseña del usuario. 



Con estas configuraciones realizadas, solo nos queda iniciar el servicio de Rsyslog y verificar la entrada de datos en la tabla de la base de datos.
Toda esta entrada de datos puede ser configurada de acuerdo con la necesidad y del ambiente en cuestión. En este caso, los logs serán originados de dos sistemas operativos distintos, siendo un Window$ $erver 2003 y un GNU/Linux Red Hat 5.5 Enterprise Edition.
Los principales logs del GNU/Linux serán enviados al servidor centralizado como /var/log/messages, y otras especificaciones como del DHCP, Squid y Apache.
En el Window$ serán enviados los logs del “System Events Reports”.


Configuraciones de archivos y clientes
Configuración del archivo /etc/rsyslog.conf
La personalización para la colecta de datos específicos son insertadas a través de reglas en el rsyslog.conf. Por ejemplo, para colectar los datos TCP de la máquina, basta con activar los módulos de entrada.

Los módulos de entrada son utilizados para reunir mensajes de varias fuentes. Ellos integran con los generadores de mensajes. Los módulos de analizador son utilizados para analizar el contenido del mensaje, una vez que el mensaje fue recibido.

Los mismos pueden ser usados para procesar formatos de mensajes personalizados e inválidamente formateadas. Existen los módulos de modificación de mensajes que son usados para modificar el contenido de mensajes que están siendo procesados.

Ellos pueden ser implementados utilizando un módulo de salida de la interface del módulo analizador.

Los módulos de modificación de mensajes generalmente son escritos para una tarea especifica y por tanto normalmente no son genéricos o suficientes para ser reutilizados.

Abajo sigue el código del rsyslog.conf que será utilizado en el servido donde los logs serán centralizados.

#/etc/rsyslog.conf 
$ModLoad  imuxsock.so
$ModLoad  imklog.so
$ModLoad  imtcp.so
$InputTCPServerRun  514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$ModLoad ompgsql.so 

*.* :ompgsql:127.0.0.1,syslog,postgres,postgres 

*.info;mail.none;authpriv.none;cron.none    /var/log/messages
authpriv.*                                                /var/log/secure
mail.*                                                      /var/log/maillog
cron.*                                                      /var/log/cron
*.emerg                                                   *
uucp,news.crit                                          /var/log/ spooler
local7.*                                                    /var/log/boot.log 


En este archivo, cada línea tiene la siguiente función:

•$MoadLoad imuxsock.so : Fortalece la capacidad para aceptar mensajes de syslog rsyslogd. Entonces, necesitamos este módulo cargado para leer el socket de log del sistema y ser capaz de procesar los mensajes de los aplicativos en ejecución en el sistema local.
•$MoadLoad imklog.so : Lee mensajes de log del kernel y las envía para el motor de syslog.
•$MoadLoad imtcp.so : Habilita la conexión TCP. Necesario para posibilitar que los hosts remotos se conecten para centralizar los logs.
•$InputTCPServerRun 514 : Declara la puerta por el cual el servidor va a escuchar a los rsyslogs remotos.
•$ActionFileDefaultTemplate RSYSLOG_FileFormat : Define un nuevo modelo de padrón para acciones de archivo. Es un formato de archivo de log de estilo modernos emejante al TraditionalFileFormat, mas con alta precisión timestamps y informaciones de uso horario.
•$ModLoad ompgsql.so : Carga el módulo responsable para la conexión con la base de datos PostgreSQL.
•*.* :ompgsql:127.0.0.1,syslog,postgres,postgres : String de conexión con la base de datos.


Instalación y configuración del Cliente
Para que haya comunicación entre el servidor donde serán centralizados los logs y los clientes que enviaran estos logs, es necesario que sea instalado el cliente de Rsyslog en estas máquinas, en el servidor centralizado configurarlo para recibir estas conexiones.

Tanto para GNU/Linux o para Window$, haremos la configuración de sus clientes.

Instalación del cliente en GNU/Linux
Para la instalación del cliente de GNU/Linux, serán los mismos pasos que serán utilizados en la instalación del Rsyslog en el servidor central, via YUM.
La diferencia se dara en el archivo de configuración rsyslog.conf, que tendrá algunas configuraciones diferenciadas, conforme mostrado abajo.:

# /etc/rsyslog.conf 
*.* @@10.0.0.1:514
$ModLoad imuxsock.so   # provides support for local system logging (e.g. via logger command) 
$ModLoad imklog.so       # provides kernel logging support (previously done by rklogd)
$ModLoad imtcp.so
$InputTCPServerRun 514
$ModLoad ompgsql.so
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 

*.info;mail.none;authpriv.none;cron.none   /var/log/messages
*.*                                                         /var/log/yum.log
*.*                                                         /var/log/anaconda.log
*.*                                                         /var/log/boot.log
*.*                                                         /var/log/squid/access.log
*.*                                                         /usr/lib/rpm/rpm.log 


La única diferencia en el archivo de log del servidor par el cliente, es en la siguiente línea de la configuración el archivo rsyslog.conf.


*.* @@10.0.0.1:514 


Donde las " @@ ", significan que el protocolo es TCP, después es informado el IP y por último, la puerta en el cual el servidor estará escuchando.

Se reinician los servicios y verificamos en el servidor si los logs están llegando.
Instalación del Cliente en Window$
Para la configuración de un cliente en Window$ que se conectará en el servidor centralizado, el software cliente Rsyslog devera descargarse de la siguiente URL:



Después de bajarlo en la máquina con window$, iniciaremos ejecutando el archivo rsyslogwa.exe.
La instalación es normal de Window$ (next, next, finish). Despues terminado esta instalación, en el menú iniciar tendrá Rsyslog Window$ Agent Configuration.
Clic en el mismo para que la pantalla de abajo sea mostrada.
control
En esta pantalla empezaremos creando una regla donde vamos a definir un nuevo conjunto de reglas. Clic en el boton derecho del mouse sobre Rules. Un menu pop-up aparecera.
A partir de este menu, selccionamos: Add rules
GNU
Escribimos un nombre para las reglas que estaremos creando en el tag: Nombre of RuleSet.
Configuracion
Seleccionamos la opción: Forward Syslog.
Despues dejamos la opción marcada: create a Rule for each of the following action
Clic en "Next", usted tendra una página de confirmación clic en "Finalizar" apra crear el conjunto de reglas.
instalacion
La nueva Rule Set con el nombre digitado estara apareciendo. Clic en el simbolo de expandir en el arbol hasta el nivel de acción de "Forward Syslog" aparezca.
Clic en ella para apacer las configuraciones, conforme a la imagen de abajo:

internet
Configuramos el "Forward Syslog" insertando el IP de su Servidor Central Rsyslog modificando la puerta en la que fue configurada en el servidor, sabiendo que la puerta por defecto es "514".

Usted también puede modificar el tipo de protocolo TCP, de acuerdo con la configuración del servidor.
ATENCIÓN: El Rsyslog agente de Window$ y su servidor Rsyslog deven utilizar la misma puerta y el mismo protocolo. Modifique el "Message Format", haciendo un clic en el menu desplegable para escojer: use CEE enhanced Syslog Format.
Linux
Ahora un clic en "Save". Esta primera parte esta lista, ahora configuraremos la parte de EventLog Monitor Service. Iniciaremos con un clic con el boton derecho del mouse en:


Services
Seleccione: Add Services
Despues: Event Log Monitor V2
GNU/Linux
Nuevamente usted necesitará escribir un nombre o dejar por defecto. Dejamos el campo "use default settings" seleccionada y clic en "Finish".
log
Veremos que tenemos un servicio recien creado sobre los "services" como parte visible del arbol. Para verificar sus parametros, clic encima de ella:
logs
Como podemos ver, el servicio verifica automaticamente todos los EventLogs presentes en Window$. Ahora podemos selccionar o desactivar determinados registros o modificar alguans de sus propiedades.
El conjunto de reglas "Syslog Forward" fue automaticamente atribuido como un conjunto de reglas para ser usadas. Ahora basta con inicar el servicio y comenzar a monitorear a traves del servidor centralizado.

rsyslog

Instalación de LogAnalyzer
Para visualizar estos lgos de una manera mas didáctica, utilizaremos el LogAnalyser.
El LogAnalyser es un front-end free para Syslog-Rsyslog de fácil comprensión y manejo. Es una aplicación gratuita de Fuente GLP abierto.

Para instalar el LogAnalyser usted necesitará tener instalado los siguientes módulos en el servidor centralizado de lgos, sea Window$ o GNU/Linux:


Apache ou IIS Webserver
PHP5


Para iniciar necesitamos descargar LogAnalyzer. Escogemos la versión mas reciente:




Será descargado una rchivo del tipo "tar.gz". Copie toda a la carpeta "src" y los archivos configure.sh y secure.sh en la carpeta "contrib", que estaban dentro del directorio recien descompactado, para el directorio por defecto del Apache el IIS.

En este caso tomaremos como defecto el Apache en el servidor GNU/Linux, luego el archivo deverá ser descompactado en el directorio /var/www/html.

Ahora será necesario dar los permisos necesarios en la carpeta y los archivos que estan dentro de la misma.:
 
# chmod + x configure.sh secure.sh

Ejecute:
 
# ./configure.sh

Que creara un config.php en blanco, y también ira a definir el acceso de escritura a todos ellos. Podemos realizar eso manualmente si quisiseramos configurando a permiso 777 en este archivo.
Para iniciar la instalación de LogAnalyzer, abrimos el siguiente link en el browser que estará apuntando para el script de instalación.:

 
    http://localhost/install.php 


El script de instalación nos solicitará configuraciónes para la instalación del LogAnalyzer, basta con seguir las instrucciones.
Iniciando la instalación del LogAnalyser, un mensaje de bienvenida sera mostrado. Esta es la primera página de instalación. Diz-lhe, antes de instalar, algunas directivas de permisos de archivos seran verificados.

Clic en "Next" para iniciar el proceso

control centralizado de logs por medio de rsyslog
Verifique los permisos de archivo. Aquí usted va a ver si el archivo config.php puede ser escrito o no. Si no puede ser escrito, usted tendra que aplicar los permisos necesarios manualmente con (chmod 777 config.php y clic en "Next".
control
Algunas opciones básicas deveran ser definidas aqui
Number of syslog messages per page = 50 (default)
Message character limit for the main view = 80 (default)
Character display limit for all string type fields = 30 (default)
Show message details popup (default yes) = yes (default)
Automatically resolved IP Adrress (inline) = yes (default)
GNU

En la próxima pantalla tenemos el paso mas importante, dodne será configurada la base de datos, donde estam almacenados los datos del Rsyslog.

Primeramente tendremos que escojer un "Name of the Source" (Nombre de la Fuente) y un "Source Type" (Tipo de Origen).

En nombre podemos agregarlos nosoros, y esta será mostrada en el drop-down con el cual vamos a escoger la fuente de datos Rsyslog activa.
El "Source Type" puede ser un archivo, un base de datos MySQL o PHP PDO que soporta tipos de datos diferentes como MS SQL PostgreSQL, ODBC, Oracle o IBM DB2 mismo.
En este caso utilizaremos la ultima opción, dodne sera configurado la base de datos PostgreSQL 9.1.

Database Storage Engine = MySQL Server (default)

Elegimos el tipo de base de datos que estamos utilizando. Estos son los soportados:
MySQL Server
Microsoft SQL Server
ODBC Conexão Banco de Dados
PostgreSQL
Oracle Call Interface
IBM DB2
Firebird / Interbase 6
IBM Informix Dynamic Server
SQLite 2

La configuración de la base de datos
Table Type = monitorware (default)

Esta es la disposición de la tabla. Actualmente, se pude usar "monitorware" o "syslogng"

*Database Host = localhost (default)

El nombre de la maquina o IP o donde la base de datos esta localizada. Por defecto es localhost. Usted puede especificar cualquier otro host, de acuerdo a su necesidad.

Database Name = loganalyzer (default)

El nombre de base de datos que se configuro.

Database Tablename = systemevents (default)

Este es el nombre de la tabla en que los datos son almacenados. El nombre de la tabla corresponde a las tablas creadas con la linea "Table Type".

Database User = user (default)

Nombre de usuario.

Database Password = no definido por defecto.

Contraseña del usuario

Enable Row Counting = No (default)

Si se establece en "Yes", la cantidad de filas en la tabla seran contados con cada consulta, mostrando los registros totales para su busqueda. Podria tener un gran impacto en su sistema utilizando una base de datos muy grande.
Si se configura en "No", las lines no serán contadas, proporcionando un mejor desempeño
Configuracion
Si todo va con normalidad, tendriamos que ver el mensaje de instalación del Rsyslog despues de la instalación del LogAnalyzer. Por seguridad podemos remover el script install.php.
instalacion
De acuerdo a la figura de arriba, los datos que ya fueron instertados en la base de datos pueden ser visualizados por el browser atraves de la dirección de IP, o localmente atraves de localhost.
Detallando uno de los mensajes de arriba, tendremos la siguiente pantalla:
internet

En la figura tenemos los siguientes campos:

uiD - ID del mensaje conforme a su inserción;
Date - día y hora del evento;
Host - nombre de la máquina donde ocurrio el evento;
Severity - tipo de prioridad del mensaje;
Syslogtag - tag que identifica cual de los servicios genero el evento;
Checksum - tag utilizada cuando el rsyslog es utilizado con SSL/TLS;
Message - contenido del mensaje con los datos del evento.
Messagetype
Facility

En este evento, podemos percibir algunos datos interesantes: por ser un evento del tipo DHCPACK (donde el servidor confirma la asignación de dirección de IP al cliente), la dirección MAC de la máquina que recibio la IP y la dirección de IP que fue atribuida. Esto puede permitir una rastreabilidad en la red.



FIN



Espero sepán comprender los errores u orrores ortograficos que puedan haber en el texto. Este post lo realize en medio de mucho trabajo. La información en este post fue recopilada de muchas páginas algunas en (Ingles, Portugues) y algunas traducciones estan mal espero sepan comprender. Aclarando que no utilize ningún tipo de traductor para traducir el texto, y también trate de resumir el post aunque me salio bastante largo.
Si les parece interesante compartan el post desde ya muchas gracias
Datos archivados del Taringa! original
30puntos
1,149visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
cagl86🇦🇷
Usuario
Puntos0
Posts54
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.