Comment installer Graylog 1.x sur Ubuntu 14.04

introduction

Dans ce tutoriel, nous expliquerons comment installer Graylog v1.3.x (parfois appelé Graylog2) sur Ubuntu 14.04 et le configurer pour rassembler les syslog de vos systèmes dans un emplacement centralisé. Graylog est un puissant outil de gestion et d’analyse des journaux qui a de nombreux cas d’utilisation, allant de la surveillance des connexions SSH aux activités inhabituelles, en passant par le débogage des applications. Il est basé sur Elasticsearch, Java et MongoDB.

Il est possible d’utiliser Graylog pour rassembler et surveiller une grande variété de journaux, mais nous limiterons la portée de ce didacticiel à la collecte de syslog. De plus, comme nous présentons les bases de Graylog, nous allons installer tous les composants sur un seul serveur.

À propos des composants Graylog

Graylog a quatre composants principaux:

  • * Nœuds Graylog Server *: Sert de travailleur qui reçoit et traite les messages et communique avec tous les autres composants non serveurs. Ses performances dépendent du processeur

  • * Nœuds Elasticsearch *: stocke tous les journaux / messages. Ses performances dépendent de la RAM et des E / S du disque.

  • * MongoDB *: stocke les métadonnées et ne supporte pas beaucoup de charge

  • * Interface Web *: l’interface utilisateur

Voici un diagramme des composants Graylog (notez que les messages sont envoyés depuis vos autres serveurs):

image: https: //assets.digitalocean.com/articles/graylog2/graylog_simple_setup_v2.png [Configuration de base de Graylog]

Ce didacticiel implémentera une configuration très basique de Graylog, avec tous les composants installés sur le même serveur. Pour une configuration de production plus importante, il est conseillé d’installer les composants sur des serveurs distincts pour des raisons de performances.

Conditions préalables

La configuration décrite dans ce tutoriel nécessite un serveur Ubuntu 14.04 avec au moins 2 Go de RAM. Vous devez également avoir un accès root (Étapes 1 à 4 de Initial Initial Server Setup with Ubuntu 14.04).

Si vous utilisez un VPS avec moins de 2 Go de RAM, vous ne pourrez pas démarrer tous les composants Graylog.

Commençons par installer le logiciel!

Installer MongoDB

L’installation de MongoDB est simple et rapide. Exécutez la commande suivante pour importer la clé publique GPG de MongoDB dans apt:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

Créez la liste des sources MongoDB:

echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

Mettez à jour votre base de données de paquets apt:

sudo apt-get update

Installez la dernière version stable de MongoDB avec cette commande:

sudo apt-get install mongodb-org

MongoDB devrait être opérationnel maintenant. Passons maintenant à l’installation de Java.

Installer Java

Elasticsearch nécessite Java, nous allons donc l’installer maintenant. Nous allons installer Oracle Java 8 car c’est ce qui est recommandé par Elastic. Cela devrait cependant fonctionner correctement avec OpenJDK, si vous décidez de suivre cette voie.

Ajoutez le Oracle Java PPA à apt:

sudo add-apt-repository ppa:webupd8team/java

Mettez à jour votre base de données de paquets apt:

sudo apt-get update

Installez la dernière version stable d’Oracle Java 8 avec cette commande (et acceptez le contrat de licence qui apparaît):

sudo apt-get install oracle-java8-installer

Maintenant que Java est installé, installons Elasticsearch.

Installer Elasticsearch

Graylog 1.x ne fonctionne qu’avec les versions antérieures à la version 2.0 d’Elasticsearch. Nous allons donc installer Elasticsearch 1.7.x. Elasticsearch peut être installé avec un gestionnaire de paquets en ajoutant la liste des sources de paquets d’Elastic.

Exécutez la commande suivante pour importer la clé GPG publique Elasticsearch dans apt:

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

Si votre invite est juste en attente, il attend probablement le mot de passe de votre utilisateur (pour autoriser la commande + sudo +). Si c’est le cas, entrez votre mot de passe.

