Comment gérer les journaux avec Graylog 2 sur Ubuntu 16.04

introduction

Graylog est une puissante plate-forme de gestion de journaux open source. Il agrège et extrait les données importantes des journaux du serveur, qui sont souvent envoyés à l'aide du protocole Syslog. Il vous permet également de rechercher et de visualiser les journaux dans une interface Web.

Dans ce didacticiel, vous allez installer et configurer Graylog sur Ubuntu 16.04 et configurer une entrée simple pour recevoir les journaux du système.

Conditions préalables

Avant de commencer ce tutoriel, vous aurez besoin de:

[[step-1 -—- configuring-elasticsearch]] == Étape 1 - Configuration d'Elasticsearch

Nous devons modifier le fichier de configuration Elasticsearch afin que le nom du cluster corresponde à celui défini dans le fichier de configuration Graylog. Pour simplifier les choses, nous allons définir le nom du cluster Elasticsearch sur le nom Graylog par défaut degraylog. Vous pouvez le définir comme bon vous semble, mais veillez à mettre à jour le fichier de configuration Graylog pour refléter ce changement.

Ouvrez le fichier de configuration Elasticsearch dans votre éditeur:

sudo nano /etc/elasticsearch/elasticsearch.yml

Trouvez la ligne suivante:

/etc/elasticsearch/elasticsearch.yml

cluster.name: 

Changez la valeur decluster.name engraylog:

/etc/elasticsearch/elasticsearch.yml

cluster.name: graylog

Enregistrez le fichier et quittez votre éditeur.

Depuis que nous avons modifié le fichier de configuration, nous devons redémarrer le service pour que les modifications prennent effet.

sudo systemctl restart elasticsearch

Maintenant que vous avez configuré Elasticsearch, passons à l’installation de Graylog.

[[step-2 -—- Installing-graylog]] == Étape 2 - Installation de Graylog

Dans cette étape, nous allons installer le serveur Graylog.

Commencez par télécharger le fichier de package contenant la configuration du référentiel Graylog. Visitez lesGraylog download page pour trouver le numéro de version actuelle. Nous utiliserons la version2.2 pour ce didacticiel.

wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb

Ensuite, installez la configuration du référentiel à partir du fichier de package.deb, en remplaçant à nouveau2.2 par la version que vous avez téléchargée.

sudo dpkg -i graylog-2.2-repository_latest.deb

Maintenant que la configuration du référentiel a été mise à jour, nous devons récupérer la nouvelle liste de packages. Exécutez cette commande:

sudo apt-get update

Ensuite, installez le packagegraylog-server:

sudo apt-get install graylog-server

Enfin, démarrez Graylog automatiquement au démarrage du système avec cette commande:

sudo systemctl enable graylog-server.service

Graylog est maintenant installé avec succès, mais il n’a pas encore démarré. Nous devons le configurer avant qu'il ne commence.

[[step-3 -—- configuring-graylog]] == Étape 3 - Configuration de Graylog

Maintenant que Elasticsearch est configuré et que Graylog est installé, nous devons modifier quelques paramètres dans le fichier de configuration par défaut de Graylog avant de pouvoir l'utiliser. Le fichier de configuration de Graylog se trouve par défaut à/etc/graylog/server/server.conf.

Tout d'abord, nous devons définir la valeur depassword_secret. Graylog utilise cette valeur pour sécuriser les mots de passe utilisateur stockés. Nous allons utiliser une valeur de 128 caractères générée aléatoirement.

Nous utiliseronspwgen pour générer le mot de passe, donc installez-le s'il n'est pas déjà installé:

sudo apt install pwgen

Générez le mot de passe et placez-le dans le fichier de configuration Graylog. Nous utiliserons le programmesed pour injecter la valeurpassword_secret dans le fichier de configuration Graylog. De cette façon, nous n’avons à copier et coller aucune valeur. Exécutez cette commande pour créer le secret et le stocker dans le fichier:

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

Pour plus d'informations sur l'utilisation desed, consultezthis DigitalOcean sed tutorial.

