تخطَّ إلى المحتوى

تحليل تقني معمّق

تصليب Windows Server ضد DDoS: ما الذي يبقى للضبط وما الذي يتولّاه النظام أصلاً

آخر تحديث: أغسطس 2026 · قوالب الضبط التلقائي وWFP وhttp.sys وRSS · زمن القراءة ~17 دقيقة

بوّابة حصينة عريضة، أُغلق معظم أقواسها بالجدار نفسه؛ عند الأقواس القليلة الباقية حارس وعدّاد، وحشد عنبري يُمرَّر عبرها واحداً واحداً.

أكثر نصائح التسجيل قديمة. مفاتيح مثل SynAttackProtect وTcpMaxHalfOpen أُزيلت بعد Server 2003 لأن المكدّس صار يصدّ هجمات SYN تلقائياً. ما تضبطه فعلاً مختلف: قالب الضبط التلقائي لـ TCP، وحدود Windows Filtering Platform، وطابور طلبات http.sys، وRSS البطاقة. يُتحقَّق منه بـ PowerShell وnetsh لا بمحرّر التسجيل.

هذا الدليل عن تصليب مضيف Windows Server نفسه، دون أي جهاز أمامه، ضد الجزء الذي يستنزف الحالة والطلبات من هجوم DDoS. وهو أقصر عمداً في تعديلات التسجيل من أكثر أدلّة Windows، لسبب واحد. أكثر تلك التعديلات بطلت، واتّباعها يمتدّ من عديم الفائدة إلى الضارّ.

أنفع ما يُعرَف عن تصليب Windows ضد DDoS هو ما لا يُفعَل. مفاتيح التسجيل SynAttackProtect وTcpMaxHalfOpen وTcpMaxHalfOpenRetried وقيمة TcpWindowSize المثبّتة، التي تملأ الأدلة القديمة، إمّا أُزيلت بعد Windows Server 2003 أو تجاوزها الضبط التلقائي. ضبطها في أحسن الأحوال لا يفعل شيئاً. وتثبيت حجم النافذة يكسر فعلياً ضبط المكدّس لكل اتصال.

فولكلور التسجيل البائد وما يحلّ محلّه
الجهازنصيحة قديمة (لا تتّبعها)لماذا بطلتما البديل
SynAttackProtectاضبط SynAttackProtect=2 في التسجيلأُزيل بعد Server 2003؛ حماية SYN تلقائيةتحقّق بـ netstat؛ حُدّ المعدّل في WFP عند الحاجة
TcpMaxHalfOpenحُدّ الاتصالات نصف المفتوحة في التسجيلالمكدّس لم يعد يقرأ هذه القيمةراقب بـ Get-NetTCPConnection -State SynReceived
نافذة استقبال TCPثبّت TcpWindowSizeمنذ Vista/2008 يحدّد الضبط التلقائي الحجم لكل اتصالقالب Set-NetTCPSetting، لا قيمة مثبّتة
حدود الاتصالاتاعتمد على افتراض النظامالافتراض سخيّ؛ لا شيء يحدّ بحسب المصدرمرشّح WFP أو قاعدة جدار حماية بحسب عنوان المصدر

العمود الأيسر كله فولكلور حقبة Windows 2003 الذي راكمه الإنترنت. المكدّس الحديث جعل معظمه تلقائياً. ضبط المفاتيح المُزالة لا يفعل شيئاً، وبضع قيم مثبّتة تسوء الحال بتجاوزها الضبط التلقائي.

0. القيم الأساسية أولاً: اقرأ العدّادات قبل أن تغيّر شيئاً

يُظهر Windows حالته عبر عدّادات الأداء وأوامر Get-Net* لا عبر /proc. سجّل أسبوعاً عادياً من هذه:

# عدد الاتصالات بحسب حالة TCP (صف SynReceived هو backlog نصف المفتوح لديك)
Get-NetTCPConnection | Group-Object -Property State | Sort-Object Count -Descending

# عدّادات مكدّس TCP: القطع، وإعادة التعيين، والاتصالات الفاشلة
Get-Counter '\TCPv4\*' -SampleInterval 5 -MaxSamples 3

# القالب النشط للاتصال ومستوى الضبط التلقائي فيه
Get-NetTCPSetting -SettingName Internet | Format-List *

# حالة RSS البطاقة وعدد الطوابير
Get-NetAdapterRss | Format-Table Name, Enabled, NumberOfReceiveQueues