Créez la liste de sources Elasticsearch:

echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.x.list

Mettez à jour votre base de données de paquets apt:

sudo apt-get update

Installez Elasticsearch avec cette commande:

sudo apt-get -y install elasticsearch

Elasticsearch est maintenant installé. Modifions la configuration:

sudo vi /etc/elasticsearch/elasticsearch.yml

Recherchez la section qui spécifie + cluster.name. Décommentez-le et remplacez la valeur par défaut par «graylog-development». Elle se présente comme suit:

elasticsearch.yml - 1 sur 2

cluster.name: graylog-development

Vous souhaiterez restreindre l’accès extérieur à votre instance Elasticsearch (port 9200) afin que les personnes extérieures ne puissent pas lire vos données ni arrêter votre cluster Elasticsearch via l’API HTTP. Recherchez la ligne qui spécifie + network.host +, décommentez-la et remplacez sa valeur par «localhost» afin qu’elle ressemble à ceci:

elasticsearch.yml - 2 sur 2

network.host: localhost

Enregistrez et quittez + elasticsearch.yml +.

Maintenant démarrez Elasticsearch:

sudo service elasticsearch restart

Exécutez ensuite la commande suivante pour lancer Elasticsearch au démarrage:

sudo update-rc.d elasticsearch defaults 95 10

Après quelques instants, exécutez ce qui suit pour tester le bon fonctionnement d’Elasticsearch:

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Maintenant que Elasticsearch est opérationnel, installons le serveur Graylog.

Installer le serveur Graylog

Maintenant que nous avons installé l’autre logiciel requis, installons le composant serveur de Graylog, + graylog-server +.

Commencez par télécharger le paquet Graylog Debian dans votre répertoire personnel à l’aide des commandes suivantes:

cd ~
wget https://packages.graylog2.org/repo/packages/graylog-1.3-repository-ubuntu14.04_latest.deb

Ajoutez ensuite le paquet à votre gestionnaire de paquets avec cette commande:

sudo dpkg -i graylog-1.3-repository-ubuntu14.04_latest.deb

Puis installez le paquet + graylog-server + avec ces commandes:

sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get install graylog-server

Installez pwgen, que nous utiliserons pour générer des clés secrètes de mots de passe:

sudo apt-get install pwgen

Nous devons maintenant configurer le mot de passe admin et la clé secrète. La clé secrète du mot de passe est configurée dans server.conf, par le paramètre + password_secret +. Nous pouvons générer une clé aléatoire et l’insérer dans la configuration Graylog à l’aide des deux commandes suivantes:

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

Le mot de passe admin est attribué en créant un + shasum + du mot de passe souhaité et en l’attribuant au paramètre + root_password_sha2 + dans le fichier de configuration de Graylog. Créez votre mot de passe souhaité avec la commande suivante en remplaçant le mot de passe en surbrillance par le vôtre. La commande sed l’insère dans la configuration Graylog pour vous:

PASSWORD=$(echo -n  | shasum -a 256 | awk '{print $1}')
sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog/server/server.conf

Maintenant que le mot de passe administrateur est configuré, ouvrons la configuration de Graylog pour apporter quelques modifications:

sudo vi /etc/graylog/server/server.conf

Vous devriez voir que + password_secret + et + root_password_sha2 + ont des chaînes aléatoires en raison des commandes que vous avez exécutées dans les étapes ci-dessus.

Nous allons maintenant configurer le + rest_transport_uri +, qui permet à l’interface Web de Graylog de communiquer avec le serveur. Étant donné que nous installons tous les composants sur un seul serveur, définissons la valeur sur «+ 127.0.0.1 » ou « localhost ». Recherchez et supprimez la mise en commentaire ` rest_transport_uri +`, et modifiez sa valeur pour obtenir le résultat suivant:

/etc/graylog/server/server.conf - 1 sur 4

