Ochrana RDP proti heslu s blokováním IP pomocí pravidel brány firewall systému Windows

Byla myšlenka napsat jednoduchý skript PowerShell, který automaticky blokuje IP adresy z brány Windows, ze které se zaznamenávají pokusy uhodnout hesla pomocí protokolu RDP (nebo dlouhodobých útoků RDP). Myšlenka je následující: skript PowerShell analyzuje protokol systémových událostí a pokud je z konkrétní adresy IP za poslední 2 hodiny zaznamenáno více než 5 neúspěšných pokusů o autorizaci prostřednictvím protokolu RDP, je tato adresa IP automaticky přidána k pravidlu blokování vestavěné brány firewall systému Windows.

Existuje tedy malá síť s doménou, port RDP je přeposílán na jeden z počítačů na internetové bráně s Linuxem přes NAT (port TCP 13211 je zodpovězen venku a standard 3389 je přesměrován dovnitř). Pravidelně v počítači jsou známé účty blokovány zásadou hesla domény kvůli neúspěšným pokusům o přihlášení k počítači pomocí protokolu RDP. Naším úkolem je automaticky blokovat IP adresy, prostřednictvím kterých jsou hesla vybírána v RDP .

Nejprve vytvořte v počítači pravidlo brány firewall, které blokuje příchozí připojení RDP ze zadaných adres IP:

New-NetFirewallRule -DisplayName "BlockRDPBruteForce" -RemoteAddress 1.1.1.1 -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Block

V budoucnu přidáme k tomuto pravidlu adresy IP, ze kterých budou zaznamenány pokusy o uhodnutí hesel pomocí protokolu RDP.

Můžete vytvořit další pravidlo povolení, takže skript neblokuje potřebné adresy IP nebo podsítě.

Nyní musíte shromáždit z počítačových protokolů seznam IP adres, ze kterých bylo za poslední 2 hodiny zaznamenáno více než 5 neúspěšných pokusů o autorizaci. Chcete-li to provést, musíte v protokolu zabezpečení vybrat události pomocí EventID 4625 (neúspěšné přihlášení - Účet se nepodařilo přihlásit a LogonType = 3, viz článek Analýza protokolu RDP ve Windows). V nalezených událostech musíte najít IP adresu připojujícího uživatele a ověřit, že tato IP adresa byla zaznamenána v protokolech více než 5krát.

Tento kód používám k výběru IP adres útočníků z událostí za poslední 2 hodiny (můžete změnit čas):

$ Last_n_Hours = [DateTime] :: Now.AddHours (-2)
$ badRDPlogons = Get-EventLog -LogName 'Security'-after $ Last_n_Hours -InstanceId 4625 | ? $ _. Message -match 'type login: \ s + (3) \ s' | Select-Object @ n = 'IpAddress'; e = $ _. ReplacementStrings [-2]
$ getip = $ badRDPlogons | group-object -property IpAddress | kde $ _. Count -gt 5 | Vyberte -property Name

Nalezené IP adresy můžete uvést: $ getip

Nyní je třeba do pravidla brány firewall BlockRDPBruteForce, které jsme vytvořili dříve, přidat všechny zjištěné adresy IP útočníka. Ke správě firewallu Windows použijeme vestavěný modul vestavěný modul PowerShell NetSecurity. Nejprve získejte seznam aktuálně blokovaných IP adres a přidejte na ně nové..

$ log = "C: \ ps \ block_ip.txt"
$ current_ips = (Get-NetFirewallRule -DisplayName "BlockRDPBruteForce" | Get-NetFirewallAddressFilter) .RemoteAddress
foreach ($ ip v $ getip)

$ current_ips + = $ ip.name
(Get-Date) .ToString () + "+ $ ip.name + 'IP je zablokováno pro' + ($ badRDPlogons | kde $ _. IpAddress -eq $ ip.name). Počet + 'pokusy za 2 hodiny' >> $ log # zápis události blokování IP adresy do souboru protokolu

Set-NetFirewallRule -DisplayName "BlockRDPBruteForce" -RemoteAddress $ current_ips

Ověřujeme, zda byly do pravidla pro blokování brány firewall systému Windows Defender přidány nové adresy IP.

Musíte pouze zkopírovat tento kód PowerShell do souboru c: \ ps \ block_rdp_attack.ps1 a přidat jej do úlohy plánovače, aby se spouštělo podle plánu. Například každé 2 hodiny.

Úlohu plánovače můžete vytvořit pomocí skriptu PowerShell nebo ručně:

$ opakovat = (New-TimeSpan -Hours 2)
$ duration = ([timeSpan] :: maxvalue)
$ Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) .Dátum -RepetitionInterval $ opakovat -RepetitionDuration $ trvání
$ User = "NT AUTHORITY \ SYSTEM"
$ Action = New-ScheduledTaskAction - Execute "PowerShell.exe" -Argument "C: \ PS \ block_rdp_attack.ps1"
Register-ScheduledTask -TaskName "BlockRDPBruteForce_PS" -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Highest -Force

Nebo můžete spustit skript PowerShell, když se v protokolu objeví událost 4625, takže budete rychleji reagovat na útok hádající heslo pomocí protokolu RDP.

Tento skript můžete upravit podle svých skutečností a použít jej k blokování útoků RDP.