Installer le collecteur Splunk sur mon Windows 11 :
- https://www.splunk.com/en_us/download.html
(Il s'agit de la version Entreprise, que vous pouvez tester pdt 60j, et après, elle passe automatiquement en version Free, si vous refusez de payer la licence)
Plan (option HEC + Python) :
1. Activer le port HEC dans Splunk (port 8088)
2. Créer un token HEC
3. Installer un petit script Python sur le RPi** pour envoyer les logs JSON
4. Les logs arrivent dans Splunk
Étape 1 : Activer HTTP Event Collector (HEC) dans Splunk
1. Va dans Splunk Web ([http://localhost:8000](http://localhost:8000))
Activer le "Collecteur d’événements HTTP"
2. En haut à droite, clique sur :
Paramètres globaux
1 - 2. Va dans :
Paramètres → Entrées de données
3.→ Collecteur d’événements HTTP
1. Paramètres globaux
Dans la fenêtre qui s’ouvre :
Active :
1. Activer le collecteur d’événements HTTP, en activant toutes les variables
2. Activer SSL(tu peux le décocher si tu veux du HTTP non sécurisé pour test local)
3. Vérifie que le **port** est `8088` (par défaut)
4. Clique sur "Enregistrer"
Créer un Token d’entrée
1. Toujours dans la même page, clique sur "NouveauVariable"
1. Donne un nom comme `suricata`
2. Décris ta variable
3. Clique sur "Suivant>"
1.2. et 3. Index : choisis"*main
' (ou un autre si tu en as créé un)
4.Clique sur "Résumé>"
1. Clique sur "Soumettre>" pour terminer.
1. !!Important!! : Copie bien le "Jeton d’authentification" (c’est la longue chaîne alphanumérique).
On en aura besoin dans le script Python côté RPi
!!! : Vous devez ouvrir en entrée le port 8088 de votre firewall
---
---
- tester avec curl :
Parfait !
Récupère le jeton HEC
(affiché juste après la validation dans l’interface Web Splunk — copie-le soigneusement)
Commande curl de test :
curl -k http://<IP_DE_TA_MACHINE_SPLUNK>:8088/services/collector/event \
-H "Authorization: Splunk <TON_JETON_HEC>" \
-H "Content-Type: application/json" \
-d '{"event": "Test réussi depuis RPi4 avec curl", "sourcetype": "json"}'
-> Remplace dans la commande :
<IP_DE_TA_MACHINE_SPLUNK> → l’adresse IP (ex : 192.168.1.42)
<TON_JETON_HEC> → le jeton généré dans l’interface Splunk (une longue chaîne)
Si tu as désactivé le SSL (comme dit plus tôt), remplace https:// par http:// et enlève l’option -k.
Si tout va bien :
Tu verras une réponse comme ceci, sur le Rpi :
{"text":"Success","code":0}
Et tu pourras voir ton événement dans Splunk :
Va sur Splunk Web (http://localhost:8000)
1. Reviens au début.
2. Va dans Search & Reporting (ou “Recherche et rapports”)
Fais une recherche comme :
index=main sourcetype=json
Valides ta saisie, ou appuie sur la touche [Entrée]
- Script Python pour envoyer les logs Suricata (eve.json) vers le collecteur Splunk :
Script Python pour envoyer les logs Suricata à Splunk (via HEC)
Crée un fichier nommé suricata_to_splunk.py :
nano ~/suricata_to_splunk.py
Colle ce code dedans :
import json
import requests
import time
import os
SPLUNK_HEC_URL = "http://<IP_SPLUNK>:8088/services/collector"
SPLUNK_HEC_TOKEN = "<TON_TOKEN_ICI>"
SURICATA_LOG_PATH = "/var/log/suricata/eve.json"
headers = {
"Authorization": f"Splunk {SPLUNK_HEC_TOKEN}"
}
def tail_f(path):
with open(path, "r") as f:
f.seek(0, os.SEEK_END)
while True:
line = f.readline()
if not line:
time.sleep(0.1)
continue
yield line
def send_to_splunk(event):
payload = {
"event": event,
"sourcetype": "_json"
}
response = requests.post(SPLUNK_HEC_URL, headers=headers, json=payload, verify=False)
if response.status_code != 200:
print(f"Erreur : {response.status_code} - {response.text}")
print("Envoi des logs Suricata vers Splunk...")
for line in tail_f(SURICATA_LOG_PATH):
try:
json_event = json.loads(line)
send_to_splunk(json_event)
except Exception as e:
print(f"Erreur de parsing ou d'envoi : {e}")
Remplace :
<IP_SPLUNK> par l'adresse IP de ton PC Windows avec Splunk (par ex : 192.168.1.42)
<TON_TOKEN_ICI> par le token que tu as copié
Installe les dépendances :
sudo apt update
sudo apt install python3-pip -y
(pip3 install requests) -> ne fonctionne pas sous Debian 12 Bookworm. Faire :
apt install python3-requests
Lance le script :
python3 ~/suricata_to_splunk.py
Si tout va bien, tu verras les logs apparaître dans Splunk, dans l’index que tu as choisi (main par défaut), avec le sourcetype _json.
On doit avoir à peu près ça :
🛠 Étapes pour créer le service systemd
1.
chmod +x ~/suricata_to_splunk.py
2.
Crée un fichier service dans /etc/systemd/system/ :
sudo nano /etc/systemd/system/suricata-forwarder.service
Colle ceci dedans (en adaptant ton chemin absolu si besoin) :
[Unit]
Description=Suricata to Splunk HEC Forwarder
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/pi/suricata_to_splunk.py
Restart=on-failure
User=root
WorkingDirectory=/home/pi
[Install]
WantedBy=multi-user.target
3.
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
4.
sudo systemctl enable suricata-forwarder.service
sudo systemctl start suricata-forwarder.service
5.
sudo systemctl status suricata-forwarder.service
6.
journalctl -u suricata-forwarder.service -f
Tu peux maintenant utiliser :
sudo systemctl start suricata-forwarder
sudo systemctl stop suricata-forwarder
sudo systemctl restart suricata-forwarder
sudo systemctl status suricata-forwarder
Souhaite-tu aussi créer un petit log fichier dédié à part dans /var/log au lieu du syslog ?
À partir de l’adresse <https://chatgpt.com/c/6843c88d-9938-801 ... 8218c2891d>
---
###
```bash
journalctl -u suricata-forwarder -f
```
Et si tu veux plus de lignes :
```bash
journalctl -u suricata-forwarder --no-pager --since "10 minutes ago"
```
---
Mais dans la plupart des cas, `journalctl` te donne déjà tout ce qu’il faut
S'il y a un pb de connexion, regarder si le Pare-feu de Windows 11 (ou si vous avez un autre pare-feu) est autorisé à recevoir des données sur le port 8088. On peut tester avec ça :
- netstat -an | findstr :8088
Source : Merci ChatGPT, de m'avoir éclairé sur ces points et de m'avoir permis de faire ce tuto
