2008-09-25 12 views
66

अपाचे में मजबूत दर सीमित (अनुरोध | बाइट्स/आईपी/इकाई समय) लागू करने के लिए कौन सी तकनीकें और/या मॉड्यूल उपलब्ध हैं?मैं अपाचे के साथ सीमित दर को कैसे कार्यान्वित कर सकता हूं? (प्रति सेकंड अनुरोध)

+0

मैं उपयोग कर रहा हूँ लिनक्स के [टीसी] (http://www.lartc.org/howto/lartc.qdisc.classless.html#AEN690) वेब सर्वर पर है, क्योंकि रेड हैट 6 केवल अपाचे 2.2 है। – ceving

उत्तर

48

सबसे अच्छा

और बाकी

  • (बेस्ट 'सामान्य' बैंडविड्थ नियंत्रण के लिए विशेष रुप से प्रदर्शित) (DOS जोखिम को कम करने पर अधिक ध्यान केंद्रित) mod_limitipconn
  • mod_bw
  • mod_bwshare
+10

मुझे आईपी पते द्वारा प्रति दिन कनेक्शन सीमित करने के लिए कुछ भी नहीं मिला। मैंने सारी रात खोज की, यह शर्म की बात है। – Greg

+1

क्या किसी को पता है कि आईपी के बजाए हेडर को देखने के लिए mod_evasive प्राप्त करने का कोई तरीका है, जब रिवर्स प्रॉक्सी के पीछे चल रहा हो? –

+1

@StavrosKorokithakis शायद यह मदद करेगा? http://stderr.net/apache/rpaf/ मेरा मानना ​​है कि यह एक्स-फॉरवर्डेड आईपी दिखाई देगा जैसे कि यह उसके बाद लोड किए गए सभी अपाचे मॉड्यूल के स्रोत आईपी थे। – Eli

5

अपाचे 2.4 में, वहाँ एक नया स्टॉक मॉड्यूल mod_ratelimit कहा जाता है। मॉडेम गति को अनुकरण करने के लिए, आप mod_dialup का उपयोग कर सकते हैं। हालांकि मुझे नहीं लगता कि आप सब कुछ के लिए mod_ratelimit का उपयोग क्यों नहीं कर सके।

+0

ध्यान दें कि mod_dialup एक असीमित 'SUSPENDED' स्थिति का उपयोग करता है, प्रतीक्षा पर थ्रेड बर्बाद नहीं करता है, जबकि mod_ratelimit, अभी तक, सख्ती से थ्रेड-प्रति-कनेक्शन है। सीएफ http://thread.gmane.org/gmane.comp.apache.cvs/20490 – ArtemGr

15

रूप this blog पोस्ट में कहा गया है यह प्रति सेकंड दर सीमा लागू करने के लिए अपाचे के 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" 
+1

यह मेरे लिए बिल्कुल सही था, modsec2 पहले से चल रहा है।बस modsec संस्करण से मेल खाने के लिए नियमों में आईडी जोड़ना पड़ा, जैसे: <स्थान मैच "^/कुछपथ"> सेकैक्शन इनिटॉक: आईपी =% {REMOTE_ADDR}, पास, नोलॉग, आईडी: 10000001 सेकक्शन "चरण: 5, deprecatevar: ip.somepathcounter = 1/1, पास, nolog, id: 10000002 " SecRule आईपी: SOMEPATHCOUNTER" @gt 60 "" चरण: 2, रोकें: 300, इनकार करें, स्थिति: 50 9, सेटेंव: रेटेड, छोड़ें : 1, नोलॉग, आईडी: 10000003 " सेकएक्शन" चरण: 2, पास, सेटवर: ip.somepathcounter = + 1, nolog, id: 10000004 " शीर्षलेख हमेशा पुनः प्रयास करें" 10 "env = रेटेड

+1

यह भी ध्यान दें कि आप बदल सकते हैं कि "@gt 60" को संपादित करके कितने प्रारंभिक विस्फोट अनुरोधों की अनुमति है, साथ ही यह ip.somepathcounter = 1/1 बिट को संपादित करके सीमा को "रिचार्ज" कितनी जल्दी करता है। 1/1 प्रति सेकंड एक अतिरिक्त अनुरोध की अनुमति देता है। 1/2 प्रत्येक 2 सेकंड, आदि के लिए एक अतिरिक्त अनुरोध की अनुमति देता है। –

+0

अपाचे 2.4 त्रुटि दस्तावेज़ में 50 9 के बारे में शिकायत करेगा, एक विकल्प इसे 42 9 में बदल रहा है (जो निश्चित रूप से - अपाचे 2.2 में समर्थित नहीं है)। साथ ही, सभी SecAction और SecRule-s को mod_security 2.7 के बाद से एक आईडी की आवश्यकता है। – Mrten

5

दुःख की बात है mod_evasive नहीं अपेक्षित तरीके से जब गैर prefork विन्यास में प्रयोग किया (हाल ही में अपाचे व्यवस्था मुख्य रूप से एम पी एम कर रहे हैं) होगा

9

कई तरह से कर रहे हैं:

विन्यास कुछ इस तरह है वेब अनुप्रयोग फ़ायरवॉल समेत, अपाचे मोड का उपयोग करते समय लागू करने के लिए सबसे आसान चीज़।

एक ऐसा मॉड जो मैं अनुशंसा करना चाहता हूं वह mod_qos है। यह एक मुफ़्त मॉड्यूल है जो प्रमाणित डॉस, ब्रूटफोर्स और स्लोवरोरिस प्रकार के हमलों के खिलाफ बहुत प्रभावी है। यह आपके सर्वर लोड को थोड़ा सा आसान कर देगा।

यह बहुत शक्तिशाली है।

mod_qos मॉड्यूल के मौजूदा रिलीज नियंत्रण तंत्र का प्रबंधन करने के लागू करता है:

  • एक स्थान/संसाधन (यूआरएल) को समवर्ती अनुरोधों या वर्चुअल होस्ट की अधिकतम संख्या।

  • बैंडविड्थ की सीमा जैसे प्रति सेकंड प्रति सेकंड अनुरोधों की अधिकतम स्वीकृत संख्या या प्रति सेकंड अधिकतम/न्यूनतम डाउनलोड किए गए केबेट्स।

  • प्रति सेकंड अनुरोध घटनाओं की संख्या सीमित करता है (विशेष अनुरोध स्थितियां)।

  • परिभाषित अवधि के भीतर अनुरोध घटनाओं की संख्या सीमित करता है।
  • यह बहुत महत्वपूर्ण व्यक्तियों (वीआईपी) का भी पता लगा सकता है जो बिना किसी प्रतिबंध के वेब सर्वर तक पहुंच सकते हैं।
  • अनधिकृत संचालन से इनकार करने के लिए जेनेरिक अनुरोध लाइन और हेडर फ़िल्टर।

  • अनुरोध करें शरीर डेटा सीमा और फ़िल्टरिंग (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. 

http://opensource.adnovum.ch/mod_qos/

+0

यह केवल पुराने apache2.2 में काम करता है apache2.4 + में काम नहीं करता है, है ना? – BOBO