Vous êtes sur la page 1sur 9

Manual de Procedimiento de instalación de Graylog3.

0 @ CentOS7
Versión: 0.1.3

Fecha de la versión: 2019-05-14

Creado por: Paul Bernal

Aprobado por:

Nivel de confidencialidad: [TLP:WHITE]

Historial de modificaciones
Fecha Versión Creada por Descripción de la modificación

2019-05-14 0.1.3 Paul Bernal Versión inicial del documento


Esta guía está basada en la documentación oficial1 de Graylog, pero ha sido adaptada para usar la paquetería oficial de la
distribución con el fin de poder mejorar, la estabilidad, seguridad, rendimiento y mantenibilidad de la plataforma.

Prerrequisitos
Seteamos el nombre del equipo como es debido:
# hostnamectl set-hostname ​graylog.local

Y actualizamos todo el sistema:


# yum -y update

Se le deshabilita el SELinux y el firewall (luego podremos reactivar el firewall):


# sed -i -- 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# systemctl stop firewalld
# systemctl disable firewalld

Reiniciar el equipo para que tome los cambios (especialmente el SELinux y un posible nuevo kernel resultado de la actualización):
# reboot

Instalar el software necesario


Instalar el repositorio de EPEL y herramientas varias (los paquetes resaltados son opcionales):
# yum -y install epel-release vim java-1.8.0-openjdk java-1.8.0-openjdk-headless wget ​ screen net-tools rsync

Instalar OpenJDK, MongoDB y Elasticsearch (y sus dependencias). Esto instala todo lo necesario a través de la paquetería oficial de
CentOS y/o Fedora/EPEL.

Elasticsearch
Para esta versión de Graylog se requiere una versión más moderna que la que viene con el OS, por lo que hay que poner el repositorio
oficial de Elasticsearch2:

1
​Ref: ​http://docs.graylog.org/en/3.0/pages/installation/os/centos.html
2
​Ref: ​https://www.elastic.co/guide/en/elasticsearch/reference/6.0/rpm.html#rpm
# vim /etc/yum.repos.d/elasticsearch.repo

Agregar el siguiente contenido:


