Windows Server 2022 et FSRM : comment se protéger des ransomwares ?

I. Présentation

Dans ce tutoriel, nous allons apprendre à configurer FSRM sur notre serveur de fichiers de manière à déployer une première barrière de protection contre les ransomwares. Pour cela, nous allons utiliser un script PowerShell prêt à l'emploi, développé par mes soins et personnalisable pour votre environnement.

Pour rappel, un ransomware, en français rançongiciel, est un logiciel malveillant qui va chiffrer vos données et vous demander de payer une rançon si vous souhaitez obtenir la clé de déchiffrement dans le but de récupérer vos données. Dans certains cas, les données sont également exfiltrées dans le but d'être divulguées ou revendues.

II. L'intérêt de cette protection

Avec le filtrage de fichiers de FSRM, on va pouvoir bannir certaines extensions de fichiers (et noms de fichiers) sur notre serveur de fichiers Windows Server. En bloquant les extensions associées aux ransomwares, on empêchera le ransomware de chiffrer les fichiers, car il ne pourra pas enregistrer le fichier dans son nouveau format.

Prenons un exemple. L'extension ".locky" associée au ransomware Locky. S'il est exécuté par un pirate sur votre serveur de fichiers, il ne pourra pas chiffer vos données, car l'extension ".locky" est bloquée sur les volumes/dossiers où sont situées vos données grâce à la règle mise en place et déployée via le script PowerShell.

Cette technique est connue depuis plusieurs années et mérite d'être toujours mise en place aujourd'hui puisqu'elle se met en place facilement et qu'elle protège vos données.

III. Que va faire ce script ?

Lorsque le script BlockRansomwares.ps1 sera exécuté sur votre serveur de fichiers, que va-t-il faire ?

Ce script sert à configurer le filtrage de fichiers dans FSRM sur votre serveur et à maintenir à jour la configuration. Ce script va :

  • Créer un groupe de fichiers

Ce groupe de fichiers contiendra la liste de toutes les extensions associées aux attaques par ransomware. Pour cela, on va s'appuyer sur la liste accessible à cette adresse qui est la relève du site fsrm.experiant.ca puisque la liste n'est plus maintenue après des années d'existences. Cette liste contient tous les noms de fichiers et toutes les extensions qui ont été utilisées par des ransomwares.

