जब iptables फ़ायरवॉल नियमों का उपयोग कर रहे हैं, तो सभी अनुमत बंदरगाहों पर नए राज्य का दावा क्यों करें?


23

मैं अक्सर सभी कनेक्शनों को संबंधित कनेक्शन और नए कनेक्शनों के लिए विशिष्ट सेवा पोर्ट की अनुमति देने के लिए कॉन्फ़िगर किए गए iptables देखता हूं।

नया बताने का क्या कारण है? यदि कोई कनेक्शन नया नहीं है, तो यह मेरा अनुमान है, इसलिए विशिष्ट पोर्ट नियम न तो निष्पादित होगा। तो क्यों नए और न केवल प्रोटोकोल और पोर्ट नंबर के साथ सेवा बंदरगाहों को स्पष्ट रूप से परिभाषित करने के लिए?

जवाबों:


21

एक नेटफिल्टर फ़ायरवॉल (iptables) के नियमों को क्रमिक रूप से जांचा जाता है और पैकेट के भाग्य (ACCEPT, DROP, REJECT आदि) को पहले मैच के आधार पर निर्धारित किया जाता है।

फ़ायरवॉल को स्टेटफ़ुल बनाकर और पहले नियम -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTसे आपके सर्वर पर वैध ट्रैफ़िक के विशाल बहुमत को केवल उस एकल नियम को पारित करने के बाद स्वीकार किया जाता है। उस ट्रैफ़िक को किसी अन्य नियमों को पार करने की आवश्यकता नहीं है।

आपके नियम आधार के आकार के आधार पर जो आपके फ़ायरवॉल प्रदर्शन में एक महत्वपूर्ण अंतर हो सकता है।

एकमात्र यातायात जिसे फ़ायरवॉल को अब मान्य करने की आवश्यकता है, स्पष्ट रूप से नए कनेक्शन हैं।

यानी एक सार्वजनिक वेबसर्वर के लिए एक फ़ायरवॉल की तुलना उनके कार्यस्थानों से मुट्ठी भर वेबमास्टरों तक पहुँच के साथ की जाती है:

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m iprange --src-range 10.9.8.7-10.9.8.10 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

मोटे तौर पर 99% वैध पैकेट स्थापित कनेक्शन के होंगे, केवल पहले नियम से। उस नियम से मेल नहीं खाने वाले पैकेटों में से, अधिकांश को आपकी वेबसाइट के लिए नए कनेक्शन होने चाहिए, मल्टीप्ल मॉड्यूल एक ही नियम में HTTP या HTTPS तक पहुंच प्रदान कर सकता है। वेबमास्टर्स ssh और sftp का उपयोग करके निश्चित पते के साथ कई वर्कस्टेशन से लॉग इन करते हैं और बाकी सब खारिज कर दिया जाता है।

एक फ़ायरवॉल जहां नियम तार्किक रूप से TCP पोर्ट द्वारा आदेशित किए जाते हैं:

-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.7 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.8 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.9 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.10 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 443 -j ACCEPT

यहां आपके HTTP वेबसर्वर के प्रत्येक पैकेट को एक्सेस दिए जाने से पहले 5 नियमों के खिलाफ जांचना होगा। और अधिक सेवाओं के साथ एक सर्वर पर चल रहा है जो आसानी से 50 नियम या बहुत अधिक हो सकता है जब आप उदाहरण के लिए fail2ban या इसी तरह के उत्पादों का उपयोग करेंगे।


1
एक उत्कृष्ट उत्तर (मेरे से +1!) को छोड़कर आप कहते हैं कि " पहले मैच के आधार पर पहुंच की अनुमति है "। यदि पहला मैच DROP या REJECT होता है, तो यह एक्सेस की अनुमति नहीं देगा; अगर यह एक लॉग है, तो आपको बाद के मैच को जारी रखना होगा; और अगर कस्टम चेन में शामिल हो जाते हैं, तो चीजें काफी बारोक हो सकती हैं। मैं इसके बजाय यह कहूंगा कि " पैकेट का भाग्य पहले विघटनकारी-मिलान के आधार पर निर्धारित होता है "।
MadHatter

5
क्या आप उस मामले को प्रतिबिंबित कर सकते हैं जहां related/establishedरेखा मौजूद है लेकिन बाद के नियम मुखर नहीं होते हैं NEW?
डैनियल विड्रिक

13

NEW इसका मतलब है कि पैकेट ने एक नया कनेक्शन शुरू किया है।

इसे कर्नेल मॉड्यूल द्वारा नियंत्रित किया जाता ip_conntrack_*है जिसे आपके फ़ायरवॉल को स्टेटफुल बनाते हैं । स्टेटफुल फायरवॉल ट्रैफिक स्ट्रीम देख सकते हैं।

यदि आप केवल प्रोटोकॉल और पोर्ट नंबर निर्दिष्ट करते हैं, तो आपका फ़ायरवॉल स्टेटेबल नहीं है, बल्कि स्टेटलेस है। इसका मतलब है कि यह केवल पैकेट को प्रतिबंधित या ब्लॉक करता है। इस प्रकार के फायरवॉल को डेटा प्रवाह के बारे में जानकारी नहीं है।

एक अच्छा उदाहरण एफ़टीपी है: सक्रिय एफ़टीपी नियंत्रण चैनल के लिए पोर्ट 21 का उपयोग करता है लेकिन फिर डेटा चैनल के लिए पोर्ट 20 का उपयोग करता है। एक स्टेटफुल फ़ायरवॉल के मामले में, आपको पोर्ट 20 को खुले तौर पर खोलने की आवश्यकता नहीं है क्योंकि यह पोर्ट 21 पर पिछले नए स्थापित कॉन्सेक्सन से संबंधित है।

यहाँ iptablesमैन पेज का एक एक्सट्रैक्शन है :

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

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

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


1
पोर्ट 21 के साथ पोर्ट 20 को 'मैकेनिज्म' क्या करेगा? क्या एक खोला हुआ आईपी कनेक्शन दूसरे पोर्ट में ट्रांसफर किया जा सकता है?
ड्रोनस

nf_conntrack_ftp.ko
mateusza

7
-A INPUT -m tcp -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -DROP

उपरोक्त नियम के INVALIDमाध्यम से एक स्थिति के साथ TCP पोर्ट 22 को पैकेट देगाACCEPT

अमान्य : यदि पिछले राज्यों में से कोई भी लागू नहीं होता है तो पैकेट राज्य INVALID में है। यह विभिन्न प्रकार के स्टील्थ नेटवर्क जांच के कारण हो सकता है, या इसका मतलब यह हो सकता है कि आप CONNTRACK प्रविष्टियों से बाहर चल रहे हैं (जिसे आपको अपने लॉग में भी देखा जाना चाहिए)। या यह पूरी तरह से सौम्य हो सकता है।

/unix/57423/how-to-understand-why-the-packet-was-considered-invalid-by-the-iptables


STATE जोर देकर NEWयह सुनिश्चित करता है कि INVALID पैकेट गलती से जमा नहीं हुए हैं।

और अर्थ स्पष्ट करने के लिए:

  • नई : यह एक नया कनेक्शन है
  • स्थापित : यह एक पैकेट है जो एक वर्तमान कनेक्शन में शामिल है
  • संबंधित : यह एक नया कनेक्शन है, लेकिन मौजूदा कनेक्शन द्वारा इसकी भविष्यवाणी की गई है
  • INVALID : उपरोक्त में से कोई भी लागू नहीं होता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.