Cómo montar un servidor de log gratuito usando Rsyslog en Linux Ubuntu Server, guardando los datos en MySQL. Mostramos cómo instalar LogAnalyzer para generar informes y realizar consultas sobre los log.
- Servidor de log syslog.
- Requisitos para montar servidor de log gratuito con Rsyslog.
- Instalar Rsyslog en GNU Linux Ubuntu Server 12.
- Instalar LogAnalyzer para consulta vía web de los log de Rsyslog.
- Anexo.
- Artículos relacionados.
- Créditos.
Servidor de log syslog
Syslog es un estándar desarrollado para el envío de mensajes de registro a una IP en una red LAN. Syslog hace referencia tanto al protocolo de red como a la aplicación o biblioteca que envía los mensajes de registro.
Los equipos y servicios con soporte para envío de log
a este sistema pueden enviar cualquier tipo de mensaje, normalmente
suelen enviar información sobre la seguridad del sistema, errores,
avisos, etc. aunque pueden contener cualquier información. Junto con
cada mensaje se incluye la fecha y hora del envío, el equipo que envía,
la prioridad y otros datos adicionales.
El protocolo syslog consiste en un equipo servidor
ejecutando el servidor de syslog, conocido como syslogd (demonio de
syslog) y clientes que envían un pequeño mensaje de texto (de menos de
1024 bytes) a este servidor.
Los mensajes de syslog se suelen enviar vía UDP, por el puerto 514, en formato de texto plano. Algunas implementaciones del servidor, como syslog-ng, permiten usar TCP en vez de UDP, y también ofrecen Stunnel para que los datos viajen cifrados mediante SSL/TLS.
Aunque syslog tiene algunos problemas de seguridad,
su sencillez ha hecho que muchos dispositivos lo implementen, tanto para
enviar como para recibir. Eso hace posible integrar mensajes de varios
tipos de sistemas en un solo repositorio central.
El mensaje enviado se compone de tres campos, entre todos no han de sumar más de 1024 bytes, pero no hay longitud mínima:
- Prioridad: número de 8 bits que indica tanto el recurso (tipo de aparato que ha generado el mensaje) como la severidad (importancia del mensaje).
- Cabecera: indica tanto el tiempo como el nombre del ordenador que emite el mensaje. Esto se escribe en codificación ASCII (7 bits), por tanto es texto legible. El primer campo, tiempo, se escribe en formato Mmm dd hh:mm:ss, donde Mmm son las iniciales del nombre del mes en inglés, dd, es el día del mes, y el resto es la hora. No se indica el año. Justo después viene el nombre de ordenador (hostname), o la dirección IP si no se conoce el nombre. No puede contener espacios, ya que este campo acaba cuando se encuentra el siguiente espacio.
- Texto: lo que queda de paquete syslog al llenar la prioridad y la cabecera es el propio texto del mensaje. Éste incluirá información sobre el proceso que ha generado el aviso, normalmente al principio (en los primeros 32 caracteres) y acabado por un carácter no alfanumérico (como un espacio, ":" o "["). Después, viene el contenido real del mensaje, sin ningún carácter especial para marcar el final.
Requisitos para montar servidor de log gratuito con Rsyslog
Para montar un servidor de log con el estándar syslog usando el software gratuito Rsyslog necesitaremos un equipo (físico o virtual) con el sistema operativo GNU Linux, utilizaremos la distribución GNU Linux Ubuntu Server 12.01.
Además, necesitaremos un servidor web y una base de datos. En este
tutorial explicamos cómo guardar los log de Rsyslog en el motor de base
de datos MySQL Server y cómo consultarlos mediante LogAnalyzer vía web por lo que necesitaremos un servidor web con Apache y PHP.
En el siguiente tutorial explicamos cómo instalar el sistema operativo GNU Linux Ubuntu Server 12.01 en un equipo nuevo (virtual o físico) con el paquete LAMP que instala automáticamente Apache + PHP + MySQL:
Si ya tenemos el servidor con Linux en los siguientes tutoriales explicamos cómo instalar MySQL y Apache en Linux:- Cómo instalar MySQL Server en Linux y permitir conexiones remotas.
- Instalar y configurar MySQL Server 5 en Linux Suse 10.
- Instalar Linux Ubuntu Server 11 x64, Apache, MySQL, PostgreSQL, Tomcat, Webmin.
- Montar servidor web con Apache en Linux Debian 5 con MySQL y PHP.
Instalar Rsyslog en GNU Linux Ubuntu Server 12
A continuación vamos a explicar cómo instalar el servidor de log syslog gratuito Rsyslog en un equipo con Ubuntu Server 12, en primer lugar instalaremos la clave necesaria con el siguiente comando linux:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com AEF0CF8E
A continuación editaremos el fichero sources.list y añadiremos una línea nueva, para ello ejecutaremos el comando linux:
sudo nano /etc/apt/sources.list
Añadiremos las siguientes líneas al final del fichero:
deb http://ubuntu.adiscon.com/v7-devel precise/
deb-src http://ubuntu.adiscon.com/v7-devel precise/
Guardaremos los cambios pulsando Control + O y cerraremos la edición pulsando Control + X:
Actualizaremos el sistema y la lista de paquetes con el comando linux:
sudo apt-get update && sudo apt-get upgrade
Tras concluir la actualización instalaremos Rsyslog con el comando linux:
sudo apt-get install rsyslog
No solicitará confirmación para instalar, pulsaremos la tecla "s" e INTRO:
Ahora instalaremos el soporte de Rsyslog para bases de datos MySQL con el comando linux:
install rsyslog-mysql
El asistente para instalar el paquete nos preguntará
si queremos configurar la base de datos para rsyslog-mysql con
dbconfig-common, seleccionaremos "Sí" y pulsaremos INTRO:
Con el texto: Es necesario tener una base de datos instalada y configurada para rsyslog-mysql antes de poder utilizarlo. Puede gestionar esto opcionalmente a través de "dbconfig-common". Si ud. es un administrador de bases de datos avanzado o si la base de datos ya está instalada y configurada quizás quiera realizar esta configuración manualmente, y debería rechazar esta opción. Probablemente podrá encontrar los detalles de las operaciones que debe realizar en "/usr/share/doc/rsyslog-mysql".
Introduciremos la contraseña del superusuario root de MySQL Server, el paquete rsyslog-mysql deberá acceder a MySQL y crear un usuario, un catálogo y las tablas correspondientes:
Introduciremos ahora la contraseña para que rsyslog-mysql acceda al servidor de MySQL:
Confirmamos la contraseña:
El asistente creará los ficheros de configuración necesarios, el usuario, catálogo y tablas en MySQL:
Accediendo con MySQL Administrator, MySQL MySQL Workbench o cualquier software para acceder a MySQL como AjpdSoft Administración Bases de Datos podremos consultar el esquema creado por rsyslog-mysql "Syslog", las tablas "SystemEvents" y "SystemEventsProperties":
Y el usuario "rsyslog":
El systema Rsyslog ya habrá empezado a guardar los eventos de log en MySQL,
podremos consultarlos con MySQL Administrator pulsando sobre la tabla
"SystemEvents" con el botón derecho del ratón y seleccionando "Edit
Table Data":
Se abrirá MySQL Query Browser y mostrará los registros de log que Rsyslog ya ha guardado en la tabla:
CREATE TABLE `SystemEvents` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`CustomerID` bigint(20) DEFAULT NULL,
`ReceivedAt` datetime DEFAULT NULL,
`DeviceReportedTime` datetime DEFAULT NULL,
`Facility` smallint(6) DEFAULT NULL,
`Priority` smallint(6) DEFAULT NULL,
`FromHost` varchar(60) DEFAULT NULL,
`Message` text,
`NTSeverity` int(11) DEFAULT NULL,
`Importance` int(11) DEFAULT NULL,
`EventSource` varchar(60) DEFAULT NULL,
`EventUser` varchar(60) DEFAULT NULL,
`EventCategory` int(11) DEFAULT NULL,
`EventID` int(11) DEFAULT NULL,
`EventBinaryData` text,
`MaxAvailable` int(11) DEFAULT NULL,
`CurrUsage` int(11) DEFAULT NULL,
`MinUsage` int(11) DEFAULT NULL,
`MaxUsage` int(11) DEFAULT NULL,
`InfoUnitID` int(11) DEFAULT NULL,
`SysLogTag` varchar(60) DEFAULT NULL,
`EventLogType` varchar(60) DEFAULT NULL,
`GenericFileName` varchar(60) DEFAULT NULL,
`SystemID` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`) );
CREATE TABLE `SystemEventsProperties` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`SystemEventID` int(11) DEFAULT NULL,
`ParamName` varchar(255) DEFAULT NULL,
`ParamValue` text,
PRIMARY KEY (`ID`) );
De esta sencilla forma ya tendremos montado un
servidor de log syslog con Rsyslog sobre Linux de forma gratuita y
guardando los log en MySQL, por lo tanto podremos consultarlos desde
cualquier aplicación que permita acceso a MySQL o bien usar algún
software gratuito como LogAnalyzer.
Instalar LogAnalyzer para consulta vía web de los log de Rsyslog
Explicaremos ahora cómo instalar el sistema
LogAnalyzer en nuestro servidor de log syslog que nos permitirá
consultar vía web con un entorno amigable los eventos que Rsyslog
registre en MySQL. Para ello en primer lugar crearemos una carpeta para la descarga temporal del paquete comprimido con:
sudo mkdir /tmp/loganalyzer
Buscaremos en la web oficial de LogAnalyzer la última versión y anotaremos la URL de la descarga, para descargar el fichero comprimido desde la consola de Linux Ubuntu Server accederemos a la carpeta creada para la descarga con:
cd /tmp/loganalyzer
Y descargaremos el fichero con:
wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.3.tar.gz( cambiando la URL por la que corresponda a la versión actual)
Descomprimiremos el fichero descargado con el comando linux:
tar -xvf loganalyzer-3.6.3.tar.gz
Accederemos a la carpeta que se habrá creado al descomprimir con:
cd /tmp/loganalyzer/loganalyzer-3.6.3
Crearemos una subcarpeta dentro de la carpeta www de Apache de nuestro servidor web con:
sudo mkdir /var/www/loganalyzer
Ahora copiaremos el contenido de la carpeta "src" a la carpeta creada con:
sudo cp -R /tmp/loganalyzer/loganalyzer-3.6.3/src/* /var/www/loganalyzer
Repetiremos la operación para la carpeta "contrib":
sudo cp -R /tmp/loganalyzer/loganalyzer-3.6.3/contrib/* /var/www/loganalyzer
Estableceremos permisos de escritura para los ficheros configure.sh y secure.sh:
cd /var/www/loganalyzersudo chmod +x configure.sh secure.sh
Iniciaremos LogAnalyzer vía web desde cualquier PC de la red abriendo un navegador e introduciendo la URL:
http://192.168.31.156/loganalyzer(cambiaremos "192.168.31.156 por la IP de nuestro servidor syslog)
Se iniciará LogAnalyzer, en el primer inicio dará un
error al detectar que aún no ha sido configurado, pulsaremos en "here"
para instalar Adisco LogAnalyzer:
Con el texto: Critical Error occured. Error, main configuration file is missing! Click here to Install Adiscon LogAnalyzer!
Se iniciará el asistente para configurar e instalar definitivamente LogAnalyzer, pulsaremos "Next":
El fichero config.php debe ser escribible,
en el siguiente paso el asistente de instalación de LogAnalyzer lo
comprobará, de no serlo deberemos establecerle los permisos apropiados
con el comando linux chmod:
Introduciremos los datos de configuración, los importantes son:
- Enable User database: marcaremos "Yes".
- Database Host: IP o nombre DNS (hostname) del equipo servidor de syslog con MySQL.
- Database Port: puerto de la base de datos MySQL, por defecto 3306.
- Database Name: nombre del catálogo de MySQL que el asistente creará para LogAnalyzer, por ejemplo "loganalyzer".
- Table prefix: prefijo que se añadirá al nombre de las tablas, esto es últil si queremos usar un catálogo ya existente, así separaremos por nombre las tablas de otras existentes.
- Database User: usuario que se creará en la base de datos MySQL para uso de LogAnalyzer.
- Database Password: contraseña para el usuario anterior.
- Require user to be logged in: marcaremos "Yes".
- Authentication method: seleccionaremos "Internal authentication".
A continuación el asistente para instalar LogAnalyzer nos indicará que se van a crear las tablas en el catálogo de MySQL elegido, pulsaremos "Next":
Si el proceso es correcto nos indicará las tablas creadas, pulsaremos "Next":
Introduciremos ahora los datos del usuario que se creará para acceder a LogAnalyzer:
Introduciremos ahora los datos de la fuente,
LogAnalyzer permite analizar y consultar varios servidores de log con
syslog, por lo que ahora crearemos el acceso a nuestro servidor de
syslog con Rsyslog, para ello introduciremos los siguientes datos:
- Name of the Source: nombre del origen, por ejemplo "Log AjpdSoft", este nombre se usará para diferenciar varios servidores de log con syslog.
- Source Type: seleccionaremos "MYSQL Native".
- Select View: seleccionaremos "Syslog Fields".
- Table type: seleccionaremos "MonitorWare".
- Database Host: introduciremos la IP o nombre DNS de nuestro servidor con Rsyslog y MySQL.
- Database Name: introduciremos el nombre del catálogo que contiene las tablas de Rsyslog, por defecto "Syslog".
- Database Tablename: nombre de la tabla con los eventos de Rsyslog en MySQL, por defecto "SystemEvents".
- Database User: nombre de usuario de MySQL con permisos de acceso a las tablas de Rsyslog, por defecto "rsyslog".
- Database Password: contraseña del usuario anterior.
- Enable Row Counting: si vamos a tener un servidor de log con no demasiados eventos podremos marcar "Yes", si vamos a tener cientos de miles de eventos no es recomendable activar esta opción pues puede ralentizar el acceso.
De esta forma LogAnalyzer permite tener sus propias tablas alojadas en un servidor de MySQL diferente al de Rsyslog (o puede ser el mismo como en nuestro caso):
El proceso de instalación de LogAnalyzer habrá concluido:
Introduciendo la URL en un navegador:
http://192.168.31.156/loganalyzer(cambiaremos "192.168.31.156 por la IP de nuestro servidor syslog)
Nos solicitará usuario y contraseña, introducimos el elegido en el proceso de instalación y pulsamos en "Login":
Y ya tendremos acceso a la consulta avanzada de los log generamos por nuestro servidor de syslog con Rsyslog desde LogAnalyzer:
Anexo
- Si se produce el error: ERROR: At least one file or directory (or more) is not writeable, please check the file permissions (chmod 666)! al intentar instalar LogAnalyzer se deben revisar los permisos de la carpeta /var/www/loganalyzer, en concreto los de los ficheros configure.sh, secure.sh y config.php.
- Si se poduce algún error de falta de permisos para algún usuario de MySQL tal vez sea necesario asignarle permisos, una forma para hacerlo es desde la línea de comandos de Linux, con los comandos:
mysql -u root -p
grant all privileges on Syslog.* to 'rsyslog'@'%' with grant option;
Artículos relacionados
- Servidor web con Ubuntu Server 12 y LAMP Server Apache PHP MySQL.
- Instalar GNU Linux Ubuntu Server 9.04 virtualizado en VMware 2.0.
- Instalar Linux Ubuntu Server 11 x64, Apache, MySQL, PostgreSQL, Tomcat, Webmin.
- Instalar Linux Ubuntu Server 8.04.1.
- Instalar Linux Ubuntu Server 8.04.1.
- Cómo instalar MySQL Server en Linux y permitir conexiones remotas.
- Instalar y configurar MySQL Server 5 en Linux Suse 10.
- Montar servidor web con Apache en Linux Debian 5 con MySQL y PHP.
- Instalar GNU Linux Ubuntu 9.10 virtualizado con Sun VirtualBox 3.0.12.
- Montar servidor proxy caché con filtrado web en Linux Ubuntu 9.10 con Squid.
- Sistemas Operativos: Montar un servidor de correo electrónico mail en Linux Ubuntu.
- Cómo instalar y configuar SSH en Linux Ubuntu con OpenSSH.
- Instalar Samba y Swat, compartir carpeta en Linux Ubuntu.
- AjpdSoft Servidor Proxy.
- AjpdSoft Información de fichero - Código Fuente Delphi.
- Utilizar un PC con Windows XP y conexión a Internet como servidor proxy.
- Instalar GNU Linux Ubuntu Desktop 9.04 en un equipo con Windows Server 2003.
- Instalar GNU Linux Fedora 10 Edición Escritorio.
- Comandos básicos para GNU Linux y ejemplos de utilización.
- Los atributos de un archivo en Windows sólo lectura, oculto, cifrado, sistema.
- URL.
- Mozilla Firefox.
- IP.
- LAN.
- UDP.
- TCP.
- SSL.
- DNS.
Créditos
Artículo realizado íntegramente por Alonsojpd, miembro del Proyecto AjpdSoft.
No hay comentarios:
Publicar un comentario