Dans le chapitre précédent, nous avons étudié le fonctionnement des différents composants de la stack ELK. Dans ce chapitre, nous allons voir en détail comment charger les logs dans notre serveur ELK.
Envoyez les logs syslog dans ELK
Pour exporter les logs syslog dans ELK, naviguez dans votre interface du serveur d’ELK via l'adresse IP de votre serveur puis dans “Home”>”Add data” :
Dans l'onglet “Security”, il vous suffit ensuite de cliquer sur “System logs” pour avoir les informations d’installation pour votre serveur Linux.
Pour installer Filebeat, il faut que votre serveur Linux puisse accéder à votre serveur ELK.
Il faut ensuite modifier le fichier de configuration /etc/filebeat/filebeat.yml
avec votre URL ElasticSearch, vos nom d’utilisateur et mot de passe pour cet outil, et votre URL Kibana :
output.elasticsearch: hosts: ["<es_url>"] username: "elastic" password: "<password>" setup.kibana: host: "<kibana_url>"
Puis, activez le module system avec la commande suivante :
sudo filebeat modules enable system
Il existe d'autres modules que vous pouvez activer par exemple. Ils peuvent également être utiles pour votre monitoring.
Pour Apache :
sudo filebeat modules enable apache
Pour auditd :
sudo filebeat modules enable auditd
Finalement, vous pouvez démarrer Filebeat :
sudo filebeat setup sudo service filebeat start
Une fois le service démarré, vous pouvez vérifier votre installation dans ELK en cliquant sur “Check data” :
Si tout est OK, les données seront chargées automatiquement dans ELK.
Par défaut, ELK propose des dashboards préconfigurés que vous pourrez utiliser pour explorer les données remontées.
Envoyez les logs Sysmon dans ELK
Nous allons à présent installer Winlogbeat sur votre système Windows. Pour exporter les logs Sysmon dans ELK, il vous suffit de naviguer dans votre interface du serveur d’ELK dans “Home”>”Add data”>”Windows Event Log”, et suivre les instructions.
Une fois Winlogbeat installé, vous pouvez configurer le fichier C:\Program Files\Winlogbeat\winlogbeat.yml
avec votre URL ElasticSearch, vos nom d’utilisateur et mot de passe pour cet outil et votre URL Kibana :
output.elasticsearch: hosts: ["<es_url>"] username: "elastic" password: "<password>" setup.kibana: host: "<kibana_url>"
Finalement, il est possible de configurer le service pour automatiquement envoyer les logs vers ELK en exécutant la commande :
.\winlogbeat.exe setup
Les données peuvent ensuite être explorées dans plusieurs dashboards créés par ELK. Vous pouvez vérifier que votre installation marche depuis un des dashboards, comme ci-dessous :
Utilisez Packetbeat pour le réseau
Packetbeat permet de monitorer les connexions réseaux des machines. Cela peut être intéressant pour obtenir plus d'informations concernant les adresses IP source et destination, ainsi que les données échangées.
Après avoir installé Packetbeat, la configuration s'effectue dans le fichier /etc/packetbeat/packetbeat.yml
de la même manière que précédemment : avec votre URL ElasticSearch, vos nom d’utilisateur et mot de passe pour cet outil et votre URL Kibana.
Pour ajouter ou modifier des protocoles à monitorer, vous pourrez aussi modifier cette partie du fichier avec le type de protocole à surveiller et les ports concernés :
packetbeat.protocols: - type: dhcpv4 ports: [67, 68] - type: dns ports: [53] - type: http ports: [80, 8080, 8081, 5000, 8002] - type: memcache ports: [11211] - type: mysql ports: [3306,3307] - type: pgsql ports: [5432] - type: redis ports: [6379] - type: thrift ports: [9090] - type: mongodb ports: [27017] - type: cassandra ports: [9042] - type: tls ports: [443, 993, 995, 5223, 8443, 8883, 9243]
Enfin, lorsque vous êtes satisfait de votre configuration, vous pourrez l'activer avec les commandes suivantes :
packetbeat setup -e
sudo service packetbeat start
Dans Kibana, vous pourrez à présent visualiser les logs réseaux remontés dans “Discover” en filtrant sur Packetbeat*.
Vous pourrez également retrouver les dashboards par défaut.
Utilisez Logstash
Logstash peut être utilisé pour l'ingestion de logs non supportés par la suite Beats. Il permet la collecte, le traitement et le transfert des données.
Logstash fonctionne au moyen de pipelines : des fichiers de configuration contenant les informations de connexions ainsi que les modifications à effectuer sur les logs à envoyer. Il est possible de spécifier un unique fichier de logs avec l'option -f.
logstash -f mylog.conf
La création d'un fichier de configuration Logstash est composé de 3 parties.
Input : pour spécifier l'emplacement des logs à envoyer.
Filter : pour modifier le formatage des logs à envoyer, par exemple si vous souhaitez enlever une colonne non utile.
Output : pour spécifier les informations de connexion à votre instance ELK.
Voyons ensemble un exemple de configuration vide :
input { file { path => ["/place/of/logs/*"] start_position => "beginning" mode => "read" } } filter { csv { separator => "," } } output { elasticsearch { hosts => "localhost:9200" manage_template => false index => "myindex-%{+yyyy-MM-dd}" user => "your_user" password => "your_password" } stdout { codec => rubydebug } }
Dans l'exemple ci-dessus, nous chargeons un fichier CSV avec le séparateur "," depuis un emplacement défini.
Une fois votre fichier de configuration finalisé, je vous invite à tester votre fichier avec l'option -f
pour vérifier que tout fonctionne bien. Pensez à ajouter la ligne codec => rubydebug
comme indiqué dans l'exemple ci-dessus pour pouvoir troubleshooter.
En résumé
Nous venons de voir comment charger les logs suivants dans ELK :
L'ajout de logs Linux se fait sur la page "System logs" de l'onglet "Security" ;
Vos logs Windows sont remontés par Winlogbeat, que vous pouvez configurer depuis "Windows Event Log" de la page "Add data" ;
La configuration de Packetbeat permet le monitoring des connexions réseau des machines ajoutées dans son fichier ;
Les logs non supportés par la suite Beats sont intégrés avec Logstash, après la configuration du fichier.
Dans le prochain chapitre, nous verrons comment mettre en place et exploiter les fonctionnalités de SIEM, ainsi que la création de dashboard...