18 sept. 20241 min de lecture
Cheat sheet — Splunk (administration & SPL)
Administration d'un serveur Splunk (démarrage, utilisateurs, index, monitoring, dépannage) et le Splunk Processing Language : recherche, stats, timechart, eval, dedup, regex, et géolocalisation d'IP (iplocation, geostats, geom).
intermediate#splunk#siem#spl#soc#cheatsheet#detection
Mis à jour le 21 sept. 2026
Administration du serveur
splunk se trouve dans /opt/splunk/bin/ (Linux) ou
C:\Program Files\Splunk\bin\splunk.exe (Windows).
splunk start | stop | restart | status
sudo splunk enable boot-start # démarrage automatique
# Utilisateurs
splunk add user newuser -password '...' -role user -email [email protected]
splunk edit user newuser -password '...'
# Index
splunk add index mon_index \
-homePath /opt/splunk/var/lib/splunk/mon_index/db \
-coldPath /opt/splunk/var/lib/splunk/mon_index/colddb \
-thawedPath /opt/splunk/var/lib/splunk/mon_index/thaweddb
# Ingestion d'un fichier/dossier
splunk add monitor /var/log/app.log -index mon_index -sourcetype custom
# Apps & dépannage
splunk install app /path/app.spl
splunk list app
splunk btool check --debug # vérifier la config
splunk set log-level DEBUG
Après modification manuelle d’
inputs.conf/outputs.conf→splunk restart. L’ingestion depuis les postes se fait via le Universal Forwarder (agent léger qui pousse les logs vers l’indexeur).
SPL — Splunk Processing Language
index=weblogs sourcetype=access_log status=404 # recherche de base
... | fields status, uri_path # sélectionner des champs
... | where status=404 AND bytes > 5000 # condition avancée
... | stats count BY status # regrouper / compter
... | stats avg(response_time) BY status # agrégation
... | timechart count BY status span=1h # tendance temporelle
... | eval is_error=if(status >= 400, "yes", "no") # champ calculé
... | dedup ip_address # dédoublonner
... | sort -bytes # trier (desc)
... | rename uri_path AS page # renommer
... | table status, uri_path, response_time # tableau
... | regex uri_path="/images/.*" # filtre regex
... | top uri_path # valeurs fréquentes
... | eventstats avg(response_time) AS avg_response # stat globale par event
index=weblogs earliest=-1h # fenêtre temporelle
Géolocalisation d’IP
index=weblogs sourcetype=access_log
| iplocation client_ip # ajoute City, Country, lat, lon
| geostats count BY Country # agrégation géographique
| geom type=world # carte mondiale
Pour plus de précision, l’add-on MaxMind remplace la base intégrée. Usage SOC typique : visualiser les erreurs HTTP ou tentatives par pays/ville.