वेब सर्वर पर AI Active Firewall का इम्प्लीमेंटेशन #
हमने एक ऐसा सिस्टम इम्प्लीमेंट किया जिसमें एक local LLM उन अज्ञात Bot पैटर्न और स्पैम रिक्वेस्ट का विश्लेषण करता है जिन्हें Fail2Ban के फिक्स्ड थ्रेशोल्ड पकड़ नहीं पाते, और हर 15 मिनट में उन्हें अपने आप ब्लॉक कर देता है। मौजूदा nginx + Fail2Ban सेटअप के ऊपर हमने एक AI विश्लेषण लेयर जोड़ी, जिससे 3-लेयर डिफेंस स्ट्रक्चर बना।
Fail2Ban बेहतरीन है, लेकिन “अज्ञात” खतरों के सामने कमजोर #
nginx UA मैपिंग + रेट लिमिटिंग + Fail2Ban का कॉम्बिनेशन वेब सर्वर पर Bot सुरक्षा का स्टैंडर्ड है। जो IP एक मिनट में 10 बार 403 एरर पैदा करे, उसे एक घंटे के लिए बैन कर दो। सरल और भरोसेमंद।
हालांकि, इस अप्रोच में एक स्ट्रक्चरल कमजोरी है।
BASTION ऐसे “पैटर्न जिन्हें इंसान तो नोटिस कर लेता लेकिन फिक्स्ड रूल्स नहीं पकड़ पाते” पर निर्णय एक local LLM से करवाता है।
3-लेयर डिफेंस स्ट्रक्चर #
हमने मौजूदा nginx + Fail2Ban सेटअप के ऊपर BASTION की AI विश्लेषण लेयर जोड़ी, जिससे 3-लेयर स्ट्रक्चर बना।
| लेयर | जिम्मेदारी | निर्णय का तरीका | रिस्पॉन्स स्पीड |
|---|---|---|---|
| Layer 1 | nginx (UA मैपिंग / रेट लिमिटिंग / deny.conf) | स्टैटिक रूल्स | तत्काल (प्रति रिक्वेस्ट) |
| Layer 2 | Fail2Ban (firewalld इंटीग्रेशन) | फिक्स्ड थ्रेशोल्ड (403 एरर 10 बार/मिनट) | 1 मिनट के भीतर |
| Layer 3 | BASTION (LLM विश्लेषण → SSH के जरिए firewalld) | LLM लॉग के संदर्भ को परखता है | 15 मिनट के भीतर |
हर लेयर स्वतंत्र रूप से काम करती है। यदि Fail2Ban पहले किसी IP को बैन कर दे, तो BASTION डुप्लिकेट चेकिंग करके दोहरे ब्लॉकिंग को रोकता है। BASTION की ताकत है इसकी “अज्ञात पैटर्न पकड़ने की क्षमता”।
मॉनिटरिंग आइटम #
BASTION का वेब सर्वर मॉनिटरिंग टेम्पलेट हर 15 मिनट में निम्नलिखित 6 कैटेगरी का विश्लेषण करता है।
| कैटेगरी | डेटा सोर्स | डिटेक्शन की सामग्री |
|---|---|---|
| HTTP स्टेटस डिस्ट्रीब्यूशन | एक्सेस लॉग | 403/429/5xx के कंसन्ट्रेटेड IP। सामान्य स्थिति से विचलन |
| Bot User-Agent डिटेक्शन | एक्सेस लॉग | अज्ञात Bot User-Agent × हाई-फ्रीक्वेंसी रिक्वेस्ट |
| स्पैम रिक्वेस्ट | एक्सेस लॉग | भाषा-स्विचिंग फ्लड जैसे विशिष्ट पैरामीटर स्पैम |
| मैलवेयर डिटेक्शन | ClamAV लॉग | अपलोड की गई फ़ाइलों में वायरस डिटेक्शन |
| SSH ऑथेंटिकेशन फेल्योर | sshd लॉग | Failed password / Invalid user |
| एप्लिकेशन एरर | PHP-FPM लॉग | FATAL/ERROR लेवल |
ब्लॉकिंग का मैकेनिज्म #
WAN बाउंडरी फ़ायरवॉल की बजाय वेब सर्वर पर ब्लॉक क्यों #
BASTION का रिएक्टिव डिफेंस सामान्यतः WAN बाउंडरी फ़ायरवॉल API (जैसे OPNsense) पर अटैक-सोर्स IP को ब्लॉक करता है (पिछला लेख देखें)। हालांकि, जिन कॉन्फ़िगरेशन में वेब सर्वर DNAT के जरिए एक्सपोज़ होता है, वहां WAN बाउंडरी फ़ायरवॉल की ब्लॉकलिस्ट वेब सर्वर की ओर जाने वाले ट्रैफिक को कैप्चर नहीं कर पाती।
इसलिए हमने एक स्वतंत्र डिफेंस पाथ तैयार किया जो ब्लॉकिंग रूल्स सीधे वेब सर्वर के firewalld + nginx deny.conf में लगाता है।
BASTION (Analysis Server) → SSH connection (dedicated service account, public key authentication, minimum privilege sudo) → firewall-cmd drops IP (L3/L4 level) → nginx deny.conf appends IP + reload (L7 level)
SSH कनेक्शन की सुरक्षा #
विश्लेषण सर्वर से वेब सर्वर तक SSH कनेक्शन एक समर्पित सर्विस अकाउंट का उपयोग करते हैं, जिसमें sudo अधिकार केवल आवश्यक कमांड तक सीमित हैं।
# sudoers authorized commands (nothing else can execute) svc-monitor ALL=(root) NOPASSWD: /usr/bin/firewall-cmd svc-monitor ALL=(root) NOPASSWD: /usr/sbin/nginx svc-monitor ALL=(root) NOPASSWD: /usr/bin/tee -a /etc/nginx/deny.d/* svc-monitor ALL=(root) NOPASSWD: /usr/bin/sed -i * /etc/nginx/deny.d/*
root लॉगिन की बजाय हमने न्यूनतम-अधिकार डिज़ाइन वाला एक समर्पित सर्विस अकाउंट बनाया, जो ISMS ऑडिट का सामना कर सकता है।
Fail2Ban से अंतर #
| Fail2Ban | BASTION | |
|---|---|---|
| निर्णय का तरीका | फिक्स्ड थ्रेशोल्ड (“403 N बार/मिनट”) | LLM लॉग का संदर्भ पढ़कर निर्णय करता है |
| अज्ञात पैटर्न | डिटेक्ट नहीं कर सकता (रूल अपडेट चाहिए) | लॉग की असामान्यता के पैटर्न अपने आप डिटेक्ट करता है |
| User-Agent स्पूफिंग | 403 रिस्पॉन्स के बिना डिटेक्ट नहीं कर सकता | रिक्वेस्ट फ्रीक्वेंसी × पाथ × समय के आधार पर परखता है |
| ClamAV इंटीग्रेशन | नहीं | FOUND डिटेक्शन → अपलोड-सोर्स IP ट्रेस → ब्लॉक |
| नोटिफिकेशन | ईमेल (MTA पर निर्भर) | Slack (तुरंत नोटिफिकेशन, इंटरैक्टिव ऑपरेशन) |
| अनब्लॉक | bantime से फिक्स्ड | 24 घंटे बाद ऑटो-अनब्लॉक + Slack से तुरंत अनब्लॉक |
| ऑडिट | fail2ban.log | स्ट्रक्चर्ड ऑडिट लॉग ([HB_BLOCK]/[HB_UNBLOCK] टैग) |
BASTION, Fail2Ban को रिप्लेस करने की बजाय उसके साथ मिलकर काम करता है। Fail2Ban “403 फ्लड” को 1 मिनट के भीतर डिटेक्ट करके बैन कर देता है। BASTION 15-मिनट की आवधिक LLM विश्लेषण के जरिए “वे स्पष्ट रूप से अस्वाभाविक पैटर्न जिनसे 403 नहीं बनता” डिटेक्ट करता है। चूंकि दोनों अलग-अलग क्षेत्र कवर करते हैं, दोनों को साथ चलाने से ब्लाइंड स्पॉट कम हो जाते हैं।
वास्तविक ऑपरेशन #
विश्लेषण रिपोर्ट #
15-मिनट की आवधिक विश्लेषण के साथ, वेब सर्वर सेक्शन अपने आप आउटपुट होता है।
वेब सर्वर विस्तृत विश्लेषण
रिक्वेस्ट: 1,847
स्टेटस: 200=1,650 / 403=112 / 429=45 / 5xx=0
403 कंसन्ट्रेटेड IP: xxx.xxx.156.12 (40 बार) — User-Agent: GPTBot/1.0
Bot संदिग्ध User-Agent: “SomeNewBot/2.0” (180 बार/15 मिनट) — अपंजीकृत User-Agent
ClamAV: कोई डिटेक्शन नहीं
SSH फेल्योर: 0 / PHP-FPM ERROR: 0
ऑटोमैटिक ब्लॉक एक्जीक्यूशन #
🛡️ वेब सर्वर ब्लॉक एक्जीक्यूशन
IP: xx.xxx.156.12
कारण: bot_spam
firewalld: drop जोड़ा गया
nginx deny: लागू
मैन्युअल अनब्लॉक: @OpenClaw-Monitor unblock xx.xxx.156.12
ClamAV FOUND डिटेक्शन पर ऑटोमैटिक रिस्पॉन्स #
जब ClamAV किसी अपलोड की गई फ़ाइल में मैलवेयर डिटेक्ट करता है, तो BASTION तुरंत CRITICAL निर्धारण आउटपुट करता है। ClamAV खुद केवल फ़ाइल को क्वारंटीन करता है, लेकिन BASTION एक कदम आगे जाकर एक्सेस लॉग से अपलोड-सोर्स IP की पहचान करता है और उसे firewalld से अपने आप ब्लॉक कर देता है। दो-तरफा अप्रोच: फ़ाइल क्वारंटीन (ClamAV) + नेटवर्क आइसोलेशन (BASTION)।
nginx deny.conf का “बेस्ट-एफर्ट” डिज़ाइन #
हमने firewalld ब्लॉकिंग और nginx deny.conf के साथ दोहरा डिफेंस डिज़ाइन किया, लेकिन इसे इस तरह भी डिज़ाइन किया कि जिन एनवायरनमेंट में nginx deny.conf डायरेक्टरी कॉन्फ़िगरेशन नहीं है, वहां अकेला firewalld ही सुरक्षा देता रहे। यदि deny.conf उपयोग नहीं हो पाता, तो उसे “skipped” के रूप में लॉग किया जाता है और firewalld अकेले चलता रहता है। बाद में nginx include कॉन्फ़िगरेशन जोड़ते ही nginx deny बिना कोड बदले अपने आप सक्रिय हो जाएगा। यह डिज़ाइन एनवायरनमेंट की तैयारी के अनुसार क्रमिक मजबूती की अनुमति देता है।
सारांश #
हमने वेब सर्वर में BASTION की AI विश्लेषण लेयर जोड़कर nginx (Layer 1) → Fail2Ban (Layer 2) → BASTION (Layer 3) का 3-लेयर डिफेंस बनाया। जिन अज्ञात Bot पैटर्न और स्पैम रिक्वेस्ट को फिक्स्ड थ्रेशोल्ड पकड़ नहीं पाते, उन्हें local LLM हर 15 मिनट में अपने आप डिटेक्ट करता है और firewalld तुरंत ब्लॉक कर देता है।
SSH कनेक्शन समर्पित अकाउंट, न्यूनतम-अधिकार sudo और public key ऑथेंटिकेशन का उपयोग करते हैं। nginx deny.conf बेस्ट-एफर्ट डिज़ाइन पर आधारित है और एनवायरनमेंट की तैयारी के अनुसार क्रमिक रूप से सक्षम किया जा सकता है। BASTION, Fail2Ban के साथ मिलकर काम करता है, और दोनों अलग-अलग क्षेत्र कवर करते हैं।
BASTION एक ऐसी सर्विस है जो क्लोज़्ड एनवायरनमेंट में AI सिक्योरिटी मॉनिटरिंग सक्षम बनाती है।