Ransomware Koruması: Windows Server’da Controlled Folder Access Nasıl Yapılandırılır

Fidye yazılımı saldırıları artık sadece büyük şirketlerin değil, 50 kişilik bir muhasebe firmasının ya da küçük bir hastaneninrde başına gelebilecek bir kabus haline geldi. Bir sabah geldiğinde sunucundaki tüm dosyaların şifrelenmiş olduğunu görmek, herhangi bir sysadmin’in yaşayabileceği en kötü deneyimlerden biri. Windows Server’da yerleşik olarak gelen Controlled Folder Access (Denetimli Klasör Erişimi) özelliği, bu senaryoya karşı ciddi bir savunma katmanı sunuyor. Bedavaya gelen bu özelliği neden kullanmıyorsun, hadi birlikte inceleyelim.

Controlled Folder Access Nedir, Nasıl Çalışır?

Controlled Folder Access, Windows Defender’ın bir parçası olan ve belirli klasörlere yetkisiz uygulama erişimini engelleyen bir güvenlik mekanizması. Temel mantığı şu: sen hangi uygulamaların hangi klasörlere yazabileceğini belirlersin, geri kalan her şey engellenir.

Fidye yazılımları çalışma şekli açısından düşünüldüğünde, sisteme sızdıktan sonra dosya sistemine yazma erişimi olmadan hiçbir şey yapamaz. Dosyaları şifrelemek için onlara erişmesi, içeriklerini değiştirmesi ve yeniden yazması gerekiyor. Controlled Folder Access tam da bu noktada devreye girerek bilinmeyen ya da güvenilmeyen uygulamaların korunan klasörlere yazmasını engeller.

Özellik Windows 10 1709 sürümüyle geldi ve Windows Server 2019 ile Server 2022’de de destekleniyor. Windows Server 2016’da ise Windows Defender ATP lisansı gerektiriyor, bunu aklında tut.

Ön Koşullar ve Ortam Hazırlığı

Başlamadan önce şunların mevcut olması gerekiyor:

  • Windows Server 2019 veya 2022 (tercihen güncel yamalar yüklü)
  • Windows Defender Antivirus aktif durumda olmalı (üçüncü parti AV ile çakışma yaşanabilir)
  • Real-time protection açık olmalı
  • PowerShell 5.1 veya üzeri

Öncelikle Defender’ın durumunu kontrol edelim:

Get-MpComputerStatus | Select-Object -Property AMServiceEnabled, AntispywareEnabled, AntivirusEnabled, RealTimeProtectionEnabled, IoavProtectionEnabled

Bu komut sana şu bilgileri döndürür:

  • AMServiceEnabled: Antimalware servisi çalışıyor mu
  • AntispywareEnabled: Antispyware koruması aktif mi
  • AntivirusEnabled: Antivirus koruması aktif mi
  • RealTimeProtectionEnabled: Gerçek zamanlı koruma açık mı
  • IoavProtectionEnabled: İndirilen dosya taraması aktif mi

Eğer bunların herhangi biri False dönüyorsa, önce o sorunu çözmen gerekiyor.

Controlled Folder Access’i Aktif Etme

PowerShell ile Etkinleştirme

En hızlı yöntem PowerShell ile etkinleştirmek. Sunucunda Administrator olarak PowerShell aç ve şu komutu çalıştır:

Set-MpPreference -EnableControlledFolderAccess Enabled

Aktif olup olmadığını doğrulamak için:

Get-MpPreference | Select-Object EnableControlledFolderAccess

Dönen değer 1 ise özellik aktif, 0 ise devre dışı, 2 ise Audit Mode’da çalışıyor demektir.

Audit Mode: Prod Ortamına Geçmeden Önce Mutlaka Kullan

Burası kritik bir nokta. Eğer özelliği direkt olarak Enabled modunda açarsan, muhtemelen birçok meşru uygulamanın engellendiğine dair şikayetler almaya başlarsın. Muhasebe yazılımı çalışmıyor, CRM’e dosya kaydedilemiyor, yedekleme aracı hata veriyor gibi sorunlar çıkabilir.

Bu yüzden her zaman önce Audit Mode’da test et:

Set-MpPreference -EnableControlledFolderAccess AuditMode