احفظ هذا الخرج. كل حكم أدناه نسبيّ إليه. «عدد SynReceived مرتفع» لا يعني شيئاً إلا قياساً على رقم أسبوع عادي.

1. مكدّس TCP: قوالب لا مفاتيح تسجيل

لا يعرض Windows Server الحديث قيم TCP العددية القديمة في التسجيل بوصفها سطح الضبط. بل يطبّق قالباً لكل نوع اتصال، وأنت تعدّل القالب. القوالب هي Internet وDatacenter وDatacenter Custom وInternet Custom وCompat.

# اعرض كل إعداد يطبّقه القالب النشط
Get-NetTCPSetting -SettingName Internet

# نافذة استقبال الضبط التلقائي — اتركها على 'normal' ما لم يكن لديك سبب مقيس
Set-NetTCPSetting -SettingName InternetCustom -AutoTuningLevelLocal Normal

# تأكّد أن الضبط التلقائي غير معطَّل بنصّ تصليب قديم (اكتشاف شائع)
Get-NetTCPSetting | Format-Table SettingName, AutoTuningLevelLocal
netsh int tcp show global

أشيع مشكلة حقيقية على خادم Windows مُدقَّق ليست تعديلاً ناقصاً. إنها نصّ تصليب قديم عطّل الضبط التلقائي بأمر netsh int tcp set global autotuninglevel=disabled. ذلك السطر الواحد يُبقي نافذة الاستقبال على قيمة صغيرة ثابتة ويخنق كل اتصال شرعي. وإعادة تفعيله عادةً أكبر تحسين منفرد:

netsh int tcp set global autotuninglevel=normal

حماية فيضان SYN نفسها تلقائية، ولا يمكن تحسينها تحسيناً ذا معنى من التسجيل على نظام مدعوم. لا تضبطها، بل تتحقّق من أنها تتحمّل:

# الاتصالات نصف المفتوحة الآن
(Get-NetTCPConnection -State SynReceived).Count

# محاولات الاتصال الفاشلة وإعادات التعيين، من عدّادات المكدّس
Get-Counter '\TCPv4\Connection Failures','\TCPv4\Connections Reset'

إن تسلّق عدد SynReceived نحو عشرات الآلاف أثناء حدث، فالجواب ليس مفتاح تسجيل. الجواب حدٌّ بحسب المصدر في طبقة WFP أو في طبقة عليا، كما يلي.

2. Windows Filtering Platform: حيث يعيش الحدّ بحسب المصدر

يفعل Linux الحدّ بحسب المصدر بمجموعة nftables ديناميكية. المكافئ في Windows يعيش داخل Windows Filtering Platform، ووجهه المتاح لأكثر المشغّلين قاعدة جدار حماية. لا يوجد عنصر مدمج بصيغة «N اتصالاً في الثانية لكل مصدر» بنظافة عنصر nftables. لذا فالنمط العملي حجبٌ محدود النطاق يقوده الرصد، مع قواعد أمان اتصال تضيّق السطح المكشوف.

# احجب مصدراً خبيثاً بعينه (ما يستدعيه مستجيب آلي)
New-NetFirewallRule -DisplayName "DDoS-block-203.0.113.0/24" -Direction Inbound `
  -RemoteAddress 203.0.113.0/24 -Action Block

# قصّ خدمة على العناوين التي يجدر أن تبلغها فقط — أكبر تقليص منفرد
# لسطح الهجوم، ولا يحتاج أي منطق معدّل
New-NetFirewallRule -DisplayName "RDP-restrict" -Direction Inbound -Protocol TCP `
  -LocalPort 3389 -RemoteAddress 10.0.0.0/8 -Action Allow

# افحص ما هو مفعّل فعلاً
Get-NetFirewallRule -Enabled True -Direction Inbound |
  Where-Object Action -eq Allow | Format-Table DisplayName, Profile

الحدّ الصادق هو التالي. جدار حماية Windows وحده لا يحدّ معدّل الاتصالات الجديدة بحسب المصدر كما تفعل مجموعة nftables. وحيث يلزم ذلك، يأتي الحلّ من مشغّل callout في WFP، أو طبقة طرف ثالث، أو — الجواب الحقيقي المعتاد على أي مقياس — الطبقة الشبكية أمام المضيف. أقوى إسهام لجدار الحماية في الصمود ضد DDoS ليس حدّ المعدّل. إنه تقليص السطح، أي ضمان أن كل منفذ مُصغٍ لا يُبلَغ إلا من حيث ينبغي.

