सवाल iptables: नए, स्थापित और संबंधित पैकेट के बीच अंतर


सर्वर पर फ़ायरवॉल का हिस्सा:

iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP

जब मैं ऑनलाइन खोज करता हूं तो मैं हमेशा उस नियम में इस्तेमाल होने वाले नए को देखता हूं लेकिन मुझे समझ में मुश्किल हो रही है कि क्यों स्थापित और संबंधित उपयोग नहीं किया जा रहा है।

ऐशे ही :

iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP

क्या कोई मुझे समझा सकता है जब वास्तव में एक नया पैकेट स्थापित और संबंधित में बदल जाता है?


37
2018-03-19 21:37


मूल




जवाब:


रिसीवर उठाए जाने से पहले एक नया पैकेट एक टेलीफोन कॉल पर विचार करें। एक स्थापित पैकेट उनका है, "हैलो।" और एक संबंधित पैकेट होगा यदि आप उन ई-मेल के बारे में बताने के लिए बुला रहे थे जिन्हें आप उन्हें भेजने वाले थे। (ई-मेल संबंधित है।)

यदि मेरे समानता इतनी महान नहीं है, तो मैं व्यक्तिगत रूप से सोचता हूं कि मैन पेज इसे अच्छी तरह से संभालता है:

नया - जिसका अर्थ है कि पैकेट ने एक नया कनेक्शन शुरू किया है, या अन्यथा   एक कनेक्शन से जुड़े जो दोनों में पैकेट नहीं देखा है   दिशानिर्देश, और

स्थापित - जिसका अर्थ है कि पैकेट कनेक्शन से जुड़ा हुआ है   जिसने दोनों दिशाओं में पैकेट देखा है,

संबंधित - जिसका अर्थ है कि पैकेट एक नया कनेक्शन शुरू कर रहा है, लेकिन है   एक मौजूदा कनेक्शन से जुड़े, जैसे कि एफ़टीपी डेटा ट्रांसफर,   या एक आईसीएमपी त्रुटि।

iptables (8) - लिनक्स मैन पेज


41
2018-03-19 21:41



जिज्ञासा से, क्या आप जानते हैं कि यह संबंधित पैकेट को कैसे निर्धारित करता है? क्या कोई ऐसी व्यवस्था है जो अनुप्रयोग iptables को सिग्नल करने के लिए उपयोग कर सकते हैं कि कनेक्शन एक संबंधित कनेक्शन होगा, या यह पूरी तरह से iptables के राज्य के हिस्से का हिस्सा है? - Matthew Scharley
इसे ip_conntrack_ * नामक कर्नेल मॉड्यूल की एक श्रृंखला द्वारा नियंत्रित किया जाता है, प्रत्येक एक विशेष प्रोटोकॉल के लिए लिखा जाता है जो असंबद्ध कनेक्शन (जैसे एफ़टीपी) का उपयोग करता है। अपने प्रश्न का उत्तर देने के लिए, मुझे लगता है कि आपको अपने आवेदन के लिए एक समान मॉड्यूल लोड करना होगा। - Kyle Smith
ठीक है धन्यवाद। लेकिन इसमें नए के साथ नियम पर वापस जा रहे हैं, क्या यह संभव नहीं है कि एक पैकेट बनाया जा सके जैसा कि पहले से ही स्थापित हो चुका है और क्या नियम द्वारा अवरुद्ध नहीं किया गया है? - Kris
@ क्रिस: नकली आउटगोइंग पैकेट के लिए यह बहुत मुश्किल है, इसलिए जवाब में मैन पेज के शब्द से, मैं नहीं देखता कि कैसे। आप सही हैं कि नकली एक पैकेट बनाना संभव है जो कि एक खुले कनेक्शन के लिए बाध्य है, लेकिन फ़ायरवॉल के बिना भी, टीसीपी स्टैक केवल पैकेट को फर्श पर छोड़ देगा अगर उसे पहले से खुले कनेक्शन के बारे में पता नहीं था प्रेषक। यदि यह राउटर पर फ़ायरवॉल पर है, तो जांच कर इस राज्य को बनाए रखना अभी भी संभव है SYN/ACK/RST/ आदि पैकेट के रूप में वे राउटर से गुजरते हैं, और मैं iptables यह करने की उम्मीद करेंगे। - Matthew Scharley
@ क्रिस: इस तरह के कुछ समान (तकनीकी रूप से समान नहीं है) का उपयोग वीएनसी सॉफ़्टवेयर जैसे टीमवियर द्वारा फ़ायरवॉल / राउटर के माध्यम से सुरंग तक किया जाता है। प्रक्रिया कहा जाता है छेद-पंचिंग। संक्षेप में आपके पास एक होस्ट पीसी है (जो एक प्रतिबंधित फ़ायरवॉल के पीछे हो सकता है) जिसे आप किसी दूसरे डिवाइस से कनेक्ट करना चाहते हैं (इंटरनेट के माध्यम से)। दोनों पीसी एक अलग सर्वर (जैसे टीमवियर सर्वर) के लिए एक व्यक्तिगत कनेक्शन खोलते हैं, जो उनके बीच "मध्यस्थता" करता है, इसलिए यह उनके फ़ायरवॉल को देखता है जैसे पैकेट संबंधित हैं, और इस प्रकार वे पीसी प्रत्येक के साथ एक अलग कनेक्शन स्थापित करने में सक्षम हैं अन्य। - Levit


