Dans ce deuxième tutoriel consacré à Splunk, nous allons découvrir un peu plus son interface mais aussi et surtout créer des sources de données pour l’alimenter. Nous allons utiliser des Forwarders.
Splunk Home
Avant de pouvoir utiliser Splunk, il est nécessaire de comprendre quelques concepts importants du logiciel. La première fois que vous vous connectez à Splunk, vous arriverez sur cette page d’accueil.
L’écran d’accueil se compose des éléments suivants :
- Barre de navigation, comprend des liens vers le profil de l’utilisateur et les messages, les paramètres et les pages d’aide.
- Menu des applications, liste des applications installées sur votre instance Splunk que vous avez la permission de visualiser. Dans notre exemple, seule l’application Search & Reporting est affichée.
- Explorer Splunk Enterprise, le panneau qui vous aide à démarrer avec Splunk. Vous pouvez faire un tour du produit, ajouter des données à Splunk, accéder aux applications et à la documentation de Splunk.
- Home Dashboard, un panneau où vous pouvez plus tard ajouter votre propre tableau de bord personnalisé.
Créer des sources de données dans Splunk (Data Sources)
Pour travailler avec Splunk, nous devons y ajouter des données. Splunk peut lire les données de machines à partir de plusieurs sources, telles que :
- Fichiers et répertoires, Splunk peut surveiller des fichiers (tels que les fichiers de log) ou des répertoires spécifiques.
- Les événements réseau, Splunk peut indexer des données distantes à partir de n’importe quel port réseau et des événements SNMP à partir d’appareils distants.
- Sources Windows, Splunk peut indexer de nombreuses entrées spécifiques à Windows, telles que le journal des événements de Windows, le registre Windows, WMI et Active Directory.
- Autres, Splunk prend également en charge d’autres sources d’entrée, telles que les files d’attente FIFO et les entrées scriptes pour obtenir des données à partir d’API et d’autres interfaces de données distantes.
Lorsque vous ajoutez des données à Splunk, il indexe les données et crée des données d’événements. Les unités individuelles de ces données sont appelées des événements. Les données que vous ajoutez peuvent se trouver sur le même ordinateur que celui de Splunk, ou sur une autre machine.
Qu’est-ce qu’un index ?
Un index dans Splunk est simplement un dépôt pour les données. Il est stocké sur un indexeur, qui est une instance de Splunk configurée pour indexer les données locales et distantes. Les données indexées peuvent ensuite être recherchées par le biais d’une application de recherche.
Lorsque l’indexeur indexe les données, il crée un ensemble de fichiers dans des ensembles de répertoires (appelés « buckets »). Les fichiers sont organisés par âge. Chaque index occupe son propre répertoire sous $SPLUNK_HOME/var/lib/splunk (/opt/splunk/var/lib/splunk). Par exemple, voici les fichiers de l’index appelé _internaldb :
Les index peuvent être créés avec Splunk Web, la ligne de commande (CLI), ou en modifiant manuellement le fichier indexes.conf.
Créer un index
Comme nous l’avons déjà mentionné, les index peuvent être créés avec Splunk Web, l’interface de ligne de commande (CLI), ou en modifiant manuellement le fichier indexes.conf. Bien entendu, la façon la plus simple de le faire est d’utiliser Splunk Web.
Voici les étapes à suivre :
Connectez-vous à Splunk Web avec un compte administratif et allez dans Paramètres > Index.
La page des index devrait s’ouvrir. Cliquez sur Nouvel index.
La page Nouvel index devrait s’ouvrir. Vous devez fournir les informations suivantes :
- Nom de l’index, le nom de l’index. Il ne peut contenir que des chiffres, des lettres minuscules, des traits de soulignement et des tirets et ne peut pas commencer par un trait de soulignement ou un trait d’union.
- Chemin d’origine, spécifie le chemin qui va contenir les données, laisser la valeur par défaut sauf avis contraire ($SPLUNK_DB/INDEX_NAME/db).
- Chemin pour la base colddb, spécifie le chemin pour les index ($SPLUNK_DB/INDEX_NAME/colddb)
- Chemin pour la base thaweddb, spécifie le chemin pour les index dézippés ou archivés pour réutilisation. ($SPLUNK_DB/INDEX_NAME/thaweddb)
- Taille maximale de l’index entier – la taille maximale de l’index. 500 000 Mo par défaut.
- Taille maximale du Bucket, taille cible maximale des buckets. Entrer ‘auto_high_volume’ pour les index volumineux.
- Frozen Path, chemin d’archive pour buckets gelés. À paramétrer si vous souhaitez que Splunk archive automatiquement les buckets gelés.
- App – l’application pour l’index.
Qu’est-ce qu’un forwarder ?
Le moyen le plus efficace de collecter des données à partir d’une machine distante est d’installer des redirecteurs universels (Universal Forwarders) sur les hôtes distants. Un Universal Forwarders est une version dédiée et légère de Splunk qui ne contient que les composants essentiels nécessaires à l’envoi de données. Il est similaire au serveur Splunk et possède de nombreuses caractéristiques similaires, mais il ne contient pas de web Splunk et n’est pas livré avec l’exécutable et les bibliothèques Python.
Les forwarder sont configurés pour consommer les données et les transmettre aux indexeurs Splunk pour traitement. Ils peuvent traiter exactement les mêmes types de données et peuvent les consommer de la même manière que n’importe quelle instance Splunk, à une différence près : ils n’indexent pas les données elles-mêmes. Ils traitent les données et les transmettent à un indexeur Splunk, qui se charge ensuite de l’indexation et de la recherche.
Dans un déploiement Splunk typique, les forwarder sont les principaux transmetteurs de données. Par exemple, si vous avez un certain nombre de serveurs web générant des données que vous souhaitez pouvoir rechercher de manière centralisée, vous pouvez installer un indexeur Splunk et ensuite installer des forwarders sur tous les serveurs web. Ces derniers peuvent alors être configurés pour envoyer les journaux à l’indexeur, qui les stockera et les rendra disponibles pour la recherche.
Configurer un receiver
Pour collecter les journaux des machines distantes, vous devez configurer à la fois un récepteur (receiver) et un expéditeur (forwarder). Le récepteur est l’instance Splunk qui recevra les données.
Vous pouvez utiliser le Web Splunk pour configurer une instance Splunk qui servira de récepteur. Connectez-vous à Splunk en utilisant le compte administratif et allez dans Paramètres > Transmission et réception.
Cliquez sur Ajouter nouveau sous la section Réception des données.
Indiquez le port TCP sur lequel vous voulez que le récepteur écoute. Le port généralement utilisé est 9997 :
Vous pouvez paramétrer plusieurs ports d’écoutes en fonction de vos besoins.
Installation du Splunk forwarder sur Windows.
Pour installer un Splunk forwarder, vous devez d’abord le télécharger. Allez sur https://www.splunk.com/en_us/download/universal-forwarder.html et choisissez le forwarder correspondant à votre système d’exploitation (des version 32 ou 64 bits sont disponibles pour Windows)
Dans cet exemple, nous allons installer un forwarder Splunk sur Windows 10. Démarrez l’installation en double-cliquant sur le fichier d’installation. Vous devriez être accueilli par la page d’installation. Ici, vous pouvez accepter les options par défaut ou personnaliser les options.
Création d’un compte local Administrateur pour exécuter Splunk Forwarder.
Par défaut, le forwarder universel sera installé dans C:\Program Files\SplunkUniversalForwarder\, utilisera un compte système local, et collectera les journaux d’événements Windows de l’application, du système et de la sécurité :
Ensuite, vous devez entrer le nom d’hôte ou l’adresse IP et le port de gestion de votre serveur de déploiement (le port de gestion par défaut est 8089). Le serveur de déploiement peut être utilisé pour transmettre les mises à jour de configuration au transporteur universel. Notez qu’il s’agit d’une étape facultative. Si vous la sautez, vous devez entrer un indexeur de réception (receiver) à l’étape suivante.
Une fois l’installation terminée, le forwarder universel devrait démarrer automatiquement.
Surveiller les journaux sur un Windows distant avec Splunk.
Si vous avez installé l’universal forwarder sur votre Windows, cela va être très simple.
Allez dans Paramètres -> Données -> Entrée de données -> Entrées forwardées -> Logs d’évènements Windows.
Puis cliquer sur Nouveau log d’évènements Windows distants.
A cette étape il est important de bien comprendre, ce qu’est une classe de serveur.
Une classe de serveur associe un groupe de clients de déploiement à une ou plusieurs applications de déploiement. En créant une classe de serveur, vous indiquez au serveur de déploiement qu’un ensemble de clients doit recevoir des mises à jour sous la forme d’un ensemble d’applications.
Un groupe de clients peut être basé sur une grande variété de critères, tels que le type de machine, le système d’exploitation, la zone géographique ou le type d’application.
Un client peut appartenir à plusieurs classes de serveurs. Par exemple, un Windows situé à Kelowna et fournissant des informations à l’équipe d’hébergement web peut appartenir à trois classes de serveurs : « Canada », « Windows » et « Web_host » par exemple. Ce diagramme montre comment les clients peuvent appartenir à plusieurs classes de serveurs :
Dans cet exemple, chaque client de déploiement est un transitaire Splunk Enterprise qui appartient à deux classes de serveurs, l’une pour son système d’exploitation et l’autre pour sa situation géographique. Le serveur de déploiement tient à jour la liste des classes de serveurs et utilise ces classes de serveurs pour déterminer le contenu à distribuer à chaque client.
Pour notre tutoriel, j’ai créé un Server Classes « Test-Windows » qui répertorie toutes mes machines Windows.
Cliquer sur Nouveau, puis sélectionner vos machines qui vont aller dans cette classe et enfin nommer là. Vous pouvez retrouver vos classes en cliquant sur Existant.
Cliquer sur Suivant pour continuer la configuration.
Sélectionner, les fichiers journaux que vous souhaitez analyser. Puis cliquer sur Suivant.
Sélectionner votre index de stockage des données. Vous pouvez en créer autant que vous souhaitez et organiser vos données à analyser. On pourrait imaginer un index pour les Windows, Linux, Switchs, Firewall, …
Cliquer sur Soumettre.
Les premiers logs arrivent dans le champ recherche.
Créer une entrée pour écouter un port UDP de type Syslog.
Dans cet exemple, je vais vous montrer comment renvoyer les logs vers splunk. Dans ce cas, je vais renvoyer les logs d’un Palo-Alto vers Splunk.
Aller dans Paramètres -> Données -> Entrée de Données -> Entrées Locales.
Sur la ligne UDP, cliquer sur Ajouter nouveau.
Il faut saisir ici, les paramètres que vous avez rentré sur votre équipement. A savoir si vous utilisez Syslog UDP et le port 514. Cliquer sur Suivant.
Nous allons maintenant paramétrer l’entrée. Pour cela vous allez devoir sélectionner une SourceType. Si elle n’existe pas dans la liste cliquer sur Nouveau. Dans cet exemple j’ai créé une étiquette Palo-Alto.
Dans Context de l’app, j’ai laissé la valeur par défaut Search & reporting (search).
Dans Hôte, idem j’ai laissé la valeur par défaut IP.
Dans Index, j’ai sélectionné, l’index que j’avais créé avant pour stocker les données de mes tests. Si vous souhaitez en créer un spécifique pour votre Firewall, cliquer sur Créer un nouvel Index.
Le résumé de de vos paramètres d’entrée s’affiche.
Cliquer sur Lancer la recherche, les logs doivent déjà arriver dans Splunk.
Maintenant vous pouvez rediriger tous vos équipements vers cette entrée pour analyser les logs d’équipements réseau ou firewall par exemple.
Voilà vous avez créé vos premières redirections de logs dans Splunk. Mais il reste beaucoup à faire. Nous verrons l’organisation des données, les filtres, les tableaux de bords afin de faire ressortir les éléments importants de vos logs dans d’autres tutoriels.