Audit Mode’da özellik aktif gibi davranır, logları yazar ama hiçbir şeyi gerçekten engellemez. Bu sayede hangi uygulamaların engelleneceğini önceden görebilirsin. En az bir hafta, tercihen iki hafta Audit Mode’da çalıştırmanı öneririm. Böylece normal iş akışında hangi uygulamaların korunan klasörlere yazdığını görmüş olursun.

Group Policy ile Etkinleştirme (Domain Ortamları İçin)

Eğer domain ortamında birden fazla sunucuyu yönetiyorsan, Group Policy üzerinden merkezi yönetim çok daha mantıklı. GPO yolun şu:

Computer Configuration > Administrative Templates > Windows Components > Windows Defender Antivirus > Windows Defender Exploit Guard > Controlled Folder Access

Buradan “Configure Controlled folder access” policy’sini Enabled olarak ayarla ve Options kısmından Block, Audit Mode ya da Disabled seçeneklerinden birini seç.

Audit Log’larını İnceleme

Audit Mode çalışırken hangi uygulamaların engelleneceğini görmek için Event Viewer’ı kullanabilirsin ya da doğrudan PowerShell ile logları çekebilirsin.

Event Viewer yolu: Applications and Services Logs > Microsoft > Windows > Windows Defender > Operational

Bakman gereken Event ID’ler:

  • Event ID 1123: Controlled Folder Access bir yazma işlemini engelledi (Block modunda)
  • Event ID 1124: Controlled Folder Access bir yazma işlemini Audit Mode’da yakaladı

PowerShell ile bu eventları doğrudan çekmek daha verimli:

Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" | Where-Object {$_.Id -eq 1124} | Select-Object -Property TimeCreated, Message | Format-List

Eğer daha okunabilir bir çıktı istiyorsan şu scripti kullanabilirsin:

$events = Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" -ErrorAction SilentlyContinue | Where-Object {$_.Id -eq 1124 -or $_.Id -eq 1123}

foreach ($event in $events) {
    $xml = [xml]$event.ToXml()
    $processName = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "ProcessName"} | Select-Object -ExpandProperty "#text"
    $targetFile = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "TargetFile"} | Select-Object -ExpandProperty "#text"
    
    Write-Output "Zaman: $($event.TimeCreated)"
    Write-Output "Uygulama: $processName"
    Write-Output "Hedef Dosya: $targetFile"
    Write-Output "---"
}

Bu script sana hangi uygulamanın hangi dosyaya yazmaya çalıştığını net olarak gösterir. Çıktıyı inceleyerek whitelist’e eklemen gereken uygulamaları belirleyebilirsin.

İzin Listesi Yönetimi (Whitelist)

Audit Mode’da topladığın bilgilerle, meşru uygulamaları izin listesine ekleme zamanı.

Tekil Uygulama Ekleme

Add-MpPreference -ControlledFolderAccessAllowedApplications "C:Program FilesMuhasebeProgramimuhasebe.exe"

Birden Fazla Uygulamayı Toplu Ekleme

Bir array ile toplu ekleme yapabilirsin:

$allowedApps = @(
    "C:Program FilesBackupSoftwarebackup.exe",
    "C:Program FilesCRMcrm.exe",
    "C:Program FilesAdobeAcrobat DCAcrobatAcrobat.exe",
    "C:Program Files7-Zip7z.exe"
)

foreach ($app in $allowedApps) {
    Add-MpPreference -ControlledFolderAccessAllowedApplications $app
    Write-Output "$app eklendi."
}

Mevcut İzin Listesini Görüntüleme

Get-MpPreference | Select-Object -ExpandProperty ControlledFolderAccessAllowedApplications

İzin Listesinden Uygulama Kaldırma

Bir uygulamayı listeden çıkarmak için:

Remove-MpPreference -ControlledFolderAccessAllowedApplications "C:Program FilesEskiProgrameski.exe"

Korunan Klasör Listesi Yönetimi

Controlled Folder Access varsayılan olarak şu klasörleri korur:

  • Documents, Pictures, Videos, Music, Desktop
  • %USERPROFILE% altındaki bu klasörlerin tüm kullanıcılar için kopyaları
  • Windows sistem klasörleri