للخدمات التي لا بدّ أن تواجه الإنترنت، تستطيع قواعد أمان الاتصال (IPsec) أن تطلب المصادقة قبل أن يستهلك الاتصال موارد التطبيق. وهذا يحوّل فيضاناً مجهول الهوية إلى فشل مصادقة في طبقة أرخص:

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

3. http.sys: طابور طلبات النواة أمام IIS

لأي حمل HTTP، أول طابور يضربه فيضان الطلبات ليس IIS. إنه http.sys، مشغّل وضع النواة الذي يقبل طلبات HTTP ويصفّها قبل أن تراها عملية عامل. معاملاته تعيش تحت خدمة HTTP، وطابوره مورد منفصل عن كل ما يهيّئه IIS.

# طوابير طلبات النواة وعمقها
Get-Counter '\HTTP Service Request Queues(*)\CurrentQueueSize'
Get-Counter '\HTTP Service Request Queues(*)\RejectedRequests'

السلوكات الأساسية للفهم هي طول طابور الطلبات، ومهلة الاتصال، ومهلة انتظار الترويسة. وتُترك غالباً على الافتراض ما لم يُثبت عدّاد خلاف ذلك. مهلة انتظار الترويسة هي دفاع مستوى http.sys ضد هجمات الترويسة البطيئة (فتح اتصال وإرسال الترويسات بايتاً بايتاً). يُسقط المشغّل اتصالاً لم يُكمل ترويساته ضمن المهلة، قبل أن يخصّص IIS له عاملاً أصلاً.

إعدادات جانب IIS — طول طابور مجمّع التطبيقات، وقيود IP الديناميكية، وترشيح الطلبات — طبقة منفصلة لها دليل تصليب IIS الخاص بها. والمهمّ هنا أن http.sys هو الطابور تحت IIS. قد يبقى موقع قائماً بينما العامل مشبع لأن http.sys يمتصّ؛ أو يسقط بينما يبدو العامل خاملاً لأن http.sys يرفض.

4. Receive Side Scaling: دفاع معدّل الحزم

قبل أن تمتلئ الوصلة، قد يثبّت معدّل حزم مرتفع نواة معالج واحدة عند مئة بالمئة على معالجة المقاطعات بينما تخمل البقية. الحلّ في Windows هو Receive Side Scaling الذي يوزّع معالجة الحزم الواردة على الأنوية. على البطاقات المادية يكون مفعّلاً عادةً. وعلى الافتراضية يكون كثيراً معطَّلاً أو ناقص الطوابير في الافتراض، وفي ذلك الافتراض بالذات تخسر آلة Windows الافتراضية بصمت أمام هجوم معدّل حزم دون نطاقها الاسمي بكثير.

# هل RSS مفعّل، وكم طابوراً؟
Get-NetAdapterRss -Name * | Format-Table Name, Enabled, NumberOfReceiveQueues, MaxProcessors

# فعّل وأعطِ طوابير كافية (بحسب الأنوية المتاحة)
Enable-NetAdapterRss -Name "Ethernet"
Set-NetAdapterRss -Name "Ethernet" -NumberOfReceiveQueues 8

# راقب حمل المقاطعات لكل معالج أثناء اختبار — نواة ساخنة واحدة تعني أن RSS لا يوزّع
Get-Counter '\Processor(*)\% Interrupt Time' -SampleInterval 2 -MaxSamples 5

# قد يفيد Receive Segment Coalescing سعة التمرير لكنه يضرّ الأحمال الحسّاسة للتأخير؛ قِس
Get-NetAdapterRsc | Format-Table Name, IPv4Enabled, IPv6Enabled

نواة ساخنة واحدة تحت الحمل، والبقية خاملة، هي توقيع أن RSS لا يؤدّي عمله. وهذا هو المكافئ الدقيق في Windows لتسلّق العمود الثالث في softnet_stat بـ Linux.

5. سلوك الاتصال في طبقة التطبيق

عنصران على مستوى المضيف يدعمان أي خادم وِب فوقهما. يكشف TCP keep-alive الاتصالات الميتة ويستعيدها، ويحكم مدى المنافذ الديناميكية كم اتصالاً صادراً أو عابراً يستطيع المضيف أن يديمه:

