Control de registros con Graylog en Debian 10

Continuamos hablando de sistemas de detección de intrusos o IDS, en este caso la estrella de hoy es la Graylog, un panel web, que nos permitirá revisar y controlar los registros generados por Snort y procesados por Barnyard2

¿Qué es Graylog y para qué sirve?

Se trata de una herramienta de gestión de registros libre, ya que utiliza una licencia GPL v3.0 en su versión comunitaria y que sigue la filosofía de desarrollo del código abierto u open source. Debajo del capó nos encontramos con tecnologías como Java, Elasticsearch o MongoDB.

Graylog tiene como objetivo principal recopilar, indexar y analizar cualquier registro del servidor desde una ubicación centralizada o distribuida. En el caso de esta entrada lo instalaremos en el mismo servidor virtual, justo al resto de herramientas que he comentado en el primero párrafo.

Permite monitorear fácilmente cualquier actividad inusual para depurar aplicaciones y registros. Además propociona un potente lenguaje de consulta, capacidades de alerta, canalización de procesamiento de datos, entre otras funcionalidades. Se pueden extender sus funcionales a través de una API REST y el uso de complementos.

Instalación de Graylog en Debian 10

Para la entrada vamos a seguir utilizando la máquina virtual que tengo en mi equipo con Debian 10. Para que todo funcione correctamente este host tiene que tener unos requisitos mínimos o deseables. Básicamente que el equipo tengo más de 20 GB de espacio disponible en el disco, 4 GB de memoria y 2 cores de CPU

Añadir los repositorio de Backports

Empezamos añadiendo los repositorios «backports» en el sistema, que son los que utilizaremos para realizar la instalación:

sudo vi /etc/apt/sources.list

Y añadimos:

deb http://ftp.debian.org/debian/ buster main contrib non-free
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb http://ftp.debian.org/debian/ buster-updates main contrib non-free
deb http://ftp.debian.org/debian buster-backports main contrib non-free

Guardamos y salimos.

Actualizamos:

sudo apt update
sudo apt dist-upgrade
Instalar Java JDK

Tanto Graylog como Elasticsearch son aplicaciones basadas en Java. Por lo que lo tendremos que instalar en el sistema. De forma predeterminada, la última versión de Java ya se encuentra en los repositorios principales de Debian 10. Lo podemos instalar así:

sudo apt -y install apt-transport-https default-jdk
Añadir herramientas adicionales

Para seguir con la instalación debemos añadir una serie de herramientas adicionales, que probablemente ya tendemos disponibles, pero si no fuera así:

sudo apt -y install gnupg wget
Instalar MongoDB

De MongoDB ya he hablado en la web alguna vez. Por defecto no viene disponible en los repositorios de la distribución, por lo que debemos añadir los siguientes repositorios:

sudo su -
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 4B7C549A058F8B6B
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" \
| tee /etc/apt/sources.list.d/latest-mongodb.list
exit

Actualizamos e instalamos:

sudo apt update
sudo apt -y install mongodb-org

Una vez hecho esto arrancamos el servicio y lo añadimos al inicio:

sudo systemctl enable mongod.service
sudo systemctl start mongod.service
Instalar Elasticsearch-OSS

A fecha de esta entrada Graylog 3.3 no soporta Elasticsearch 7.x por lo que trabajaremos con la versión anterior. Al igual que hemos hecho con anterioridad, vamos a habilitar los repositorios necesarios, para tener disponible esta herramienta y así poder instalarla.

sudo su -
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
echo "deb https://artifacts.elastic.co/packages/oss-6.x/apt stable main" \
| tee -a /etc/apt/sources.list.d/latest-elastic-6.x.list
exit

Actualizamos e instalamos:

sudo apt -y update
sudo apt -y install elasticsearch-oss

Asignamos un nombre al clúster de Elasticsearch

sudo sed -i "s/#cluster.name: my-application/cluster.name: graylog-app/g" \
/etc/elasticsearch/elasticsearch.yml

Habilitamos el servicio al inicio y lo arrancamos:

sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Instalar Graylog

En esta parte simplemente debemos descargarla versión 3.3 del producto y su llave.

sudo su -
cd /tmp/
wget https://packages.graylog2.org/repo/packages/graylog-3.3-repository_latest.deb
dpkg -i graylog-3.3-repository_latest.deb
apt -y update
exit

Ahora sí instalamos:

sudo apt -y install graylog-server

De momento no encendemos el servicio y no lo añadimos al inicio, ya qu primero lo hemos de configurar.

Configurar Graylog

Ahora vamos a crear un hash para la contraseña que después vamos a utilizar para acceder a la herramienta, vía web:

echo 'contrasea' | tr -d '\n' | sha256sum | cut -d" " -f1
# Con el resultado
750b3435ee4f96c4e8e33b43a0c485fda1f06581335421b301f937f0dc3668db

Y añadimos el código resultante al fichero de configuración:

sudo su -
sed -i \
"s/^root_password_sha2 =\$/root_password_sha2 = -hash-obtenido- /g" \
/etc/graylog/server/server.conf

Y añadimos el código secreto, el que nosotros queramos, eso sí, que por lo menos tenga 16 carácteres.

sed -i "s/^password_secret =\$/password_secret = AzulRojoAmarilloSecreto/g" /etc/graylog/server/server.conf

Habilitamos el acceso desde un host externo:

sed -i "s/^#http_bind_address = 127.0.0.1:9000/http_bind_address = 0.0.0.0:9000/g" \
/etc/graylog/server/server.conf

Cambiamos la zona horaria:

sed -i "s/#root_timezone = UTC/root_timezone = Europe\/Madrid/g" \
/etc/graylog/server/server.conf
exit

Añadimos el servicio al inicio y encendemos:

sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service

Si todo ha ido bien, ya veremos la java escuchando por el puerto 9000:

davidochobits@servdebian:~$ sudo lsof -i :9000
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    8924 graylog   49u  IPv6  34677      0t0  TCP *:9000 (LISTEN)
Accediendo al panel web

Para acceder a la plataforma debemos ir a nuestro navegador web favorito e indicar la IP o URL del host más el puerto 9000, con el resultado, en mi caso:

Acceso por primera vez a Graylog, con el usuario «admin»

Con una vista similar a la siguiente, una vez hemos accedido:

Primer vistazo al panel web de Graylog

Ahora nos falta configurarlo para poder ver la información que nos interese, pero eso será en la siguiente entrada. ¡Estad atentos!

Fuentes consultadas:

Web oficial de Graylog

Howtheforge.com – How to Monitor Log Files with Graylog v3.1 on Debian 10