Ama iş senaryolarında bu varsayılan liste genellikle yetmez. Mesela şirketin muhasebe veritabanı D:Finance, proje dosyaları E:Projects klasöründeyse bunları da eklemen gerekiyor.

Özel Klasör Ekleme

Add-MpPreference -ControlledFolderAccessProtectedFolders "D:Finance"
Add-MpPreference -ControlledFolderAccessProtectedFolders "E:Projects"
Add-MpPreference -ControlledFolderAccessProtectedFolders "F:CustomerData"

Korunan Klasörleri Listeleme

Get-MpPreference | Select-Object -ExpandProperty ControlledFolderAccessProtectedFolders

Bu komut sana hem varsayılan hem de senin eklediğin klasörlerin listesini verir.

Klasör Korumasını Kaldırma

Özel olarak eklediğin klasörleri kaldırmak için:

Remove-MpPreference -ControlledFolderAccessProtectedFolders "D:OldProjects"

Not: Varsayılan olarak korunan sistem klasörlerini bu şekilde kaldıramazsın, onlar her zaman korunur.

Gerçek Dünya Senaryosu: Bir Muhasebe Firması

Bir senaryo üzerinden konuyu pekiştirelim. Diyelim ki 80 çalışanlı bir muhasebe firmasının IT yöneticisisin. Windows Server 2022 üzerinde çalışan bir dosya sunucunuz var ve şirketin tüm mali verileri bu sunucuda tutuluyor. Geçen yıl benzer bir firma fidye yazılımı kurbanı olmuş, 3 günlük iş kaybı yaşamışlar.

İlk adım olarak Audit Mode’da başlıyoruz:

# Audit modunu etkinleştir
Set-MpPreference -EnableControlledFolderAccess AuditMode

# Kritik iş klasörlerini listeye ekle
Add-MpPreference -ControlledFolderAccessProtectedFolders "D:MaliVeriler"
Add-MpPreference -ControlledFolderAccessProtectedFolders "D:MusteriDosyalari"
Add-MpPreference -ControlledFolderAccessProtectedFolders "D:Beyannameler"
Add-MpPreference -ControlledFolderAccessProtectedFolders "E:Yedekler"

Write-Output "Audit Mode aktif. 2 hafta boyunca logları izleyin."

İki hafta sonra logları inceliyoruz ve şu uygulamaların korunan klasörlere yazmaya çalıştığını görüyoruz:

  • Muhasebe yazılımı (Ticari ERP)
  • PDF oluşturma servisi
  • Yedekleme aracı (Veeam)
  • Anti-virus tarama motoru

Bunları whitelist’e ekledikten sonra Block mode’a geçiyoruz:

# Onaylanan uygulamaları whitelist'e ekle
Add-MpPreference -ControlledFolderAccessAllowedApplications "C:Program FilesERPerp.exe"
Add-MpPreference -ControlledFolderAccessAllowedApplications "C:Program FilesPDF Creatorpdfcreator.exe"
Add-MpPreference -ControlledFolderAccessAllowedApplications "C:Program FilesVeeamVeeam.Backup.Manager.exe"

# Block mode'a geç
Set-MpPreference -EnableControlledFolderAccess Enabled

Write-Output "Controlled Folder Access aktif ve blok modunda calisiyor."

İzleme ve Alerting

Koruma aktif ama bir saldırı olduğunda nasıl haberdar olacaksın? Bunun için basit bir PowerShell script’i ile scheduled task oluşturabilirsin.

# CFA-Monitor.ps1 olarak kaydet

