Como instalar Graylog 2.0 en CentOS 7 y recolectar Logs de Windows

graylog-julio-barnils

Empecemos por el principio, Que es Graylog?

Graylog es un sistema basado en Java (y Open Source) de administración de logs, recolecta mensajes de log que son enviados desde múltiples fuentes (dispositivos, sistemas operativos, aplicaciones) vía syslog y GELF, de manera de poder luego analizarlos en forma centralizada.

Graylog esta conformado por tres partes:

  • Elasticsearch: se utiliza para almacenar todos los mensajes, cumple la funcion de buscador de texto.
  • MongoDB: se lo usa para «taggear» los logs, almacenar streams, alertas, configuraciones y metadata.
  • El servidor de Graylog: quien recibe y procesa los mensajes, a su vez se comunica con el resto de los componentes.

Instalar y configurar los requisitos:

Java 8

Elasticsearch necesita al menos Java 7, de acuerdo a su documentacion es recomendable usar la version 1.8.0_73 del JDK de Oracle.

Descargamos el RPM a una carpeta temporal (por ejemplo /tmp):

wget –no-check-certificate –no-cookies –header «Cookie: oraclelicense=accept-securebackup-cookie» http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm

Instalamos el repositorio descargado:

sudo yum localinstall jdk-8u73-linux-x64.rpm

Verificamos la instalacion:

# java -version

java version «1.8.0_73»
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)


MongoDB 3.2

MongoDB es una base de datos orientada a documentos.

Vamos a crear un archivo  .repo de MongoDB asi podemos instalarlo usando yum:

vi  /etc/yum.repos.d/mongodb-org-3.2.repo

Cargaremos el siguiente contenido dentro del archivo:

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

Procederemos ahora si a la instalacion de MongoDB:

sudo yum install -y mongodb-org

Nos resta iniciar el servicio y en caso de tener SELinux habilitado instalar y habilitar el inicio de MongoDB:

systemctl start mongod

yum -y install policycoreutils-python

semanage port -a -t mongod_port_t -p tcp 27017


Elasticsearch 2.3

Para poder instalar Elasticsearch usando el repositorio oficial deberemos descargar e instalar la llave publica:

Instalar la llave:

rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch

Crear y agregar el siguiente contenido en nuestra carpeta  /etc/yum.repos.d/

vi /etc/yum.repos.d/elasticsearch.repo

Ingresar en el archivo recién creado:

