2. Installer un forwarder, pour envoyer eve.json à Splunk :

Modérateur : admin

admin
Site Admin
Messages : 14
Enregistré le : 18 juil. 2017, 17:18

2. Installer un forwarder, pour envoyer eve.json à Splunk :

Message par admin »

[Tout d'abord,

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.png
1.png (70.66 Kio) Vu 96 fois
1 - 2. Va dans :

Paramètres → Entrées de données
2.png
2.png (56.7 Kio) Vu 96 fois
3.→ Collecteur d’événements HTTP
3.png
3.png (22.3 Kio) Vu 94 fois
1. Paramètres globaux
4.png
4.png (39.5 Kio) Vu 94 fois
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"
5.png
5.png (15.58 Kio) Vu 93 fois
Créer un Token d’entrée



1. Toujours dans la même page, clique sur "NouveauVariable"
6.png
6.png (121.39 Kio) Vu 93 fois
1. Donne un nom comme `suricata`

2. Décris ta variable

3. Clique sur "Suivant>"
7.png
7.png (104.54 Kio) Vu 93 fois
1.2. et 3. Index : choisis"*main
' (ou un autre si tu en as créé un)

4.Clique sur "Résumé>"
8.png
8.png (44.48 Kio) Vu 93 fois
1. Clique sur "Soumettre>" pour terminer.
9.png
9.png (61.59 Kio) Vu 93 fois
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 ! 🙌 Voici comment tester ton jeton HEC Splunk avec curl depuis ton Raspberry Pi (ou toute autre machine avec curl installé).




🛠️ Étapes pour tester le HEC avec curl :

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)
10.png
10.png (44.8 Kio) Vu 87 fois
1. Reviens au début.

2. Va dans Search & Reporting (ou “Recherche et rapports”)
11.png
11.png (31.69 Kio) Vu 87 fois
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 :
12.png
12.png (179.72 Kio) Vu 87 fois
12.png
12.png (179.72 Kio) Vu 87 fois












🛠 Étapes pour créer le service systemd

1. ✅ Assure-toi que ton script est exécutable

chmod +x ~/suricata_to_splunk.py





2. 🧾 Crée un fichier de service

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

🔁 Remplace /home/pi/ par ton chemin exact si nécessaire (/root/ si tu es en root par exemple).




3. 🔄 Recharge les services systemd

sudo systemctl daemon-reexec
sudo systemctl daemon-reload





4. 📡 Active et démarre le service

sudo systemctl enable suricata-forwarder.service
sudo systemctl start suricata-forwarder.service





5. 📋 Vérifie son état

sudo systemctl status suricata-forwarder.service





6. 📜 Consulter les logs (via journalctl)

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

💡 Et le script redémarrera automatiquement au boot si tu l’as bien activé (enable).

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>











---



### 📖 Pour consulter les logs du service (toujours avec `journald`) :



```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 ;)