सर्वर और क्लाइंट दोनों के लिए एक सीमित है INPUT और खुला OUTPUT, अर्थात।:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

और यहां ये iptables-एक्सटेंशन (8) सक्रिय मोड में एफ़टीपी के उदाहरण पर:

1. नया

नया पैकेट ने एक नया कनेक्शन शुरू किया है या अन्यथा   जुड़े                 एक कनेक्शन के साथ जो दोनों दिशाओं में पैकेट नहीं देखा है।

बंदरगाह पर ग्राहक 50000 (किसी भी यादृच्छिक अप्रतिबंधित बंदरगाह) पोर्ट पर एफ़टीपी सर्वर से जोड़ता है 21, इस आने वाले कनेक्शन को स्वीकार करने के लिए सर्वर को कम से कम यह आवश्यकता होगी:

iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT

2. स्थापित

कायम करना                 पैकेट एक कनेक्शन से जुड़ा हुआ है जो देखा गया है                 दोनों दिशाओं में पैकेट।

अब ग्राहक पक्ष पर, उसने पोर्ट पर सर्वर से आउटगोइंग कनेक्शन खोला 21 एक स्थानीय बंदरगाह का उपयोग कर 50000 और प्रतिक्रिया से आने की अनुमति देने के लिए उसे निम्नलिखित iptables की आवश्यकता है server (21) सेवा मेरे client (50000):

sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

3. संबंधित

सम्बंधित                 पैकेट एक नया कनेक्शन शुरू कर रहा है, लेकिन इसके साथ जुड़ा हुआ है                 एक मौजूदा कनेक्शन, जैसे कि एफ़टीपी डेटा ट्रांसफर या आईसीएमपी                 त्रुटि।

अब एफ़टीपी कनेक्शन स्थापित होने के बाद और डेटा कनेक्शन होने वाला है, क्लाइंट एक सर्वर सॉकेट खोल देगा (हाँ, सक्रिय एफ़टीपी क्लाइंट डेटा कनेक्शन के लिए सर्वर बन जाता है) पोर्ट पर 60000 (मेरे समझने वाले ग्राहक को इस बंदरगाह को चिह्नित किया जाएगा 60000 जैसा RELATED से दूसरे कनेक्शन के लिए 50000->21) और एफ़टीपी का उपयोग कर सर्वर पर इस पोर्ट नंबर को भेज देगा PORT आदेश। फिर एफ़टीपी सर्वर अपने बंदरगाह से एक नया कनेक्शन खुल जाएगा 20 बायें तरफ़ मुड़ने के लिए 60000 क्लाइंट पर, और अच्छी तरह से, ग्राहक को अब इस नए कनेक्शन को सफल होने की अनुमति देने के लिए निम्नलिखित की आवश्यकता है:

sudo iptables -A INPUT -m state --state RELATED -j ACCEPT

अंत में, इसके लिए काम करने के लिए आपको सक्षम करने की आवश्यकता है ip_conntrack_ftp कर्नेल मॉड्यूल सिस्टम को कनेक्शन / पैकेज को चिह्नित करने की अनुमति देता है RELATED (यह मेरी समझ है, मैंने इस पर बहुत अधिक खुदाई नहीं की है):

modprobe ip_conntrack_ftp

10
2018-02-21 16:16



स्थापित केवल पहले स्थानीय रूप से उत्प्रेरित प्रवाह की आवश्यकता होती है, टीसीपी 3-तरफा हैंडशेक नहीं, क्या मेरी समझ सही है? - sdaffa23fdsf
उत्तर के लिए धन्यवाद, स्थापित करने के लिए आपने कहा "iptables सर्वर (21) से क्लाइंट (50000) तक पहुंचने की अनुमति देने के लिए" अगर यह सर्वर से क्लाइंट से है तो यह इनपुट क्यों नहीं है और आउटपुट नहीं है? - Medya
@ मेडिया, क्योंकि क्लाइंट परिप्रेक्ष्य से, सर्वर (21) से क्लाइंट (50000) में भेजे गए पैकेट आने वाले पैकेट हैं, इसलिए क्लाइंट के लिए यह एक है INPUT। - Jaime Hablutzel