अपाचे में मजबूत दर सीमा (अनुरोध | बाइट्स / आईपी / यूनिट समय) को लागू करने के लिए कौन सी तकनीक और / या मॉड्यूल उपलब्ध हैं?
जवाबों:
सबसे अच्छा
और बाकी
mod_evasive
बहुत सारी ऑनलाइन सिफारिशें मिलती हैं, लेकिन 2017 के मध्य तक, इसके लेखक, जोनाथन ज़डज़ार्स्की ने इसे छोड़ दिया है, जिन्होंने अपने ब्लॉग से सभी संदर्भों को अजीब तरीके से हटा दिया है - हालांकि स्रोत कोड अभी भी अपलोड के रूप में उपलब्ध है । अन्य परियोजनाओं में से कोई भी पिछले 6 वर्षों में अद्यतन नहीं किया गया है (या मामले में 15 साल mod_limitipconn
)।
जैसा कि इस ब्लॉग पोस्ट में कहा गया है कि प्रति सेकंड की दर सीमा को लागू करने के लिए mod_security का उपयोग करना संभव है ।
कॉन्फ़िगरेशन कुछ इस प्रकार है:
SecRuleEngine On
<LocationMatch "^/somepath">
SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>
ErrorDocument 509 "Rate Limit Exceeded"
mod_security
एक अपाचे परियोजना नहीं है।
वेब एप्लिकेशन फ़ायरवॉल सहित कई तरीके हैं लेकिन अपाचे मॉड का उपयोग करने पर सबसे आसान काम है।
ऐसा एक मॉड जिसे मैं सुझाता हूं वह है mod_qos । यह एक फ्री मॉड्यूल है जो सर्टिफाइड DOS, Bruteforce और Slowloris प्रकार के हमलों के खिलाफ बहुत प्रभावी है। इससे आपका सर्वर लोड काफी कम हो जाएगा।
यह बहुत शक्तिशाली है ।
Mod_qos मॉड्यूल की वर्तमान रिलीज़ को लागू करने के लिए नियंत्रण तंत्र लागू करता है:
किसी स्थान / संसाधन (URL) या वर्चुअल होस्ट के समवर्ती अनुरोधों की अधिकतम संख्या।
बैंडविड्थ की सीमा जैसे किसी URL के लिए प्रति सेकंड अधिकतम अनुमत संख्या या डाउनलोड किए गए kbytes की अधिकतम / न्यूनतम सीमा।
प्रति सेकंड अनुरोध घटनाओं की संख्या (विशेष अनुरोध की स्थिति) को सीमित करता है।
जेनेरिक अनुरोध लाइन और हेडर फिल्टर अनधिकृत संचालन से इनकार करने के लिए।
शरीर डेटा सीमा और फ़िल्टरिंग का अनुरोध करें (mod_parp की आवश्यकता है)।
व्यक्तिगत ग्राहकों (आईपी) के लिए अनुरोध घटनाओं की संख्या को सीमित करता है।
टीसीपी कनेक्शन स्तर पर सीमाएं, उदाहरण के लिए, एकल आईपी स्रोत पते या डायनामिक कीप-ज़िंदा नियंत्रण से अनुमत कनेक्शनों की अधिकतम संख्या।
यह एक नमूना विन्यास है जिसे आप इसके लिए उपयोग कर सकते हैं। आपकी आवश्यकताओं के अनुरूप सैकड़ों संभावित विन्यास हैं। नियंत्रण पर अधिक जानकारी के लिए साइट पर जाएँ।
Sample configuration:
# minimum request rate (bytes/sec at request reading):
QS_SrvRequestRate 120
# limits the connections for this virtual host:
QS_SrvMaxConn 800
# allows keep-alive support till the server reaches 600 connections:
QS_SrvMaxConnClose 600
# allows max 50 connections from a single ip address:
QS_SrvMaxConnPerIP 50
# disables connection restrictions for certain clients:
QS_SrvMaxConnExcludeIP 172.18.3.32
QS_SrvMaxConnExcludeIP 192.168.10.
Apache 2.4 में, एक नया स्टॉक मॉड्यूल है जिसे mod_ratelimit कहा जाता है । मॉडेम की गति का अनुकरण करने के लिए, आप mod_dialup का उपयोग कर सकते हैं । हालाँकि मैं यह नहीं देखता कि आप हर चीज़ के लिए mod_ratelimit का उपयोग क्यों नहीं कर सकते।
SUSPENDED
स्थिति का उपयोग करता है , प्रतीक्षा पर धागे बर्बाद नहीं करता है , जबकि mod_ratelimit, अब तक, सख्ती से थ्रेड-प्रति-कनेक्शन है। सीएफ thread.gmane.org/gmane.comp.apache.cvs/20490
एक और विकल्प - mod_qos
कॉन्फ़िगर करने के लिए सरल नहीं है - लेकिन शक्तिशाली।
इस पर निर्भर करता है कि आप दर सीमा क्यों चाहते हैं।
यदि यह सर्वर को ओवरलोड करने से बचाने के लिए है, तो यह वास्तव में एनजीआईएनएक्स को इसके सामने रखने के लिए समझ में आता है, और वहां दर को सीमित करता है। यह समझ में आता है क्योंकि NGINX बहुत कम संसाधनों का उपयोग करता है, कुछ एमबी प्रति दस हजार कनेक्शन की तरह। इसलिए, यदि सर्वर में बाढ़ आ गई है, तो NGINX रेट लिमिटिंग (संसाधनों की तुच्छ मात्रा का उपयोग करके) करेगा और केवल Apache को अनुमत ट्रैफ़िक पास करेगा।
यदि आप सब के बाद सरलता है, तो mod_evasive की तरह कुछ का उपयोग करें।
हमेशा की तरह, अगर इसे DDoS या DoS हमलों से बचाना है, तो Cloudflare जैसी सेवा का उपयोग करें, जिसमें दर सीमित भी है।