# مدى المنافذ العابرة — وسّعه إن كان المضيف يجري اتصالات صادرة كثيرة
netsh int ipv4 show dynamicport tcp
netsh int ipv4 set dynamicport tcp start=1024 num=64511

# TCP keep-alive إعداد مكدّس لكل اتصال؛ القالب يحمله
Get-NetTCPSetting -SettingName Internet | Select-Object SettingName, *KeepAlive*

هجمات الاتصال البطيء يجيب عنها في النهاية لا النظام، بل مهل خادم الوِب نفسه. وهي لـ IIS في دليل IIS، ولـ nginx أو Apache على Windows في دليليهما.

العدّادات التي تُربط بالمراقبة

تصليب Windows، كـ Linux، يُقرأ من العدّادات لا يُحسّ. اربط هذه بنظام المراقبة:

# قراءة صحّة واحدة يستطيع مستجيب استدعاءها
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

# backlog نصف المفتوح رقماً واحداً
(Get-NetTCPConnection -State SynReceived).Count

تجيب هذه أثناء الهجوم عن السؤال نفسه الذي تجيب عنه عدّادات Linux. أيضيق المضيف أم تمتلئ الوصلة؟

الحدّ الصادق لهذه الطبقة

كل ما سبق يختصر في جملة. خادم Windows قابل للدفاع ضد الهجمات التي تستنزف جداول اتصالاته وطوابير طلباته ومعالجته لكل نواة. وحالتان تقعان خارج ذلك، ولا تُحلّ أيّ منهما على المضيف.

الأولى إشباع الوصلة. الحجم فوق وصلة الوصول لا يبلغ مكدّس Windows أصلاً، ولا قالب ولا قاعدة جدار حماية ولا طابور RSS يغيّر ذلك.

أين تتوقف الطبقة داخل المنشأة عن أن تنفع وصلة الوصول لديك: 10 غيغابت/ث الخط مُشبع أصلاً — الطبقة العليا فقط الجهاز داخل المنشأة يخفّف 2 غيغابت/ث 8 غيغابت/ث 25 غيغابت/ث 120 غيغابت/ث 1 تيرابت/ث+ حجم الهجوم (مقياس لوغاريتمي)
تحت الوصلة لطبقة المضيف نصيب؛ فوقها لا يعني أي إعداد في Windows شيئاً.

والثانية معدّل حزم يفوق ما تعالجه حتى الأنوية الموزّعة جيداً. يرفع RSS هذا السقف لكنه لا يزيله. فوق هذين الحدّين يصبح الموضوع المعمارية الشبكية لا الخادم. تصليب المضيف يُبقي الخادم قائماً حتى تنهض طبقة عليا، لكنه ليس تلك الطبقة، واعتباره كذلك يولّد ثقة زائفة.

ترتيب التطبيق

  1. سجّل القيم الأساسية (القسم 0): الاتصالات بحسب الحالة، وعدّادات TCP، والقالب، وحالة RSS.
  2. تأكّد أن الضبط التلقائي غير معطَّل بنصّ قديم؛ فعّله إن كان كذلك. هذا أشيع مكسب منفرد.
  3. قلّص سطح جدار الحماية: كل منفذ مُصغٍ لا يُبلَغ إلا من حيث ينبغي.
  4. تحقّق أن RSS مفعّل وله طوابير كافية، خصوصاً على البطاقات الافتراضية.
  5. اترك http.sys وقالب TCP على الافتراض ما لم يُثبت عدّاد اختناقاً بعينه.
  6. اربط العدّادات بالمراقبة إنذاراتٍ.

انتبه لما يغيب عن هذه القائمة: قسم تسجيل طويل. على Windows Server مدعوم، ذلك القسم علامة دليل كُتب قبل عشرين عاماً.

أسئلة متكررة

