Zaščita RDP pred ugibanjem gesla z blokiranjem IP po pravilih požarnega zidu Windows

Obstajala je ideja, da bi napisali preprost skript PowerShell, da bi samodejno blokirali IP naslove v požarnem zidu Windows, iz katerih se snemajo poskusi ugibanja gesla prek RDP (ali dolgotrajnih RDP napadov). Ideja je naslednja: skripta PowerShell analizira sistemski dnevnik dogodkov in če se v določenih zadnjih dveh urah z določenega naslova IP zabeleži več kot 5 neuspešnih poskusov avtorizacije prek RDP, se ta naslov IP samodejno doda v pravilo blokiranja vgrajenega požarnega zidu Windows.

Torej obstaja majhno omrežje z domeno, vrata RDP se preko NAT-a pošljejo enemu od računalnikov na internetnem prehodu z Linuxom (vrata TCP 13211 so zunaj odgovorjena, standard 3389 pa je preusmerjen znotraj). Politika gesla domene občasno v računalniku blokira znane račune zaradi neuspešnih poskusov prijave v računalnik prek RDP. Naša naloga je, da samodejno blokiramo naslove IP, prek katerih se v RDP izberejo gesla .

Najprej v računalniku ustvarite pravilo požarnega zidu, ki blokira dohodno povezavo RDP iz določenih naslovov IP:

New-NetFirewallRule -DisplayName "BlockRDPBruteForce" -RemoteAddress 1.1.1.1 -Dohodni vhod -Protocol TCP -LocalPort 3389 -Action Block

V prihodnje bomo temu pravilu dodali IP naslove, iz katerih bodo poskušali uganiti gesla po RDP.

Lahko naredite dodatno dovoljenje, tako da skript ne blokira potrebnih naslovov IP ali podomrežja.

Zdaj morate iz računalniških dnevnikov zbrati seznam naslovov IP, s katerih je bilo v zadnjih 2 urah posnetih več kot 5 neuspelih poskusov avtorizacije. Če želite to narediti, morate v varnostnem dnevniku izbrati dogodke s programom EventID 4625 (neuspešna prijava - račun se ni uspel prijaviti in LogonType = 3, glejte članek Analiza dnevnika RDP v sistemu Windows). V najdenih dogodkih morate poiskati IP naslov povezovalnega uporabnika in preveriti, ali je bil ta IP naslov srečan v dnevnikih več kot 5-krat.

To kodo uporabljam za izbiro naslovov IP napadalcev pred dogodki v zadnjih 2 urah (lahko spremenite čas):

$ Last_n_Hours = [DateTime] :: Now.AddHours (-2)
$ badRDPlogons = Get-EventLog -LogName 'Varnost' -natem $ Last_n_Hours -InstanceId 4625 | ? $ _. Sporočilo -pazovanje 'vrste prijave: \ s + (3) \ s' | Select-Object @ n = 'IpAddress'; e = $ _. ReplacementStrings [-2]
$ getip = $ badRDPlogons | lastnost skupine-objekta-lastnost IpAddress | kjer $ _. Štetje -gt 5 | Izberite-ime lastnosti

Lahko najdete najdene naslove IP: $ getip

Zdaj moramo vse odkrite naslove IP napadalca dodati pravilniku požarnega zidu BlockRDPBruteForce, ki smo ga ustvarili prej. Za upravljanje požarnega zidu Windows bomo uporabili vgrajen modul, vgrajen PowerShell modul NetSecurity. Najprej dobite seznam trenutno blokiranih naslovov IP in mu dodajte nove..

$ log = "C: \ ps \ blokiran_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 blokiran za' + ($ badRDPlogons | kjer $ _. IpAddress -eq $ ip.name). Število + 'poskusi v 2 urah' >> $ log # napišite dogodek blokiranja IP naslova v datoteko dnevnika

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

Preverimo, ali so v pravilo za preprečevanje požarnega zidu Windows Defender dodani novi naslovi IP.

To kodo PowerShell morate preprosto kopirati v datoteko c: \ ps \ block_rdp_attack.ps1 in jo dodati v nalogo načrtovalca, da se bo izvajal po urniku. Na primer, vsaki 2 uri.

Nalogo načrtovalca lahko ustvarite s skriptom PowerShell ali ročno:

$ repeat = (Nov čas - Štiri ure)
$ trajanje = ([timeSpan] :: maxvalue)
$ Trigger = Novo načrtovanoTaskTrigger -Once -At (Get-Date) .Date -RechargeInterval $ repeat - PonovitevDuracija $ trajanje
$ User = "NT ORGAN \ SISTEM"
$ Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C: \ PS \ block_rdp_attack.ps1"
Registracija-ScheduledTask -TaskName "BlockRDPBruteForce_PS" -Trigger $ Trigger -User $ Uporabnik -Action $ Action -RunLevel Highest -Force

Lahko pa zaženete skript PowerShell, ko se dogodek 4625 pojavi v dnevniku, tako da boste hitreje odgovorili na napad ugibanja gesla s strani RDP.

Ta skript lahko spremenite v svoje resničnosti in ga uporabite za blokiranje RDP napadov.