Como montar un servidor centralizado de logs con interfaz web

A veces por cuestiones de seguridad necesitamos guardar logs y podemos llegar a tenerlos desperdigados por un montón de servidores.

Una opción sería intentar centralizar el máximo de logs posibles en un servidor.

Hay diferentes opciones. Voy a explicar como montar un Syslog server con Syslog-NG y poder acceder a el vía web.

Este tutorial está basado en el de la siguiente URL con algunas modificaciones.

El servidor lo montaremos bajo Ubuntu Server 10.04.1. Cabe decir, que como servidor de logs, será necesario tener bastante espacio para almacenar.

Cuando estemos en el menú de instalación escogeremos la opción «Instalar un sistema mínimo». Seguiremos el asistente hasta finalizar la instalación.  A medida que necesitemos más opciones las instalaremos a medida que vayamos siguiendo el tutorial.

Configuración del servidor:

  • Asignaremos un nombre a nuestro servidor «websyslog»
  • Seleccionaremos nuestra zona horaria.
  • Realizaremos las particiones oportunas de nuestros discos.
  • Configuramos la cuenta de usuario.
  • Ciframos o no la cuenta de usuario.
  • Configuramos nuestro proxy si lo tenemos.
  • Escogemos «Sin actualizaciones automáticas».
  • En selección de programas escogeremos si queremos como mucho «OpenSSH server» por si queremos acceder remotamente por terminal.
  • Configuramos GRUB.
  • Finalizamos la instalación.

Una vez instalado comprobamos que tenemos red y si hemos instalado OpenSSH Server comprobamos que podemos acceder correctamente.

login as: manager
manager@192.168.2.6’s password:
Linux websyslog 2.6.32-24-generic-pae #39-Ubuntu SMP Wed Jul 28 07:39:26 UTC 2010 i686 GNU/Linux
Ubuntu 10.04.1 LTS


Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
Last login: Wed Aug 18 13:24:17 2010 from pcs11.mired.intranet
To run a command as administrator (user «root»), use «sudo «.
See «man sudo_root» for details.


manager@websyslog:~$

El siguiente paso será asignarle una IP fija, ya que por defecto se configura por DHCP.

  • sudo nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).


# The loopback network interface
auto lo
iface lo inet loopback


# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.17
netmask 255.255.255.0
gateway 192.168.1.1

Si lo requerimos también podemos asignar DNS’ editando en /etc/resolv.conf

Una vez realizado estos cambios reiniciaremos la interfaz de red.

  • sudo /etc/init.d/networking restart

Volvemos a conectarnos. Antes de proseguir vamos a actualizar nuestro servidor con las últimas actualizaciones.

  • sudo apt-get update
  • sudo apt-get upgrade

Instalaremos el siguiente componente.

  • sudo apt-get install build-essential

Una vez ya tenemos lista la base de nuestro servidor empezaremos ya a instalar Syslog-NG y PHPSyslog-NG y el resto de paquetes que necesitaremos.

  • sudo apt-get install syslog-ng
  • sudo nano /etc/syslog-ng/syslog-ng.conf

Buscar las siguientes linea y sustituirla:

#Disable statistic log messages.
stats_freq(0);

Reemplazar por:

#Enable statistic log messages.
stats_freq(43200);

Buscar las siguientes linea y sustituirla:

# (this is equivalent to the «-r» syslogd flag)
# udp();

Reemplazar por:

# (this is equivalent to the «-r» syslogd flag)
udp();

Buscar las siguientes linea y sustituirla:

# enable or disable DNS usage
# syslog-ng blocks on DNS queries, so enabling DNS may lead to
# a Denial of Service attack
# (default is yes)
use_dns(no);

Reemplazar por:

# enable or disable DNS usage
# syslog-ng blocks on DNS queries, so enabling DNS may lead to
# a Denial of Service attack
# (default is yes)
use_dns(yes);
dns_cache(yes);

  • sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli
  • sudo apt-get install mysql-server mysql-client php5-mysql

Nos solicitará el password de root de MySQL. La introducimos.

  • sudo apt-get install php5-gd
  • sudo apt-get install libice6
  • sudo apt-get install msttcorefonts

Una vez instalados todos estos paquetes conectamos al MySQL para comprobar que correctamente se ha instalado bien.

  • mysql -u root -p

mysql> status

