Bloquer les attaques Brute Force RDP 8

Si vous laissez une machine connectée à Internet avec le protocole RDP ouvert, vous pourrez constater que dans le journal d’évènement énormément de machines essaient de se connecter en utilisant divers comptes.

L’idée est de bloquer ces attaques de manière automatique.

On va donc créer un script PowerShell qui sera déclencha dès la détection d’attaque au travers des journaux d’évènements et puis modifiera une règle du firewall Windows afin de stopper l’attaque.

Étape 1

Sur Windows 2012 R2, Microsoft ne nous a pas spécialement aidé car dans le journal de sécurité on détecte bien la tentative de connexion, en revanche l’ip source n’est pas spécifiée (ce n’est plus le cas dans Windows 2016):

On sait donc juste que une attaque a eu lieu…

Mais si l’on regarde dans le journal  Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational on retrouve un évènement 140  nous fournissant l’adresse du coupable.

Malheureusement, cet evenement n’est déclanché que lorque le nom utilisé est inconnu. Si le nom existe alors cet évenement n’est pas déclanché.

La solution consiste donc a corréler 2 évènement:

L’événement 131 du journal Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational qui signale une connexion:

et l’évènement du journal de sécurité

 

Ainsi l’on connaît l’adresse source d’où proviens la tentative de connexion !

Étape 2

Créer le script qui va récupérer l’adresse IP pour la mettre dans une règle Firewall

Petit prérequis, créer un règle de blocage pour le rdp 3389:

 

Ensuite ile faut créer un PowerShell pour alimenter cette règle:

 

 

 

On utilise PSSQLite afin de stocker les adresses Ip ainsi que l’heure de stockage. Cela permet 2 choses:

  • Savoir si une adresse récurrente essaie de se connecter et donc de la bloquer après x tentatives
  • Permettre au script de dé bannir une adresse après un certain temps.

Il ne reste plus qu’a attacher l’exécution de ce script a l’évent 4625 au sein du Task Scheduler:

Les adresse IP avec des connexions échouée se retrouvent dans la base :

 

Et la règle de Firewall est mise a jour:

 

8 thoughts on “Bloquer les attaques Brute Force RDP

  1. Reply Anthony Août 9,2017 09:02

    Bonjour,

    Merci pour ce script, il fonctionne impec sur notre serveur.

    Anthony

  2. Reply Vecteur IT Août 30,2017 07:45

    Merci !!

  3. Reply Vince Oct 11,2017 08:57

    Bonjour,

    J’ai découvert votre solution et je voulais faire des tests mais impossible d’installer un module dans powershell … et impossible de trouver le module d’installation de module sur le web…

    Si vous auriez un lien a partager….

    Je suis sur un serveur en 2012 avec powershell en version 4.

  4. Reply Arch21 Mar 24,2018 10:25

    Bonjour,

    Merci pour ce super script ! il va nous être très utile prochainement et les premiers résultats sont très concluants !

    J’ai cependant une petite question : La ligne 46 ({$csv= $csv += ‘,127.0.0.1’ # Anti lockout) permet logiquement d’inscrire des adresses à ne pas bloquer ?
    Chez nous elle fait exactement l’inverse… 127.0.0.1 est directement bloqué.

    Ai-je oublié quelque chose ?

  5. Reply Vecteur IT Avr 3,2018 16:48

    Bonjour,
    La ligne 46 contient toutes les ip à bloquer.
    De mémoire ,j’ai ajouté le loop-back car si la variable $csv est vide alors la règle de blocage s’applique a toutes les IP sans distinction

  6. Reply Bourle Avr 12,2018 20:25

    Bonjour

    Serait-il possible d’avoir le script pour créer la DB « IPTable.SQLite » ?
    (oui je sais 1 an après, mais fallait pas faire un script intéressant :p )

  7. Reply Bourle Avr 12,2018 23:24

    Alors je me réponds à moi-même :
    – l’erreur ne vient pas de la DB qui se génère automatiquement, mais de mes journaux sous Windows Server 2016

Leave a Reply

  

  

  

un × 3 =