Ensuite, nous devons définir la valeur deroot_password_sha2. Il s'agit d'unSHA-256 hash de votre mot de passe souhaité. Une fois de plus, nous utiliserons la commandesed pour modifier le fichier de configuration Graylog afin de ne pas avoir à générer manuellement le hachage SHA-256 en utilisantshasum et à le coller dans le fichier de configuration.

Exécutez cette commande, mais remplacezpassword ci-dessous par le mot de passe administrateur par défaut souhaité:

[.note] #Note: Il y a un espace au début de la commande, ce qui empêche votre mot de passe d'être stocké sous forme de texte brut dans votre historique Bash.
#

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

Nous devons maintenant apporter quelques modifications supplémentaires au fichier de configuration. Ouvrez le fichier de configuration Graylog avec votre éditeur:

sudo nano /etc/graylog/server/server.conf

Recherchez et modifiez les lignes suivantes, en supprimant les commentaires et en remplaçantgraylog_public_ip par l'adresse IP publique de votre serveur. Cela peut être une adresse IP ou un nom de domaine complet.

/etc/graylog/server/server.conf

...
rest_listen_uri = http://your_server_ip_or_domain:9000/api/

...
web_listen_uri = http://your_server_ip_or_domain:9000/

...

Enregistrez le fichier et quittez votre éditeur.

Depuis que nous avons changé le fichier de configuration, nous devons redémarrer (ou démarrer) le servicegraylog-server. La commande de redémarrage démarrera le serveur même s'il est actuellement arrêté.

sudo systemctl restart graylog-server

Ensuite, vérifiez l'état du serveur.

sudo systemctl status graylog-server

La sortie devrait ressembler à ceci:

● graylog-server.service - Graylog server
   Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-03-03 20:10:34 PST; 1 months 7 days ago
     Docs: http://docs.graylog.org/
 Main PID: 1300 (graylog-server)
    Tasks: 191 (limit: 9830)
   Memory: 1.2G
      CPU: 14h 57min 21.475s
   CGroup: /system.slice/graylog-server.service
           ├─1300 /bin/sh /usr/share/graylog-server/bin/graylog-server
           └─1388 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSCon

Vous devriez voiractive pour l'état.

Si la sortie indique que le système n’est pas en cours d’exécution, recherchez dans/var/log/syslog toute erreur. Assurez-vous d'avoir installé Java en même temps que Elasticsearch et d'avoir modifié toutes les valeurs à l'étape 3. La tentative de redémarrer le service Graylog à nouveau.

Si vous avez configuré un pare-feu avecufw, ajoutez une exception de pare-feu pour le port TCP9000 afin de pouvoir accéder à l'interface Web:

sudo ufw allow 9000/tcp

Une fois que Graylog est en cours d'exécution, vous devriez pouvoir accéder àhttp://your_server_ip:9000 avec votre navigateur Web. Vous devrez peut-être attendre jusqu'à cinq minutes après le redémarrage degraylog-server avant de démarrer l'interface Web. De plus, assurez-vous que MongoDB est en cours d'exécution.

Maintenant que Graylog fonctionne correctement, nous pouvons passer aux journaux de traitement.

[[step-4 -—- creation-an-input]] == Étape 4 - Création d'une entrée

Ajoutons une nouvelle entrée à Graylog pour recevoir les journaux. Les entrées indiquent à Graylog le port sur lequel écouter et le protocole à utiliser lors de la réception des journaux. Nous allons ajouter une entrée Syslog UDP, protocole de journalisation couramment utilisé.

Lorsque vous visitezhttp://your_server_ip:9000 dans votre navigateur, une page de connexion s'affiche. Utilisezadmin pour votre nom d'utilisateur et utilisez le mot de passe que vous avez entré à l'étape 3 pour votre mot de passe.

Une fois connecté, vous verrez une page intitulée "Mise en route" qui ressemble à l'image suivante:

Getting Started

Pour afficher la page des entrées, cliquez sur la liste déroulanteSystem dans la barre de navigation et sélectionnezInputs.

