Introduction
Il y a quelque temps, nous avons publié un article sur l'intégration de Wazuh x CrowdSec. Nous allons poursuivre ce sujet en créant un dashboard personnalisé pour CrowdSec. Cela permettra de différencier les alertes CrowdSec de celles de Wazuh, et ainsi de mieux visualiser l'impact de CrowdSec sur vos serveurs préférés.
Prérequis
- Un serveur Wazuh
- Un groupe "crowdsec" créé
- CrowdSec installé sur vos serveurs préférés
Mise en place du dashboard
Bien, commençons par nous rendre dans la catégorie "Dashboard". Pour ce faire, allez dans Explore > Dashboards.
Puis, faisons "Create Dashboard" pour créer notre tableau de bord CrowdSec.
Bon, pour le moment, il n'y a absolument rien. Nous allons pouvoir créer et personnaliser nos modules afin d'obtenir les informations que nous voulons. Nous allons tout de même sauvegarder le dashboard afin de lui donner un titre et une description.
Commençons. Tout d'abord, nous allons créer trois "Metrics". Cela va nous permettre d'obtenir le nombre total d'alertes CrowdSec remontées dans Wazuh. Le premier représentera le nombre total d'alertes, le deuxième sera pour le nombre total d'alertes de niveau 12 à 14, et le troisième sera pour le nombre total d'alertes dépassant le niveau 15 et +.
Faites : Create new > Metrics, puis ->
+ Add filter
manager.name is target_manager_name
rule.groups is crowdsec
Et voilà, nous avons notre nombre total d'alertes CrowdSec. Il ne reste plus qu'à le faire deux autres fois, mais cette fois-ci en ajoutant les filtres suivants :
rule.level is between 12 -> 14
etrule.level is between 15 -> 16
Maintenant que nos trois métriques sont faites, il ne reste plus qu'à les ajouter à notre dashboard. Bien sûr, libre à vous de pousser la personnalisation et le rendu sur votre propre dashboard.
Voici notre propre rendu.
- [ ] 💡 Tips :
Pour pouvoir différencier les alertes CrowdSec, vous pouvez personnaliser vos règles comme ceci :
<rule id="100006" level="6">
<if_sid>100002</if_sid>
<field name="crowdsec.alert.scenario">crowdsecurity/ssh-bf</field>
<mitre>
<id>T1110</id>
</mitre>
<description>CrowdSec alert: $(crowdsec.alert.scenario)</description>
</rule>
<rule id="100024" level="11">
<if_sid>100002</if_sid>
<field name="crowdsec.alert.scenario">crowdsecurity/http-admin-interface-probing</field>
<mitre>
<id>T1595</id>
</mitre>
<description>CrowdSec alert: $(crowdsec.alert.scenario)</description>
</rule>
Créons maintenant deux graphiques en secteurs ("Pie charts"). Le premier nous servira à avoir un aperçu des scénarios les plus touchés, et le deuxième nous servira à avoir un aperçu des agents les plus touchés.
Commençons par les scénarios. Créez un nouveau graphique en secteurs (Pie Chart), puis faites :
Buckets = Split slices
Aggregation = Terms
Field = data.crowdsec.alert.scenario
Order by = Metric: Count
Order = Descending
Size = 7
À la fin de ceci, vous devriez obtenir quelque chose comme cela :
Créons maintenant celui pour les agents.
Buckets = Split slices
Aggregation = Terms
Field = agent.name
Order by = Metric: Count
Order = Descending
Size = 5
vous devriez obtenir quelque chose comme cela
Allons ajouter nos deux créations à notre dashboard. Pour notre part, nous obtenons cela :
Pour finir, nous allons créer un graphique en aire ("Area chart"). Cela va nous servir à suivre l'évolution des alertes et des différents agents. Voici comment faire :
Create new > Area, puis ->
Data = Buckets = Split series
Aggregation = Terms
Field = agent.name
Order by = Metric: Count
Order = Descending
Size = 5
Ensuite :
Data = Buckets = X-axis
Sub aggregation = Date Histogram
Field = timestamp
Minimum interval = Auto
Pour finir :
Metrics & axes = Metrics
Value axis = LeftAxis-1
Chart type = Bar
Mode = Stacked
Et voilà, vous devriez avoir quelque chose comme cela :
Il ne reste plus qu'à ajouter cela à notre dashboard :
POUR FINIR
Et voilà, nous avons créé un dashboard spécial pour CrowdSec. Libre à vous maintenant de le refaire et même d'aller encore plus loin dans la personnalisation de votre dashboard.