
व्यवहारिक ट्रैफ़िक विश्लेषण, Random Forest वर्गीकरण, और kernel-स्तरीय ipset/iptables प्रवर्तन का उपयोग करने वाला अनुकूली दो-चरणीय Layer 4 DDoS शमन गेटवे।
रक्षा की पहली पंक्ति
एक अनुकूली दो-चरणीय लेयर 4 वॉल्यूमेट्रिक DDoS शमन गेटवे।
लेखक: Abdullah Armiyao
परियोजना: व्यवहारिक ट्रैफ़िक विश्लेषण का उपयोग करते हुए निकट वास्तविक समय लेयर 4 वॉल्यूमेट्रिक DDoS शमन के लिए अनुकूली दो-चरणीय फ्रेमवर्क

अधिकांश DDoS शमन निश्चित थ्रेशोल्ड का उपयोग करता है: जो भी प्रति सेकंड कुछ हार्ड-कोडेड संख्या से अधिक पैकेट भेज रहा है, उसे ब्लॉक कर दें। यह दोनों दिशाओं में विफल होता है। व्यस्त अवधि के दौरान वैध ट्रैफ़िक में उछाल आता है और असली उपयोगकर्ता ब्लॉक हो जाते हैं, या कोई हमलावर सीमा से ठीक नीचे रहकर पार निकल जाता है।
FLOD सीखता है कि आपका सामान्य ट्रैफ़िक कैसा दिखता है और अपनी पहचान सीमाओं को उससे मेल खाने के लिए समायोजित करता है। यह DDoS बाढ़ और फ़्लैश क्राउड, यानी एक वैध उछाल, के बीच अंतर करता है, बिना किसी द्वारा थ्रेशोल्ड को हाथ से समायोजित किए।
यह ट्रैफ़िक स्रोत और संरक्षित होस्ट्स के बीच एक गेटवे पर इनलाइन बैठता है, और कर्नेल में आपत्तिजनक स्रोतों को ड्रॉप या थ्रॉटल करता है।
डैशबोर्ड उन पतों को हमलावरों के रूप में नामित करता है जिन्हें उसने ब्लॉक किया, ताकि जो व्यक्ति नेटवर्क लेआउट पहले से नहीं जानता वह बता सके कि कौन से प्रेषक शत्रुतापूर्ण थे। थ्रॉटल किए गए पतों को अलग से सूचीबद्ध किया जाता है, क्योंकि थ्रॉटलिंग का उपयोग एक एहतियात के रूप में भी किया जाता है और इसे एक साथ पूरे समूहों पर लागू किया जाता है।
चरण 1 पैकेट पथ पर एक Rust सेंसर है। यह एक संरक्षित होस्ट के लिए जाने वाले प्रत्येक पैकेट को कैप्चर करता है, छोटी विंडो पर दर और स्रोत विविधता की गणना करता है, और उनकी तुलना उस बेसलाइन से करता है जिसे वह स्वयं बनाए रखता है। यह केवल अंकगणित करता है, इसलिए यह ट्रैफ़िक के रास्ते से हटकर रहता है।
चरण 2 एक Python सेवा है। यह प्रति विंडो एक बार चरण 1 से एक सारांश प्राप्त करती है, उसे Random Forest से वर्गीकृत करती है, और ipset और iptables के माध्यम से कर्नेल-स्तरीय प्रवर्तन जारी करती है। एक Isolation Forest हर विंडो पर इसके साथ-साथ चलता है, ऐसे ट्रैफ़िक को चिह्नित करता है जो किसी भी मॉडल ने जो सीखा है उससे भिन्न है, जिसे प्रवर्तन को चलाने के बजाय एक अलग Anomalous अवस्था के रूप में सामने लाया जाता है। चरण 2 वेब डैशबोर्ड भी प्रदान करता है।
दोनों एक Unix डोमेन सॉकेट द्वारा जुड़े हुए हैं।
मॉडलों को कैप्चर किए गए, लेबल किए गए ट्रैफ़िक पर प्रशिक्षित किया जाता है, और एक परिनियोजन अधिक से अधिक कैप्चर करता रहता है। जिन विंडो को Isolation Forest अपरिचित पाता है, और जिन विंडो को Random Forest आत्मविश्वास से DDoS कहता है, उन्हें कैप्चर फ़ाइलों में लिखा जाता है। एक आवधिक कार्य उन्हें Random Forest और एक दूसरे, भिन्न रूप से निर्मित मॉडल के साथ पुनः स्कोर करता है, और किसी पंक्ति को प्रशिक्षण के लिए तभी तैयार करता है जब दोनों उच्च आत्मविश्वास के साथ एक ही वर्ग चुनते हैं और दोनों को उस पंक्ति के कैप्चर होने के बाद प्रशिक्षित किया गया हो। डैशबोर्ड में एक समीक्षा पृष्ठ तैयार की गई पंक्तियों को दिखाता है, प्रति पृष्ठ 500, और एक व्यक्ति तय करता है कि उन्हें प्रशिक्षण डेटा में मिलाना है या उन्हें त्यागना है। कुछ भी अपने आप प्रशिक्षण सेट तक नहीं पहुँचता।
FLOD केवल पैकेट हेडर से दिखाई देने वाली लेयर 4 वॉल्यूमेट्रिक बाढ़ पर काम करता है: दर, स्रोत 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
इंस्टॉलर Stage 1 बनाता है, फिर Stage 2 के कोड और वर्चुअल
एनवायरनमेंट को /opt/flod/stage2 में कॉपी करता है (root के स्वामित्व में) और वहाँ
प्रशासनिक खाता सेट करता है, क्योंकि Stage 2 root के रूप में चलता है और उसे चेकआउट से
कुछ भी निष्पादित नहीं करना चाहिए जिसे कोई अपरिविधाधिकार प्राप्त खाता अभी भी लिख सकता है।
परिवर्तनीय स्थिति, डेटाबेस, 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
यह प्रत्येक आवश्यक मान के लिए पूछता है, हर एक के लिए एक डिफ़ॉल्ट प्रदान करता है, और पूछता है
कि क्या Stage 2 भी शुरू करना है। बिना पूछे सब कुछ स्वीकार करने के लिए
--defaults जोड़ें।
टेस्ट सूट चलाने के लिए:
scripts/test.sh
Wiki, सिस्टम चलाने के लिए:
| पृष्ठ | विषय |
|---|---|
| Installation | आवश्यकताएँ, नेटवर्क प्लेसमेंट, पहला लॉगिन |
| Configuration | सेंसर फ़्लैग, प्रवर्तन ट्यूनिंग, अलर्ट |
| Dashboard Guide | कंसोल का प्रत्येक पृष्ठ |
| Troubleshooting | जब कुछ काम न कर रहा हो |
docs/, इसे समझने या बदलने के लिए: