Logstash est un outil gratuit et open source, et la plate-forme d'analyse de journaux la plus populaire au monde pour la collecte, l'analyse et le stockage des journaux pour une utilisation future. Logstash est livré avec un riche ensemble de plugins et un langage de modèle très expressif qui facilite la transformation des flux de données. Logstash fait partie de la pile ELK, mais vous pouvez également l'utiliser indépendamment. Logstash a la capacité d'extraire de n'importe quelle source de données à l'aide de plug-ins d'entrée, d'appliquer une grande variété de transformations de données et d'expédier les données vers un grand nombre de destinations à l'aide de plug-ins de sortie.
Dans ce tutoriel, nous allons vous montrer comment installer et configurer Logstash sur le serveur Ubuntu 18.04.
Prérequis
- Un serveur exécutant Ubuntu 18.04.
- Un mot de passe root est configuré sur votre serveur.
Mise en route
Avant de commencer, mettez à jour votre système avec la dernière version. Vous pouvez le faire en exécutant la commande suivante :
apt-get update -y
apt-get upgrade -y
Une fois votre système mis à jour, redémarrez-le pour appliquer les modifications.
Installer Java
Avant d'installer Java, assurez-vous que Java 8 ou Java 11 est installé. Vous pouvez installer Java 8 avec la commande suivante :
apt-get install openjdk-8-jdk -y
Après avoir installé Java, vérifiez la version de Java à l'aide de la commande suivante :
java -version
Vous devriez voir le résultat suivant :
openjdk version "1.8.0_162" OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1-b12) OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)
Installer Logstash
Avant d'installer Logstash, vous devrez installer Elasticsearch sur votre serveur. Par défaut, Elasticsearch n'est pas disponible sur le serveur Ubuntu 18.04. Vous devrez donc ajouter le référentiel pour Elasticsearch.
Tout d'abord, installez le package requis avec la commande suivante :
apt-get install apt-transport-https -y
Ensuite, téléchargez et ajoutez la clé Elasticsearch GPG avec la commande suivante :
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
Ensuite, ajoutez le référentiel avec la commande suivante :
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
Ensuite, installez Elasticsearch et Logstash avec la commande suivante :
apt-get install elasticsearch logstash -y
Une fois les deux packages installés, démarrez Logstash et Elasticsearch, et autorisez-les à démarrer après le redémarrage du système avec la commande suivante :
systemctl start logstash
systemctl enable logstash
systemctl start elasticsearch
systemctl enable elasticsearch
Vous pouvez également vérifier l'état de Logstash avec la commande suivante :
systemctl status logstash
Vous devriez voir le résultat suivant :
? logstash.service - logstash Loaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2019-11-20 10:13:22 UTC; 5s ago Main PID: 3790 (java) Tasks: 13 (limit: 1110) CGroup: /system.slice/logstash.service ??3790 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly Nov 20 10:13:22 ubuntu systemd[1]: Started logstash.
Par défaut, Elasticsearch écoute sur le port 9200. Vous pouvez le vérifier avec la commande suivante :
netstat -ant | grep 9200
Vous devriez voir le résultat suivant :
tcp6 0 0 127.0.0.1:9200 :::* LISTEN tcp6 0 0 ::1:9200 :::* LISTEN
Configurer Logstash
La configuration de Logstash est l'une des parties les plus difficiles de tout administrateur système. La configuration Logstash se compose de trois sections de configuration principales, les entrées Logstash, les filtres Logstash et les sorties Logstash. Chaque section est responsable de différentes fonctions et utilise différents plugins Logstash.
Configurer l'entrée Logstash
Tout d'abord, vous devrez créer un fichier de configuration d'entrée beats-input.conf pour recevoir les données de Beats sur le port TCP 5044 :
nano /etc/logstash/conf.d/beats-input.conf
Ajoutez les lignes suivantes :
input { beats { port => 5044 } }
Enregistrez et fermez le fichier lorsque vous avez terminé.
Configurer les filtres Logstash
Ensuite, vous devrez configurer un plugin de filtre pour traiter les événements reçus des beats. Ici, nous allons configurer beats pour collecter les événements d'authentification SSH des systèmes Ubuntu. Pour ce faire, créez un nouveau fichier de configuration de filtre ssh-auth-filter.conf :
nano /etc/logstash/conf.d/ssh-auth-filter.conf
Ajoutez les lignes suivantes :
filter { grok { match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}\s+%{IPORHOST:dst_host}\s+%{WORD:syslog_program}\[\d+\]:\s+(?\w+\s+password)\s+for\s+%{USER:auth_user}\s+from\s+%{SYSLOGHOST:src_host}.*" } add_field => { "activity" => "SSH Logins" } add_tag => "linux_auth" } }
Enregistrez et fermez le fichier lorsque vous avez terminé.
Configurer la sortie Logstash
Ensuite, vous devrez configurer les plugins de sortie pour permettre à Logstash d'envoyer des données d'événement à des destinations spécifiques.
Ici, nous allons créer un fichier de configuration de sortie Logstash qui envoie des données à Elasticsearch exécuté sur un hôte local.
nano /etc/logstash/conf.d/elasticsearch-output.conf
Ajoutez les lignes suivantes :
output { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "ssh_auth-%{+YYYY.MM}" } stdout { codec => rubydebug } }
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Logstash pour appliquer les modifications :
systemctl restart logstash
Tester Logstash
Logstash est maintenant installé et configuré. Il est temps de tester si cela fonctionne ou non.
Vous pouvez vérifier la configuration de Logstash avec la commande suivante :
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
Si tout va bien, vous devriez voir le résultat suivant :
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties [2019-11-26T06:27:48,104][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/var/lib/logstash/queue"} [2019-11-26T06:27:48,119][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/var/lib/logstash/dead_letter_queue"} [2019-11-26T06:27:50,331][INFO ][org.reflections.Reflections] Reflections took 47 ms to scan 1 urls, producing 20 keys and 40 values Configuration OK [2019-11-26T06:27:51,899][INFO ][logstash.runner ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
Toutes nos félicitations! vous avez installé et configuré avec succès Logstash sur le serveur Ubuntu 18.04.