RDP zaštita od nagađanja lozinkom s IP blokadom prema pravilima Windows vatrozida

Postojala je ideja napisati jednostavnu skriptu PowerShell-a za automatsko blokiranje IP adresa Windows firewall-a iz kojeg se bilježe pokušaji navođenja lozinke kroz RDP (ili dugotrajne RDP napade). Ideja je sljedeća: skripta PowerShell analizira zapisnik događaja sustava i ako se s određene IP adrese u posljednja 2 sata zabilježi više od 5 neuspješnih pokušaja autorizacije putem RDP-a, ova se IP adresa automatski dodaje pravilu blokiranja ugrađenog Windows vatrozida.

Dakle, postoji mala mreža s domenom, RDP port se putem NAT-a prosljeđuje na jedno od računala na internetskom gatewayu s Linuxom (TCP port 13211 je van, a standard 3389 je preusmjeren iznutra). Poznati računi povremeno se blokiraju pravilima zaporke za domenu zbog neuspjelih pokušaja prijave na računalo putem RDP-a. Naš je zadatak automatski blokirati IP adrese putem kojih se u RDP odabiru lozinke .

Prvo na računalu napravite pravilo vatrozida koji blokira dolaznu RDP vezu s specificiranih IP adresa:

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

Ubuduće ćemo ovom pravilu dodati IP adrese od kojih se pokušavaju pogoditi lozinke po RDP-u.

Možete napraviti dodatno dopuštajuće pravilo tako da skripta ne blokira potrebne IP adrese ili podmreže.

Sada morate prikupiti iz zapisnika računala popis IP adresa s kojih je u posljednja 2 sata zabilježeno više od 5 neuspjelih pokušaja autorizacije. Da biste to učinili, u sigurnosnom dnevniku morate odabrati događaje s EventID-om 4625 (neuspješna prijava - račun se nije uspio prijaviti i LogonType = 3, pogledajte članak RDP Analiza dnevnika u sustavu Windows). U pronađenim događajima trebate pronaći IP adresu korisnika koji se povezuje i provjeriti je li se ta IP adresa susrela u zapisnicima više od 5 puta.

Koristim ovaj kôd za odabir IP adrese napadača od događaja u posljednja 2 sata (možete promijeniti vrijeme):

$ Last_n_Hours = [DateTime] :: Now.AddHours (-2)
$ badRDPlogons = Get-EventLog -LogName 'Sigurnost' -akon $ Last_n_Hours -InstanceId 4625 | ? $ _. Message -match 'vrsta prijave: \ s + (3) \ s' | Select-Object @ n = 'IpAddress'; e = $ _. ReplacementStrings [-2]
$ getip = $ badRDPlogons | grupa-objekt-vlasništvo IpAddress | gdje je $ _. Broj -gt 5 | Odaberite Naziv vlasništva

Možete navesti pronađene IP adrese: $ getip

Sada sve otkrivene IP adrese napadača trebaju biti dodane BlockRDPBruteForce vatrozidu koje smo prethodno kreirali. Za upravljanje Windows vatrozidom koristit ćemo ugrađeni modul ugrađen PowerShell modul NetSecurity. Prvo, nabavite popis trenutno blokiranih IP adresa i dodajte mu nove..

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

$ current_ips + = $ ip.name
(Datum-datum) .ToString () + "+ $ ip.name + 'IP je blokiran za' + ($ badRDPlogons | gdje je $ _. IpAddress -eq $ ip.name). Broj + 'pokušaji u 2 sata' >> $ log # upišite događaj blokiranja IP adrese u datoteku dnevnika

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

Provjeravamo da su nove IP adrese dodane pravilu za blokiranje vatrozida Windows Defender.

Jednostavno morate kopirati ovaj PowerShell kôd u datoteku c: \ ps \ block_rdp_attack.ps1 i dodati ga u zadatak planera da bi se izvodio po rasporedu. Na primjer, svaka 2 sata.

Zadatak za planiranje možete stvoriti pomoću skripte PowerShell ili ručno:

$ repe = (novi-vremenski razmak -časovi 2)
$ trajanje = ([timeSpan] :: maxvalue)
$ Trigger = Novo-zakazaniTaskTrigger -Once -At (Get-Date) .Datum -ReceptInterval $ repeat -RetentionDuration $ trajanje
$ User = "NT AUTHORITY \ SYSTEM"
$ Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C: \ PS \ block_rdp_attack.ps1"
Registrirajte se-ScheduledTask -TaskName "BlockRDPBruteForce_PS" -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Highest -Force

Ili možete pokrenuti PowerShell skriptu kada se događaj 4625 pojavi u dnevniku, pa ćete brže odgovoriti na napad nagađanja lozinke od strane RDP-a.

Ovu skriptu možete izmijeniti u vašu stvarnost i upotrijebiti je za blokiranje RDP napada.