Installation et configuration de Graylog sur Debian et CentOS

Après ELK et Splunk, on va ici s’intéresser à Graylog qui permet aussi de centraliser les logs et de les analyser dans des graphiques puis des tableaux de bords. Gros point fort de Graylog, il permet de générer gratuitement des alertes et de gérer plusieurs utilisateurs (intégration Active Directory et LDAP ) contrairement à ELK et Splunk où il faut une licence.

Passons dès à présent à l’installation :

Installation des prérequis

On installe les dépendances pour que l’installation se déroule correctement.

Sur Debian :

apt-get install -y wget apt-transport-https curl unzip sudo uuid-runtime pwgen

Graylog nécessite Java pour fonctionner.

On rajoute les dépôts de Java puis on l’installe :

echo "deb http://http.debian.net/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list

sudo apt-get update
sudo apt-get install -t jessie-backports openjdk-8-jre-headless

Sur CentOS :

Pour installer pwgen qui nous sera utile par la suite, il faut installer les dépôts EPEL (Extra Packages for Enterprise Linux) :

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

On peut maintenant installer pwgen avec la commande suivante :

sudo yum install pwgen

Puis on installe Java :

sudo yum install java-1.8.0-openjdk-headless.x86_64

Installation de MongoDB

MongoDB est la base de données de Graylog où seront stockées les configurations utilisateurs / tableaux de bords etc.

On l’installe avec la commande suivante :

Sur Debian :

Il suffit de taper la commande suivante car MongoDB est déjà dans les dépôts :

sudo apt install mongodb-server

Sur CentOS :

Il faut créer un fichier contenant les dépôts nécessaires :

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

Et y rajouter les dépôts suivants :