[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/oss-6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Instalamos la llave pública del repo y el elasticsearch:


# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
# yum -y install elasticsearch-oss pwgen

Config del motor de Elasticsearch


Editamos el archivo de configuración de elasticsearch
# vim /etc/elasticsearch/elasticsearch.yml

Descomentamos y modificamos la línea donde se declara el nombre del cluster, para que se vea así:
cluster.name: ​logger

Habilitamos y arrancamos el servicio de Elasticsearch:


# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

MongoDB
Estos paquetes los podemos instalar directamente de los repos oficiales del OS
# yum -y install mongodb-server
No se requiere reconfigurar, sólo habilitar y arrancar el servicio del MongoDB:
# systemctl enable mongod
# systemctl start mongod

Graylog
Lo primero será instalar el repositorio de la versión actual de Graylog y con eso podemos instalar ya el servidor Graylog:
# yum -y install https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm
# yum -y install graylog-server

Necesitamos generar una clave para randomizar las contraseñas y que configuraremos en la directiva ​password_secret​:
# pwgen -N 1 -s 96

Necesitamos generar el hash del usuario admin y que que configuraremos en la directiva ​root_password_sha2​:
# echo -n '​Gr4y10gP4sswd​' | sha256sum

Editar el archivo de configuración del servidor Graylog:


# vim /etc/graylog/server/server.conf

Y le agregamos los valores generados anteriormente en las respectivas directivas:


...
password_secret = ​p4L9KS2l ... HJFr7cKP
...
root_password_sha2 = ​281933e5 ... 151bbf0d
...
root_timezone = ​America/Guayaquil

Por defecto el sistema atiende únicamente por la interface loopback (127.0.0.1), por lo que hay que ajustar este valor para que
escuche por la IP externa:
...
http_bind_address = ​MiDirecciónIP​:9000

Finalmente habilitamos y arrancamos el servicio:


# systemctl enable graylog-server
# systemctl start graylog-server

De esta manera, Graylog queda instalado y funcionando sobre el puerto 9000 y puede ser visualizado en un navegador:

Aseguramiento/Redireccionamiento con FirewallD


Ya que todo funciona adecuadamente re-habilitamos el firewall del equipo y le abrimos el servicio de HTTPs:
# systemctl enable firewalld
# systemctl start firewalld

# firewall-cmd --add-port=9000/tcp --permanent


# firewall-cmd --reload

NOTA: ​Para cada input creado en Graylog, será necesario abrir el puerto/protocolo respectivos en el firewall. El ​input​ más básico
será crear uno por UDP para atender por el 15143 pero que será direccionado por el 514 que es el estándar para rsyslog:
# firewall-cmd --add-masquerade --permanent
# firewall-cmd --add-forward-port=port=514:proto=udp:toport=1514 --permanent
# firewall-cmd --reload

3
​Una instalación convencional no permitirá que se abran puertos menores de 1024, por lo que en lugar de abrir el ​input​ por el 514, lo hacemos por el 1514.
Anexo 1:

NGINX como proxy reverso para HTTP(puerto 80)


De esta forma podemos lograr el objetivo de que graylog sea atendido por un puerto tradicional que es el 80. Para lo cual primero
instalamos el nginx:
# yum -y install nginx

Editamos el archivo de configuración principal de NGINX:


# vim /etc/nginx/nginx.conf

Y editamos la configuración del servidor por defecto, modificando y agregando las secciones resaltadas:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name ​MiDirecciónIP​;
root /usr/share/nginx/html;

# Load configuration files for the default server block.


include /etc/nginx/default.d/*.conf;

location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Graylog-Server-URL http://$server_name;
proxy_pass http://127.0.0.1:9000;
}
...
...
}
NOTA: ​Si el equipo tiene asociado un nombre de host, podría ponerse éste en lugar de ​MiDirecciónIP​ en la directiva ​server_name​. Por
ejemplo, si mi dirección IP es ​1.2.3.4​ y tengo asociado el nombre ​graylog.local​ hacia ésta IP, podría poner éste nombre en lugar de la
IP.
Abrimos el servicio HTTP (puerto 80) en el firewall y cerramos el 9000 que habíamos abierto antes:
# firewall-cmd --add-service http --permanent
# firewall-cmd --remove-port=9000/tcp --permanent
# firewall-cmd --reload

Dado que le indicamos a NGINX que haga de proxy reverso para Graylog pero por localhost, reconfiguramos
/etc/graylog/server/server.conf​ para que vuelva a escuchar únicamente por 127.0.0.1:
...
http_bind_address = ​127.0.0.1​:9000

Finalmente habilitamos y arrancamos el NGINX y reiniciamos Graylog para que todo funcione adecuadamente:
# systemctl enable nginx
# systemctl start nginx
# systemctl restart graylog-server

Graylog ahora debería verse normalmente a través de simplemente: ​http://​MiDirecciónIP​/​ (por el puerto 80 y no el 9000)
Anexo 2:

NGINX como proxy reverso para HTTPS


Asumiendo que se siguió el procedimiento del Anexo 1, creamos el archivo de configuración de HTTPS:
# vim /etc/nginx/conf.d/graylog.conf

Para lo cual necesitaremos disponer de los archivos del certificado digital para el servidor, en el ejemplo, se asume que el
certificado se generó para el nombre graylog.local, que es el que se indica en server_name:
server
{
listen 443 ssl http2;
server_name ​graylog.local​;
# <- your SSL Settings here!
ssl_certificate ​/etc/pki/tls/certs/local.crt​;
ssl_certificate_key ​/etc/pki/tls/private/local.key​;

location /
{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Graylog-Server-URL https://$server_name;
proxy_pass ​http://127.0.0.1:9000​;
}
}

Creamos el archivo que redirecciona todo el tráfico del servidor por defecto (anexo 1), hacia HTTPS:
# vim /etc/nginx/default.d/send2https.conf

y le agregamos el siguiente contenido:


return 301 https://$host$request_uri;
Nota:​ Podríamos revertir completamente todo lo modificado en /etc/nginx/nginx.conf, aunque es opcional, no es una mala idea.
Finalmente reiniciamos el servicio:
# systemctl restart nginx

Graylog ahora debería verse normalmente a través HTTPS con: ​https://​graylog.local​/ ​y debería redireccionarse todo tráfico que se pida
por ​http​ hacia ​https​.

Vous aimerez peut-être aussi