HLab

Julien Hautefeuille

Graylog sur serveur Ubuntu 16.04 LTS

Il est parfois nécessaire de surveiller les logs de votre serveur Rsyslog qu’il soit local ou distant.

Graylog offre une interface de création de requêtes de recherche dans vos fichiers de logs et permet de créer des tableaux de bord facilement.

Graylog s’appuie sur le moteur d’indexation Elasticsearch.

Ce mémo permet de configurer Graylog pour une recherche dans les fichiers de logs locaux.

La configuration du firewall s’appuie sur l’utilisation de Firehol.

Données techniques

$IP_PUBLIQUE => adresse ip publique de votre serveur Graylog

Prérequis

sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen

Confguration du firewall (Firehol)

version 6

interface enp0s20f0 inet
        protection strong
        server custom graylog tcp/9000 default accept
        server "ssh"
        client all accept

Installation MongoDB

sudo apt-get install mongodb-server

Installation Elasticsearch

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
sudo apt-get update && sudo apt-get install elasticsearch

On modifie le fichier de configuration de Elasticsearch /etc/elasticsearch/elasticsearch.yml en ajoutant :

cluster.name: graylog

On redémarre le démon ElasticSearch :

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

Graylog

wget https://packages.graylog2.org/repo/packages/graylog-2.1-repository_latest.deb
sudo dpkg -i graylog-2.1-repository_latest.deb
sudo apt-get update && sudo apt-get install graylog-server

On modifie le fichier de configuration /etc/graylog/server/server.conf :

password_secret = 124ZEdrfrgFJDc7Km64peWrY9FVFoJkXR6EdfpLoqfq29meaRCZcZiLkh1H7oPWBMtB2VcZ47DKKxNIOgiVXeLm6qKjtbIvg
root_password_sha2 = 02f0a1b05cc90db65311050c9a4edb4d6a9a81e56080968e8d46c10e310e807f
rest_listen_uri = http://$IP_PUBLIQUE:9000/api/
web_listen_uri = http://$IP_PUBLIQUE:9000/

Le password_secret se génère avec la commande commande pwgen -N 1 -s 96.

Le root_password_sha2 se génère avec la commande echo -n motdepasse | shasum -a 256

On configure pour un démarrage automatique au boot :

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

Configuration Rsyslog

Créer le fichier /etc/rsyslog.d/90-graylog2.conf :

$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @127.0.0.1:12000;GRAYLOGRFC5424

On envoie les fichiers de logs vers le port 12000 sur l’interface locale. Graylog sera configuré pour écouter sur ce port (dans les paramètres input de Graylog).

On redémarre le serveur :

sudo systemctl restart rsyslog

Redirection des logs Apache vers Graylog

Éditez et ajoutez au fichier /etc/rsyslog/rsyslog.conf

##
## Apache2 logs to Graylog
##

# Apache access file:

$ModLoad imfile
$InputFileName /var/log/apache2/access.log
$InputFileTag apache-access:
$InputFileStateFile stat-apache-access
$InputFileSeverity info
$InputRunFileMonitor

#Apache Error file:

$InputFileName /var/log/apache2/error.log
$InputFileTag apache-errors:
$InputFileStateFile stat-apache-error
$InputFileSeverity error
$InputRunFileMonitor

$InputFilePollInterval 10

if $programname == 'apache-access' then @127.0.0.1:12000
if $programname == 'apache-errors' then @127.0.0.1:12000