Vous verrez alors une liste déroulante contenant le texteSelect Input. SélectionnezSyslog UDP dans cette liste déroulante, puis cliquez sur le boutonLaunch new input.

Un modal avec un formulaire devrait apparaître. Remplissez les informations suivantes pour créer votre entrée:

  1. PourNode, sélectionnez votre serveur. Ce devrait être le seul élément de la liste.

  2. PourTitle, entrez un titre approprié, tel queLinux Server Logs.

  3. PourBind address, utilisez l'adresse IP privée de votre serveur. Si vous souhaitez également pouvoir collecter des journaux à partir de serveurs externes (non recommandé, car Syslog ne prend pas en charge l'authentification), vous pouvez le définir sur0.0.0.0 (toutes les interfaces).

  4. PourPort, entrez8514. Notez que nous utilisons le port8514 pour ce tutoriel car les ports0 à1024 ne peuvent être utilisés que par l'utilisateur root. Vous pouvez utiliser n’importe quel numéro de port supérieur à1024 devrait convenir tant qu’il n’est pas en conflit avec d’autres services.

Cliquez surSave. La liste des entrées locales sera mise à jour et affichera votre nouvelle entrée, comme indiqué dans la figure suivante:

Screenshot of local inputs

Maintenant qu'une entrée a été créée, nous pouvons envoyer des journaux à Graylog.

[[step-5 -—- configure-servers-to-send-logs-to-graylog]] == Étape 5 - Configurer les serveurs pour envoyer des journaux à Graylog

Nous avons une entrée configurée et en écoute sur le port8514, mais nous n’envoyons pas encore de données à l’entrée, nous ne verrons donc aucun résultat. rsyslog est un utilitaire logiciel utilisé pour transférer les journaux et est pré-installé sur Ubuntu, nous allons donc le configurer pour envoyer les journaux à Graylog. Dans ce didacticiel, nous allons configurer le serveur Ubuntu sous Graylog pour qu’il envoie ses journaux système à l’entrée que nous venons de créer, mais vous pouvez suivre cette procédure sur tout autre serveur que vous possédez.

[.Remarque]##

Si vous souhaitez envoyer des données à Graylog à partir d'autres serveurs, vous devez ajouter une exception de pare-feu pour le port UDP8514.

sudo ufw allow 8514/udp

Créez et ouvrez un nouveau fichier de configurationrsyslog dans votre éditeur.

sudo nano /etc/rsyslog.d/60-graylog.conf

Ajoutez la ligne suivante au fichier, en remplaçantyour_server_private_ip par l'adresse IP privée de votre serveur Graylog.

/etc/rsyslog.d/60-graylog.conf

*.* @your_server_private_ip:8514;RSYSLOG_SyslogProtocol23Format

Enregistrez et quittez votre éditeur.

Redémarrez le servicersyslog pour que les modifications prennent effet.

sudo systemctl restart rsyslog

Répétez ces étapes pour chaque serveur à partir duquel vous souhaitez envoyer des journaux.

Vous devriez maintenant pouvoir voir vos journaux dans l'interface Web. Cliquez sur l'ongletSources dans la barre de navigation pour afficher un graphique des sources. Ça devrait ressembler a quelque chose comme ca:

Screenshot of sources

Vous pouvez également cliquer sur l'ongletSearch dans la barre de navigation pour afficher un aperçu des journaux les plus récents.

Vous pouvez en savoir plus sur les recherches dans lesGraylog searching documentation.

Conclusion

Vous disposez maintenant d'un serveur Graylog en état de fonctionnement avec une source d'entrée capable de collecter des journaux à partir d'autres serveurs.

Ensuite, vous voudrez peut-être examiner la configuration des tableaux de bord, des alertes et des flux. Les tableaux de bord fournissent un aperçu rapide de vos journaux. Les flux catégorisent les messages que vous pouvez surveiller avec des alertes. Pour en savoir plus sur la configuration des fonctionnalités plus avancées de Graylog, vous pouvez trouver des instructions dans lesGraylog documentation.