UFW के साथ सीमित दर: सीमाएं निर्धारित करना


22

यूएफडब्ल्यू के मैन पेज में उल्लेख किया गया है कि यह मेरे लिए सीमित आईपीटैबल्स दर को सीमित कर सकता है:

ufw कनेक्शन दर सीमित करने का समर्थन करता है, जो जानवर-बल लॉगिन हमलों से बचाने के लिए उपयोगी है। अगर आईपी पते ने पिछले 30 सेकंड में 6 या अधिक कनेक्शन शुरू करने का प्रयास किया है, तो ufw कनेक्शन से इनकार करेगा। देखें http://www.debian-administration.org/articles/187 जानकारी के लिए। विशिष्ट उपयोग है:

     ufw limit ssh/tcp

दुर्भाग्य से यह सभी दस्तावेज हैं जो मुझे मिल सकते हैं। मैं UFW के साथ रहना पसंद करूँगा, और अधिक जटिल iptables कमांड का उपयोग नहीं करूँगा (चीजों को "सीधी" रखने के लिए)।

मैं पोर्ट पर 80 से 20 कनेक्शन प्रति 30 सेकंड में आने वाले (इसलिए आउटगोइंग नहीं) ट्रैफिक को सीमित करने के लिए ufw का उपयोग कैसे करूंगा? मैं 30000 से 30005 पोर्ट के लिए दर सीमित कैसे करूंगा? क्या सभी बंदरगाहों के लिए डिफ़ॉल्ट रूप से दर सीमित है?

जवाबों:


21

UFW को "सीधी" के रूप में डिज़ाइन किया गया है, जिसका अर्थ है कि इस मामले में आपके पास उस दर के विवरणों पर नियंत्रण नहीं है, जिनसे कनेक्शन सीमित है। यदि आप UFW के पायथन स्रोत में खुदाई करना चाहते हैं, तो आप यह पता लगा सकते हैं कि इसे कैसे ट्वीक किया जाए। उपयुक्त जानकारी (मेरे Ubuntu 10.04 सिस्टम पर) में है/usr/share/pyshared/ufw/backend_iptables.py

समय के मुद्दे को एक तरफ रखकर, इसलिए, अंत में आपके रैपिड-फायर प्रश्नों के कुछ उत्तर दिए गए हैं।

  1. मान लें कि 10.10.10.0/24 आपका स्थानीय नेटवर्क है, यह डिफ़ॉल्ट सीमा नियम को पोर्ट 80 / tcp इनकमिंग पर लागू करता है:

    ufw limit proto tcp from any port 80 to 10.10.10.0/24
    
  2. और 3. दर सीमा डिफ़ॉल्ट रूप से चालू नहीं है। जिस रेंज को आप चाहते हैं, उसे छोड़कर हर (डेस्टिनेशन) पोर्ट में इस नियम का उपयोग करें। ध्यान दें कि नियम (रेंज के साथ भी) परमाणु इकाइयां हैं और इन्हें विभाजित नहीं किया जा सकता है। उदाहरण के लिए, आप किसी पोर्ट के लिए एक नियम जोड़ सकते हैं, फिर deleteकिसी विशेष श्रेणी के लिए इसे हटाने के लिए (कोई नहीं) नियम। या तो limitएक स्वीकार्य तर्क नहीं है ufw default

    ufw limit from any to any port 0:29999,30006:65535
    

क्या इसका मतलब यह है कि दर कभी निर्धारित नहीं की जा सकती है?
टॉम

2
स्रोत को हैक किए बिना नहीं, कम से कम UFW 0.30pre1-0ubuntu2 के लिए नहीं, जो उबंटू 10.04 के लिए चालू है। वर्तमान स्रोत में चीजों के देखने से , जो नहीं बदला है। हालाँकि, आप iptables नियमों को /etc/ufw/after.rules (या /etc/ufw/before.rules) में डाल सकते हैं, और उनका उपयोग भी किया जाएगा। अधिक जानकारी के लिए आदमी ufw- फ्रेमवर्क देखें ।
bonsaiviking