————–
mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (i486) using readline 6.1
Connection id: 43
SSL: Not in use
Current pager: stdout
Using outfile: »
Using delimiter: ;
Server version: 5.1.41-3ubuntu12.6 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: latin1
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 9 min 7 sec
Threads: 1 Questions: 318 Slow queries: 0 Opens: 263 Flush tables: 1 Open tables: 23 Queries per second avg: 0.581
————–

Si conectamos vía web a la IP de nuestro servidor [http://192.168.1.17], también debería cargarnos la página web por defecto de Apache.
 

It works!




This is the default web page for this server.
The web server software is running but no content has been added, yet.

El siguiente paso será instalar PHP-Syslog-NG.

Se descargará el paquete solicitado. Cabe recordar, que el paquete en cuestión es la versión actual en la elaboración de este tutorial. Puede variar dependiendo de cuando sea consultado.

  • sudo tar xzvf php-syslog-ng-2.9.8.tgz
  • sudo rm php-syslog-ng-2.9.8.tgz
  • cd php-syslog-ng/
  • sudo cp -r * /var/www/
  • sudo rm -dfr php-syslog-ng
  • sudo chmod 777 html/config/
  • sudo chmod 777 html/jpcache/

Una vez realizado los pasos realizados hasta ahora, editaremos el archivo php.ini.

  • sudo nano /etc/php5/apache2/php.ini

Buscar las siguientes linea y cambiar los parametros:

  • max_execution_time cambiarlo 300
  • memory_limit cambiarlo a 128MB

Crearemos el siguiente directorio:

  • sudo mkdir -p /var/log/php-syslog-ng

Editaremos la entrada de Virtual Host de Apache

  • cd /etc/apache2/sites-available
  • sudo nano php-syslog-ng

Este podría ser el contenido de nuestro archivo. Aunque podemos midificarlo a nuestro gusto.


ServerName websyslog.midominio.intranet
ServerAdmin e-mail@miservidor.com

DocumentRoot /var/www/html/

Options FollowSymLinks
AllowOverride All

# pcw No directory listings
# Options Indexes FollowSymLinks MultiViews
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

ErrorLog /var/log/apache2/php-syslog-ng-error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/php-syslog-ng-access.log combined
ServerSignature On

Guardamos la configuración y ejecutamos los siguientes comandos. Esta configuración es para solo usarlo con 1 host. Si tenemos otros deberemos agregarlos al archivo default y configurarlo tal cual.

  • sudo cp default default.bak
  • sudo cp php-syslog-ng default
  • sudo a2ensite php-syslog-ng
  • sudo invoke-rc.d apache2 reload

Una vez finalizado todo esto, podemos ir a nuestro navegador y tal como le hemos dicho en el fichero de configuración se accederá a través de http://192.168.1.17/html/
 
Debería cargarnos correctamente algo como la pantalla siguiente.

 

Vemos que en la pantalla inicial el archivo config.php está solo en modo lectura.

Para cambiarlo ejecutaremos el siguiente comando

  • sudo chmod 777 /var/www/html/config/config.php

Le daremos a la tecla F5 para ver que efectivamente ya da como disponible.

  • A partir de aquí empezaremos la instalación vía web con el boton «Next». (*Me he encontrado que a veces con Internet Explorer 8 puede dar problemas. Mejor utilizar otro navegador).
  • Aceptamos la licencia y «Next».
  • La siguiente pantalla nos solicitará los datos para la base de datos. Solo deberemos introducir el password de MySQL, el resto podemos dejarlo tal cual si lo deseamos y «Next».
  • Nos solicitará el nombre de nuestro Site, introducimos «WebSysLog Server» por ejemplo y «Next».
  • Confirmamos las rutas y el password de administrador y «Next».
  • Nos indicará que una vez finalizada la instalación eliminemos de nuestro servidor web el directorio «Install». Luego le damos al botón «Install CEMDB».
  • Nos cargará otra pantalla. Le damos a «Start Import of CEMDB data into syslog at localhost».
  • Nos cargará otra pantalla con una tabla. Una vez salga el mensaje «Congratulations: End of file reached, assuming OK» podemos darle a «Continue…»
  • Eliminamos la carpeta «install» de /var/www/html/install

Accedemos nuevamente a http://192.168.1.17/ y debería aparecernos una pantalla como la siguiente.

Introducimos nuestro Login/Password que pusimos en los últimos pasos de la configuración y si todo ha ido correcto debería aparecernos un Panel de Control como el de la captura siguiente.