Crowdsec : protéger les serveurs Windows


Windows Server 2012R2 Windows Server 2016 Windows Server 2019 Windows Server 2022

Dans un tutoriel précédent, je vous ai expliqué comment protéger vos serveurs Linux avec Crowdsec afin de bloquer le trafic « malveillant ».

Depuis maintenant 2 mois quasiment, la version de Crowdsec est disponible pour Windows.

Si vous ne connaissez pas encore Crowdsec, voici une bref présentation :

Crowdsec va analyser différents fichiers de logs (Web, pare-feu, SSH, applications …) afin de détecter différentes attaques et mettre en place un blocage (règle de pare-feu, Captcha …). Son fonctionne est similaire à Fail2Ban bien connu des utilisateurs de Linux, la plus value de Crowdsec est d’être « collaboratif » , les adresses IP bloquées sont partagées entre les différents utilisateurs de Crowdsec (c’est un peu comme les appels de phare sur la route).

Au moment de la rédaction de ce tutoriel, la version Windows est encore en alpha, cela fait 2 mois que je la test et je n’ai pas eu de problème particulier.

Avant de vous lancer dans l’installation de Crowdsec, quelques prérequis sont nécessaires :

  • Le pare-feu Windows doit être activé afin de pouvoir bloquer les IPs.
  • Les logs doivent être activés sur le pare-feu
  • Le Dotnet SDK 6.0.2 doit être installé.

Le programme du tutoriel :

Installation du Dotnet SDK 6.0.X

Aller à l’url suivante : https://dotnet.microsoft.com/en-us/download/dotnet/6.0

Sur la page, télécharger le fichier d’installation 1 correspondant à l’architecture de votre serveur Windows.

Lancer l’exécutable 1 téléchargé.

Au lancement de l’assistant, cliquer sur Installer 1.

Patienter pendant l’installation (moins de 5 minutes).

Une fois l’installation terminée, cliquer sur Fermer pour quitter l’assistant.

Les prérequis logiciels sont satisfait, on va passer à l’installation de Crowdsec sur le serveur Windows.

Installation de Crowdsec sur Windows

Commencer par télécharger le fichier d’installation qui se trouve ici : https://alpha-packages.crowdsec.net/#windows/

Le lien est susceptible de changer

Télécharger le fichier crowdsec_*****.msi 1.

Exécuter le fichier téléchargé 1.

Au lancement de l’assistant d’installation de Crowdsec, cliquer sur Next 1.

Crowdsec Wizard Install

La seconde étape de l’assistant permet définir le chemin d’installation, si vous ne souhaitez pas le changer, cliquer sur Next 1.

Crowdsec Wizard Install

Ensuite cliquer sur le bouton Install 1.

Crowdsec Wizard Install

Patienter pendant l’installation de Crowdsec …

Une fois l’installation terminée de Crowdsec, cliquer sur Finish pour fermer l’assistant.

Crowdsec Wizard Install

Crowdsec est installé, avant de passer à la suite, on va s’assurer de son bon fonctionnement.

Ouvrir une invite de commandes en tant administrateur.

Entrer la commande ci-dessous :

cscli metrics

La commande doit vous retourner quelque chose comme ci-dessous :

Crowdsec cscli

Crowdsec fonctionne sur notre serveur Windows.

Configuration de Crowdsec

Avant de passer à l’installation du bouncer pour bloquer le trafic, nous allons passer à la configuration de Crowdsec et de Windows afin de pouvoir détecter le trafic.

Sur Windows, nous avons deux principales sources d’analyse au niveau des logs :

  • Les fichiers de logs comme sur Linux, qui peuvent être par exemple les fichiers de du pare-feu, IIS …
  • L’observateur d’événements Windows

Lors de l’installation de Crowdsec, celui-ci va détecter les composants installés sur le serveur et télécharger les scénarios en fonction.

Utiliser la commande ci-dessous pour les afficher :

cscli scenarios list
cscli scenarios list

Sur la capture ci-dessous, on peut voir que le scénario windows-bf est installé, il permet de détecter les brutes forces d’authentification en analysant l’observateur d’événement.

