2012-08-27 14 views
21

क्या आईपी फ़िल्टरिंग या आईपी एक्सेस नियमों को लागू करने का कोई तरीका है जैसे मैं nginx/apache के साथ हेरोोक पर कुछ आईपी को प्रतिबंधित या अवरुद्ध करने के लिए करता हूं?आप हेरोोकू पर आईपी पते को ब्लॉक या फ़िल्टर कैसे कर सकते हैं?

नोट: मुझे पता है कि यह मेरे आवेदन (रेल 3.2) के भीतर से बहुत आसानी से किया जा सकता है लेकिन मुझे नहीं लगता कि यह हेरोोकू पर मेरे संसाधनों का सबसे प्रभावी उपयोग है। इसके अलावा, एक रैक आधारित समाधान रेल में फ़िल्टरिंग को लागू करने से बेहतर होगा।

उत्तर

7

मैंने 'rack-block' को रैक मिडलवेयर के रूप में जोड़ा। कॉन्फ़िगर/प्रारंभकर्ताओं में, एक नई फ़ाइल जोड़ें:

YourApp::Application.configure do 

    config.middleware.insert_before(Rack::Lock, Rack::Block) do 
    # Add your rules with the rack-block syntax in here 
    end 

end 

एक आकर्षण की तरह काम करता है।

+2

धन्यवाद, यह वही है जो मैं ढूंढ रहा था। मैं अब अपने गुगल कौशल से चिंतित हूं। –

+2

अनुरोध से पहले केंद्र पते को अवरुद्ध करने का कोई तरीका है dyno हिट? –

+0

मैं एक आईपी को छोड़कर सभी आईपी पतों को कैसे रोक सकता हूं जिन्हें मैं अनुमति देना चाहता हूं? मेरे लिए यह रैक-ब्लॉक के साथ प्रतीत होता है मुझे उन सभी आईपी पतों को सूचीबद्ध करना है जिन्हें मैं अवरुद्ध करना चाहता हूं :( – morgler

13

आपको rack-attack देखें। ऐसा लगता है कि यह रैक-ब्लॉक जैसा ही है, लेकिन अक्सर इसका व्यापक रूप से उपयोग और अद्यतन किया जाता है। एक विशिष्ट आईपी को ब्लॉक करने के लिए आप यह कर सकते हैं:

# Block requests from 1.2.3.4 
Rack::Attack.blacklist('block 1.2.3.4') do |req| 
    # Requests are blocked if the return value is truthy 
    '1.2.3.4' == req.ip 
end 
+0

क्या मैं आईपी रेंज को अवरुद्ध कर सकता हूं? यानी 1.2.3। *? –

+1

@ स्टेफानोस Ioannou उस मूल्य को अवरुद्ध करने के लिए आपको बस यह सुनिश्चित करने की आवश्यकता है कि आप जिस ब्लॉक को 'रैक :: अटैक.ब्लैकलिस्ट' पर पास करते हैं, वह सच हो जाता है। आप ऐसा कुछ कर सकते हैं: '(0..255) .map {| val | '1.2.3।' + Val.to_s}। शामिल करें? (Req.ip) ' – Phil

+2

@ फिल मैं एक प्रदूषित उदाहरण के बारे में पैडेंटिक हूं, लेकिन ...;) शायद आप 'start_with' से बेहतर हो जाएंगे? ('1.2.3') 'वहां - 256 तारों की एक सरणी का निर्माण, फिर जांच कर रहा है कि आईपी उनमें से है या नहीं कम्प्यूटेशनल रूप से, लेकिन संभवतः यदि आप आवश्यक नहीं तो हर अनुरोध पर ऐसा कुछ नहीं करना चाहते हैं। –

संबंधित मुद्दे