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