@bonsaiviking पर यह पॉसिबल है iptable, यदि हाँ तो iptable ufw का बैकएंड है।
नलपॉंटर

6

जैसा कि पिछली पोस्ट में बताया गया है कि आप user.rules को कस्टमाइज़ कर सकते हैं। मुझे 6 सेकंड में 12 कनेक्शन तक मेरी smtp कनेक्शन दर सीमा की आवश्यकता है। मैंने एक नियम जोड़ा जैसा कि पहले नीचे दिखाया गया है। नोट: यह एक सीमा नियम जोड़ता है जो डिफ़ॉल्ट रूप से 30 सेकंड में 6 की अनुमति देता है

ufw limit smtp

और मैंने /lib/ufw/user.rules को संपादित किया (मैं इस फ़ाइल की एक कस्टम प्रतिलिपि बहुत से अन्य tweaks के साथ रखता हूं) जैसा कि नीचे दिखाया गया है ...

### tuple ### limit tcp 25 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 25 -m state --state NEW -m recent --set
-A ufw-user-input -p tcp --dport 25 -m state --state NEW -m recent --update --seconds 6 --hitcount 12 -j ufw-user-limit
-A ufw-user-input -p tcp --dport 25 -j ufw-user-limit-accept

मैंने user.rules को / etc / ufw में पाया
ओटो

5

ufw रूल्स फ़ाइल पर रेट लिमिट को बदला जा सकता है जिसे /lib/ufw/user.rules पाया जा सकता है। डिफ़ॉल्ट रूप से सभी पोर्ट के लिए कोई सीमा सक्षम नहीं है। आपको प्रत्येक पोर्ट मैनुअल या user.rules फ़ाइल को संपादित करके जोड़ना चाहिए।


1

Ufw की लिमिट सुविधा का उपयोग करने के संभावित अनपेक्षित परिणामों को इंगित करना सार्थक है।

मान लीजिए कि पोर्ट 22 / tcp पर पहले ufw नियम के रूप में किसी ने एक कंबल सीमा रखी:

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     LIMIT IN    Anywhere                  
...

इस धारणा के साथ कि सीमा के तहत काम करने वाले किसी भी कनेक्शन को अभी भी ufw नियमों का पालन करके फ़िल्टर किया जा सकता है और अंत में "इनकार (आने वाले)" की डिफ़ॉल्ट नीति।

कम से कम ufw 0.35 के लिए, यह धारणा गलत होगी। वास्तव में तर्क में तर्क सीमा तुरंत किसी भी इनपुट को सीमा मानदंड द्वारा अस्वीकार नहीं किया गया है।

Psuedocode में, LIMIT तर्क है

if CONDITION then DENY else ACCEPT

जबकि अन्य ufw नियमों में तर्क है:

if CONDITION then (DENY|ACCEPT) else continue to next rule

मैंने व्यक्तिगत रूप से पाया कि ufw LIMIT के लिए अप्रत्याशित व्यवहार, जिसे मैंने केवल अप्रत्याशित रूप से सिस्टम लॉग फ़ाइल में कई पोर्ट 22 लॉगिन प्रयासों को खोजकर पाया था जो कि अन्य यूएफवी नियमों द्वारा फ़िल्टर किए जाने के कारण कभी नहीं होना चाहिए।

व्यवहार की पुष्टि का विवरण

Ufw द्वारा डाले गए iptables कोड की प्रासंगिक लाइनें इस प्रकार हैं:

-A ufw-user-input -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 --name DEFAULT --mask 255.255.255.255 --rsource -j ufw-user-limit
-A ufw-user-input -p tcp -m tcp --dport 22 -j ufw-user-limit-accept
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT

उपरोक्त सूची के साथ बनाया जा सकता है

iptables -S | grep ufw-user-limit

पहली दो पंक्तियाँ लगातार होती हैं, ufw-user-inputजिनके साथ पुष्टि की जा सकती है

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