PowerShell ile Web Sunucusu Loglarından Saldırgan IP Engelleme
Sunucunuzun erişim loglarını incelerken bazı IP'lerin sürekli olarak phpMyAdmin
, sqladmin
veya cgi-bin
gibi yolları taradığını mı fark ettiniz? Bu yazıda, saldırgan davranışlar sergileyen IP adreslerini loglardan otomatik olarak ayıklayan ve Windows Güvenlik Duvarı'nda engelleyen bir PowerShell scripti paylaşıyorum.
Adım 1 – Log Dosyasını Hazırla
Öncelikle Apache/Nginx gibi bir sunucudan alınmış bir erişim logunuz olmalı. Örnek format:
45.131.155.254 - - [29/May/2025:01:01:46 +0300] "GET / HTTP/1.1" 200 5795 "-" "Mozilla/5.0"
Bu dosyayı örneğin C:\loglar\access.log
yoluna yerleştirelim.
Adım 2 – PowerShell Scripti
Yeni bir PowerShell scripti oluşturun:
# Kaydet: block-malicious-ips.ps1
$logFile = "C:\loglar\access.log"
$logLines = Get-Content $logFile
$ipRegex = '(\d{1,3}\.){3}\d{1,3}'
# Şüpheli istekleri filtrele
$suspiciousPatterns = @(
"/phpmyadmin", "/sqladmin", "/mysql", "/db/php", "/cgi-bin", "/PMA",
"/MyAdmin", "Sakura.sh", "/Management.asp", "/authLogin.cgi"
)
$badIps = @{}
foreach ($line in $logLines) {
foreach ($pattern in $suspiciousPatterns) {
if ($line -match $pattern -and $line -match $ipRegex) {
$ip = ($line -match $ipRegex) | Out-Null; $matches[0]
if (-not $badIps.ContainsKey($ip)) {
$badIps[$ip] = 1
} else {
$badIps[$ip] += 1
}
}
}
}
# Engelle
foreach ($ip in $badIps.Keys) {
Write-Output "Engelleniyor: $ip"
New-NetFirewallRule -DisplayName "Block $ip" -Direction Inbound -RemoteAddress $ip -Action Block -Profile Any -Enabled True
}
Adım 3 – Scripti Çalıştırma
- PowerShell’i Yönetici olarak açın.
- Script dosyasının bulunduğu klasöre gidin:
cd C:\loglar
- Scripti çalıştırın:
Set-ExecutionPolicy RemoteSigned -Scope Process .\block-malicious-ips.ps1
İsteğe Bağlı: BAT Dosyası ile Çalıştırmak
Scripti çift tıklamayla başlatmak için aşağıdaki gibi bir .bat
dosyası oluşturabilirsiniz:
@echo off
powershell -ExecutionPolicy Bypass -File "C:\loglar\block-malicious-ips.ps1"
pause
Sonuç
Bu PowerShell çözümü ile şüpheli IP'leri loglardan ayıklayıp otomatik olarak Windows güvenlik duvarında engelleyebilirsiniz. Script, özellikle küçük çaplı web sunucuları veya kişisel sistemler için pratik bir güvenlik önlemi sunar.