يتطلب بروتوكول التحكم في الإرسال (TCP)، المنصوص عليه في وثيقة RFC 793، إتمام عملية مصافحة ثلاثية ذات حالة (Three-Way Handshake) قبل تبادل البيانات بين التطبيقات. يبدأ العميل الاتصال بإرسال حزمة المزامنة (SYN)، فيرد الخادم بإرسال حزمة المزامنة والإقرار (SYN-ACK)، مع تخصيص مساحة في ذاكرة النواة لكتلة التحكم في الإرسال (TCB). يظل الاتصال معلقاً في حالة الانتظار (SYN-RECEIVED) حتى يرسل العميل الإقرار النهائي (ACK).
يتسبب هذا التصميم القائم على حجز الموارد في مرحلة مبكرة في ثغرة غير متكافئة تعرف باسم هجوم TCP SYN Flood. فمن خلال إغراق الخادم بآلاف طلبات SYN ذات العناوين المزورة مع الامتناع عن إرسال الإقرار النهائي ACK، يستطيع المهاجم استنزاف طابور الاتصالات بالكامل، مما يمنع المستخدمين الفعليين من الوصول إلى الخدمات.
يتطلب صد هذه الهجمات التخلي عن حجز الموارد في بداية الاتصال. وبينما تعتمد خدمات الويب التقليدية على تقنية SYN Cookies المعتمدة في RFC 4987 في الطبقة الرابعة L4، تعتمد بروتوكولات الشبكات الخاصة الافتراضية الحديثة مثل WireGuard على نظام مصادقة ثنائي الرموز (mac1 وmac2) لإحباط هجمات حجب الخدمة (DoS).
آلية هجوم TCP SYN Flood واستنزاف طوابير الاتصال
عندما تستقبل نواة نظام التشغيل حزمة SYN على منفذ مفتوح، يتم إدراج الطلب ضمن طابور مخصص للاتصالات شبه المفتوحة (SYN backlog).
العميل (المهاجم) الخادم (المستهدف)
| |
|------- SYN (عنوان مزور أ) ------->| حجز TCB في طابور SYN backlog
|------- SYN (عنوان مزور ب) ------->| حجز TCB في طابور SYN backlog
|------- SYN (عنوان مزور ج) ------->| حجز TCB في طابور SYN backlog
| | (امتلاء طابور SYN بالكامل!)
| | إسقاط طلبات SYN الجديدة الواردة
| | حجب المستخدمين الشرعيين
في الظروف الطبيعية، تظل هذه الإدخالات معلقة لبضع ثوان بانتظار استجابة العميل. أما خلال هجوم SYN Flood:
- انتحال العناوين (IP Spoofing): يرسل المهاجم سيلاً كثيفاً من حزم TCP
SYNتحتوي على عناوين IP عشوائية أو غير قابلة للوصول. - استنزاف موارد النظام: نظراً لأن العناوين المزورة لا تستلم حزم
SYN-ACK، فلن يرسل أي طرف إقرارACKالنهائي. يحتفظ الخادم بآلاف كتل TCB العالقة في الذاكرة، مستهلكاً موارد المعالجة ومحددات المقابس. - فيضان طابور الانتظار: عندما يصل الطابور إلى طاقته الاستيعابية القصوى، يرفض نظام التشغيل أي طلبات اتصال جديدة، متجاهلاً المستخدمين الحقيقيين.
| مرحلة مصافحة TCP | سيناريو الاتصال الطبيعي | سيناريو هجوم SYN Flood |
|---|---|---|
| طلب SYN الأولي | يرسل العميل رقم التسلسل المبدئي | إرسال حزم مكثفة بعناوين مزورة |
| رد الخادم المضيف | حجز TCB وإرسال حزمة SYN-ACK | استنزاف الذاكرة لحساب عناوين وهمية |
| إقرار ACK النهائي | استكمال المصافحة الثلاثية بنجاح | غياب أي استجابة وانتظار حتى انتهاء المهلة |
| حالة نواة النظام | انتقال الاتصال إلى وضع ESTABLISHED | امتلاء الطابور وإسقاط الاتصالات الواردة |
تقنية RFC 4987 SYN Cookies: مصافحة رياضية بلا حالة
تقدم تقنية SYN Cookies المعتمدة في معيار RFC 4987 حلاً حسابياً يحول مصافحة TCP من عملية ذات حالة إلى عملية مجردة من الحالة تماماً عند تعرض الخادم لضغط مروري كثيف.
بدلاً من حجز كتلة TCB في الذاكرة فور وصول حزمة SYN، يقوم الخادم بتوليد رقم تسلسل مبدئي مشفر (ISN) وتضمينه داخل حزمة SYN-ACK المرسلة، ثم يحذف بيانات الاتصال من الذاكرة فوراً.
يحتوي رقم كوكيز SYN المكون من 32 بت على بارامترات الاتصال الأساسية:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| الوقت (5 بت) | MSS (3 بت) | تجزئة تشفيرية سرية (24 بت) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
تتكون البنية الثنائية من:
- عداد الوقت (5 بت): قيمة تتزايد دورياً (كل 64 ثانية تقريباً) لمنع إعادة استخدام الأرقام القديمة.
- مؤشر MSS (3 بت): يشير إلى واحدة من 8 قيم قياسية لحجم الجزء الأقصى، مما يسمح بالتفاوض على حجم الحزم دون حفظ بيانات في الذاكرة.
- التجزئة التشفيرية (24 بت): ناتج دالة تشفير تجمع بين عناوين IP ومنافذ المصدر والوجهة وعداد الوقت ومفتاح سري خاص بالخادم.
عندما يرسل العميل الشرعي حزمة ACK الختامية، يكون رقم الإقرار مساوياً لرقم الكوكيز مضافاً إليه واحد (Cookie + 1). يطرح الخادم واحداً، ويستخرج الوقت ومؤشر MSS، ثم يعيد حساب التجزئة بمفتاحه السري. فإذا تطابقت البيانات، تتأكد النواة من صحة هوية العميل، وعند هذه النقطة فقط يتم حجز مساحة الذاكرة وتثبيت الاتصال.
آلية كوكيز MAC2 في WireGuard: دفاع مجرد من الحالة في الطبقة 3
بينما تحمي تقنية SYN Cookies اتصالات TCP، تعمل الشبكات الخاصة الافتراضية عبر بروتوكول UDP في الطبقة الثالثة L3. لا تملك هذه الأنفاق أرقام تسلسل بروتوكول TCP. إضافة إلى ذلك، تواجه بوابات VPN تحدياً مضاعفاً: استنزاف الذاكرة وإجهاد المعالج نتيجة العمليات الحسابية للتشفير غير المتماثل (مثل تبادل مفاتيح Curve25519).
للتغلب على هذه المشكلة، يعتمد بروتوكول WireGuard بنية مصادقة ثنائية لرسائل المصافحة.
معضلة الإجهاد الحسابي غير المتكافئ
عندما يبدأ العميل الاتصال بخادم WireGuard، يرسل حزمة بدء المصافحة (Handshake Initiation). في الوضع الطبيعي، يتحقق الخادم من الحزمة وينفذ عملية تبادل مفاتيح Curve25519 Diffie-Hellman لاشتقاق مفاتيح الجلسة.
لكن إجراء هذه العمليات الرياضية يتطلب طاقة معالجة تفوق بمئات المرات معالجة حزمة UDP عادية. وتستطيع شبكات البوتنت إرسال ملايين الطلبات المزورة لشل معالج الخادم كلياً وحرمان المستخدمين الفعليين من الخدمة.
هيكل المصادقة الثنائي برموز MAC
تُلحق بكل حزمة مصافحة في WireGuard حقلان مخصصان للتحقق بحجم 16 بايت لكل منهما:
+---------------------------------------------------------------+
| محتوى رسالة المصافحة |
+---------------------------------------------------------------+
| حقل mac1 (16 بايت) |
+---------------------------------------------------------------+
| حقل mac2 (16 بايت) |
+---------------------------------------------------------------+
- حقل
mac1(التحقق من سلامة الحزمة والوجهة): رمز يُحسب باستخدام المفتاح العام للخادم. إذا كان هذا الحقل غير صحيح، يتم إسقاط الحزمة على الفور دون استهلاك طاقة المعالجة. - حقل
mac2(إثبات إمكانية التوصيل العكسي): في ظروف العمل العادية، يترك هذا الحقل مملوءاً بالأصفار. وعندما يتجاوز معدل الطلبات حداً معيناً (أثناء التعرض لهجوم DoS)، يفعل الخادم وضع دفاع الكوكيز.
خطوات تبادل الكوكيز الآلي
عند زيادة العبء، يتوقف الخادم عن إجراء حسابات Curve25519 وينفذ الخطوات التالية:
- توليد الكوكيز المشفر: ينشئ الخادم رمز كوكيز مشفراً بواسطة ChaCha20-Poly1305 يجمع بين عنوان IP ومنفذ المرسل ومفتاح سري يتغير كل دقيقتين.
- إرسال رد الكوكيز (Cookie Reply): يُرسل الرمز إلى عنوان المصدر. فإذا كان العنوان منتحلاً، تضيع الحزمة ولن يتمكن المهاجم من الحصول عليها.
- إعادة الطلب مع
mac2: يستقبل العميل الشرعي الكوكيز ويخزنه مؤقتاً، ثم يعيد إرسال طلب المصافحة بعد ملء حقلmac2استناداً إلى الكوكيز المستلم. - التحقق الفوري السريع: يفحص الخادم قيمة
mac2بواسطة دالة تجزئة متماثلة وفائقة السرعة. تتيح هذه الخطوة تصفية ملايين الطلبات المزورة في الثانية دون التأثير على كفاءة المعالج.
خلال هذه العملية بأكملها، لا يحتفظ خادم WireGuard بأي بيانات في الذاكرة، ويظل مجرداً من الحالة بالنسبة للطلبات المرفوضة.
تهيئة نواة لينكس لمقاومة فيضان الطلبات
يستطيع مسؤولو الأنظمة تحسين استجابة الخوادم لحزم البيانات الكثيفة عبر تعديل إعدادات النواة:
تفعيل وضبط SYN Cookies بواسطة Sysctl
التحقق من تفعيل الميزة في النظام:
# فحص حالة ميزة SYN Cookies (القيمة 1 تعني أنها مفعلة)
sysctl net.ipv4.tcp_syncookies
لرفع قدرة استيعاب الطوابير، أضف الإعدادات التالية إلى الملف /etc/sysctl.d/99-network-dos-protection.conf:
# تفعيل حماية SYN Cookies
net.ipv4.tcp_syncookies = 1
# زيادة حجم طابور الاتصالات شبه المفتوحة
net.ipv4.tcp_max_syn_backlog = 8192
# رفع الحد الأقصى للمقابس في وضع الاستماع
net.core.somaxconn = 8192
# تقليل محاولات إعادة إرسال SYN-ACK لتحرير المقابس العالقة بسرعة
net.ipv4.tcp_synack_retries = 2
# زيادة سعة طابور استقبال الحزم في بطاقة الشبكة لكل نواة معالج
net.core.netdev_max_backlog = 16384
تطبيق التعديلات دون الحاجة لإعادة تشغيل النظام:
sudo sysctl --system
مراقبة حالة المقابس والحزم المسقطة
متابعة أداء الشبكة ورصد إشارات الاختناق:
# استعراض إحصاءات مقابس TCP
ss -s
# حصر الاتصالات المرفوضة بسبب امتلاء طابور الاستماع
netstat -s | grep -i "listen"
دفاع متكامل ضد هجمات DoS في بنية VPNRice
تتطلب الحماية الفعالة من هجمات حجب الخدمة تنسيقاً دفاعياً عبر مختلف طبقات الشبكة:
- بوابات RiceGuard بدون حالة: بفضل التحقق الثنائي عبر
mac1وmac2في بروتوكول WireGuard، تستوعب بوابات VPNRice تدفقات هائلة من طلبات المصافحة المزورة دون أي تباطؤ في موارد الذاكرة أو المعالج. - تصفية الحزم في بطاقة الشبكة عبر eBPF/XDP: نطبق قواعد eBPF المتقدمة عند المنافذ الحدودية لفرز حزم البيانات مباشرة داخل مشغل بطاقة الشبكة، مما يمنع الحزم الخبيثة من الوصول إلى نواة نظام لينكس.
- عزل حركة مرور العميل: تتدفق بيانات المشتركين داخل أنفاق RiceGuard المشفرة في الطبقة الثالثة، مما يمنع أي تأثير لاختناقات طوابير TCP أو التلاعب بالحزم في الشبكات المحلية غير الآمنة.
يضمن هذا المزيج من خوارزميات المعالجة المجردة من الحالة والعزل الشبكي الصارم استمرار خدمات VPNRice بسرعات عالية واستقرار متميز حتى أثناء أشرس الهجمات الشبكية.



