Windows : bloquer toute sortie de paquets avant le logon !
C’était quelque chose que je cherchais à faire depuis longtemps. J’ai donc mis en place deux scripts écrits en PowerShell à l’arrêt de la machine et à l’ouverture de session de l’utilisateur, dont l’objet est de bloquer toute activité réseau tant que je ne suis pas logué !!! Malgré une configuration très millimétrée du pare-feu, j’ai pu me rendre compte de bien curieuses sorties de paquets. ;+)
Pour la gestion DNS, j’utilise pour ma part unbound, une application Open Source qui fait office de cache et de redirecteur. Tout ce qui touche à ce service dans le script est parfaitement facultatif. J’ai par ailleurs pris soin de renommer la « Connexion au réseau local » en « Ethernet » pour me simplifier la vie. Vous pouvez accéder directement à la configuration réseau avec la commande control ncpa.cpl.
Le script PowerShell d’arrêt de la machine
Il est à sauvegarder de préférence dans C:\Windows\System32\GroupPolicy\Machine\Scripts\Shutdown. Dans l’exemple, je l’ai appelé logoff.ps1.
#Facultatif Set-Service -Name "unbound" -StartupType Disabled -Status Stopped #Obligatoire Disable-NetAdapter -Name * -Confirm:$false
A l’aide de la commande gpedit.msc, allez au niveau de la stratégie de l’ordinateur local dans Configuration ordinateur -> Paramètres Windows -> Scripts -> Arrêt du système.
Au niveau des propriétés des scripts d’arrêt du système, sélectionner l’onglet Scripts PowerShell. Cliquez alors sur Ajouter -> Parcourir et sélectionnez le fichier que vous avez pris soin de déposer comme je vous l’ai indiqué au préalable.
Le script PowerShell d’ouverture de session
Je vous conseille de le sauvegarder de préférence dans C:\Windows\System32\GroupPolicy\User\Scripts\Logon. Dans l’exemple, je l’ai appelé logon.ps1.
#Obligatoire Enable-NetAdapter -Name "Ethernet" -Confirm:$false -IncludeHidden #Facultatif Set-Service -Name unbound -StartupType Automatic $service=Get-Service -Name unbound while($service.Status -ne 'Running') { Try { Set-Service -Name unbound -status Running $service=Get-Service -Name unbound } Catch { } }
Toujours avec gpedit.msc, vous devez choisir Configuration utilisateur -> Paramètres Windows -> Scripts -> Ouverture de session.
Après avoir réalisé un double-clic sur Ouverture de session, allez au niveau de l’onglet Scripts PowerShell pour y ajouter votre script logon.ps1.