
بوابة تخفيف هجمات DDoS على الطبقة الرابعة ذات مرحلتين تكيفيتين باستخدام تحليل السلوك المروري، وتصنيف Random Forest، والتنفيذ على مستوى النواة عبر ipset/iptables.
خط الدفاع الأول
بوابة تخفيف هجمات DDoS الحجمية على الطبقة الرابعة، تكيفية من مرحلتين.
المؤلف: Abdullah Armiyao
المشروع: إطار تكيفي من مرحلتين لتخفيف هجمات DDoS الحجمية على الطبقة الرابعة في الزمن شبه الحقيقي باستخدام تحليل السلوك المروري

معظم أنظمة تخفيف DDoS تستخدم عتبات ثابتة: احجب أي شيء يرسل أكثر من عدد معين مبرمج مسبقًا من الحزم في الثانية. هذا يفشل في كلا الاتجاهين. ارتفاع شرعي في حركة المرور خلال فترة مزدحمة فيُحجب المستخدمون الحقيقيون، أو يبقى المهاجم تحت الخط قليلًا فيمر.
يتعلم FLOD كيف تبدو حركة مرورك الطبيعية ويحرك حدود الكشف الخاصة به لتتوافق معها. إنه يميز بين طوفان DDoS والحشد المفاجئ، وهو ارتفاع شرعي، دون أن يضبط أي شخص عتبة يدويًا.
يعمل بشكل مضمّن على بوابة بين مصدر حركة المرور والمضيفين المحميين، ويُسقط أو يخنق المصادر المخالفة في النواة.
تُسمّي لوحة التحكم العناوين التي حجبها كمهاجمين، حتى يتمكن من لا يعرف مسبقًا تخطيط الشبكة من تحديد المرسلين العدائيين. تُدرج العناوين المخنوقة بشكل منفصل، لأن الخنق يُستخدم أيضًا كإجراء احترازي ويُطبّق على مجموعات كاملة دفعة واحدة.
المرحلة الأولى هي مستشعر بلغة Rust على مسار الحزم. يلتقط كل حزمة متجهة إلى مضيف محمي، ويحسب المعدل وتنوع المصادر خلال نوافذ قصيرة، ويقارنها بخط أساس يحتفظ به بنفسه. إنه يقوم بالحساب فقط، فيبقى بعيدًا عن طريق حركة المرور.
المرحلة الثانية هي خدمة بلغة Python. تستقبل ملخصًا من المرحلة الأولى مرة واحدة لكل
نافذة، وتصنفه باستخدام Random Forest، وتصدر تنفيذًا على مستوى النواة
عبر ipset وiptables. يعمل Isolation Forest إلى جانبها على كل
نافذة، موسومًا حركة مرور لا تشبه أي شيء تعلمه أي من النموذجين، ويُعرض
كحالة Anomalous منفصلة بدلًا من أن يقود التنفيذ. تقدم المرحلة الثانية أيضًا
لوحة التحكم على الويب.
يرتبط الاثنان عبر مقبس نطاق Unix.
يعمل FLOD على الطوفانات الحجمية على الطبقة الرابعة المرئية من ترويسات الحزم وحدها: المعدل، وإنتروبيا عناوين IP المصدر، ومزيج البروتوكولات، ومدى تركّز حركة المرور على أكثر مصادرها ازدحامًا. عمليًا يعني ذلك الطوفانات التي تكون في آن واحد عالية الحجم و مركّزة، قادمة من مجموعة محدودة من العناوين الحقيقية.
هناك أمر واحد خارج النطاق صراحةً، وآخر يُعالج جزئيًا:
هجمات طبقة التطبيق. لا يُحلَّل أي محتوى طلب، لذا فإن طوفانات الطلبات المنخفضة والبطيئة واستنزاف الاتصالات خارج ما يمكن لمجموعة ميزات تعتمد على الترويسة وحدها أن تلاحظه.
انتحال المصدر العشوائي. تزوير عنوان مصدر جديد لكل حزمة يرفع الإنتروبيا بدلًا من خفضها، فيقلب الإشارة التي تبحث عنها الميزات المعتمدة على العنوان. إنتروبيا منفذ المصدر، وتباين TTL، وتنوع بصمة TCP SYN ثابتة في ظل تزوير العنوان وتسدّ هذه النقطة العمياء في الكشف، لكن كشف طوفان مزوّر مشكلة أضيق من إيقافه: فحجب عنوان مزوّر لا يزال يعاقب من يملكه حقًا، لذا يبقى التنفيذ الآمن ضد هذه الفئة مسألة مفتوحة. انظر Detection وExplainer.
git clone https://github.com/DevInBlack001/ddos-reduction-system.git
cd ddos-reduction-system
sudo bash scripts/install.sh --interface <IFACE> --victim-ips <IP1>,<IP2>
sudo systemctl enable --now ddos-stage2
sudo systemctl enable --now ddos-stage1
يبني المُثبِّت المرحلة الأولى، ثم ينسخ كود المرحلة الثانية وبيئة
Python الافتراضية إلى /opt/flod/stage2 (مملوكة للجذر) ويُنشئ
الحساب الإداري هناك، لأن المرحلة الثانية تعمل كجذر ويجب ألا
تنفذ أي شيء من نسخة الشيفرة التي لا يزال بإمكان حساب غير متميز
الكتابة إليها. الحالة القابلة للتغيير، قاعدة البيانات، إعداد JSON، النماذج المدرَّبة، توجد
في /var/lib/flod. نسخة الشيفرة نفسها ليست من الآن فصاعدًا سوى مصدر
فقط؛ إعادة تشغيل scripts/install.sh أو scripts/update.sh تحدّث
النسخة المثبَّتة منها. انظر Security لمعرفة السبب.
لوحة التحكم على المنفذ 8000، عبر HTTPS بمجرد أن تصبح شهادة التوقيع الذاتي الخاصة بالمُثبِّت في مكانها. التعليمات الكاملة، بما في ذلك تخطيط الشبكة الذي يعتمد عليه هذا، موجودة في wiki.
يُعِدّ المُثبِّت أيضًا سلسلة أدوات بناء eBPF عندما يستطيع ذلك، بما يطابق أي LLVM تشحنه توزيعتك. هذا الجزء اختياري: بدونه لا يزال المستشعر يُبنى ويعمل على libpcap.
للمستشعر واجهتان خلفيتان للالتقاط. libpcap هي الافتراضية وتعمل
في أي مكان. مع وجود سلسلة الأدوات، يقوم --capture-mode kernel بعدّ الحزم
في مسار المشغّل عبر XDP وTC بدلًا من ذلك، ويوقظ مساحة المستخدم مرة واحدة لكل نافذة
بدلًا من مرة لكل حزمة. الكشف متطابق في كلتا الحالتين.
ضبط الكشف يُقاس لا يُخمَّن. يقرأ scripts/calibrate.py
سجل المستشعر نفسه، ويأخذ عينات من حركة المرور العادية، ويحدد أين
تنتمي حدود الشذوذ على شبكتك.
لتجربته دون تثبيت أي شيء، شغّله من نسخة العمل:
sudo bash scripts/run.sh
يطلب كل قيمة يحتاجها، ويقدم قيمة افتراضية لكل واحدة، ويسأل
عما إذا كان سيبدأ المرحلة الثانية أيضًا. أضف --defaults لقبول كل شيء دون
أن يُسأل.
لتشغيل مجموعات الاختبار:
scripts/test.sh
Wiki، لتشغيل النظام:
| الصفحة | تغطي |
|---|---|
| Installation | المتطلبات، الموضع في الشبكة، أول تسجيل دخول |
| Configuration | أعلام المستشعر، ضبط التنفيذ، التنبيهات |
| Dashboard Guide | كل صفحة في وحدة التحكم |
| Troubleshooting | عندما لا يعمل شيء ما |
docs/، لفهمه أو تغييره:
يغطي CONTRIBUTING.md إعداد التطوير والأعراف. يغطي SECURITY.md الإبلاغ عن الثغرات.
هذا المشروع ملكي. المفهوم، والهندسة المعمارية، وتصميم المرحلتين، ونهج الكشف، وسياسة التنفيذ، ومجموعة الميزات، وكل قرار وظيفي عبر جميع الإصدارات نشأت مني. بنيته كتمرين تعليمي في أمن الشبكات، والكشف الإحصائي، وبرمجة الأنظمة، وقد وجّهت تصميمه وتطوره طوال الوقت.
استخدمت الذكاء الاصطناعي كمساعد برمجي أثناء التنفيذ، يكتب ويعيد هيكلة الشيفرة وفق مواصفاتي ويعمل كمجلس استماع أثناء عملي على مقايضات التصميم. كانت القرارات حول ما يجب بناؤه، ولماذا، وكيف يجب أن يتصرف النظام قراراتي.
مشروع شخصي مفتوح المصدر، ونظام عامل، لكنه ليس نظامًا خضع للاختبار العدائي الذي يحتاجه منتج أمني إنتاجي. انشره على شبكة مختبرية أو في مكان تستطيع تحمّل أن يكون فيه مخطئًا.
انظر LICENSE.
| المستند | يغطي |
|---|
| Architecture | خط الأنابيب، الخيوط، ضبط الالتقاط، قياس الخروج |
| Detection | Welford، EWMA، الإنتروبيا، حدود الشذوذ، استمرارية خط الأساس |
| Explainer | كل مصطلح وكل حقل في صيغة الإرسال، مشروحًا لقارئ غير تقني |
| IPC | صيغة إرسال متجه الميزات |
| Enforcement | التصنيف، مستويات التخفيف الأربعة، معالجة NAT |
| Training | التقاط البيانات الموسومة وتدريب النموذج |
| Testing | تشغيل مجموعتي الاختبار |
| Security | مرحلة التقوية ونموذج التهديد |
| Roadmap | الإصدارات المكتملة والمخطط لها |
| Benchmark Results | FLOD مقابل عتبة ثابتة: العتاد، المنهجية، المخرجات الكاملة |
| Lessons Learned | أخطاء حقيقية اكتُشفت أثناء التطوير، محفوظة لما تعممه |