İçeriğe geç

Teknik derinlik

Windows Server DDoS Sıkılaştırma: Neyi Ayarlarsınız, Neyi İşletim Sistemi Zaten Halleder

Son güncelleme: Ağustos 2026 · Autotuning şablonları, WFP, http.sys ve RSS · Okuma süresi ~18 dk

Kapılarının çoğu yapının kendisiyle zaten kapatılmış geniş bir kapı yapısı; kalan birkaç açıklığın her birinde bir nöbetçi ve sayaç var, amber kalabalık bunlardan sayılarak geçiriliyor.

Windows DDoS kayıt defteri tavsiyelerinin çoğu eskimiştir. SynAttackProtect ve TcpMaxHalfOpen gibi anahtarlar Server 2003'ten sonra kaldırıldı, çünkü yığın artık SYN saldırılarını otomatik karşılar. Gerçekte ayarladığınız şey farklıdır: TCP autotuning şablonu, Windows Filtering Platform sınırları, http.sys istek kuyruğu ve adaptör RSS. Kayıt defteriyle değil, PowerShell ve netsh ile doğrulanır.

Bu rehber, Windows Server host’unun kendisini, önünde herhangi bir cihaz olmadan, bir DDoS saldırısının durum ve istek tüketen kısmına karşı sertleştirmekle ilgilidir. Çoğu Windows rehberine göre kayıt defteri düzenlemesi tarafında bilerek daha kısadır, ve bunun tek bir sebebi vardır. Düzenlemelerin çoğu eskimiştir, uygulanması ise işe yaramamaktan zararlı olmaya kadar uzanır.

Windows DDoS sıkılaştırması hakkında bilinmeye değer en önemli şey, ne yapılmayacağıdır. Eski rehberleri dolduran kayıt defteri anahtarları SynAttackProtect, TcpMaxHalfOpen, TcpMaxHalfOpenRetried ve sabitlenmiş bir TcpWindowSize ya Windows Server 2003’ten sonra kaldırıldı ya da autotuning tarafından ezildi. Bunları yazmak en iyi ihtimalle hiçbir şey yapmaz. Bir pencere boyutunu sabitlemek ise yığının bağlantı başına ayarlamasını fiilen bozar.

Eskimiş kayıt defteri folkloru ve yerine geçen
CihazEski tavsiye (uygulamayın)Neden geçersizYerine ne yapılır
SynAttackProtectKayıt defterinde SynAttackProtect=2 yapınServer 2003'ten sonra kaldırıldı; SYN koruması otomatiktirnetstat ile doğrulayın; gerekirse WFP'de oran sınırlayın
TcpMaxHalfOpenKayıt defterinde yarı açık bağlantıyı sınırlayınYığın bu değeri artık okumazGet-NetTCPConnection -State SynReceived ile gözleyin
TCP alım penceresiTcpWindowSize değerini sabitleyinVista/2008'den beri autotuning bağlantı başına boyutlarSet-NetTCPSetting şablonu kullanın, sabitlemeyin
Bağlantı sınırlarıİşletim sistemi varsayılanına güveninVarsayılan cömerttir; kaynak başına hiçbir sınır yokturKaynak adres başına WFP filtresi veya güvenlik duvarı kuralı

Soldaki sütunun tamamı internetin biriktirdiği Windows 2003 folklorudur. Modern yığın çoğunu otomatikleştirdi. Kaldırılmış anahtarları yazmak hiçbir işe yaramaz, birkaç sabit değer ise autotuning'i ezerek durumu kötüleştirir.

0. Önce temel ölçüler: değiştirmeden önce sayaçları okuyun

Windows kendi durumunu /proc yerine performans sayaçları ve Get-Net* cmdlet’leri üzerinden gösterir. Normal bir haftayı şunlardan kaydedin:

# TCP durumuna göre bağlantı sayısı (SynReceived satırı yarı açık backlog'unuzdur)
Get-NetTCPConnection | Group-Object -Property State | Sort-Object Count -Descending

# TCP yığını sayaçları: segment, reset, başarısız bağlantı
Get-Counter '\TCPv4\*' -SampleInterval 5 -MaxSamples 3

# Etkin bağlantı şablonu ve autotuning düzeyi
Get-NetTCPSetting -SettingName Internet | Format-List *

# Adaptör RSS durumu ve kuyruk sayısı
Get-NetAdapterRss | Format-Table Name, Enabled, NumberOfReceiveQueues