[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=https://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

Instalar el software:

yum install elasticsearch

Por ultimo configurar el inicio automatico de Elasticsearch al iniciar el sistema operativo:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service


Configurar Elasticsearch 2.3

Abrir el archivo de configuración de Elasticsearch:

vi /etc/elasticsearch/elasticsearch.yml

Cambiaremos el nombre del cluster. Necesitamos informarle a Graylog a que cluster de Elasticsearch debe unirse:

cluster.name: graylog

También necesitamos cambiar el modo de discovery a unicast en vez de multicast:

discovery.zen.ping.multicast.enabled: false

Aprovechemos para evitar posibles ejecuciones de codigo remotas agregando:

script.inline: false
script.indexed: false
script.file: false

Por ultimo reiniciaremos el servidor de Elasticsearch y nos aseguraremos de que este corriendo correctamente, ya que debería estar escuchando en el puerto 9200 tendríamos que obtener un mensaje diciendo que el servicio de cluster esta en verde:

systemctl restart elasticsearch.server
curl -X GET http://localhost:9200
curl -X GET ‘http://localhost:9200/_cluster/health?pretty=true’

 


Instalar y configurar Graylog 2.0

Descargaremos el ultimo repositorio de Graylog y lo instalaremos con yum:

sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-2.0-repository_latest.rpm

sudo yum install graylog-server

Una vez finalizada la instalación, iniciaremos Graylog corriendo el siguiente comando y configuraremos para iniciar automáticamente en cada booteo:

sudo systemctl start graylog-server
sudo systemctl enable graylog-server

Instalaremos pwgen que nos permitira generar el secret:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install pwgen -y

Generaremos nuestro nuevo secret:

pwgen -N 1 -s 96

Procederemos a configurar Graylog, para esto editaremos su archivo de configuración:

vi /etc/graylog/server/server.conf

Ingresaremos nuestro secret en la linea:

password_secret =

A continuación tenemos que generar un hash de la contraseña del usuario root, usaremos esta contraseña para loguearnos a la interfaz web:

echo -n lacontraseñadelroot | sha256sum

Pondremos el hash resultante en el campo:

root_password_sha2 =

Ingresaremos el valor para los Shards (el valor depende de la cantidad de nodos de Elasticsearch que tengamos, si vamos a usar uno solo pondremos 1):

elasticsearch_shards = 1

Configuramos la API REST y la interfaz web del Graylog para que puedan conectarse con nuestro servidor de Graylog:

rest_listen_uri = http://la-ip-de-tu-servidor:12900/
rest_transport_uri = http://la-ip-de-tu-servidor:12900/
web_listen_uri = http://la-ip-de-tu-servidor:9000/

Por ultimo abrimos el puerto en el firewall:

firewall-cmd –permanent –zone=public –add-port=9000/tcp
firewall-cmd –reload


Recolectar logs usando Graylog Collector Sidecar y NXLog:

Graylog Collector Sidecar es una aplicacion muy liviana que supervisa varios colectores de logs. Le permite al usuario centralizar la configuracion de colectores de logs remotos. Podemos realizar la configuracion a traves de la interfaz web de Graylog.

sidecar-nxlog

Instalar y configurar Graylog Collector Sidecar

 

Descargaremos la ultima versión desde:

https://github.com/Graylog2/collector-sidecar/releases

Una vez instalado, vamos a registrar e iniciar el servicio de Graylog Collector Service utilizando los comandos:

 

«C:\Program Files (x86)\graylog\collector-sidecar\graylog-collector-sidecar.exe» -service install

«C:\Program Files (x86)\graylog\collector-sidecar\graylog-collector-sidecar.exe» -service start

nxlog-2

Editaremos el archivo de configuracion del Graylog Collector Sidecar con notepad:

C:\Program Files (x86)\graylog\collector-sidecar\collector_sidecar.yml

Lo unico que debemos hacer es cambiar la URL del servidor apuntándola hacia nuestro servidor de graylog:

server_url: http://la-ip-de-tu-servidor:12900

En caso de no existir el archivo C:\Program Files (x86)\graylog\collector-sidecar\generated\nxlog.conf lo crearemos a mano, dentro del mismo pondremos:

define ROOT C:\Program Files (x86)\nxlog
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log
<Extension gelf>
Module xm_gelf
</Extension>
<Input in>
# Use ’im_mseventlog’ for Windows XP, 2000 and 2003
Module im_msvistalog
# Uncomment the following to collect specific event logs only
Query <QueryList>\
<Query Id=»0″>\
<Select Path=»System»>*</Select>\
<Select Path=»Application»>*</Select>\
</Query>\
</QueryList>
</Input>
<Output out>
Module om_udp
Host your-graylog-ip
Port 12201
OutputType GELF
</Output>
<Route r>
Path in => out
</Route>


Agregando una nueva entrada a nuestro Graylog

Para que nuestro servidor de Graylog pueda recibir mensajes y logs de nuestros dispositivos, debemos agregar una nueva «fuente» usando la interfaz web.

  1. Ingresaremos a la interfaz Web de nuestro Graylog utilizando: http://la-ip-de-tu-servidor:9000/
  2. Hacer un clic sobre System/Inputs y elegir Inputs
  3. Elegir GELF UDP y luego hacer un clic sobre Launch New Input
  4. Nos aparecerá un popup, ingresaremos un titulo que haga referencia a nuestra fuente, y elegiremos «Bind address to be the IP of the Graylog machine».

Agregando un Stream al Graylog

Usaremos Streams como una manera de categorizar eventos. Al utilizar la funcion de Streams podremos asignar un TAG a nuestros logs, lo que nos permitira buscarlos rapidamente cuando haga falta.

  1. Hacer un clic sobre Streams
  2. Elegir Create Stream
  3. Le asignaremos un Titulo y Descripción relevantes y presionaremos sobre Save
  4. En el nuevo Stream creado presionaremos sobre «Edit Rules»
  5. Hacer un clic sobre «Add Stream Rule»
  6. En el campo Field ingresaremos «source» de manera de poder filtrar los streams en base a la fuente de mensajes.
  7. En el campo «Type» elegiremos «match regular expression»
  8. En el campo Value ingresaremos: «MSGLOG.*»
  9. Por ultimo haremos un clic sobre «I’m done» y luego sobre «Start the Stream»

Deja un comentario