PowerShell ile RDP ataklarını engellemenin yolu (tr-TR)

Steel Contributor

Windows firewall üzerinde oluşturaacağınız RDP atak engelleme kurallınıza atak yapan IP adreslerini ekleyen bu script ile yanlış deneme yapan RDP isteklerinin IP adreslerini windows firewall üzerindeki  kuralınıza ekliyor.

 

# 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 ""

 

0 Replies