Académique Documents
Professionnel Documents
Culture Documents
0 @ CentOS7
Versión: 0.1.3
Aprobado por:
Historial de modificaciones
Fecha Versión Creada por Descripción de la modificación
Prerrequisitos
Seteamos el nombre del equipo como es debido:
# hostnamectl set-hostname graylog.local
Reiniciar el equipo para que tome los cambios (especialmente el SELinux y un posible nuevo kernel resultado de la actualización):
# reboot
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
Descomentamos y modificamos la línea donde se declara el nombre del cluster, para que se vea así:
cluster.name: logger
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
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
De esta manera, Graylog queda instalado y funcionando sobre el puerto 9000 y puede ser visualizado en un navegador:
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:
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;
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:
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
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.