هل تصليب Windows Server ضد DDoS أصعب أم أسهل من Linux؟
ليس أصعب، بل مختلف. يتيح Linux عشرات مقابض sysctl القابلة للضبط منفردة؛ أمّا Windows فجعل معظم القرارات المكافئة تلقائية وأخفاها خلف قوالب. هذا يعني أشياء أقلّ تضبطها وأقلّ تكسرها، لكنه يعني أيضاً تحكّماً أقلّ تفصيلاً. ينتقل العمل من ضبط معاملات النواة إلى تهيئة Windows Filtering Platform وhttp.sys، وإلى التأكّد من أن الضبط التلقائي مفعّل فعلاً لا معطَّل بنصّ تصليب قديم.
أي مفاتيح تسجيل ينبغي أن أضبطها فعلاً؟
لا شيء تقريباً، وهذا هو بيت القصيد. مفاتيح هجوم SYN والاتصالات نصف المفتوحة التي تملأ الأدلة القديمة أُزيلت ويتجاهلها Windows Server الحديث. الاستثناءات التي تستحق الضبط هي معاملات خدمة HTTP لسلوك طابور http.sys، وحتى تلك يُفضَّل تركها على الافتراض ما لم يُظهر قياس أن الاختناق في طابور بعينه. واعتبر أي دليل يفتتح بقائمة تسجيل طويلة مكتوباً لأجل Server 2003.
ما دور Windows Filtering Platform هنا؟
الحدّ بحسب المصدر في Windows يعيش فعلاً داخل WFP. قواعد جدار حماية Windows تجلس فوقه، لكن الطبقة المفيدة لـ DDoS هي مرشّح يحدّ الاتصالات الجديدة لكل عنوان مصدر. تعبّر عنه كقاعدة جدار حماية عبر New-NetFirewallRule، أو كمرشّح WFP مباشرة لتحكّم أدقّ. هو أقرب مكافئ للمجموعة الديناميكية في nftables على Linux، ومثل تلك القاعدة يدافع ضد فيضان من مصادر قليلة لا من مصادر منتشرة.
لماذا يهمّ http.sys في هجوم DDoS؟
http.sys مشغّل يعمل في وضع النواة، يستقبل طلبات HTTP ويصفّها قبل أن يراها IIS، فطابوره أول ما يملؤه فيضان الطلبات. يُضبط في هذه الطبقة طولُ طابور مجمّع التطبيقات، ومهلُ الاتصال والترويسة، وحدُّ طابور الطلبات. لهذا يمكن لموقع IIS أن يبقى مستجيباً بينما عملية العامل مشبعة، أو أن يسقط بينما تبدو العملية خاملة. إعدادات IIS نفسها في دليل مستقلّ؛ والمهمّ هنا أن http.sys طابور منفصل عن كل ما يهيّئه IIS.
هل لـ RSS البطاقة علاقة بـ DDoS؟
نعم، عند معدّل حزم مرتفع. يوزّع Receive Side Scaling معالجة الحزم الواردة على أنوية المعالج. حين يكون RSS معطَّلاً أو مضبوطاً خطأً، يثبّت فيضان الحزم نواة واحدة عند مئة بالمئة بينما تخمل البقية، فيتوقّف الخادم عن الاستجابة الجيدة دون سعته الاسمية بكثير. والتأكّد من أن RSS مفعّل وله طوابير كافية هو مكافئ Windows لضبط مسار الاستقبال في Linux، وهو البند الأكثر تركاً على افتراض خاطئ في بطاقات الشبكة الافتراضية.
هل توقف هذه الإعدادات هجوماً حجمياً؟
لا. الحركة التي تملأ وصلة الوصول لا تبلغ مكدّس Windows أصلاً، ولا شيء تضبطه على المضيف يغيّر ذلك. كل إعداد هنا يدافع ضد استنزاف الحالة والطلبات: جداول الاتصالات، وطابور http.sys، ومعالجة الحزم لكل نواة. الحجم فوق الوصلة مشكلة الجانب الشبكي ولا يُحلّ على الخادم.
كيف أتحقّق من كل هذا دون هجوم؟
بعدّادات PowerShell ومولّد حمل في مختبر. يجمّع Get-NetTCPConnection الاتصالات بحسب الحالة، ويقرأ Get-Counter عدّادات TCPv4 وHTTP Service Request Queue، وأداة تفتح اتصالات بمعدّل متصاعد تُظهر أي عدّاد يتحرّك أولاً. ذلك العدّاد المتحرّك أولاً هو عتبتك الحقيقية. وفي الإنتاج، ابتعاد العدّادات نفسها عن قيمها الأساسية هو ما تربطه بنظام المراقبة.

النشر: أغسطس 2026

يُحدَّث هذا الدليل كلما طرح المصنّعون طرازات وشروط ترخيص جديدة. كيف نقارن بين المصنّعين