$events = Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" `
    -FilterXPath "*[System[EventID=1123] and System[TimeCreated[timediff(@SystemTime) <= 3600000]]]" `
    -ErrorAction SilentlyContinue

if ($events -and $events.Count -gt 0) {
    $alertBody = "Son 1 saat icinde $($events.Count) adet Controlled Folder Access engelleme olayi tespit edildi.`n`n"
    
    foreach ($event in $events | Select-Object -First 10) {
        $alertBody += "Zaman: $($event.TimeCreated)`n"
        $alertBody += "Mesaj: $($event.Message.Substring(0, [Math]::Min(200, $event.Message.Length)))`n"
        $alertBody += "---`n"
    }
    
    Send-MailMessage `
        -From "[email protected]" `
        -To "[email protected]" `
        -Subject "[UYARI] Controlled Folder Access Engellemesi Tespit Edildi!" `
        -Body $alertBody `
        -SmtpServer "mail.sirket.com"
    
    Write-Output "Alert gonderildi. Toplam olay: $($events.Count)"
} else {
    Write-Output "Son 1 saatte engelleme olayi yok."
}

Bu scripti her saat çalışacak şekilde Scheduled Task’a ekle. Böylece şüpheli bir aktivite olduğunda anında mail alırsın.

Sık Karşılaşılan Sorunlar ve Çözümleri

Sorun 1: Meşru Uygulama Engellenıyor

Bir uygulama çalışmıyor ve kullanıcılar şikayet ediyor. İlk yapman gereken şey Event Viewer’da 1123 numaralı eventi aramak. Hangi executable’ın engellendiğini bulduktan sonra whitelist’e ekle.

Bazen uygulama birden fazla process kullanıyor olabilir. Mesela bir ERP yazılımı hem ana exe’yi hem de bir helper process’i kullanıyor olabilir. Her ikisini de eklemeyi unutma.

Sorun 2: Network Path’leri

Controlled Folder Access, UNC path’leri (\sunucupaylasim gibi) varsayılan olarak korumaz. Eğer paylaşımlı klasörleri korumak istiyorsan bunları da listeye eklemen gerekiyor ama dikkatli ol, network path formatında ekleme desteklenmiyor, mapped drive veya yerel path kullanman gerekiyor.

Sorun 3: SQL Server Sorunları

SQL Server gibi veritabanı servisleri bazen Controlled Folder Access ile çakışabilir. SQL Server’ın veri dosyalarını tuttuğu klasörü (genellikle C:Program FilesMicrosoft SQL Server...) koruma listesine eklediysen, sqlservr.exe‘yi ve sqlagent.exe‘yi whitelist’e eklemeyi unutma.

Sorun 4: PowerShell Script’leri

Toplu dosya işlemi yapan PowerShell script’leri de engellenebilir. Bu durumda powershell.exe‘yi whitelist’e ekleyebilirsin ama bu büyük bir güvenlik açığı yaratır. Daha iyi bir yaklaşım, bu tür script’lerin belirli bir servis hesabı altında çalışmasını sağlamak ve sadece o hesabın erişebildiği klasörleri düzenlemek.

SIEM ve Monitoring Entegrasyonu

Eğer ortamında bir SIEM çözümü (Splunk, Elastic Stack, Microsoft Sentinel gibi) varsa, Controlled Folder Access loglarını buraya yönlendirmek çok değerli. Windows Event Forwarding (WEF) ile bu eventları merkezi bir log sunucusuna toplayabilirsin.

Subscriptions oluşturmak için şu event ID’leri ekle:

  • 1121: Exploit Guard Block-Mode kuralı tetiklendi
  • 1122: Exploit Guard Audit-Mode kuralı tetiklendi
  • 1123: Controlled Folder Access engelleme (Block)
  • 1124: Controlled Folder Access engelleme (Audit)
  • 1127: Attack Surface Reduction engelleme

Microsoft Sentinel kullanıyorsan, MicrosoftDefenderAdvancedThreatProtection connector’ı üzerinden bu veriler otomatik olarak alınıyor ve hazır query’lerle analiz edebiliyorsun.

Performans Etkisi

Sıklıkla sorulan soru şu: “Bu özelliği açınca sunucu yavaşlar mı?” Dürüst cevap: Minimal etki var ama tamamen sıfır değil. Dosya sistemine her yazma işleminde bir kontrol yapıldığı için, çok yoğun I/O olan ortamlarda (yüksek transaction’lı SQL Server gibi) küçük bir yavaşlama hissedilebilir.

Ancak bu yavaşlama genellikle yüzde birkaçın altında kalıyor ve fidye yazılımına kurban gitmekle kıyaslandığında bu bedel son derece kabul edilebilir. Kritik sunucularda her halükarda yük testleri yapmanı öneririm.

Controlled Folder Access’in Sınırları

Bu özelliğin sihirli bir değnek olmadığını da söylemem gerekiyor. Şu sınırlamaları aklında tut:

  • Kernel-level saldırılar: Çok sofistike fidye yazılımları kernel driver kullanarak bu korumaları bypass edebilir
  • Whitelist’e alınan uygulamalar: Whitelist’e eklediğin bir uygulama ele geçirilirse, o uygulama üzerinden korunan klasörlere yine erişilebilir
  • Memory-only attacks: Dosya sistemi kullanmayan saldırılar bu korumadan etkilenmez
  • Administrator hakları: Local admin hakları olan bir saldırgan özelliği devre dışı bırakabilir

Bu yüzden Controlled Folder Access tek başına yeterli değil. Backup stratejisi, network segmentation, least privilege ilkesi, ve güncel patch yönetimi ile birlikte kullanılmalı.

Merkezi Yönetim İçin Toplu Yapılandırma Script’i

Büyük ortamlarda tüm sunuculara aynı yapılandırmayı uygulamak için kullanabileceğin bir deployment script’i:

# Deploy-CFA.ps1
# Bu scripti tum sunucularda calistirmak icin Invoke-Command ile kullanabilirsin

param(
    [Parameter(Mandatory=$false)]
    [ValidateSet("Enabled","AuditMode","Disabled")]
    [string]$Mode = "AuditMode",
    
    [string[]]$ExtraFolders = @(),
    [string[]]$AllowedApps = @()
)

# CFA'yi belirtilen modda etkinlestir
Set-MpPreference -EnableControlledFolderAccess $Mode
Write-Output "CFA modu ayarlandi: $Mode"

# Ek klasorleri ekle
foreach ($folder in $ExtraFolders) {
    if (Test-Path $folder) {
        Add-MpPreference -ControlledFolderAccessProtectedFolders $folder
        Write-Output "Klasor eklendi: $folder"
    } else {
        Write-Warning "Klasor bulunamadi, atlaniyor: $folder"
    }
}

# Izin verilen uygulamalari ekle
foreach ($app in $AllowedApps) {
    if (Test-Path $app) {
        Add-MpPreference -ControlledFolderAccessAllowedApplications $app
        Write-Output "Uygulama eklendi: $app"
    } else {
        Write-Warning "Uygulama bulunamadi, atlaniyor: $app"
    }
}

# Mevcut yapilandirmayi raporla
Write-Output "`n=== Mevcut Yapilandirma ==="
Write-Output "CFA Durumu: $($(Get-MpPreference).EnableControlledFolderAccess)"
Write-Output "Korunan Klasorler:"
Get-MpPreference | Select-Object -ExpandProperty ControlledFolderAccessProtectedFolders | ForEach-Object { Write-Output "  - $_" }
Write-Output "Izin Verilen Uygulamalar:"
Get-MpPreference | Select-Object -ExpandProperty ControlledFolderAccessAllowedApplications | ForEach-Object { Write-Output "  - $_" }

