Effectuez des tests complets pour vous assurer que le système fonctionne correctement sans bloquer le trafic légitime.
Tout d'abord, simulez une attaque par force brute en générant des événements de connexion échoués (utilisez un compte de test) :
# Générer des événements de connexion échoués pour le test (exécuter depuis une autre machine)
for ($i = 1; $i -le 10; $i++) {
try {
$cred = Get-Credential -UserName "testuser" -Message "Entrez un mauvais mot de passe"
Enter-PSSession -ComputerName "YourServerIP" -Credential $cred
} catch {
Write-Host "Tentative échouée $i" -ForegroundColor Red
}
Start-Sleep -Seconds 2
}
Surveillez la détection en temps réel :
# Surveiller les nouvelles entrées Event ID 4625
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625; StartTime=(Get-Date).AddMinutes(-10)} |
Select-Object TimeCreated, @{Name='SourceIP';Expression={([xml]$_.ToXml()).Event.EventData.Data | Where-Object {$_.Name -eq 'IpAddress'} | Select-Object -ExpandProperty '#text'}}
Vérifiez que la règle de pare-feu est remplie et activée :
# Vérifier l'état de la règle de pare-feu
$Rule = Get-NetFirewallRule -DisplayName "BlockAttackers"
$Addresses = Get-NetFirewallAddressFilter -AssociatedNetFirewallRule $Rule
Write-Host "Règle activée : $($Rule.Enabled)" -ForegroundColor $(if($Rule.Enabled){'Green'}else{'Red'})
Write-Host "Adresses bloquées : $($Addresses.RemoteAddress -join ', ')" -ForegroundColor Yellow
Testez la connectivité depuis une plage d'IP bloquée (si possible) :
# Depuis le serveur, tester si la règle bloque réellement
Test-NetConnection -ComputerName "localhost" -Port 3389 -InformationLevel Detailed
Vérification : Vérifiez l'état complet du système :
# Vérification complète de l'état du système
Write-Host "=== État de la protection contre la force brute RDP ===" -ForegroundColor Cyan
Write-Host "Tâche planifiée : $(if((Get-ScheduledTask -TaskName 'RDP_BruteForce_Protection').State -eq 'Ready'){'En cours'}else{'Non en cours'})" -ForegroundColor Green
Write-Host "Règle de pare-feu : $(if((Get-NetFirewallRule -DisplayName 'BlockAttackers').Enabled){'Activée'}else{'Désactivée'})" -ForegroundColor Green
Write-Host "Journalisation des événements : $(if((auditpol /get /category:'Logon/Logoff' | Select-String 'Failure.*Success').Count -gt 0){'Activée'}else{'Désactivée'})" -ForegroundColor Green
Write-Host "Blocages récents : $((Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='RDC Brute Force Prevention Script'} -MaxEvents 5 -ErrorAction SilentlyContinue).Count)" -ForegroundColor Yellow
Avertissement : Testez toujours à partir d'une méthode de connexion secondaire (accès console, VPN ou IP différente) avant de déployer en production. Une règle mal configurée pourrait vous verrouiller hors de votre propre serveur.