Splunk - Forward Syslog
Alasta 26 Juillet 2021 splunk splunk admin cli
Description : Nous allons voir comment forward des logs à un syslog sans l'envoyer à un indexer.
Contexte :
Envoyer des logs en syslog à un serveur distant sans envoyer à un indexer.
Nous aurons besoin d’un HF et d’un Indexer/Search Head (SplunkCore) avec une licence valide.
Les 2 serveurs sont en CentOS 7, avoir le firewall des serveurs avec les bons ports ouverts ou désactivé.
Avoir le SplunkCore avec un syslog qui accepte les messages/connexions sur le port TCP 514.
Configuration initiale :
SplunkCore - Préparation de collecte :
Création de la configuration inputs pour le port d’écoute :
$ mkdir -p /opt/splunk/etc/apps/my_inputs/local/
$ vi /opt/splunk/etc/apps/my_inputs/local/inputs.conf
[splunktcp://9997]
disable = 0
Création de la configuration servers pour les machines de lab :
$ mkdir -p /opt/splunk/etc/apps/my_server/local/
$ vi /opt/splunk/etc/apps/my_server/local/server.conf
[diskUsage]
minFreeSpace = 50
Création de la configuration indexes pour le lab :
$ mkdir -p /opt/splunk/etc/apps/my_indexes/local/
$ vi /opt/splunk/etc/apps/my_indexes/local/indexes.conf
[labindex]
coldPath = $SPLUNK_DB/$_index_name/colddb
homePath = $SPLUNK_DB/$_index_name/db
thawedPath = $SPLUNK_DB/$_index_name/thaweddb
Redémarrage du service pour prise en compte :
$ sudo systemctl restart Splunkd
HF - Configuration classique :
Création de la configuration outputs vers l’IDX :
$ mkdir -p /opt/splunk/etc/apps/my_outputs/local
$ vi /opt/splunk/etc/apps/my_outputs/local/outputs.conf
[tcpout]
defaultGroup=my_indexers
[tcpout:my_indexers]
server=192.168.139.193:9997
Création de la configuration servers pour les machines de lab :
$ mkdir -p /opt/splunk/etc/apps/my_server/local/
$ vi /opt/splunk/etc/apps/my_server/local/server.conf
[diskUsage]
minFreeSpace = 50
Création du jeu de données :
$ mkdir -p /tmp/splunkhfcollecte/
$ tail /var/log/messages > /tmp/splunkhfcollecte/fichier01
Création de la configuration inputs pour collecter et envoyer les données :
$ mkdir -p /opt/splunk/etc/apps/my_inputs/local/
$ vi /opt/splunk/etc/apps/my_inputs/local/inputs.conf
[monitor:///tmp/splunkhfcollecte/fichier01]
sourcetype = syslog
index = labindex
Redémarrage du service pour prise en compte :
$ sudo systemctl restart Splunkd
SplunkCore - Vérification :
Sur la WebUI du SplunkCore, vérifier la bonne reception des logs avec la requête search suivante :
index="labindex"
Configuration avec envoi Syslog :
HF - Configuration spécifique :
Le but de notre configuration est d’envoyer des logs avec le sourcetype apache:access qu’à un serveur syslog.
Création de configuration props dans notre app my_inputs :
$ vi /opt/splunk/etc/apps/my_inputs/local/props.conf
[default]
TRANSFORMS-routing = syslog_null
[apache:access]
TRANSFORMS-routing = syslog_routing_rsyslog, tcp_routing_null
Note : l’envoi en syslog est désactivé par défaut, on fera appellera un transforms qui enverra en syslog et desactiverra l’envoi à Splunk pour le sourcetype apache:access.
Création de configuration transforms dans notre app my_inputs :
$ vi /opt/splunk/etc/apps/my_inputs/local/transforms.conf
[syslog_null]
REGEX = .
DEST_KEY = \_SYSLOG_ROUTING
FORMAT =
[tcp_routing_null]
REGEX = .
DEST_KEY =\_TCP_ROUTING
FORMAT =
[syslog_routing_rsyslog]
REGEX=.
DEST_KEY=_SYSLOG_ROUTING
FORMAT=syslog_rsyslog
Note : déclaration de différents transforms.
Création de configuration outputs dans notre app my_inputs :
$ vi opt/splunk/etc/apps/my_inputs/local/outputs.conf
[syslog:syslog_rsyslog]
server = 192.168.139.193:514
type = tcp
syslogSourceType=sourcetype::apache:access
Création du jeu de données pour Syslog avec des logs apaches :
$ tail /opt/splunk/var/log/splunk/splunkd_ui_access.log > /tmp/splunkhfcollecte/fichier02
Redémarrage du service pour prise en compte :
$ sudo systemctl restart Splunkd
SplunkCore - Vérification :
Sur la WebUI du SplunkCore, vérifier que l’on ne reçoit pas des logs avec la requête search suivante :
index="*"
Vérifier (en fonction de la configuration) dans le Syslog que l’on reçoit bien les logs.