Bu çıktıyı saklayın. Aşağıdaki her yargı ona görelidir. “SynReceived sayısı yüksek” ancak normal hafta rakamına göre bir anlam taşır.

1. TCP yığını: kayıt defteri anahtarları değil, şablonlar

Modern Windows Server eski skaler TCP kayıt defteri değerlerini ayar yüzeyi olarak sunmaz. Bunun yerine bağlantı türü başına bir şablon uygular, ve siz şablonu ayarlarsınız. Şablonlar Internet, Datacenter, Datacenter Custom, Internet Custom ve Compat’tır.

# Etkin şablonun uyguladığı her ayarı gör
Get-NetTCPSetting -SettingName Internet

# Autotuning alım penceresi — ölçülmüş bir sebep olmadıkça 'normal'de bırakın
Set-NetTCPSetting -SettingName InternetCustom -AutoTuningLevelLocal Normal

# Autotuning'in eski bir sıkılaştırma betiğiyle kapatılmadığını doğrula (sık bir bulgu)
Get-NetTCPSetting | Format-Table SettingName, AutoTuningLevelLocal
netsh int tcp show global

Denetlenen bir Windows sunucusundaki en yaygın gerçek sorun eksik bir ayar değildir. Sorun, autotuning’i netsh int tcp set global autotuninglevel=disabled ile kapatmış eski bir sıkılaştırma betiğidir. O tek satır alım penceresini küçük sabit bir değerde tutar ve her meşru bağlantıyı boğar. Yeniden açmak genelde tek başına en büyük iyileşmedir:

netsh int tcp set global autotuninglevel=normal

SYN seli koruması zaten otomatiktir ve desteklenen bir işletim sisteminde kayıt defterinden anlamlı biçimde iyileştirilemez. Onu yapılandırmaz, baş edip etmediğini doğrularsınız:

# Şu andaki yarı açık bağlantılar
(Get-NetTCPConnection -State SynReceived).Count

# Başarısız bağlantı denemeleri ve reset'ler, yığın sayaçlarından
Get-Counter '\TCPv4\Connection Failures','\TCPv4\Connections Reset'

Bir olay sırasında SynReceived sayısı on binlere doğru tırmanıyorsa cevap bir kayıt defteri anahtarı değildir. Cevap, aşağıda ele alınan WFP katmanında ya da bir üst katmanda kaynak başına bir sınırdır.

2. Windows Filtering Platform: kaynak başına sınırın yaşadığı yer

Linux kaynak başına oran sınırlamasını bir nftables dinamik kümesiyle yapar. Windows karşılığı Windows Filtering Platform içinde yaşar, ve çoğu operatör için onun erişilebilir yüzü bir güvenlik duvarı kuralıdır. nftables’ınki kadar temiz, yerleşik bir “kaynak başına saniyede N bağlantı” öğesi yoktur. Bu yüzden uygulamadaki kalıp, izlemeyle sürülen kapsamlı bir engelleme ile açık yüzeyi küçülten bağlantı güvenliği kurallarıdır.

# Belirli bir kötücül kaynağı engelle (otomatik bir yanıtlayıcının çağıracağı şey)
New-NetFirewallRule -DisplayName "DDoS-block-203.0.113.0/24" -Direction Inbound `
  -RemoteAddress 203.0.113.0/24 -Action Block

# Bir servisi yalnızca ona erişmesi gereken adreslere kısıtla — saldırı yüzeyinde
# tek seferde en büyük azalma, ve hiçbir oran mantığı gerektirmez
New-NetFirewallRule -DisplayName "RDP-restrict" -Direction Inbound -Protocol TCP `
  -LocalPort 3389 -RemoteAddress 10.0.0.0/8 -Action Allow

# Gerçekte neyin etkin olduğunu incele
Get-NetFirewallRule -Enabled True -Direction Inbound |
  Where-Object Action -eq Allow | Format-Table DisplayName, Profile

Dürüst sınır şudur. Windows güvenlik duvarı tek başına, nftables kümesinin yaptığı gibi kaynak başına yeni bağlantıyı oran sınırlamaz. Bunun gerektiği yerde çözüm bir WFP callout sürücüsünden, üçüncü taraf bir katmandan, ya da her ölçekte gerçek cevap olan host’un önündeki şebeke katmanından gelir. Güvenlik duvarının DDoS dayanıklılığına en güçlü katkısı oran sınırlama değildir. Katkısı yüzey azaltmadır, yani her dinleyen portun yalnızca olması gereken yerden erişilebilir olmasını sağlamaktır.

