lunes, 13 de agosto de 2012

Servidor centralizado de Log's (Loganalyzer)


Syslog es un estándar de facto para el envío de mensajes de registro en una red informática IP. Por syslog se conoce tanto al protocolo de red como a la aplicación o biblioteca que envía los mensajes de registro.

Un mensaje de registro suele tener información sobre la seguridad del sistema, aunque puede contener cualquier información. Junto con cada mensaje se incluye la fecha y hora del envío.

El protocolo syslog es muy sencillo: existe un ordenador servidor ejecutando el servidor de syslog, conocido como syslogd (demonio de syslog). El cliente envía un pequeño mensaje de texto (de menos de 1024 bytes).

Los mensajes de syslog son enviados vía UDP,
por el puerto 514, en formato de texto plano.

6.1. INSTALACIÓN DEL SERVIDOR

Primeramente para el correcto funcionamiento de LogAnalizer, es necesario comprobar que los servicios: Web con soporte PHP, MySQL y Apache esten funcionando correctamente o en su defecto instalarlos, ya que LogAnalizer trabajar en un entorno web:

# apt-get install apache2-mpm-prefork mysql-server mysql-admin php5 php5-mysql php5-gd php5-mcrypt php5-imagick

6.1.1. INSTALACIÓN DEL SERVICIO RSYSLOG

Comprobados los servicios indicados anteriormente, se procede a instalar el servicio rsyslog con soporte para bases de datos MySQL y para el protocolo RELP (Reliable Event Logging Protocol:

# apt-get install rsyslog-mysql rsyslog-relp

6.1.2. CONFIGURACIÓN DEL SERVICIO RSYSLOG

El primero paso será aceptar los mensajes syslog por el puerto 514 tanto TCP como UDP, lo cual será necesario para mantener la compatibilidad con la mayoría de los dispositivos de red que emplean o pueden utilizar un servidor centralizado de logs. Para ello, se debe descomentar las siguientes lineas en el archivo /etc/rsyslog.conf
#provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

El segundo paso será habilitar el soporte para el protocolo RELP. Este protocolo se encarga de transmitir y recibir registros syslog por la red de forma más segura que a través de TCP. Para ello, se debe crear el archivo /etc/rsyslog.d/relp.conf con la siguiente información:

$ModLoad imrelp
$InputRELPServerRun 10514

El tercer paso consiste en asegurar la viabilidad del servidor centralizado de logs creando un sistema de buffering ya que deberá asumir una gran cantidad de datos de syslog a la base de datos. Para ello, lo primero que se debe realizar es crear un directorio donde se almacenarán los archivos en cola que sean necesarios:

# mkdir -p /var/rsyslog/queue

Posteriormente, se debe añadir al final archivo /etc/rsyslog.conf, las siguientes líneas:

# Sistema de buffering:
$WorkDirectory /var/rsyslog/queue # directorio por defecto de los ficheros encolados
$ActionQueueType LinkedList # usar proceso asincrono
$ActionQueueFileName dbq ; # establece el nombre de fichero y tambien activa el modo disco
$ActionResumeRetryCount -1 ; # reintentos infinitos en caso de fallo de insercion

Una vez guardados los cambios, reiniciar el servicio de syslog:

# /etc/init.d/rsyslog restart


6.2. INSTALACIÓN DEL PAQUETE LogAnalyzer

Ahora se procederá a instalar el software que permitirá ver los datos almacenados en la base de datos vía Web, desde cualquier equipo de la red. Para ello, lo primero que se hará es bajar el software, descomprimirlo y copialo al directorio donde se aloja el servidor web.

# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.4.4.tar.gz

# tar xvzf loganalyzer-3.4.4.tar.gz

# cd loganalyzer-3.4.4
# mkdir /var/www/logs
# cp -R src/* /var/www/logs/
# cp contrib/* /var/www/logs/
# cd /var/www/logs/

Ahora se procederá a asignar atributos de ejecución a 2 scripts que vienen en el paquete y posterior a ejecutar uno de ellos:

# chmod +x configure.sh secure.sh
# ./configure.sh

Para activar la autenticación del software LogAnalyzer, se necesita crear una base de datos vacía para almacenar los usuarios y sus privilegios. Se puede indicar cualquier nombre para la base de datos. Para este tutorial, se usará el nombre Usuarios_LogAnalyzer y el usuario admin con la contraseña 123456. Entonces para crear la base, ejecutar las siguientes instrucciones:

# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 37 
Server version: 5.1.63-0+squeeze1 (Debian) 

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. cd ..cd s

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 

Una vez que se ha conectado al servidor mysql, se procede a crear la base de datos

mysql> create database Usuarios_LogAnalyzer;
mysql> grant all on Usuarios_LogAnalyzer.* to root@'localhost' identified by '123456';

6.3. CONFIGURACIÓN DE LogAnalyzer

Para configurar el software, se debe abrir en un navegador de internet y escribir la siguiente URL: http://xxx.xxx.xxx.xxx/logs/install.php
Ahora se explicarán las opciones a configurar más destacables en el asistente de configuración.
  • Message character limit for the main view = 80 (default)
Cambiarlo a 0 para que aparezca el mensaje entero.
  • Enable the user database.
Al habilitar, aparecen nuevos campos a los que se debe llenar con los siguientes datos:
Server: localhost
Port: 3306
Name: Usuarios_LogAnalyzer
User: root
Pass: ******
En el siguiente paso, se creará las tablas y datos necesarios.
  • Se ha de crear por defecto el usuario administrador del software así que se recomienda que se tenga cuidado con los datos que se configuran ya que es imprescindible para gestionarlo.
  • En el paso de la configuración de la base de datos de logs
Name: Cualquier nombre “Server Log”
Source Type = MYSQL Native
Select View = Syslog Fields
Table type = MonitorWare
Database Host = localhost
Database Name = Syslog
Database Tablename = SystemEvents
Database User = rsyslog
Database Pass = (La password anterior ******)
Enable Row Counting = no



Si todo se ha hecho bien, se verá los registros del servidor centralizado de logs.

6.4. CONFIGURACIÓN DE CLIENTES PARA ENVÍO DE LOGS AL SERVIDOR CENTRALIZADO

A la hora de configurar los clientes que van a enviar los logs al servidor central, únicamente se tiene que especificar qué logs van a ir al servidor central, esto se lo hace en el archivo de configuración /etc/syslog.conf
Una línea estandar es esta por ejemplo, en la que se envía a /var/log/messages los logs de cron, info, mail, etc:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Para que estos logs se dejen de almacenar en el log local y pasen al remoto, únicamente hay que indicar con @ el hostname/ip del servidor syslogd. Si por ejemplo el servidor syslogd tiene el hostname syslogd01:
*.info;mail.none;authpriv.none;cron.none             @syslogd01

Reinicar syslogd y automáticamente se comenzarán a enviar los logs al servidor centralizado:

# /etc/init.d/syslogd restart

No hay comentarios:

Publicar un comentario