Comment installer FileBeat sur Ubuntu
La Suite Elastic est une combinaison de quatre composants principaux : Elasticsearch, Logstash, Kibana et Beats. Filebeat est l'un des membres les plus célèbres de cette famille qui collecte, transmet et centralise les données des journaux d'événements vers Elasticsearch ou Logstash pour l'indexation. Filebeat dispose de nombreux modules, notamment Apache, Nginx, System, MySQL, auditd et bien d'autres, qui simplifient la visualisation des formats de journaux courants jusqu'à une seule commande.
Dans ce didacticiel, nous allons vous montrer comment installer et configurer Filebeat pour transférer les journaux d'événements et les événements d'authentification SSH vers Logstash sur Ubuntu 18.04.
Conditions préalables
- Un serveur exécutant Ubuntu 18.04 avec Elasticsearch, Kibana et Logstash installés et configurés.
- Un mot de passe root est configuré sur votre serveur.
Commencer
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 Filebeat
Par défaut, Filebeat n'est pas disponible dans le référentiel par défaut d'Ubuntu 18.04. Vous devrez donc ajouter le référentiel Elastic Stack 7 APT dans votre système.
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é Elastic Stack avec la commande suivante :
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
Ensuite, ajoutez le référentiel Elastic Stack 7 Apt avec la commande suivante :
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list
Ensuite, mettez à jour le référentiel et installez Filebeat avec la commande suivante :
apt-get update -y
apt-get install filebeat -y
Une fois l'installation terminée, vous pouvez passer à l'étape suivante.
Configurer Filebeat
Par défaut, Filebeat est configuré pour envoyer des données d'événement à Elasticsearc. Ici, nous allons configurer Filebeat pour envoyer les données d'événement à Logstash. Vous pouvez le faire en éditant le fichier /etc/filebeat/filebeat.yml :
nano /etc/filebeat/filebeat.yml
Commentez la sortie elasticsearch et décommentez la sortie Logstash comme indiqué ci-dessous :
#-------------------------- Elasticsearch output ------------------------------
# output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Activer le module système Filebeat
Par défaut, Filebeat est livré avec de nombreux modules. Vous pouvez lister tous les modules avec la commande suivante :
filebeat modules list
Vous devriez voir le résultat suivant :
Enabled:
Disabled:
apache
auditd
aws
cef
cisco
coredns
elasticsearch
envoyproxy
googlecloud
haproxy
ibmmq
icinga
iis
iptables
kafka
kibana
logstash
mongodb
mssql
mysql
nats
netflow
nginx
osquery
panw
postgresql
rabbitmq
redis
santa
suricata
system
traefik
zeek
Par défaut, tous les modules sont désactivés. Vous devrez donc activer le module système pour collecter et analyser les journaux créés par le service de journalisation système. Vous pouvez activer le module système avec la commande suivante :
filebeat modules enable system
Ensuite, vous pouvez vérifier le module système avec la commande suivante :
filebeat modules list
Vous devriez voir que le module système est maintenant activé :
Enabled:
system
Ensuite, vous devrez configurer le module système pour que les journaux d'authentification soient en lecture seule. Vous pouvez le faire en éditant le fichier /etc/filebeat/modules.d/system.yml :
nano /etc/filebeat/modules.d/system.yml
Modifiez les lignes suivantes :
- module: system
# Syslog
syslog:
enabled: false
...
# Authorization logs
auth:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/var/log/auth.log"]
Enregistrez et fermez le fichier lorsque vous avez terminé.
Charger le modèle d'index dans Elasticsearch
Ensuite, vous devrez charger manuellement le modèle dans Elasticsearch. Vous pouvez le faire avec la commande suivante :
filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
Vous devriez voir le résultat suivant :
Index setup finished.
Ensuite, générez le modèle d'index et installez le modèle sur le serveur Elastic Stack avec la commande suivante :
filebeat export template > filebeat.template.json
curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/_template/filebeat-7.0.1 [email
Enfin, démarrez le service Filebeat et activez-le après le redémarrage du système avec la commande suivante :
systemctl start filebeat
systemctl enable filebeat
Vous pouvez vérifier l'état de Filebeat avec la commande suivante :
systemctl status filebeat
Vous devriez voir le résultat suivant :
? filebeat.service - Filebeat sends log files to Logstash or directly to Elasticsearch.
Loaded: loaded (/lib/systemd/system/filebeat.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2019-11-26 06:45:18 UTC; 14s ago
Docs: https://www.elastic.co/products/beats/filebeat
Main PID: 13059 (filebeat)
Tasks: 28 (limit: 463975)
CGroup: /system.slice/filebeat.service
??13059 /usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.528Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.528Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.529Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.529Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.530Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.530Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:21 ubuntu filebeat[13059]: 2019-11-26T06:45:21.485Z INFO add_cloud_metadata/add_cloud_metadata.go:87 add_clou
Nov 26 06:45:21 ubuntu filebeat[13059]: 2019-11-26T06:45:21.486Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:22 ubuntu filebeat[13059]: 2019-11-26T06:45:22.485Z INFO pipeline/output.go:95 Connecting to backoff(async(tc
Nov 26 06:45:22 ubuntu filebeat[13059]: 2019-11-26T06:45:22.487Z INFO pipeline/output.go:105 Connection to backoff(async(t
Tester la réception des données Elasticsearch
Maintenant, vérifiez si Elasticsearch reçoit des données ou non avec la commande suivante :
curl -X GET localhost:9200/_cat/indices?v
Vous devriez voir le résultat suivant :
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .kibana_task_manager_1 fpHT_GhXT3i_w_0Ob1bmrA 1 0 2 0 46.1kb 46.1kb
yellow open ssh_auth-2019.11 mtyIxhUFTp65WqVoriFvGA 1 1 15154 0 5.7mb 5.7mb
yellow open filebeat-7.4.2-2019.11.26-000001 MXSpQH4MSZywzA5cEMk0ww 1 1 0 0 283b 283b
green open .apm-agent-configuration Ft_kn1XXR16twRhcZE4xdQ 1 0 0 0 283b 283b
green open .kibana_1 79FslznfTw6LfTLc60vAqA 1 0 8 0 31.9kb 31.9kb
Vous pouvez également vérifier l'index ssh_auth-2019.05 avec la commande suivante :
curl -X GET localhost:9200/ssh_auth-*/_search?pretty
Vous devriez voir le résultat suivant :
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 10000,
"relation" : "gte"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "ssh_auth-2019.11",
"_type" : "_doc",
"_id" : "g7OXpm4Bi50dVWRYAyK4",
"_score" : 1.0,
"_source" : {
"log" : {
"offset" : 479086,
"file" : {
"path" : "/var/log/elasticsearch/gc.log"
}
},
"event" : {
"timezone" : "+00:00",
"dataset" : "elasticsearch.server",
"module" : "elasticsearch"
},
Ajouter un index sur Kibana
Maintenant, connectez-vous à votre tableau de bord Kibana et cliquez sur Index Modèles. Vous devriez voir la page suivante :
Maintenant, cliquez sur Créer un modèle d'index. Vous devriez voir la page suivante :
Ajoutez l'index ssh_auth-* et cliquez sur le bouton de l'étape Suivant. Vous devriez voir la page suivante :
Maintenant, sélectionnez @timestamp et cliquez sur le bouton Créer un modèle d'index. Vous devriez voir la page suivante :
Maintenant, cliquez sur l'onglet Découvrir dans le volet de gauche. Vous devriez pouvoir voir vos données dans l'écran suivant :
Toutes nos félicitations! Vous avez installé et configuré avec succès Filebeat pour envoyer des données d'événement à Logstash. Vous pouvez maintenant procéder à la création de tableaux de bord Kibana après avoir reçu toutes les données.