Contrer les attaques Brute Force sur RDP Windows Server
Depuis plusieurs mois, l'intensité et la fréquence des attaques de type Brute Force (voir définition ici) sur les ports RDP (= Bureau à distance) de plusieurs serveurs Windows sous ma responsabilité ont considérablement augmentés. Et c'est fâcheux !
Petit rappel, votre résistance à une attaque Brute Force dépend de la complexité de votre mot de passe. Or aujourd'hui encore, beaucoup de mots de passe ne sont pas au niveau des recommandations en terme de sécurité. Il s'agit aussi d'une question de temps donc plus le temps passe, plus le risque augmente. Raison de plus pour agir !
Par précaution, même si le port RDP a été modifié et la complexité du mot de passe augmenté, j'ai choisi de mettre en place une protection supplémentaire.
Windows Serveur ne propose malheureusement pas de mécanisme pour s'en protéger. Sous Linux, il existe un outil que de nombreux administrateurs connaissent bien : Fail2Ban. Le principe est simple : on bloque (temporairement ou définitivement selon votre choix) toute adresse IP qui échoue à se connecter à un service. Efficacité garantie contre les attaques Brute Force.
J'ai donc recherché et testé plusieurs solutions / logiciels qui reprennent ce principe.
Mon choix s'est porté sur EvlWatcher ==> Page du projet
Comme le dit son auteur, "It's basically a fail2ban for windows.". Son avantage : simple et efficace !
EvlWatcher s'installe comme un service Windows. Le paramétrage se fait par l'édition d'un fichier de configuration et une "console" permet de suivre son activité.
Etape 1 : Identification du problème
Si on regarde les événements Windows, on ne peut que constater le problème. Chacune des entrées listées ici représente un échec d'authentification.
Si on regarde le détail d'un événement, on va trouver des informations très utiles (dont l'adresse IP) :
Raison de l’échec : Nom d’utilisateur inconnu ou mot de passe incorrect.
État : 0xC000006D
Sous-état : 0xC000006A
Informations sur le processus :
ID du processus de l’appelant : 0x0
Nom du processus de l’appelant : -
Informations sur le réseau :
Nom de la station de travail : WIN-4RSAPI343OT
Adresse du réseau source : 176.111.174.200
Port source : 0
EvlWatcher va s'occuper de surveiller les logs, extraire l'adresse IP et générer une règle de pare feu pour bloquer cette adresse.
Etape 2 : L'installation de EvlWatcher
L'installation est rapide et - par défaut - se fait dans : C:\Program Files (x86)\EvlWatcher
Le fichier de configuration s'appelle config.xml
Une fois installé, le service est normalement actif et vous pouvez lancer la console (EvlWatcherConsole) en allant dans le menu démarrer.
Etape 3 : Validation
Le programme est bien actif.
- La liste de gauche désigne les adresses IP bloquées temporairement (selon configuration).
- La liste centrale désigne les adresses IP bloquées de façon permanente (selon configuration).
- La liste de droite désigne les adresses IP autorisées. Pensez à mettre ici votre adresse IP en cas d'administration à distance.
Etape 4 : Vérification
Au bout d'un certain temps (ici ~24 heures), on peut voir l'efficacité du programme.
Etape 5 : Ajustement de la configuration
Si vous souhaitez mettre à jour certaines valeurs de paramètre, il faut éditer le fichier config.xml situé dans le répertoire d'installation.
Durée en secondes du bannissement temporaire. A augmenter en cas d'attaque répétée.
<LockTime>
3600
</LockTime>
Durée en secondes à considérer pour décider d'un bannissement
<EventAge>
120
</EventAge>
Nombre de tentative(s) avant de décider d'un bannissement. A réduire en cas d'attaque répétée.
<TriggerCount>
5
</TriggerCount>
Nombre de bannissement(s) pour basculer de temporaire à permanent
<PermaBanCount>
3
</PermaBanCount>
Etape 5 : Le mot de la fin
Depuis la mise en service de EvlWatcher, le nombre de tentatives de logon est passé de plusieurs centaines (millier ?) par jour à ... quelques dizaines max. Ces tentatives résiduelles sont celles qui se produisent AVANT que EvlWatcher ne décide de les bannir. La probabilité d'une réussite de l'attaque Brute Force s'effondre littéralement. Mission accomplie !