Ochrana RDP proti hádaniu hesla pomocou blokovania IP podľa pravidiel brány firewall systému Windows

Bol nápad napísať jednoduchý skript PowerShell na automatické blokovanie IP adries z brány Windows, z ktorých sa zaznamenávajú pokusy hádajúce heslá prostredníctvom RDP (alebo dlhodobé útoky RDP). Ide o toto: skript PowerShell analyzuje protokol systémových udalostí a ak sa z konkrétnej adresy IP za posledné 2 hodiny zaznamená viac ako 5 neúspešných pokusov o autorizáciu prostredníctvom protokolu RDP, táto adresa sa automaticky pridá k pravidlu blokovania zabudovanej brány firewall systému Windows..

Existuje teda malá sieť s doménou, port RDP je preposlaný do jedného z počítačov na internetovej bráne s operačným systémom Linux prostredníctvom systému NAT (protokol TCP 13211 je prijatý zvonku a štandard 3389 je presmerovaný dovnútra). Pravidelne v počítači sú známe účty blokované pomocou politiky hesla domény kvôli neúspešným pokusom o prihlásenie do počítača pomocou protokolu RDP. Našou úlohou je automaticky blokovať adresy IP, prostredníctvom ktorých sa vyberajú heslá v programe RDP .

Najskôr vytvorte v počítači pravidlo brány firewall, ktoré blokuje prichádzajúce pripojenie RDP zo zadaných adries IP:

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

V budúcnosti k tomuto pravidlu pridáme adresy IP, z ktorých sa zaznamenávajú pokusy uhádnuť heslá pomocou protokolu RDP.

Môžete vytvoriť ďalšie pravidlo povoľovania, aby skript neblokoval potrebné adresy IP alebo podsiete.

Teraz musíte z počítačového denníka zhromaždiť zoznam IP adries, z ktorých bolo za posledné 2 hodiny zaznamenaných viac ako 5 neúspešných pokusov o autorizáciu. Ak to chcete urobiť, musíte v denníku zabezpečenia vybrať udalosti pomocou EventID 4625 (Neúspešné prihlásenie - Účet sa nepodarilo prihlásiť a LogonType = 3, pozri článok Analýza protokolu RDP vo Windows). V nájdených udalostiach musíte nájsť IP adresu pripájajúceho používateľa a overiť, či sa táto IP adresa v protokoloch vyskytla viac ako 5-krát..

Tento kód používam na výber adries IP útočníkov z udalostí za posledné 2 hodiny (môžete zmeniť čas):

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

Môžete uviesť nájdené adresy IP: $ getip

Teraz je potrebné do pravidla brány firewall BlockRDPBruteForce, ktoré sme vytvorili predtým, pridať všetky zistené adresy IP útočníka. Na správu brány firewall systému Windows použijeme zabudovaný modul zabudovaný modul PowerShell NetSecurity. Najprv získajte zoznam aktuálne blokovaných adries IP a pridajte 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 blokovaný pre' + ($ badRDPlogons | kde $ _. IpAddress -eq $ ip.name). Počet + 'pokusy za 2 hodiny' >> $ log # zapíše do protokolu súbor udalostí blokovania IP adries

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

Skontrolujte, či boli do pravidla blokovania brány firewall programu Windows Defender pridané nové adresy IP.

Stačí len skopírovať tento kód PowerShell do súboru c: \ ps \ block_rdp_attack.ps1 a pridať ho do úlohy plánovača, aby sa spustil podľa plánu. Napríklad každé 2 hodiny.

Úlohu plánovača môžete vytvoriť pomocou skriptu PowerShell alebo ručne:

$ opakovať = (New-TimeSpan - Hours 2)
$ duration = ([timeSpan] :: maxvalue)
$ Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date). Dátum -RepetitionInterval $ opakovať -RepetitionDuration $ Duration
$ 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

Alebo môžete spustiť skript PowerShell, keď sa v protokole objaví udalosť 4625, takže budete rýchlejšie reagovať na útok uhádnutia hesla pomocou protokolu RDP.

Tento skript môžete upraviť podľa svojich skutočností a použiť ho na blokovanie útokov RDP.