Bu script’i remote sunuculara şöyle deploy edebilirsin:

$servers = @("SRV-FILE01", "SRV-APP01", "SRV-DB01")
$extraFolders = @("D:CompanyData", "E:Archives")
$allowedApps = @("C:Program FilesBackupAgentagent.exe")

Invoke-Command -ComputerName $servers -FilePath ".Deploy-CFA.ps1" -ArgumentList "AuditMode", $extraFolders, $allowedApps

Sonuç

Controlled Folder Access, Windows Server’da ücretsiz olarak gelen ve fidye yazılımlarına karşı somut bir koruma sağlayan güçlü bir araç. Doğru yapılandırıldığında, korunan klasörlere yetkisiz yazma girişimlerini anında bloke ediyor ve bu girişimleri loglayarak sana görünürlük sağlıyor.

Özetlemek gerekirse şu adımları takip et: önce Audit Mode ile başla, en az iki hafta logları izle, meşru uygulamaları whitelist’e ekle, kritik iş klasörlerini koruma listesine dahil et ve son olarak Block Mode’a geç. Bir de monitoring ekle ki gece yarısı uyandırılmak yerine proaktif alarm alasın.

Bu özellik tek başına seni fidye yazılımlarından yüzde yüz korumaz. Düzenli offline yedekler, ağ segmentasyonu, kullanıcı eğitimi ve güncel patch yönetimi ile kombinlendiğinde gerçek anlamda güçlü bir savunma hattı oluşturursun. Kontrolü ele almak, saldırı olana kadar beklemeyi asla geçemez.

Yorum yapın