Ce scénario fait partie de la collection crowdsecurity/windows. Pour afficher la liste des collections installées, entrer la commande ci-dessous :

cscli collections list
cscli collections list

Pour voir où Crowdsec collecte les éléments, il faut ouvrir le fichier C:\Program Files\Crowdsec\Config\acquis.yaml.

Pour le moment Crowdsec, utilise la source Observateur d’événements (wineventlog), dans le journal Sécurité (Security) et recherche les évènements ayant id (event_ids) 4625 et 4623, qui enregistrement les échecs d’authentifications.

Voici un exemple d’évènement 4625 :

Depuis un autre ordinateur (192.168.100.5), j’ai essayé d’accéder à un partage avec l’utilisateur toto qui n’existe pas.

Sur on regarde les metrics de Crowdsec avec la commande : cscli metrics, on voit que Crowdsec a traité l’événement.

On peut également voir que Crowdsec a pris la décision de bloquer l’ip, pour cela utiliser la commande :

cscli decisions list

Pour le moment, cette décision n’a pas de conséquence, car nous n’avons pas de bouncer.

Pour la gestion du brute force, c’est gérer par défaut, on va maintenant voir la partie pare-feu et IIS.

« Protection » contre le scan de ports

Ici je parle d’une protection qui ne fonctionne pas bien du faut que le pare-feu Windows log très peu de DROP.

Comme les attaques brute force, cette protection peut être activée sur l’ensemble des serveurs, le but va être de détecter les scans de ports et de bloquer ensuite les adresses IP.

Cette protection s’appuie sur les logs du pare feu Windows, il faut donc avoir le pare-feu d’activé et ne pas avoir de règle qui autorise tout le trafic, car le but va être de détecter les DROP de paquet.

Depuis la panneau de configuration, aller sur les paramètres du pare-feu Windows et cliquer sur Paramètres avancés 1.

Au passage, on peut voir le pare-feu de mon serveur Windows est bien activé

On va vérifier, que le pare-feu est bien configuré, c’est à dire qu’il bloque les connexions entrantes n’ayant pas de règle qui autorise le trafic et que l’enregistrement des logs est configuré.

Cliquer sur Propriétés du Pare-feu Windows 1.

La configuration étant identique pour tous les profils, je vais seulement dans ce tutoriel, vous montrez la vérification sur le profil de domaine, il faut vérifier aussi les profils privé et public.

Dans la partie Etat, vérifier les connexions entrantes sont bloquées par défaut 1, si ce n’est pas le cas, sélectionner Bloquer (par défaut), puis cliquer sur le bouton Personnaliser 2 dans la partie Enregistrement pour configurer les logs.

Passer à Oui 1 l’option Enregistrer les paquets ignorés puis cliquer sur OK 2 pour valider les paramètres et fermer les Propriétés du Pare-feu Windows.

Redémarrer le service du Pare-feu Windows :

Restart-Service MpsSvc

Afin de tester le bon fonctionnement de la configuration, sur le serveur où Crowdsec est installé ouvrir le fichier de log en lecture continu :

cd C:\Windows\System32\LogFiles\Firewall
cat .\pfirewall.log -wait -Tail 20

Normalement vous devriez vous des DROP de paquet UPD, malheureusement , les logs du Firewall Windows sont très pauvre, il y a très peu voir par de DROP TCP, qui rend compliqué la détection de scan de ports.

Maintenant que tout est configuré, il faut installer la collection windows-firewall.

Dans l’invite de commande entrer :

cscli collections install crowdsecurity/windows-firewall

Avant de redémarrer le service, on va indiquer à Crowdsec de lire les logs du fichier pfirewall.log.

Ouvrir le fichier C:\Program Files\Crowdsec\Config\acquis.yaml.

Dans le fichier ajouter :

---
filenames:
 - C:\\Windows\\System32\\LogFiles\\Firewall\\pfirewall.log
labels:
 type: windows-firewall

Sauvegarder le fichier et redémarrer le service Crowdsec pour la prise en compte.

Restart-Service Crowdsec

