
Snort 3 IDS → IPS प्रयोगशाला Kali पर। कस्टम डिटेक्शन नियम + iptables प्रवर्तन ICMP रिकॉन, Nmap SYN स्कैन, Hydra FTP ब्रूट फोर्स, और vsftpd 2.3.4 बैकडोर (CVE-2011-2523) के विरुद्ध।
Snort 3 का एक पूर्ण-चक्र तैनाती, दोनों एक आक्रमण संसूचन प्रणाली (निष्क्रिय निगरानी) और एक आक्रमण निवारण प्रणाली (iptables के माध्यम से सक्रिय अवरोधन) के रूप में, जिसे काली लिनक्स पर तीन-मशीन आभासी नेटवर्क पर चार आक्रमण वैक्टरों के विरुद्ध मान्य किया गया है।
यह प्रयोगशाला संसूचन और निवारण के बीच परिचालनात्मक अंतर को साबित करती है, एक समान चार-वेक्टर आक्रमण श्रृंखला को दो बार चलाकर — पहली बार एक IDS के विरुद्ध जो लॉग करता है लेकिन अवरुद्ध नहीं कर सकता, दूसरी बार एक IDS + iptables IPS परत के विरुद्ध जो चुनिंदा रूप से आक्रमणों को गिराता है जबकि वैध ट्रैफिक को संरक्षित करता है।
| घटक | विवरण |
|---|---|
| विश्लेषक / राउटर | काली लिनक्स — 3 एडाप्टर: eth0 WAN (192.168.10.143, NAT), eth1 LAN1 (10.10.10.1, होस्ट-ओनली), eth2 LAN2 (192.168.50.1, होस्ट-ओनली) |
| हमलावर | काली लिनक्स — VMnet9 पर eth0 (10.10.10.10) — डिफ़ॉल्ट गेटवे 10.10.10.1 |
| लक्ष्य | Metasploitable 2 — VMnet10 पर eth0 (192.168.50.10) — डिफ़ॉल्ट गेटवे 192.168.50.1 |
| Snort संस्करण | Snort++ 3.12.1.0-0kali1 (विश्लेषक पर स्थापित) |
| आक्रमण उपकरण | Nmap 7.99, Hydra v9.6, Metasploit Framework (msfconsole) |
| वर्चुअलाइज़ेशन | VMware — VMnet9 = 10.10.10.0/24, VMnet10 = 192.168.50.0/24 (दोनों होस्ट-ओनली) |
हमलावर और Metasploitable के बीच सभी ट्रैफिक को विश्लेषक के माध्यम से बाध्य किया जाता है, जिससे यह निगरानी और प्रवर्तन दोनों के लिए प्राकृतिक चोकपॉइंट बन जाता है।
┌─────────────────────────┐
│ विश्लेषक / राउटर │
│ काली + Snort 3 │
│ │
हमलावर काली ──VMnet9──┤ eth1: 10.10.10.1 │
10.10.10.10 │ │
│ eth0: 192.168.10.143 ───┼──> WAN (NAT)
│ │
Metasploitable 2 ─VMnet10┤ eth2: 192.168.50.1 │
192.168.50.10 │ │
└─────────────────────────┘
इस ASCII स्केच को
screenshots/01-network-topology.pngसे बदलें जब आपके पास आकृति हो:टोपोलॉजी
प्रयोगशाला दो चरणों में निष्पादित होती है, प्रत्येक में एक समान चार-वेक्टर आक्रमण श्रृंखला:
pingnmap -sS (1000 पोर्ट)चरण 1 (IDS) विश्लेषक पर पाँच कस्टम नियमों के साथ निष्क्रिय रूप से Snort चलाता है — वास्तविक समय में अलर्ट देखें, पुष्टि करें कि शोषण फिर भी आगे बढ़ता है।
चरण 2 (IPS) Snort को सर्जिकल ड्रॉप नियमों का उपयोग करते हुए एक iptables प्रवर्तन परत के साथ जोड़ता है — पुष्टि करें कि आक्रमण अवरुद्ध होते हैं जबकि ICMP पिंग और वैध FTP लॉगिन कार्यात्मक रहते हैं।
MASQUERADE + FORWARD नियम जोड़ें ताकि विश्लेषक सबनेट के बीच और WAN तक रूट कर सके — scripts/router_config.sh देखें।scripts/ping_check.sh के साथ।Snort को काली पैकेज मैनेजर (sudo apt install snort -y) के माध्यम से स्थापित किया जाता है और /etc/snort/snort.conf में कॉन्फ़िगर किया जाता है:
HOME_NET = "10.10.10.0/24,192.168.50.0/24"
EXTERNAL_NET = "any"
ips = {
enable_builtin_rules = true,
include = "/etc/snort/rules/local.rules",
variables = default_variables
}
alert_fast = { file = true, packet = false }
HOME_NET दोनों आंतरिक सबनेट को कवर करता है ताकि Snort विश्लेषक पर सभी इंटर-सबनेट ट्रैफिक को निरीक्षण के योग्य समझे। alert_fast कॉम्पैक्ट एक-पंक्ति अलर्ट उत्पन्न करता है (प्रति-पैकेट लॉगिंग अत्यधिक वॉल्यूम उत्पन्न करेगी)।
कॉन्फ़िगरेशन सत्यापन:
sudo snort -T -c /etc/snort/snort.conf
# परिणाम: 652 नियम लोड (5 कस्टम टेक्स्ट + 647 बिल्ट-इन), 0 चेतावनी
/etc/snort/rules/local.rules में पाँच नियम (पूरी फ़ाइल scripts/local.rules में):
Snort दोनों आंतरिक इंटरफेस पर निष्क्रिय मोड में चलता है:
sudo snort -c /etc/snort/snort.conf -i eth1 -i eth2 \
-A alert_fast -l /var/log/snort/
# दूसरे टर्मिनल में अलर्ट देखें:
sudo tail -f /var/log/snort/alert_fast.txt
स्टार्टअप आउटपुट pcap DAQ configured to passive की पुष्टि करता है — Snort हर पैकेट देखता है लेकिन उनमें से किसी को भी गिरा या संशोधित नहीं कर सकता।
हमलावर से scripts/attack_simulator.sh निष्पादित करने के बाद:
IDS ने सब कुछ पता लगाया और कुछ भी नहीं रोका। यह चरण 1 का केंद्रीय पाठ है: प्रवर्तन के बिना एक कार्यरत IDS एक अलार्म सिस्टम है, ताला नहीं। जब तक कोई मानव विश्लेषक अलर्ट पढ़ता है, हमलावर पहले ही रूट हो चुका होता है।
एक द्वितीयक अवलोकन: Snort के बिल्ट-इन नियम (116:408, 116:414) DHCP प्रसारण ट्रैफिक पर फायर करते हैं — दुर्भावनापूर्ण नहीं, लेकिन उत्पादन तैनाती में अलर्ट लॉग को कार्रवाई योग्य बनाए रखने के लिए उन्हें दमन नियमों की आवश्यकता होगी।
IPS परत को scripts/ips_setup.sh के साथ तैनात किया जाता है, जो:
-D) में Snort लॉन्च करता हैउसी आक्रमण स्क्रिप्ट को हमलावर से पुनः चलाया गया:
दो मैन्युअल जाँचों ने चयनात्मक प्रवर्तन की पुष्टि की:
ping -c 4 192.168.50.10 → 4 पैकेट प्रेषित, 4 प्राप्त, 0% हानिmsfadmin:msfadmin के साथ ftp 192.168.50.10 → 220 (vsFTPd 2.3.4) … 230 लॉगिन सफलरन के दौरान iptables पैकेट काउंटरों से मात्रात्मक प्रमाण: 2051 पैकेट स्वीकार किए गए, 12 पैकेट FTP connlimit नियम द्वारा गिराए गए, 808 ICMP पैकेट स्वीकार किए गए — संख्याओं में चयनात्मक प्रवर्तन।
IPS मोड में भी, Snort ने उन पैकेटों पर SID 1000002 / 1000003 अलर्ट फायर करना जारी रखा जो iptables द्वारा बाद के पैकेटों को गिराने से पहले इसके निष्क्रिय निरीक्षण बिंदु तक पहुँचे — जिसका अर्थ है कि iptables प्रवर्तन प्रदान करता है जबकि Snort ऑडिट लॉगिंग प्रदान करता है, साथ-साथ काम करते हुए।
हाँ — आक्रमण अनुकरण के दौरान SID 1000001–1000004 में से प्रत्येक सही ढंग से फायर हुआ:
:) सामग्री मिलान ने सटीक शोषण बाइट अनुक्रम को पकड़ लिया।लेकिन संसूचन ≠ निवारण। vsftpd शोषण ने एक रूट Meterpreter शेल खोला जबकि हर अलर्ट फायर हो रहा था। एक SOC विश्लेषक वास्तविक समय में IDS देख रहा होता तो समझौता देख लेता — लेकिन सेकंडों में हमलावर पहले से ही रूट होने के साथ, केवल अलर्ट करना पर्याप्त नहीं है। यह परिचालनात्मक केंद्र है कि IPS क्यों मौजूद है।
कार्यान्वयन ने वैध ट्रैफिक पर शून्य देखने योग्य प्रभाव के साथ पूर्ण आक्रमण शमन प्राप्त किया। प्रभावशीलता सर्जिकल नियम डिज़ाइन से आती है — प्रत्येक iptables नियम एक व्यवहारिक हस्ताक्षर को लक्षित करता है, व्यापक प्रोटोकॉल को नहीं:
connlimit एकल-सत्र FTP को तोड़े बिना ब्रूट फोर्स उपकरणों की समानांतरता को अवरुद्ध करता है।STRING मिलान वैध FTP लॉगिन ट्रैफिक को फ़िल्टर किए बिना सटीक शोषण पेलोड को गिराता है।एक स्वीकृत सीमा: ICMP पूरी तरह से अनुमत है, जिसका अर्थ है कि हमलावर अभी भी पिंग के माध्यम से Metasploitable के जीवित होने की पुष्टि कर सकता है। उच्च-सुरक्षा वातावरण में इसे दर-सीमित या विश्वसनीय स्रोतों तक प्रतिबंधित किया जाएगा। इस प्रयोगशाला में, ICMP प्राथमिक कनेक्टिविटी सत्यापन तंत्र है, इसलिए यह खुला रहता है।
यह प्रयोगशाला एक समर्पित Snort मशीन का उपयोग करती है। pfSense या OPNsense जैसे फ़ायरवॉल उपकरण के अंदर प्लगइन के रूप में Snort चलाने की तुलना:
समर्पित दृष्टिकोण के लाभ:
व्यापार-बंद:
समर्पित Snort उद्यम वातावरणों के लिए सही विकल्प है जिन्हें प्रदर्शन, स्थिति और अनुकूलन की आवश्यकता है। pfSense/OPNsense प्लगइन दृष्टिकोण छोटे व्यवसाय या होम लैब वातावरणों के लिए अधिक समझ में आता है जो उपयोग में आसानी को प्राथमिकता देते हैं।
चरण 2 तकनीकी रूप से निष्क्रिय Snort + iptables प्रवर्तन है, न कि Snort सही इनलाइन मोड में चल रहा हो — Snort स्वयं लॉग करता है (pcap DAQ configured to passive), और iptables दर सीमा, स्ट्रिंग मिलान, और कनेक्शन गणना के आधार पर गिराने का कार्य करता है।
यह एक वैध और सामान्य तैनाती पैटर्न है (यह इस प्रकार है कि कई वास्तविक दुनिया Linux-आधारित IDS/IPS स्टैक काम करते हैं)। एक स्वाभाविक अनुवर्ती चरण 2 को snort --daq nfq (या इनलाइन मोड में afpacket) का उपयोग करके सही इनलाइन कॉन्फ़िगरेशन में स्थानांतरित करना होगा, जिसमें Snort के reject / drop नियम क्रियाएँ हों, ताकि Snort स्वयं iptables को प्रतिनिधि देने के बजाय पूर्ण हस्ताक्षर मिलान के आधार पर गिराने का कार्य करे।
snort-ids-ips-lab/
├── README.md ← यह फ़ाइल
├── report/
│ ├── Snort-IDS-IPS-Report.pdf ← पूर्ण प्रयोगशाला रिपोर्ट
│ └── Snort-IDS-IPS-Report.docx ← संपादन योग्य स्रोत
├── scripts/
│ ├── router_config.sh ← IP फ़ॉरवर्डिंग + iptables रूटिंग
│ ├── ping_check.sh ← कनेक्टिविटी सत्यापन
│ ├── attack_simulator.sh ← 4-वेक्टर आक्रमण श्रृंखला
│ ├── ips_setup.sh ← IPS iptables नियम + Snort डेमॉन
│ └── local.rules ← 5 कस्टम Snort नियम (SID 1000001-1000005)
├── screenshots/ ← रिपोर्ट आंकड़े
├── .gitignore
└── LICENSE
⚠️ केवल प्रयोगशाला उपयोग के लिए। ये स्क्रिप्ट जानबूझकर कमजोर लक्ष्य के विरुद्ध वास्तविक शोषण और ब्रूट-फोर्स उपकरण चलाती हैं। इन्हें किसी भी ऐसे सिस्टम पर न चलाएँ जिसके आप मालिक नहीं हैं और जिसके परीक्षण के लिए आपके पास स्पष्ट लिखित प्राधिकरण नहीं है।
scripts/router_config.sh चलाएँ, फिर पूर्ण कनेक्टिविटी की पुष्टि के लिए scripts/ping_check.sh चलाएँ।sudo apt update && sudo apt install snort -y
scripts/local.rules को /etc/snort/rules/local.rules पर रखें और /etc/snort/snort.conf में HOME_NET = "10.10.10.0/24,192.168.50.0/24" सेट करें।sudo snort -T -c /etc/snort/snort.conf — 652 नियम लोड, 0 चेतावनी की उम्मीद करें।sudo snort -c /etc/snort/snort.conf -i eth1 -i eth2 -A alert_fast -l /var/log/snort/
# दूसरे टर्मिनल में:
sudo tail -f /var/log/snort/alert_fast.txt
sudo ./scripts/attack_simulator.sh — अलर्ट फायर होते और Meterpreter शेल देखें।इस रिपॉजिटरी में प्रलेखित सभी गतिविधियाँ केवल पर्यवेक्षित शैक्षणिक सीखने के उद्देश्यों के लिए एक स्व-निहित VMware आभासी प्रयोगशाला वातावरण के भीतर संचालित की गई थीं। किसी भी बाहरी, उत्पादन, या वास्तविक दुनिया प्रणाली को लक्षित, स्कैन या किसी भी तरह से प्रभावित नहीं किया गया। Metasploitable 2 एक जानबूझकर कमजोर आभासी मशीन है जिसे विशेष रूप से सुरक्षा प्रशिक्षण के लिए डिज़ाइन किया गया है।
इस सामग्री का उपयोग सिस्टम स्वामी से स्पष्ट लिखित प्राधिकरण के बिना किसी भी वास्तविक प्रणाली के विरुद्ध इन गतिविधियों को दोहराने के लिए नहीं किया जाना चाहिए। अनधिकृत पोर्ट स्कैनिंग, क्रेडेंशियल हमले, या नेटवर्क सेवाओं का शोषण अधिकांश न्यायक्षेत्रों में अवैध है।
MIT — LICENSE देखें। प्रयोगशाला रिपोर्ट स्वयं शैक्षिक संदर्भ के लिए प्रदान की गई है।
| SID | नाम | ट्रिगर |
|---|
| 1000001 | ICMP पिंग का पता चला | किसी भी दिशा में कोई भी ICMP ट्रैफिक — टोही पिंग को पकड़ता है |
| 1000002 | FTP कनेक्शन प्रयास | पोर्ट 21 पर कोई भी TCP कनेक्शन — वैध और ब्रूट फोर्स ट्रैफिक दोनों को पकड़ता है |
| 1000003 | संभावित Nmap SYN स्कैन | केवल SYN फ्लैग सेट वाले TCP पैकेट (flags:S) — हाफ-ओपन स्कैन का हस्ताक्षर |
| 1000004 | VSFTPD 2.3.4 बैकडोर प्रयास | FTP पोर्ट 21 पर content:":)" — CVE-2011-2523 का सटीक ट्रिगर स्ट्रिंग |
| 1000005 | संभावित Metasploit शेलकोड | `content:" |
| आक्रमण | संसूचन | परिणाम |
|---|
| ICMP टोही | ✅ SID 1000001 — द्विदिश अलर्ट | पिंग पूर्ण हुआ |
| Nmap SYN स्कैन | ✅ SID 1000003 — <1 सेकंड में हजारों अलर्ट | 23 खुले पोर्ट गिने गए |
| Hydra FTP ब्रूट फोर्स | ✅ SID 1000002 — बार-बार FTP कनेक्शन अलर्ट | msfadmin:msfadmin क्रेडेंशियल क्रैक हुए |
| vsftpd 2.3.4 बैकडोर | ✅ SID 1000004 — :) सामग्री मिलान फायर हुआ | रूट Meterpreter शेल प्राप्त हुआ |
| नियम | यह क्या करता है |
|---|
ACCEPT icmp | स्पष्ट रूप से सभी ICMP की अनुमति देता है — कनेक्टिविटी जाँच को संरक्षित करता है |
DROP tcp dpt:21 STRING ":)" | पोर्ट 21 पर vsftpd 2.3.4 बैकडोर ट्रिगर वाले पैकेट को गिराता है |
ACCEPT tcp --syn -m limit --limit 10/s --limit-burst 20 | दर सीमा के भीतर सामान्य TCP हैंडशेक की अनुमति देता है |
DROP tcp --syn (सीमा के बाद) | 10/s से अधिक SYN बाढ़ को गिराता है — Nmap SYN स्कैन को हराता है |
DROP tcp dpt:21 -m connlimit --connlimit-above 5 --connlimit-mask 32 | प्रति स्रोत > 5 समवर्ती FTP कनेक्शन को अवरुद्ध करता है — Hydra की समानांतरता को हराता है |
ACCEPT eth1→eth0, ACCEPT eth2→eth0 | सामान्य बहिर्गमन रूटिंग |
ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED | स्टेटफुल — स्थापित सत्रों को संरक्षित करता है |
| आक्रमण | चरण 2 परिणाम |
|---|
| ICMP टोही | ✅ अनुमति दी गई (जानबूझकर) |
| Nmap SYN स्कैन | ❌ अवरुद्ध — 1000 फ़िल्टर्ड tcp पोर्ट (कोई प्रतिक्रिया नहीं), स्कैन में 21.71 सेकंड लगे <1 सेकंड के बजाय |
| Hydra FTP ब्रूट फोर्स | ❌ अवरुद्ध — अत्यधिक कनेक्शन त्रुटियों के कारण सभी चाइल्ड अक्षम हो गए — 0 वैध पासवर्ड मिला |
| vsftpd बैकडोर | ❌ अवरुद्ध — Rex::ConnectionTimeout — शोषण पूर्ण हुआ, लेकिन कोई सत्र नहीं बनाया गया |
| आक्रमण / ट्रैफिक | चरण 1 (केवल IDS) | चरण 2 (IDS + iptables IPS) |
|---|
| ICMP पिंग | पता चला ✅ | अनुमति दी गई ✅ (जानबूझकर) |
| Nmap SYN स्कैन | पता चला — 23 खुले पोर्ट मिले | अवरुद्ध — 1000 फ़िल्टर्ड |
| Hydra FTP ब्रूट फोर्स | पता चला — msfadmin:msfadmin क्रैक हुआ | अवरुद्ध — 0 पासवर्ड मिले |
| vsftpd 2.3.4 शोषण | पता चला — रूट Meterpreter शेल | अवरुद्ध — कनेक्शन टाइमआउट |
| वैध FTP लॉगिन | n/a | संरक्षित (230 लॉगिन सफल) |
sudo ./scripts/ips_setup.sh चलाएँ, फिर हमलावर पर आक्रमण श्रृंखला पुनः चलाएँ। अवरोधों की पुष्टि करें, फिर मैन्युअल रूप से परीक्षण करें:
ping -c 4 192.168.50.10 # सफल होना चाहिए
ftp 192.168.50.10 # msfadmin / msfadmin — सफल होना चाहिए