Cette liste sera mise à jour par le script (que l'on exécutera en tâche planifiée) pour tenir compte des changements apportés dans la liste téléchargée via l'API.

  • Créer un modèle de groupe de fichiers

Un modèle de groupe de fichiers sera créé pour effectuer du filtrage actif sur les extensions correspondantes à notre groupe de fichiers précédemment créé. Cela va aussi activer les notifications par e-mail et l'avertissement dans le journal des événements.

  • Créer les règles de filtre de fichiers

Pour finir, ce script va mettre en place les règles de filtrages de fichiers pour protéger les dossiers et volumes de votre choix.

  • Logs et rapports

Les actions réalisées par ce script seront journalisées dans des fichiers de logs et un rapport par e-mail pourra être envoyé à destination du service informatique à chaque exécution. Ce rapport contient la liste des nouvelles extensions ajoutées et des extensions supprimées.

IV. Déployer BlockRansomwares

Le projet BlockRansomwares se découpe en trois fichiers :

  • Prerequis-BlockRansomwares.ps1 : un script qui sert à vérifier la version PowerShell du serveur et à installer le rôle FSRM s'il n'est pas installé
  • BlockRansomwares.ps1 : le script qui sert à déployer la configuration et qu'il faut exécuter en tâche planifiée (au moins une fois par jour) pour mettre à jour la liste des extensions
  • BlockRansomwares.psd1 : un fichier de configuré appelé par le script de configuration qui vous permet de personnaliser le fonctionnement de l'outil

Voyons plus en détail comment cela se passe...

A. Prérequis

La première étape consiste à exécuter le script qui vérifie les prérequis, en tant qu'administrateur. Un retour de la console sera généré.

.\Prerequis-BlockRansomwares.ps1

BlockRansomwares - Prérequis

B. Personnaliser la configuration

La seconde étape consiste à personnaliser la configuration avec "BlockRansomwares.psd1".

Chaque paramètre est commenté, mais voici quelques informations complémentaires :

  • ClientName : nom de l'entreprise qui ressortira dans les rapports envoyés par e-mail (voir plus loin dans l'article)
  • APIMode :
    • En mode "Incremental", on ajoute les nouvelles extensions ajoutées dans la liste récupérée sur GitHub mais on ne supprime pas celles qui seraient supprimées dans cette même liste
    • En mode "Sync", on se calque à l'identique de la liste, pour tenir compte des ajouts et suppressions
  • ExtensionsToExclude : s'il y a une extension qui vous pose problème et qu'elle est dans la liste récupérée, vous pouvez l'exclure ici (plusieurs valeurs possibles)
  • ExtensionsToInclude : s'il y a une ou plusieurs extensions à ajouter, en plus de celles présentes dans la liste
  • ProtectAllShares :
    • Si ce paramètre est sur vrai ($true), le script va protéger tous les partages de fichiers du serveur, sauf ceux correspondants aux chemins déclarés dans DirToExclude
    • Si ce paramètre est sur faux ($false), le script va protéger uniquement les chemins déclarés dans DirToProtect
  • SMTP : les paramètres pour envoyer les e-mails, attention cela va venir écraser vos paramètres dans FSRM (si c'est déjà configuré) donc remettez vos valeurs

BlockRansomwares - Fichier de configuration complet

Une fois que la configuration est prête, le script de mise en place peut être exécuté.

C. Déployer la protection anti-ransomware dans FSRM

On exécute le script :

.\BlockRansomwares.ps1

Par défaut, il va chercher le fichier de configuration dans le même répertoire que le script. Sinon, il faut spécifier le paramètre -Config.

La sortie dans la console permet de voir ce qu'il se passe.

BlockRansomwares - Déploiement

Un nouveau groupe de fichiers sera créé :

BlockRansomwares - FSRM - Groupe de fichiers

Un nouveau modèle de filtre de fichiers sera créé :

BlockRansomwares - FSRM - Modèle

Enfin, la protection sera déployée sur tous les partages ciblés d'après la configuration de l'outil. Il est à noter que c'est uniquement de l'ajout : si une nouvelle exclusion est ajoutée dans la liste, ou que l'on change de mode, la protection n'est pas supprimée. Actuellement, on fait uniquement de l'ajout et actualisation.

FSRM - Bloquer ransomware - Exemple

Dans le même temps, un rapport par e-mail est envoyé. Voici à quoi il ressemble :

BlockRansomwares - FSRM - Rapport e-mail

D. Créer une tâche planifiée pour la mise à jour automatique

Pour que la liste des extensions soit actualisée fréquemment, on va créer une tâche planifiée qui s'exécuter une fois par jour et qui va relancer le script BlockRansomwares.ps1.

Cette tâche doit être créée par vos soins et exécuter le script via PowerShell. Ce qui donnera :

V. Conclusion

Grâce à la mise en place de ce filtrage, une barrière de protection très intéressante est en place sur votre serveur de fichiers ! Ce qui peut, potentiellement, vous éviter quelques sueurs froides....

FSRM - Blocage fichier LOCKY

Ce script est disponible en libre accès sur mon GitHub :

Vous pouvez aussi consulter ce projet similaire et qui mérite d'être connu :

Pour aller plus loin, on pourrait :

  • Désactiver temporairement le service de partage de fichiers du serveur de manière à bloquer l'attaque (attention aux éventuels faux positifs...)
  • Créer une règle de refus sur le partage pris pour cible en bloquant l'utilisateur qui a cherché à créer le fichier avec une extension bannie

Qu'en pensez-vous ? N'hésitez pas à laisser un commentaire si vous avez des idées d'amélioration.

Si vous souhaitez déployer cette solution sur votre serveur, vous pouvez me solliciter pour l'intégration !

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5575.Voir tous les posts

38 thoughts on “Windows Server 2022 et FSRM : comment se protéger des ransomwares ?

  • Au temps pour moi, j’ai écris un peu vite … 😀

    BlockRansomwares.ps1 ligne 131, les exclusions ne sont pas retirées de la liste:
    $FSRMapiJsonExt = $FSRMapiJsonExt | Where{ $_ -ne $FSRM_ExtensionsToExclude }
    à corriger avec:
    $FSRMapiJsonExt = $FSRMapiJsonExt | Where-Object { $FSRM_ExtensionsToExclude -notcontains $_ }

    Répondre
    • Hello Guyot,

      Merci beaucoup pour tes corrections, je viens de tester et de mettre à jour la version sur GitHub ! Sympa de ta part ! 🙂

      Répondre
  • Salut, bientôt 2 mois que j’utilise ton code avec beaucoup de satisfaction.
    En me basant sur le travail de Matt Hopton, (https://blog.netwrix.com/2016/04/11/ransomware-protection-using-fsrm-and-powershell/), je propose d’ajouter le blocage automatique de l’utilisateur sur tous les partages du serveur de cette façon: (testé et fonctionnel sur WS2019)
    Merci 😉

    BlockRansomwares.psd1
    FSRM = @{

    # Ajoute une commande PowerShell personnalisée
    Cmd = »C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe »
    # Bloque l’accès de l’utilisateur au partages du serveur en cas de détection
    CmdParameters =’-ExecutionPolicy Unrestricted -NoLogo -Command « & { Get-SmbShare -Special $false | ForEach-Object { Block-SmbShareAccess -Name $_.Name -AccountName  »[Source Io Owner] » -Force } } »‘
    # Restauration de l’accès:
    # Get-SmbShare -Special $false | ForEach-Object { Unblock-SmbShareAccess -Name $_.Name -AccountName ‘COMPTEADEBLOQUER’ -Force }
    # Source: https://blog.netwrix.com/2016/04/11/ransomware-protection-using-fsrm-and-powershell/
    }

    BlockRansomwares.psd1
    Ligne 44, ajout: $FSRM_Cmd = $ClientConfig.FSRM.Cmd
    Ligne 45, ajout: $FSRM_CmdParameters = $ClientConfig.FSRM.CmdParameters
    Ligne 218, modif: -Body « L’utilisateur [Source Io Owner] a tenté de sauvegarder le fichier [Source File Path] dans [File Screen Path] sur le serveur [Server]. Cette extension est contenue dans le groupe [Violated File Group], et elle n’est pas autorisée sur ce serveur. Tous les accès aux partages de ce serveur ont été bloqués pour cet utilisateur. » -RunLimitInterval 30
    Ligne 221, modif: -Body « L’utilisateur [Source Io Owner] a tenté d’enregistrer [Source File Path] dans [File Screen Path] sur le serveur [Server]. Ce fichier se trouve dans le groupe de fichiers [Violated File Group], qui n’est pas autorisé sur le serveur. Tous les accès aux partages de ce serveur ont été bloqués pour cet utilisateur. » -RunLimitInterval 30
    Ligne 222, ajout: $FSRM_NotifAction = New-FsrmAction -Type Command -Command $FSRM_Cmd -CommandParameter $FSRM_CmdParameters -SecurityLevel LocalSystem -KillTimeOut 1
    ligne 241, modif: New-FsrmFileScreenTemplate -Name $FSRM_FilesTemplateName -Active:$True -IncludeGroup « $FSRM_FilesGroupName » -Notification $FSRM_NotifEvent,$FSRM_NotifEmail,$FSRM_NotifAction

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.