Protection du serveur Web IIS

Si vous avez déjà lu mes tutoriels sur Crowdsec, vous savez que je l’affectionne pour la protection des serveurs Web (Apache, Nginx), avec le portage sur Windows, nous avons la possibilité de protéger le serveur Web Windows IIS.

Après avoir installer Crowdsec sur votre serveur Web IIS, il faut installer la collection IIS.

Entrer la commande suivante :

cscli collections install crowdsecurity/iis

Avant de redémarrer Crowdsec, on va passer à la configuration des logs de IIS.

Ouvrir la console IIS, aller sur des sites hébergés sur le serveur IIS et cliquer sur Journalisation 1.

IIS propose deux modes de journalisations :

  • Fichier journal – Fichiers de log, qui se trouve par défaut dans C:\inetpub\logs\LogFiles\W3SVC<ID_SITE>\u_ex<DATE>.log
  • Événement ETW – Evènements dans l’observateur d’événements Windows

Il est même possible de combiner les deux.

Crowdsec supporte les deux solutions, à savoir qu’il y a une petite subtilité, les logs dans l’observateur d’événements sont enregistrés directement, alors que les logs dans le fichier sont écrit toutes les minutes.

Pour ma part, j’ai une préférence pour l’observateur d’événement qui est en temps réel.

Dans la configuration de la journalisation, choisir le mode qui vous convient.

Au niveau de l’observateur d’événements, on retrouve les logs dans le journal Microsoft-Windows-IIS-Logging/Logs qui se trouve : Journaux des applications et des services / Microsoft / IIS-Logging / Logs. Celui doit être activé, faire un clic droit dessus et cliquer sur Activer le journal

Personnellement je vous conseille d’activer les 2, les événement ETW pour un traitement temps de réel avec Crowdsec et les fichiers pour avoir un historique et/ou un traitement à postériori avec ELK par exemple ou un outil de stats.

Penser à ajuster a taille du journal en fonction de vos besoins

On va maintenant indiquer à Crowdsec de lire les logs IIS, ouvrir le fichier Ouvrir le fichier C:\Program Files\Crowdsec\Config\acquis.yaml. et ajouter une des options ci-dessous pour la collecte de logs.

Fichier journal :

Evénement ETW :

Une fois le fichier acquis.yaml édité, redémarrer le service Crowdsec :

Restart-Service Crowdsec

Accéder au site protégé et ensuite vérifier avec la commande cscli metrics la prise en compte de la configuration.

Crowdsec analyse les logs IIS.

Installation du bouncer firewall pour Windows

Il ne nous reste plus qu’à mettre en place le bouncer afin de bloquer les attaquants.

Télécharger le fichier du Bouncer ici : https://alpha-packages.crowdsec.net/#windows/

Exécuter le fichier, au lancement de l’assitant cliquer sur Next 1.

Cliquer ensuite sur Install 1 pour confirmer l’installation du Bouncer.

Patienter pendant l’installation (c’est assez rapide) …

Une fois l’installation terminée, fermer l’assistant en cliquant sur Finish 1.

Le bouncer est installé, vérifier que le service soit bien démarré :

Get-Service cs-windows-firewall-bouncer

Vérifier également avec la commande cscli bouncer list que celui-ci est bien enregisté dans Crowdsec.

Au niveau des règles du pare-feu Windows, des règles Crowdsec sont ajoutées, qui vont contenir les adresses IP bloquées localement et également la liste des adresses de la communauté.

Tester la protection du serveur IIS avec Nikto

Si vous souhaitez tester la protection de votre serveur IIS, il est possible d’utiliser Nikto pour « attaquer » votre serveur.

Depuis une machine Linux, installer Nikto. une fois installé, lancer la commande ci-dessous :

nikto -h http://<ip_webserver_iis>

Normalement, vous êtes bloquer avant la fin des tests de Nikto

Sur le serveur Web, utiliser la commande cscli decisions list, vous devriez voir l’adresse IP de votre machine linux bannie.


Vous savez maintenant comment protéger vos serveurs Windows avec Crowdsec.