Windows Server IIS Web Sunucusu Performans Optimizasyonu ve Güvenlik Sıkılaştırma

Hızlı Çözüm & Pratik Özet

Bu sorunu en kısa yoldan çözmek için temel adımlar

Windows Server IIS performansını ve güvenliğini artırmak için: 1) IIS Manager'da App Pool 'Recycling' ve 'Queue Length' değerlerini (3000+) optimize edin, 'Idle Time-out' değerini ihtiyaca göre ayarlayın. 2) PowerShell ile Dynamic/Static Compression (Gzip) aktifleştirin. 3) Cryptography politikalarından TLS 1.0/1.1 ve zayıf ciphers pasife alıp TLS 1.2/1.3'ü zorunlu kılın. 4) Request Filtering ve URL Rewrite kuralları ile SQLi/XSS saldırılarını engelleyin.

Sistem Gereksinimleri & Geçerlilik:
Windows Server (2025, 2022, 2019, 2016) IIS 10 / 10.5 Web Server Rolü Yönetici (Administrator) PowerShell Yetkisi

Bu Rehberdeki Başlıklar (İçindekiler)

Windows Server IIS (Internet Information Services) Neden Optimizasyon İster?

Windows Server (2025, 2022, 2019) üzerinde çalışan IIS 10 Web Sunucusu, varsayılan kurulum ayarlarıyla (Default Settings) standart web sitelerini sorunsuz çalıştırır. Ancak yüksek trafik alan kurumsal web uygulamalarında, REST API'lerde veya ASP.NET / PHP projelerinde varsayılan ayarlar yetersiz kalır.

Yanlış yapılandırılmış bir IIS sunucusu yüksek CPU kullanımı, uygulama havuzu (App Pool) çökmeleri, 503 Service Unavailable hataları ve güvenlik açıkları üretir. Bu rehberde IIS sunucunuzu maksimum hız ve yüksek güvenlik seviyesine getirecek teknik adımları uygulayacağız.

1. Application Pool (Uygulama Havuzu) İnce Ayarları

IIS üzerindeki her web sitesi bir Uygulama Havuzunda çalışır. Varsayılan kuyruk uzunluğu ve zaman aşımı değerleri yüksek yük altında yanıt vermeyi durdurur:

  1. 1
    IIS Manager uygulamasını açın ve sol taraftan Application Pools sekmesine tıklayın.
  2. 2
    Sitenizin bağlı olduğu App Pool üzerine sağ tıklayıp Advanced Settings (Gelişmiş Ayarlar) penceresini açın.
  3. 3
    Şu kritik değerleri değiştirin:
    • Queue Length (Kuyruk Uzunluğu): Varsayılan 1000 değerini 4096 olarak değiştirin (Ani trafik artışlarında 503 hatasını önler).
    • Idle Time-out (Minutes): Varsayılan 20 dakikayı 0 yapın (Web sitenizin boşta kaldığında bellekten boşaltılıp ilk girişte yavaş açılmasını engeller).
    • Start Mode: AlwaysRunning olarak ayarlayın.

2. Statik ve Dinamik Gzip Sıkıştırmayı (Compression) Aktifleştirme

Sunucudan istemciye gönderilen HTML, CSS, JS ve JSON yanıtlarını sıkıştırarak bant genişliği kullanımını %70 azaltabilirsiniz. PowerShell'i yönetici olarak açın ve çalıştırın:

PowerShell (IIS Compression)
Import-Module WebAdministration

# Statik ve Dinamik Sıkıştırmayı Aç
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.webServer/urlCompression' -name 'doStaticCompression' -value 'True'
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.webServer/urlCompression' -name 'doDynamicCompression' -value 'True'

Write-Host "IIS Gzip sıkıştırması aktifleştirildi!" -ForegroundColor Green

3. Güvenlik Sıkılaştırma: TLS 1.2/1.3 Zorunluluğu ve Zayıf Protokollerin Kapatılması

Eski TLS 1.0, TLS 1.1 ve SSL 3.0 protokolleri güvenlik ihlallerine yol açar. PowerShell ile eski güvensiz şifreleme protokollerini kapatın:

PowerShell (Sıkılaştırma)
# TLS 1.0 ve TLS 1.1 Devre Dışı Bırak
$protocols = @('TLS 1.0', 'TLS 1.1')
foreach ($protocol in $protocols) {
    $keyPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$protocol\Server"
    if (-not (Test-Path $keyPath)) { New-Item -Path $keyPath -Force | Out-Null }
    Set-ItemProperty -Path $keyPath -Name 'Enabled' -Value 0 -Type DWord
    Set-ItemProperty -Path $keyPath -Name 'DisabledByDefault' -Value 1 -Type DWord
}
Write-Host "Eski TLS protokolleri kapatıldı!" -ForegroundColor Green

4. HTTP Güvenlik Başlıkları (Security Headers) Ekleme

Sitenizi XSS, Clickjacking ve MIME koklama saldırılarına karşı korumak için web.config dosyanıza şu başlıkları ekleyin:

web.config
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
      <add name="X-Content-Type-Options" value="nosniff" />
      <add name="X-XSS-Protection" value="1; mode=block" />
      <add name="Referrer-Policy" value="strict-origin-when-cross-origin" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

Adım Adım Uygulama Rehberi

1

Application Pool (Uygulama Havuzu) Ayarlarını Optimize Edin

Queue Length değerini 1000'den 4090'a çıkarın, Idle Time-out süresini 0 (devre dışı) yapın.

2

Dinamik ve Statik İçerik Sıkıştırmasını (Gzip/Brotli) Aktifleştirin

PowerShell üzerinden doStaticCompression ve doDynamicCompression özelliklerini açın.

3

Güvenlik Sıkılaştırma: TLS 1.2 ve TLS 1.3 Zorunlu Kılın

Eski SSL v2/v3, TLS 1.0/1.1 protokollerini ve zayıf ciphers şifrelerini devre dışı bırakın.

4

IIS Request Filtering ile Zararlı İstekleri Engelleyin

URL uzunluğu, SQL enjeksiyonu ve dizin tarama isteklerini IIS katmanında filtreleyin.

Sıkça Sorulan Sorular (SSS)

Genellikle 'Rapid Fail Protection' özelliğinin tetiklenmesinden kaynaklanır. Eğer bir uygulama havuzunda 5 dakika içinde 5'ten fazla çökme yaşanırsa IIS sunucuyu korumak için havuzu kapatır. App Pool ayarlarından Crash Limit değerlerini ayarlayabilir veya olay günlüklerini (Event 5002, 5011) inceleyebilirsiniz.