Installation d’ELK et configuration de Logstash pour la réception de Syslog
Nous avons dans les précédents articles comparé différentes solutions SIEM, puis
nous avons vu comment installer Splunk. Nous allons aujourd’hui nous intéresser
à son alternative open source à savoir la stack ELK.
Nous utilisons dans ce tutoriel Debian 8 (Jessie ) comme distribution.
Installation des prérequis
apt-get install -y wget apt-transport-https curl unzip sudo
Pour fonctionner, ELK nécessite Java. On donc commencer par l’installer :
echo "deb [Link] jessie-backports main" >
/etc/apt/[Link].d/[Link]
sudo apt-get update
sudo apt-get install -t jessie-backports openjdk-8-jre-headless
Puis vérifiez votre version de java :
java -version
[Link]
Installation d’Elasticsearch
curl -s [Link] | apt-key add -
echo "deb [Link] stable main" |
tee /etc/apt/[Link].d/[Link]
apt-get update
On installe elasticsearch et on lance son service :
apt-get install elasticsearch
systemctl enable [Link]
systemctl start [Link]
Vérifiez qu’Elasticsearch est actif :
systemctl status elasticsearch
Puis, pour tester son fonctionnement, tapez la commande suivante :
curl -X GET [Link]
Vous devriez avoir un message similaire :
Publicité
Réglages de confidentialité
[Link]
Si jamais, vous obtenez « connexion refusée » attendez quelques instants puis
retapez la commande le temps qu’Elasticsearch prenne en compte les
modifications.
Installation de Logstash
On rajoute les dépôts nécessaires puis on installe logstash :
echo "deb [Link] stable main" |
sudo tee -a /etc/apt/[Link]
apt-get update
apt-get install logstash
Logstash est installé, passons maintenant à sa configuration.
Configuration de Logstash
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 commence donc par taper la commande suivante qui permet de donner à
Java le droit d’écouter sur les ports réservés au système.
setcap cap_net_bind_service=+epi /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
La configuration de Logstash se fait dans le répertoire /etc/logstash/conf.d/
On va donc créer un fichier [Link] pour récupérer les Syslog de nos
équipements. Vous pouvez appeler le fichier comme vous voulez du moment qu’il
termine par « .conf »
nano /etc/logstash/conf.d/[Link]
Et rajoutez-y le contenu suivant :
input {
tcp {
port => 514
type => syslog
}
udp {
port => 514
type => syslog
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp}
%{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}
(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
On redémarre le service :
service logstash restart
Installation de Kibana
Kibana est l’interface web qui permet de visualiser l’ensemble de nos logs, pour
les analyser, faire des graphiques etc.
Publicité
Réglages de confidentialité
On ajoute les dépôts puis on installe Kibana :
echo "deb [Link] stable main" |
sudo tee -a /etc/apt/[Link]
apt-get update
sudo apt-get install kibana
Par défaut Kibana est accessible qu’en localhost, on va donc éditer son fichier de
configuration pour y accéder de plusieurs machines.
nano /etc/kibana/[Link]
Et on modifie la ligne suivante :
[Link]: "@IP de votre serveur"
Puis on démarre Kibana :
systemctl enable kibana
systemctl restart kibana
L’interface de Kibana est désormais accessible à : [Link]
Si vous avez bien configuré Logstash et vos équipements réseaux pour l’envoie
de Syslog, vous devrez créer un Index pattern lors de votre première connexion.
[Link]
Indiquez logstash-* puis cliquez sur Next Step.
[Link]
Dans Time Filter Field name choisissez @timestamp. Cela correspond à l’heure du
traitement des données. Enfin cliquez sur create index pattern.
Votre pattern logstash-* est créé, vous devriez maintenant voir vos logs
apparaître :
log [Link]
C’est tout pour cet article, nous verrons dans les prochains articles comment
récupérer les logs d’autres équipements avec filebeat par exemple et comment
faire des graphiques, tableaux de bords etc…