İnternete bakmak zorunda olan servisler için bağlantı güvenliği (IPsec) kuralları, bir bağlantı uygulama kaynağı tüketmeden önce kimlik doğrulaması isteyebilir. Bu, anonim bir seli daha ucuz bir katmanda bir kimlik doğrulama hatasına çevirir:

Get-NetIPsecRule | Format-Table DisplayName, Enabled, Profile

3. http.sys: IIS’in önündeki çekirdek istek kuyruğu

Herhangi bir HTTP iş yükü için bir istek selinin çarptığı ilk kuyruk IIS değildir. O kuyruk http.sys’tir, yani HTTP isteklerini bir işçi süreci görmeden önce kabul edip kuyruğa alan çekirdek modundaki sürücüdür. Parametreleri HTTP servisi altında yaşar, ve kuyruğu IIS’in yapılandırdığı her şeyden ayrı bir kaynaktır.

# Çekirdek istek kuyrukları ve derinlikleri
Get-Counter '\HTTP Service Request Queues(*)\CurrentQueueSize'
Get-Counter '\HTTP Service Request Queues(*)\RejectedRequests'

Anlaşılması gereken temel davranışlar istek kuyruğu uzunluğu, bağlantı zaman aşımı ve başlık bekleme zaman aşımıdır. Bir sayaç aksini kanıtlamadıkça çoğunlukla varsayılanda bırakılırlar. Başlık bekleme zaman aşımı, yavaş başlık saldırılarına (bir bağlantı açıp başlıkları bayt bayt gönderme) karşı http.sys düzeyindeki savunmadır. Sürücü, başlıklarını zaman aşımı içinde tamamlamayan bir bağlantıyı, IIS ona bir işçi ayırmadan önce düşürür.

IIS tarafındaki ayarlar (uygulama havuzu kuyruk uzunluğu, dinamik IP kısıtlamaları, istek filtreleme) ayrı bir katmandır ve kendi IIS sıkılaştırma rehberine sahiptir. Buradaki nokta, http.sys’in IIS’in altındaki kuyruk olduğudur. Bir site işçi doygunken ayakta kalabilir, çünkü http.sys emmektedir; ya da işçi boş görünürken çökebilir, çünkü http.sys reddetmektedir.

4. Receive Side Scaling: paket hızı savunması

Hat dolmadan önce, yüksek bir paket hızı bir işlemci çekirdeğini kesme işlerken yüzde yüze sabitlerken diğerleri boş durabilir. Windows’ta çözüm, gelen paket işlemeyi çekirdekler arasında dağıtan Receive Side Scaling’dir. Fiziksel NIC’lerde genelde açıktır. Sanallaştırılmış NIC’lerde ise sık sık kapalı ya da yetersiz kuyrukludur, ve bir Windows sanal makinesinin nominal bant genişliğinin çok altında bir paket hızı saldırısına sessizce yenilmesi tam o varsayılanda olur.

# RSS açık mı, kaç kuyruk var?
Get-NetAdapterRss -Name * | Format-Table Name, Enabled, NumberOfReceiveQueues, MaxProcessors

# Etkinleştir ve yeterli kuyruk ver (mevcut çekirdeklere göre)
Enable-NetAdapterRss -Name "Ethernet"
Set-NetAdapterRss -Name "Ethernet" -NumberOfReceiveQueues 8

# Test sırasında işlemci başına kesme yükünü izle — tek sıcak çekirdek RSS dağıtmıyor demektir
Get-Counter '\Processor(*)\% Interrupt Time' -SampleInterval 2 -MaxSamples 5

# Receive Segment Coalescing çıktıyı artırabilir ama gecikmeye duyarlı iş yükünü bozabilir; ölç
Get-NetAdapterRsc | Format-Table Name, IPv4Enabled, IPv6Enabled

Yük altında tek sıcak çekirdek, gerisi boşken, RSS’in işini yapmadığının imzasıdır. Bu, Linux’un softnet_stat çıktısındaki üçüncü sütunun tırmanmasının birebir Windows karşılığıdır.

5. Uygulama katmanı bağlantı davranışı

İki host düzeyi öğe, üstteki web sunucusu ne olursa olsun onu destekler. TCP keep-alive ölü bağlantıları sezip geri alır, ve dinamik port aralığı host’un ne kadar giden/efemer bağlantı sürdürebileceğini belirler:

