PowerShell ile RDP ataklarını engelleme (tr TR) - EmreOzanMemis/PowerShell-WindowsServer-Scripts GitHub Wiki
Firewall üzerinde yazdığınız RDP ataklarını engelleme kurallını kullanarak, gelen yeni atak IP adreslerini güncelleyebileceğiniz bir kodu sizin ile paylaşmak isterim. Kaynak olarak reukauff.eu adresinden gördüğüm kodu Türkçe çevirisini ve geliştirerek sizin ile paylaşmak isterim.
Kod sayesinde rdp ataklarını engelleyebilir block olarak tanımladığınız scope aralığını güncellyebilirsiniz.
PowerShell
powershell
# Firewall uzerinde tanimladiginiz kuralin adini yazınız $firewallRuleName = "RDP Atak Engelle" # Karalisteye eklenmetecek IP adreslerini yada hostnamelerini tanimlayiniz. $whiteList = @( [System.Net.Dns]::GetHostAddresses("powershell-ozan, Ozan-WI, 192.168.2.101").IPAddressToString ) ### kod ### Write-Host "Running at $(Get-Date)" $regExIp = "\d\d?\d?.\d\d?\d?.\d\d?\d?.\d\d?\d?" # RDS icin olusan Event loglardan 140 tanesini incele $currentAttackers = Get-Winevent Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational | Where-Object {$_.Id -eq 140} | Select Message -ExpandProperty Message # Response yok ise saldırı yoktur. if ($currentAttackers -eq $null) { Write-Host "No current attackers" return } # Her saldırı mesajını alın ve yukarıdaki regExIP'i kullanarak IP'yi filtreleyin for ($i = 0; $i -lt $currentAttackers.Count; $i++) { if ($currentAttackers[$i] -match $regExIp){ $currentAttackers[$i] = $Matches[0] } } # Bilinen saldırganları güvenlik duvarı kurallarından alın $knownAttackers = (Get-NetFirewallRule -DisplayName $firewallRuleName | Get-NetFirewallAddressFilter).RemoteAddress if ($knownAttackers -eq $null){ $knownAttackers = @() } $knownAttackers = $knownAttackers | Sort-Object -Unique # Kaydedilen her login kaydını kontrol et ve daha önce saldırgan olarak bilinip bilinmediğini kontrol et foreach($newAttacker in $currentAttackers) { if ($knownAttackers.Contains($newAttacker)) { #Bilinen bir IP ise işlem yapma continue } elseif ($whiteList -contains $newAttacker) { #Beyaz Listeye alınmış ise işlem yapma Write-Host "$newAttacker is dynamically whitelisted" continue } else{ #yeni bir saldırgan kara listeye ekle $knownAttackers += $newAttacker Write-Host "Added $newAttacker" } } # dublicate'leri kaldırın $knownAttackers = $knownAttackers | Sort-Object -Unique Write-Host "$($knownAttackers.Count) IPs on blacklist" # Tüm bilinen ve tüm yeni tespit edilen saldırganlarla Firwall kurallarını düzenle Set-NetFirewallRule -DisplayName $firewallRuleName "RDP Atak Engelle" -RemoteAddress $knownAttackers Write-Host ""