Depuis Windows XP sp2, Windows Firewall est activé par défaut. Or, dans beaucoup de déploiements, le pare-feu de Windows est désactivé. C’est le reliquat d’anciennes pratiques, à une époque où il était difficile de déterminer comment autoriser le passage des applications. Windows 10 et Windows Server 2019 intègrent déjà la plupart des politiques de pare-feu nécessaires et l'accès est relativement facile à configurer. Mais en améliorant les paramètres du pare-feu de Windows, on peut mieux se protéger contre les mouvements latéraux et les attaquants. Voici comment.
Créer des règles pour les binaires ou les exécutables
Si une application a besoin d'une règle spéciale, il faut la construire en se basant sur le binaire ou l'exécutable, et non sur le port. Cela permet de s'assurer que le pare-feu ne s'ouvre que lorsque l'application est active. Si l’on crée une règle de pare-feu en utilisant un port, ce port reste ouvert et expose le système.
Identifier les applications bloquées
Par défaut, les machines Windows envoient une alerte quand une application est bloquée. Cependant, il peut arriver qu’un administrateur IT ait envie d’utiliser le journal des événements pour identifier les applications bloquées plutôt que de s’appuyer sur les fenêtres pop-ups de la barre des tâches, faciles à manquer. Pour savoir quelles applications sont bloquées par Windows Firewall, il faut d'abord rechercher l'événement 5031 dans les logs d'événements. Il indique que le pare-feu Windows a bloqué une application en l'empêchant d’accepter des connexions entrantes sur le réseau. On peut aussi utiliser cet événement pour détecter les applications pour lesquelles aucune règle n’est prévue dans Windows Firewall.
Mettre en place une surveillance de la sécurité
Si vous utilisez une solution de suivi du journal des événements de sécurité pour surveiller les événements, il faut garder à l'esprit les choses suivantes :
- Si vous disposez d'une application prédéfinie pour effectuer l'opération qui a été signalée par cet événement, surveillez les événements dont l'« Application » ne correspond pas à l’application définie.
- Surveillez si « Application » ne se trouve pas dans un dossier standard (par exemple, pas dans System32 ou Program Files) ou dans un dossier restreint (par exemple, Temporary Internet Files).
- Si vous avez une liste prédéfinie de chaînes partielles ou de mots restreints dans les noms d'application (par exemple, « mimikatz » ou « cain.exe »), vérifiez si ces chaînes partielles se trouvent dans « Application ».
Bloquer PowerShell de l'accès à Internet
Vous pouvez utiliser Windows Firewall pour bloquer les applications qui accèdent aux ressources. Comme indiqué dans ce message du forum SANS, vous pouvez bloquer l'accès de PowerShell à Internet. Cette première règle ci-dessous permet à PowerShell d'accéder à un sous-réseau local. La deuxième règle permet de réduire le trafic.
C:\> netsh advfirewall firewall add rule name="PS-Allow-LAN" dir=out \
remoteip=localsubnet action=allow program="c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe" \
enable=yes
C:\> netsh advfirewall firewall add rule name="PS-Deny-All" dir=out \
action=block program="c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe" \
enable=yes
Ces règles peuvent protéger les systèmes contre les attaques qui exploitent PowerShell pour appeler des machines de commande et de contrôle et lancer des ransomwares et autres attaques. PowerShell ne doit pas être retiré, mais plutôt durci et enregistré pour garantir qu'il est utilisé comme prévu.
Vous pouvez également créer des règles pour plusieurs versions de PowerShell :
C:\> for /R %f in (powershell*.exe) do ( netsh advfirewall firewall add rule name="PS-Allow-LAN (%f)" dir=out remoteip=localsubnet action=allow program="%f" enable=yes
netsh advfirewall firewall add rule name="PS-Deny-All (%f)" dir=out action=block program="%f" enable=yes )
Règle de pare-feu pour empêcher PowerShell d’accéder à Internet. (Crédit : Susan Bradley)
Vous verrez la règle résultante dans les paramètres de règle de pare-feu sortant :
Règles Windows Firewall. (Crédit : Susan Bradley)
Si PowerShell est intentionnellement fait pour se cacher en appelant le binaire depuis une autre localisation ou en se renommant lui-même, ce processus ne fonctionnera pas. Il bloquera les attaques contre les cibles faciles.
Définir des règles de pare-feu avec PowerShell
Comme l’explique Microsoft, il est possible de définir des règles de pare-feu avec PowerShell. Par exemple, pour bloquer le port 80 sortant sur un serveur, utilisez la commande PowerShell suivante :
New-NetFirewallRule -DisplayName "Block Outbound Port 80" -Direction Outbound -LocalPort 80 -Protocol TCP -Action Block
Les propriétés de base à renseigner sont :
DisplayName - Le nom convivial de la règle de pare-feu.
Direction - Bloquer ou non le trafic sortant de l'ordinateur (outbound) ou entrant dans l'ordinateur (inbound).
Action - Quelle action entreprendre si la règle est respectée, autorisée ou bloquée.
De nombreux modules PowerShell permettent de mieux contrôler et de mieux gérer Windows Firewall. Tous sont documentés dans la section Netsecurity.
S’informer sur les nouvelles mesures de sécurité de Windows 10
N'oubliez pas qu'avec chaque version de Windows 10, Microsoft publie de nouvelles mesures de sécurité et fait des suggestions en termes de politiques de pare-feu.
Les politiques de base de Windows 10 2004. (Crédit : Susan Bradley)
Par défaut, les connexions entrantes doivent être bloquées pour le profil de domaine et le profil privé.
Auditer les paramètres régulièrement
Enfin, quand vous vérifier l'état de sécurité de votre réseau, vérifiez régulièrement les paramètres d’un échantillon aléatoire de postes de travail. Examinez les politiques de pare-feu de chaque poste de travail de l'échantillon. On est souvent surpris de voir les règles établies par les applications pour elles-mêmes quand on oublie de mettre en place des règles de blocage sur un segment donné.