[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

On peut maintenant l’installer :

sudo yum install mongodb-org

Et tapez les commandes suivantes (toujours sur CentOS, cela n’est pas nécessaire sur Debian) pour démarrer MongoDB au démarrage et lancer son service :

sudo chkconfig --add mongod
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl start mongod.service

Installation d’ElasticSearch

Graylog utilise également ElasticSearch pour le traitement des logs. On va donc l’installer avec les commandes suivantes :

Sur Debian :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

sudo apt update && sudo apt install elasticsearch

Puis, on va modifier, le fichier d’elasticsearch pour indiquer le nom de notre cluster qui est dans notre cas « graylog ».

vi/etc/elasticsearch/elasticsearch.yml

cluster.PNG

On lance elasticsearch :

sudo systemctl daemon-reload

sudo systemctl enable elasticsearch.service

sudo systemctl restart elasticsearch.service

Vous pouvez tester son fonctionnement avec la commande suivante :

curl -X GET http://localhost:9200

Ce qui devrez vous retourner le résultat suivant (il se peut que vous ayez à attendre quelques minutes le temps que la configuration se fasse).

curl.PNG

Sur CentOS :

On doit d’abord récupérer la clé GPG d’Elastic :

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

Puis, on doit créer un fichier contenant les dépôts nécessaires :

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

Et on y rajoute les dépôts suivants :

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

Enfin on installe elasticsearch avec la commande suivante :

sudo yum install elasticsearch

Comme pour Debian , il faut indiquer le nom du Cluster dans le fichier elasticsearch.yml et vous pouvez également tester le fonctionnement d’elasticsearch avec la commande curl.

Une fois ceci fait, on démarre ElasticSearch :

 sudo chkconfig --add elasticsearch
 sudo systemctl daemon-reload
 sudo systemctl enable elasticsearch.service
 sudo systemctl restart elasticsearch.service

Installation de Graylog

Sur Debian :

On récupère la dernière version de Graylog et on l’installe :

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

Sur CentOS :

On doit installer les dépôts de Graylog :

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

Puis on installe Graylog :

sudo yum install graylog-server

Configuration de graylog

Il va falloir configurer un mot de passe pour l’administrateur de Graylog.

On va pour cela devoir modifier le champ password_secret de la configuration de Graylog. Graylog utilise cette valeur pour sécuriser et stocker les mots de passes utilisateurs.

On va utiliser pwgen pour générer le mot de passe et la commande  sed pour directement l’injecter dans la configuration de Graylog

sudo -E sed -i -e "s/password_secret =.*/password_secret = $(pwgen -s 128 1)/" /etc/graylog/server/server.conf

Sur Debian :

On va maintenant créer le mot de passe pour l’utilisateur root avec la commande suivante : Remplacez bien-sûr « MOTDEPASSE » par votre mot de passe.

sudo sed -i -e "s/root_password_sha2 =.*/root_password_sha2 = $(echo -n MOTDEPASSE | shasum -a 256 | cut -d' ' -f1)/" /etc/graylog/server/server.conf

Sur CentOS :

Je n’ai pour ma part pas réussi à effectuer la commande sed pour le mot de passe root sur CentOS, on va donc crypter notre de mot de passe et le placer manuellement dans le fichier server.conf

echo -n MOTDEPASSE | sha256sum

Votre mot de passe chiffré apparaît, copiez le et placez le dans le fichier server.conf :

sha

vi /etc/graylog/server/server.conf

Et à la ligne suivante collez le mot de passe crypté comme ci-dessous :

rootp.PNG

Puis, il va falloir faire quelques modifications (pour Debian et CentOS) dans le fichier server.conf :

vi /etc/graylog/server/server.conf

Dé-commentez les lignes suivantes et modifiez l’@IP locale 127.0.0.1 par l’@IP de votre serveur.

rest_listen_uri = http://127.0.0.1:9000/api/
web_listen_uri = http://127.0.0.1:9000/

Recherchez ensuite la ligne suivante.

#root_timezone = UTC

Et modifiez la pour synchroniser l’heure de notre serveur :

root_timezone = Europe/Paris

Par défaut, lorsque vous rechercherez des mots clés dans vos logs, ils ne s’afficheront pas en évidence. Il faut pour cela modifier la ligne suivante qui permet d’afficher les mots recherchés en surbrillance.

allow_highlighting = false

Passez le paramètre à true

allow_highlighting = true

Une fois que tout cela est fait, on enregistre et on active le service :

Sur Debian :

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

Sur CentOS :

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

Après quelques minutes, vous avez accès à l’interface web de graylog sur  http://@IP:9000

Connectez-vous avez l’identifiant admin et le mot de passe que vous avez indiqué précédemment.

graylog.PNG

Vous arriverez sur une page semblable à celle-ci, pour recevoir des données, nous devons configurer un Input qui écoutera sur le port 514 (port Syslog par défaut). Pour cela cliquez sur System, puis sur Inputs.

input

 

Note : Dans notre cas, nous voulons pour l’instant récupérer les Syslog des différents équipements réseaux (switch, routeurs, contrôleurs wifi…). Par défaut, le protocole Syslog écoute sur le port 514.

Or, Java n’a pas le droit d’écoute sur les ports entre 0 et 1023 pour des raisons de sécurités. On peut bien évidemment modifier le port Syslog mais tous les routeurs ne peuvent pas être configurés de cette manière.

On va donc taper la commande suivante qui permet de donner à Java le droit d’écouter sur les ports réservés au système.

Attention, cette commande sur CentOS à pour ma part empêché Java de fonctionner, ne l’effectuez que sous Debian.

setcap cap_net_bind_service=+epi /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

Sur CentOS :

Etant donné qu’on ne peut pas attribuer les droits à Java sur les ports inférieurs a 1024, on va devoir faire une règle Nat avec iptables afin que les requêtes reçues sur le port 514 soient redirigées vers un autre port, par exemple 1514.

iptables -t nat -A PREROUTING -p tcp --dport 514 -j REDIRECT --to 1514
iptables -t nat -A PREROUTING -p udp --dport 514 -j REDIRECT --to 1514

 

Retournons sur notre interface Graylog, puis sélectionnez dans la liste déroulante « Syslog UDP ». Cliquez ensuite sur Launch new input.

input2.PNG

Donnez le titre de votre choix dans le champ Title, indiquez le port 514 puis cliquez sur Save. Si vous êtes sur CentOS, remplacez le port 514 par 1514. Vous pourrez tout de même envoyer vos syslogs vers le port 514 étant donné que nous avons fait une règle Nat précédemment.

syslog.PNG

Cliquez ensuite sur Start Input

si

Vous devriez alors voir ceci :

start

 

Attendez quelques minutes et rendez vous dans l’onglet Search de Graylog. Si vous avez bien paramétré vos équipements réseaux pour l’envoie de Syslog, vous devrez voir arriver vos logs :

log2.png

C’est tout pour cet article, nous verrons par la suite comment configurer les alertes et l’envoi de mail puis comment configurer l’intégration Active Directory / LDAP.

8 commentaires sur “Installation et configuration de Graylog sur Debian et CentOS

Ajouter un commentaire

  1. Bonjour, je n’arrive pas à accéder à l’interface de Graylog. J’ai l’impression que le port 9000 ne soit pas accepté puisque quand je fais « https://@IP/ » je tombe bien sur la page d’Apache. Il faut aussi savoir que je n’ai aucune règles de filtrages qui pourrait bloquer le port 9000.

    J’aime

    1. J’ai eu le même problème. Il faut s’assurer que le port est bien ouvert sur le serveur et que iptables est désactivé :

      /etc/sysconfig/selinux

      SELINUX=disabled
      SELINUXTYPE=targeted

      J’avais la version 7 CENTOS pour ouvrir le port

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

      J’aime

  2. Bonjour,
    J’ai bien suivi l’installation de A a Z, si j’ai rien dans l’onglet Search cela peux venir de mon routeur?
    Merci pour votre réponse,

    J’aime

Laisser un commentaire

Créez un site ou un blog sur WordPress.com

Retour en haut ↑