# Efemer port aralığı — host çok sayıda giden bağlantı yapıyorsa genişletin
netsh int ipv4 show dynamicport tcp
netsh int ipv4 set dynamicport tcp start=1024 num=64511

# TCP keep-alive bağlantı başına bir yığın ayarıdır; şablon onu taşır
Get-NetTCPSetting -SettingName Internet | Select-Object SettingName, *KeepAlive*

Yavaş bağlantı saldırıları nihayetinde işletim sistemiyle değil, web sunucusunun kendi zaman aşımlarıyla cevaplanır. Bunlar IIS için IIS rehberinde, Windows üzerinde nginx ya da Apache çalıştırıyorsanız o rehberlerde yaşar.

İzlemeye bağlanacak sayaçlar

Windows sıkılaştırması da Linux gibi hissedilmez, sayaçtan okunur. Şunları izleme sistemine bağlayın:

# Bir yanıtlayıcının çağırabileceği tek seferlik sağlık okuması
Get-Counter @(
  '\TCPv4\Connection Failures',
  '\TCPv4\Connections Reset',
  '\HTTP Service Request Queues(_Total)\CurrentQueueSize',
  '\HTTP Service Request Queues(_Total)\RejectedRequests',
  '\Processor(_Total)\% Interrupt Time'
) -SampleInterval 5 -MaxSamples 1

# Yarı açık backlog tek bir sayı olarak
(Get-NetTCPConnection -State SynReceived).Count

Bunlar, bir saldırı sırasında Linux sayaçlarının cevapladığı soruyu cevaplar. Host mu daralıyor, hat mı doluyor?

Bu katmanın dürüst sınırı

Yukarıdaki her şey tek cümleye iner. Bir Windows Server, kendi bağlantı tablolarını, istek kuyruklarını ve çekirdek başına işlemesini tüketen saldırılara karşı savunulabilir. Bunun dışında iki durum vardır ve ikisi de host’ta çözülmez.

Birincisi hat doluluğudur. Erişim hattını aşan hacim Windows yığınına hiç ulaşmaz, ve hiçbir şablon, güvenlik duvarı kuralı ya da RSS kuyruğu bunu değiştirmez.

Yerinde katmanın yardımcı olamadığı sınır 10 Gbps erişim hattınız Hat zaten doymuş — yalnızca yukarı akış Yerinde cihaz azaltır 2 Gbps 8 Gbps 25 Gbps 120 Gbps 1 Tbps+ Saldırı hacmi (logaritmik ölçek)
Hat kapasitesinin altında host katmanının payı vardır; üstünde hiçbir Windows ayarının anlamı kalmaz.

İkincisi, iyi dağıtılmış çekirdeklerin bile işleyebileceğinin ötesindeki paket hızıdır. RSS bu tavanı yükseltir ama kaldırmaz. Bu iki eşiğin üstünde konu sunucu değil, şebeke mimarisidir. Host sıkılaştırması sunucuyu bir üst katman devreye girene kadar ayakta tutar, ama o katman değildir, ve onu öyle saymak yanlış güven üretir.

Uygulama sırası

  1. Temel ölçüleri kaydedin (Bölüm 0): duruma göre bağlantılar, TCP sayaçları, şablon, RSS durumu.
  2. Autotuning’in eski bir betikle kapatılmadığını doğrulayın; kapalıysa açın. En yaygın tek kazanç budur.
  3. Güvenlik duvarı yüzeyini azaltın: her dinleyen port yalnızca olması gereken yerden erişilebilir olsun.
  4. RSS’in açık ve yeterli kuyruklu olduğunu doğrulayın, özellikle sanallaştırılmış NIC’lerde.
  5. Bir sayaç belirli bir darboğazı kanıtlamadıkça http.sys’i ve TCP şablonunu varsayılanda bırakın.
  6. Sayaçları izleme sistemine alarm olarak bağlayın.

Bu listede eksik olana dikkat edin: uzun bir kayıt defteri bölümü. Desteklenen bir Windows Server’da o bölüm, yirmi yıl önce yazılmış bir rehberin işaretidir.

Sık sorulan sorular

