Apache: प्रति IP अनुरोधों / ट्रैफ़िक की संख्या को सीमित करें?


12

मैं केवल एक IP का उपयोग करने की अनुमति देना चाहता हूं, प्रति दिन 1GB, ट्रैफ़िक का कहना है, और यदि वह सीमा पार हो जाती है, तो उस IP से सभी अनुरोध अगले दिन तक हटा दिए जाते हैं। हालांकि, एक अधिक सरल समाधान जहां अनुरोधों की एक निश्चित मात्रा के बाद कनेक्शन को गिरा दिया जाएगा, पर्याप्त होगा।

क्या पहले से ही किसी प्रकार का मॉड्यूल है जो ऐसा कर सकता है? या शायद मैं इसे iptables जैसी किसी चीज के जरिए हासिल कर सकता हूं?

धन्यवाद


अपाचे संस्करण?
पीहर

२.२

जवाबों:


5

यदि आप Apache 2.0 के लिए शुद्ध Apache घोल bw_mod और Apache 1.3 के लिए mod_bandwidth चाहते हैं। वे बैंडविड्थ उपयोग को सीमित करने के लिए आपके सर्वर की बैंडविड्थ को थ्रॉटल कर सकते हैं।

Mod_limitipconn भी है, जो एक उपयोगकर्ता को आपके सर्वर से बहुत सारे कनेक्शन बनाने से रोकता है। mod_cband एक और विकल्प है, लेकिन मैंने कभी इसका उपयोग नहीं किया है।

यदि आप अपने अपाचे इंस्टॉलेशन के साथ गड़बड़ नहीं करना चाहते हैं तो आप अपाचे के सामने एक स्क्वीड प्रॉक्सी लगा सकते हैं। यह आपको थ्रॉटलिंग पर भी अधिक नियंत्रण प्रदान करता है।

हालाँकि, ज्यादातर मामलों में समस्या कुछ बड़ी वस्तुओं की होती है जब आप प्रति आईपी बैंडविड्थ को सीमित करना चाहते हैं, और जब कोई उपयोगकर्ता बहुत अधिक डेटा खींचता है और आप उसे ब्लॉक कर देते हैं, तो आप एक त्रुटि संदेश देना चाहते हैं। उस स्थिति में एक PHP स्क्रिप्ट लिखना और डेटाबेस में एक अस्थायी तालिका में एक्सेस जानकारी संग्रहीत करना आसान हो सकता है।


2
सुझाव के लिए धन्यवाद। मैंने पहले से ही bw_mod और mod_limitipconn में देखा है, लेकिन न तो (जहां तक ​​मैं बता सकता हूं) मैं जो चाहता हूं, वह करो। mod_limitipconn बस उन्हें एक समय में एक कनेक्शन तक सीमित करता है, और bw_mod केवल मुझे आपके आईपी के डाउनलोड दर को सीमित करने की अनुमति देता है। मैं डेटा हस्तांतरण / अनुरोधों की एक निश्चित मात्रा के बाद उन्हें ब्लॉक करना चाहता हूं। मैं वास्तव में कुछ ऐसे उपयोगकर्ताओं से बचाव करने की कोशिश कर रहा हूं जो मेरी पूरी साइट को क्रॉल करने और सब कुछ डाउनलोड करने की आवश्यकता महसूस करते हैं। मैं स्क्विड प्रॉक्सी पर एक नज़र डालूंगा, दिलचस्प लगता है। यदि वह काम नहीं करता है, तो मुझे लगता है कि मैं bw_mod स्रोत को संशोधित करने का सहारा लूंगा।

क्या आपने मकड़ियों को खदेड़ने के लिए अपना robots.txt सेट किया है?
पीहर

1
Robots.txt के साथ समस्या यह है कि (RFC 3514 की तरह) केवल अच्छे रोबोट ही इसका सम्मान करते हैं।
स्कॉट पैक

सही है, लेकिन आप पाएंगे कि आपकी साइट को देखने वाले अधिकांश लोग मानक टूल का उपयोग करते हैं। और उनमें से कई, जैसे कि wget, robots.txt का सम्मान करता है। Robots.txt भी अपने उपयोगकर्ताओं को सूचित करने का सही तरीका है कि आप उन्हें मकड़ी नहीं बनाना चाहते।
पीहर 14

1
मैंने वह कोशिश की है। सबसे पहले, robots.txt पर्याप्त था, तब उन्होंने Wget को robots.txt को अनदेखा करने के लिए कहा, इसलिए मैंने "अपरिचित" उपयोगकर्ता-एजेंटों को अवरुद्ध करने का सहारा लिया, लेकिन फिर उन्होंने उपयोगकर्ता एजेंट को खराब कर दिया। वे बहुत सारे सिर अनुरोध करने की प्रवृत्ति रखते हैं, जबकि वैध ब्राउज़र नहीं करते हैं, इसलिए मैं सिर अनुरोधों को सीमित करने या इसे पूरी तरह से अक्षम करने (कम वांछनीय) में देख सकता हूं।

5

इस तरह के मुद्दे के लिए यह मेरा iptables समाधान है। --seconds --hitcountअपनी आवश्यकतानुसार समायोजित करें , iptables तालिका भी।

iptables -A FORWARD -m state --state NEW -m recent --rcheck --seconds 600 --hitcount 5 --name ATACK --rsource -j REJECT --reject-with icmp-port-unreachable
iptables -A FORWARD -d 192.168.0.113/32 -o eth1 -p tcp -m tcp --dport 80 -m recent --set --name ATACK --rsource -j ACCEPT

व्याख्या की:

  1. iptablesजाँच करें कि क्या स्रोत आईपी 600 सेकंड के अंतराल में 5 या अधिक बार के लिए / proc / net / ipt_recent / ATACK फ़ाइल पर सूचीबद्ध है और यदि यह एक नया अनुरोध है। यदि यह है, तो अस्वीकार करें; अन्य

  2. iptables जाँचें कि अनुरोध 80 पोर्ट के लिए नियत है। यदि हां, तो IP और टाइमस्टैम्प को / proc / net / ipt_recent / ATACK और फॉरवर्ड पैकेट पर प्रिंट करें।

यह मेरी जरूरतों के लिए ठीक काम कर रहा है।


3

क्या आपने विफल 2ban जैसे उपकरण को देखा है? यदि आपके लिए थोड़ा भारी हो सकता है, लेकिन यह आपको किसी भी आईपी की अनुमति दी गई अनुरोधों की संख्या को सीमित करने देगा। यह लॉग को देखकर काम करता है, और आप नियमों का निर्धारण करते हैं कि प्रति समय कितने उल्लंघन की अनुमति है, इसलिए आपके लिए प्रति दिन अनुरोध हो सकता है। एक बार जब वे इस पर जाते हैं कि यह उन्हें ipchains का उपयोग करके ब्लॉक करने जैसी चीजें कर सकता है।

मैंने एक मेल सर्वर के खिलाफ DDoS हमलों को बहुत सफलतापूर्वक ब्लॉक करने के लिए इसका उपयोग किया है। हालांकि यह महत्वपूर्ण मात्रा में प्रोसेसर शक्ति का उपभोग कर सकता है।


वर्तमान; y इसे स्वयं लागू करने के बारे में। आशा है कि यह काम करता है
डार्क स्टार

1

कोशिश करो mod_dosevasiveयाmod_security

mod_dosevasive निर्दिष्ट समय सीमा में किसी साइट पर एक निर्दिष्ट संख्या या पृष्ठ अनुरोध के बाद आईपी पर प्रतिबंध लगाने के लिए कॉन्फ़िगर किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.