rest_transport_uri = http://127.0.0.1:12900/

Ensuite, comme nous n’avons qu’un fragment Elasticsearch (qui tourne sur ce serveur), nous allons changer la valeur de + elasticsearch_shards + en 1:

/etc/graylog/server/server.conf - 2 sur 4

elasticsearch_shards =

Ensuite, modifiez la valeur de + elasticsearch_cluster_name + en «graylog-development» (identique à Elasticsearch + cluster.name +):

/etc/graylog/server/server.conf - 3 sur 4

elasticsearch_cluster_name = graylog-development

Décommentez ces deux lignes pour découvrir l’instance Elasticsearch en utilisant unicast au lieu de multicast:

/etc/graylog/server/server.conf - 4 sur 4

elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300

Sauvegarder et quitter. Maintenant, + graylog-server + est configuré et prêt à être démarré.

Démarrez le serveur Graylog avec la commande de service:

sudo start graylog-server

L’étape suivante consiste à installer l’interface Web Graylog. Faisons-le maintenant!

Installer Graylog Web

Installez Graylog Web avec les commandes suivantes:

sudo apt-get install graylog-web

Ensuite, nous voulons configurer la clé secrète de l’interface Web, le paramètre + application.secret dans * web.conf *. Nous allons générer une autre clé, comme nous l’avons fait avec la configuration du serveur Graylog, et l’insérer avec sed, comme suit:

SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /etc/graylog/web/web.conf

Ouvrez maintenant le fichier de configuration de l’interface Web, avec cette commande:

sudo vi /etc/graylog/web/web.conf