Windows Server'ı DDoS'a karşı sertleştirmek Linux'tan zor mudur?
Zor değil, farklıdır. Linux onlarca ayrı ayarlanabilir sysctl düğmesi sunar; Windows eşdeğer kararların çoğunu otomatikleştirmiş ve şablonların arkasına gizlemiştir. Bu, ayarlanacak daha az şey ve bozulacak daha az şey demektir, ama daha az ayrıntılı kontrol de demektir. İş, çekirdek parametrelerini ayarlamaktan Windows Filtering Platform ile http.sys'i yapılandırmaya ve autotuning'in gerçekten açık olduğunu, eski bir sıkılaştırma betiğiyle kapatılmadığını doğrulamaya kayar.
Hangi kayıt defteri anahtarlarını gerçekten ayarlamalıyım?
Neredeyse hiçbirini, ve mesele tam olarak budur. Eski rehberleri dolduran SYN saldırısı ve yarı açık bağlantı anahtarları kaldırıldı ve modern Windows Server tarafından yok sayılır. Ayarlanmaya değer istisnalar http.sys kuyruk davranışı için HTTP servis parametreleridir, ve bir ölçüm belirli bir kuyruğun darboğaz olduğunu göstermedikçe onları da varsayılanda bırakmak daha iyidir. Uzun bir kayıt defteri listesiyle açılan her rehberi Server 2003 için yazılmış sayın.
Windows Filtering Platform'un buradaki rolü nedir?
Kaynak başına oran sınırlaması Windows'ta asıl olarak WFP içinde yaşar. Windows güvenlik duvarı kuralları onun üstünde durur, ama DDoS için işe yarayan katman kaynak adres başına yeni bağlantıyı sınırlayan bir filtredir. Bunu New-NetFirewallRule ile bir güvenlik duvarı kuralı olarak, ya da daha ince kontrol için doğrudan bir WFP filtresi olarak ifade edersiniz. Linux'un nftables dinamik kümesine en yakın karşılıktır, ve o kural gibi az sayıda kaynaktan gelen sele karşı işe yarar, yayılmış bir sele karşı değil.
http.sys bir DDoS için neden önemli?
http.sys, HTTP isteklerini IIS görmeden önce kabul edip kuyruğa alan çekirdek modundaki sürücüdür, dolayısıyla kuyruğu bir istek selinin dolduracağı ilk yerdir. Uygulama havuzu kuyruk uzunluğu, bağlantı ve başlık zaman aşımları ve istek kuyruğu sınırı bu katmanda ayarlanır. Bir IIS sitesinin işçi süreci doygunken ayakta kalabilmesinin, ya da işçi boş görünürken çökmesinin sebebi budur. IIS'e özgü ayarlar ayrı bir rehbere aittir; buradaki nokta, http.sys'in IIS'in yapılandırdığı her şeyden ayrı bir kuyruk olduğudur.
Adaptör RSS'in DDoS ile ilgisi var mı?
Yüksek paket hızında var. Receive Side Scaling (RSS), gelen paket işlemeyi işlemci çekirdekleri arasında dağıtır. RSS kapalı ya da yanlış yapılandırılmışken bir paket seli tek çekirdeği yüzde yüze sabitler, diğerleri boş durur ve sunucu nominal kapasitesinin çok altında yanıt vermeyi keser. RSS'in açık ve yeterli kuyruğa sahip olduğunu doğrulamak, Linux'taki alım yolu ayarlamasının Windows karşılığıdır, ve sanallaştırılmış NIC'lerde en sık yanlış varsayılanda bırakılan öğedir.
Bu ayarlar hacimsel bir saldırıyı durdurur mu?
Hayır. Erişim hattını dolduran trafik Windows yığınına hiç ulaşmaz ve host üzerinde yapılandırdığınız hiçbir şey bunu değiştirmez. Buradaki her ayar durum ve istek tükenmesine karşıdır: bağlantı tabloları, http.sys kuyruğu, çekirdek başına paket işleme. Hattın üzerindeki hacim şebeke tarafının sorunudur ve sunucuda çözülmez.
Saldırı olmadan bunların çalıştığını nasıl doğrularım?
Test ortamında PowerShell sayaçları ve bir yük üreteciyle. Get-NetTCPConnection bağlantıları duruma göre gruplar, Get-Counter TCPv4 ve HTTP Service Request Queue sayaçlarını okur, artan hızda bağlantı açan bir araç ise hangi sayacın önce kımıldadığını gösterir. Önce kımıldayan o sayaç sizin gerçek eşiğinizdir. Üretimde ise aynı sayaçların temel ölçülerinden ayrılması izleme sistemine bağladığınız şeydir.

Yayım: Ağustos 2026

Bu rehber, üreticiler yeni modeller ve fiyatlandırma açıkladıkça güncellenir. Üreticileri nasıl karşılaştırıyoruz