# 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 “”