Nous devons maintenant mettre à jour la configuration de l’interface Web pour spécifier le paramètre + graylog2-server.uris +. Il s’agit d’une liste délimitée par des virgules des URI REST du serveur. Comme nous n’avons qu’un seul nœud de serveur Graylog, la valeur doit correspondre à celle de + rest_listen_uri + dans la configuration du serveur Graylog (c.-à-d. “Http://127.0.0.1:12900/%22[http://127.0.0.1:12900/”]).

/etc/graylog/web/web.conf extrait

graylog2-server.uris="http://127.0.0.1:12900/"

L’interface Web de Graylog est maintenant configurée. Démarrez l’interface Web Graylog:

sudo start graylog-web

Nous pouvons maintenant utiliser l’interface Web Graylog. Faisons-le maintenant.

Configurer Graylog pour recevoir des messages syslog

Connectez-vous à l’interface Web Graylog

Dans votre navigateur Web préféré, accédez au port + 9000 + de l’adresse IP publique de votre serveur:

In a web browser:http://:9000/

Vous devriez voir un écran de connexion. Entrez + admin + comme nom d’utilisateur et le mot de passe administrateur que vous avez défini précédemment.

Une fois connecté, vous verrez quelque chose comme ce qui suit:

image: https: //assets.digitalocean.com/articles/graylog/getting_started.png [Tableau de bord de Graylog]

Le chiffre rouge en haut est une notification. Si vous cliquez dessus, vous verrez un message indiquant que vous avez un nœud sans aucune entrée en cours d’exécution. Ajoutons une entrée pour recevoir les messages syslog sur UDP maintenant.

Créer une entrée UDP Syslog

Pour ajouter une entrée destinée à recevoir des messages syslog, cliquez sur le menu déroulant * Système * dans le menu supérieur.

Maintenant, dans le menu déroulant, sélectionnez * Entrées *.

Sélectionnez * Syslog UDP * dans le menu déroulant et cliquez sur le bouton * Lancer nouvelle entrée *.

Une fenêtre modale «Lancer une nouvelle entrée: Syslog UDP» apparaîtra. Entrez les informations suivantes (remplacez l’adresse de liaison par l’adresse IP privée de votre serveur):

  • * Titre: * + syslog +

  • * Port: * + 8514 +

  • * Adresse de liaison: * + graylog_private_IP +

Puis cliquez sur * Lancer *.

Vous devriez maintenant voir une entrée nommée «syslog» dans la section * Entrées locales * (et il devrait y avoir une boîte verte qui dit «en cours d’exécution» à côté), comme suit:

image: https: //assets.digitalocean.com/articles/graylog/inputs.png [Graylog syslog input]

Notre serveur Graylog est maintenant prêt à recevoir des messages syslog sur le port + 8514 + de vos serveurs. Configurons vos serveurs pour qu’ils envoient maintenant leurs messages syslog à Graylog.

Configurer Rsyslog pour envoyer des Syslog au serveur Graylog

Sur tous vos * serveurs clients *, les serveurs auxquels vous souhaitez envoyer des messages syslog à Graylog, procédez comme suit.

Créez un fichier de configuration rsyslog dans /etc/rsyslog.d. Nous appellerons notre + 90-graylog.conf +:

sudo vi /etc/rsyslog.d/90-graylog.conf

Dans ce fichier, ajoutez les lignes suivantes pour configurer rsyslog afin qu’il envoie des messages syslog à votre serveur Graylog (remplacez + graylog_private_IP + par l’adresse IP privée de votre serveur Graylog):

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

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

Sauvegarder et quitter. Ce fichier sera chargé dans la configuration de votre configuration rsyslog à partir de maintenant. Vous devez maintenant redémarrer rsyslog pour appliquer vos modifications.

sudo service rsyslog restart

Une fois que vous avez fini de configurer rsyslog sur tous les serveurs que vous souhaitez surveiller, revenez à l’interface Web de Graylog.

Affichage de vos sources de graylog

Dans votre navigateur Web préféré, accédez au port + 9000 + de l’adresse IP publique de votre serveur:

In a web browser:http://:9000/

Cliquez sur * Sources * dans la barre du haut. Vous verrez une liste de tous les serveurs sur lesquels vous avez configuré rsyslog.

Le nom d’hôte des sources est à gauche, avec le nombre de messages reçus par Graylog à droite.

Recherche dans vos données Graylog

Après avoir laissé votre Graylog collecter des messages pendant un certain temps, vous pourrez effectuer une recherche parmi les messages. Par exemple, cherchons «sshd» pour voir quel type d’activité SSH se produit sur nos serveurs. Voici un extrait de nos résultats:

image: https: //assets.digitalocean.com/articles/graylog/search_sshd.png [Exemple de recherche Graylog]

Comme vous pouvez le constater, nos exemples de résultats de recherche ont révélé des journaux sshd pour différents serveurs, ainsi que de nombreuses tentatives de connexion root ayant échoué. Vos résultats peuvent varier, mais cela peut vous aider à identifier de nombreux problèmes, notamment la manière dont des utilisateurs non autorisés tentent d’accéder à vos serveurs.

Outre la fonctionnalité de recherche de base sur toutes vos sources, vous pouvez effectuer une recherche dans les journaux d’un hôte spécifique ou sur une période donnée.

La recherche dans les données dans Graylog est utile, par exemple, si vous souhaitez consulter les journaux d’un serveur ou de plusieurs serveurs après un incident. La journalisation centralisée facilite la corrélation des incidents liés car vous n’avez pas besoin de vous connecter à plusieurs serveurs pour afficher tous les événements qui se sont produits.

Pour plus d’informations sur le fonctionnement de la barre de recherche, consultez la documentation officielle: Graylog Searching

Conclusion

Maintenant que vous avez configuré Graylog, n’hésitez pas à explorer les autres fonctionnalités qu’il offre. Vous pouvez envoyer d’autres types de journaux dans Graylog et configurer des extracteurs (ou reformater des journaux avec un logiciel tel que logstash) pour les rendre plus structurés et plus consultables. Vous pouvez également envisager d’étendre votre environnement Graylog en séparant les composants et en ajoutant de la redondance pour augmenter les performances et la disponibilité.

Bonne chance!