संबंधित, स्वीकार किए जाते हैं सभी iptables में स्रोत "बहुत खुला" माना जाता है?


9

मैंने अक्सर नियम -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTलागू होते देखा है। जबकि मैं एक विशेषज्ञ नहीं हूँ, वह विशेष रेखा मुझे चिंतित करती है। यह बहुत स्पष्ट है कि नियम सभी अपवादों के साथ सभी ट्रैफ़िक को अनुमति देता है कि कनेक्शन स्थापित किया गया है या स्थापित कनेक्शन से संबंधित है।

परिदृश्य

  • मैं 22सबनेट 192.168.0.0/16या सर्वर में LAN से डिफ़ॉल्ट SSH पोर्ट के कनेक्शन की अनुमति दूंगा ।
  • SuperInsecureApp®पोर्ट पर कुछ उजागर करता है 1337, जिसे मैं अपनी INPUTश्रृंखला में जोड़ता हूं ।
  • मैं जोड़ दिया है conntrackनियम स्वीकार करने के लिए ESTABLISHEDऔर RELATEDसे सभी स्रोतों
  • चेन पॉलिसी है DROP

इसलिए मूल रूप से कॉन्फ़िगरेशन शॉड एसएसएच-कनेक्शन को लैन से ही अनुमति देता है, जबकि दुनिया से पोर्ट 1337 पर इनबाउंड ट्रैफिक की अनुमति देता है।

यहीं पर मेरा भ्रम खिलता है। क्या conntrackकिसी भी तरह से एक सुरक्षा दोष का खुलासा होगा जो किसी को 1337 पर स्थापित कनेक्शन प्राप्त करने की अनुमति देगा (क्योंकि यह दुनिया खुला है), और फिर उस कनेक्शन का उपयोग एसएसएच पोर्ट (या उस मामले के लिए किसी अन्य बंदरगाह) तक पहुंच प्राप्त करने के लिए करें?

जवाबों:


8

मैं स्थापित और संबंधित यातायात पर भी विचार नहीं करूंगा। आप संबंधित को छोड़ने में सक्षम हो सकते हैं, लेकिन निश्चित रूप से स्थापित होना चाहिए। ये दोनों ट्रैफ़िक श्रेणियां कॉनट्रैक स्टेट्स का उपयोग करती हैं।

पहले से स्थापित कनेक्शन दूसरे नियम द्वारा मान्य किए गए हैं। यह अप्रत्यक्ष नियमों को लागू करने के लिए बहुत सरल बनाता है। यह आपको केवल उसी पोर्ट पर लेनदेन जारी रखने की अनुमति देता है।

संबंधित कनेक्ट अन्य नियम द्वारा भी मान्य हैं। वे बहुत सारे प्रोटोकॉल पर लागू नहीं होते हैं। फिर वे नियमों को कॉन्फ़िगर करने के लिए इसे बहुत सरल बनाते हैं। वे उन कनेक्शनों की उचित अनुक्रमण सुनिश्चित करते हैं जहां वे लागू होते हैं। यह वास्तव में आपके नियमों को अधिक सुरक्षित बनाता है। हालांकि यह एक अलग पोर्ट पर कनेक्ट करना संभव बना सकता है, लेकिन उस पोर्ट को केवल एफ़टीपी डेटा कनेक्शन जैसी संबंधित प्रक्रिया का हिस्सा होना चाहिए। कौन से पोर्ट को अनुमति दी जाती है, यह प्रोटोकॉल विशिष्ट कनवर्टर मॉड्यूल द्वारा नियंत्रित किया जाता है।

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

यह देखते हुए कि आपने कार्यक्रम को असुरक्षित के रूप में पोर्ट 1337 में वर्गीकृत किया है, इसे एक समर्पित गैर-रूट उपयोगकर्ता-आईडी का उपयोग करके शुरू किया जाना चाहिए। यह नुकसान किसी को सीमित कर सकता है यदि वे आवेदन को क्रैक करने और बढ़ी हुई पहुंच प्राप्त करने का प्रबंधन करते हैं।

यह बहुत संभावना नहीं है कि पोर्ट 1337 पर एक कनेक्शन का उपयोग पोर्ट 22 को दूरस्थ रूप से एक्सेस करने के लिए किया जा सकता है, लेकिन यह संभव है कि पोर्ट 1337 के एक कनेक्शन का उपयोग पोर्ट 22 के कनेक्शन को प्रॉक्सी करने के लिए किया जा सकता है।

आप यह सुनिश्चित करना चाहते हैं कि SSH गहराई में सुरक्षित हो:

  • फ़ायरवॉल प्रतिबंधों के अलावा पहुंच को सीमित करने के लिए hosts.allow का उपयोग करें।
  • रूट एक्सेस को रोकें, या कम से कम कुंजियों के उपयोग की आवश्यकता है और अधिकृत_की फ़ाइल में उनकी पहुँच को सीमित करें।
  • ऑडिट लॉगिन विफलताओं। एक लॉग स्कैनर आपको असामान्य गतिविधि की आवधिक रिपोर्ट भेज सकता है।
  • स्वचालित रूप से दोहराया पहुंच विफलताओं पर पहुँच को स्वचालित रूप से ब्लॉक करने के लिए विफलता 2ban जैसे उपकरण का उपयोग करने पर विचार करें।

हालांकि यह एक मनमाना उदाहरण था, नए सर्वरों पर पहली बात मैं हमेशा sshd में रूट एक्सेस और प्लेनटेक्स्ट प्रमाणीकरण को अक्षम कर रहा हूं - यह एक बहुत अच्छा टिप है। इसके अलावा फेल 2बन वास्तव में पहले से ही वास्तविक जीवन की स्थापना पर स्थापित है जिसमें से उदाहरण प्रेरित था। "स्थापित कनेक्शन पहले से ही एक और नियम द्वारा मान्य किया गया है " वह सटीक बात थी जिसके बारे में मैं अनिश्चित था और मेरे सवाल का पूरी तरह से जवाब देता था। आपके बहुत स्पष्ट उत्तर के लिए धन्यवाद!
डेनकर

साइड सवाल: एक प्रदर्शन के दृष्टिकोण से, क्या यह कुछ भी बदलता है अगर conntrackनियम श्रृंखला की शुरुआत या अंत में है? मैं कैसे समझ iptablesसकता हूं, इसे स्थापित कनेक्शन पर सभी नियमों को संसाधित करना होगा यदि यह अंत में था, और केवल एक ही नियम है अगर इसे शुरुआत में रखा गया था?
डेनकर

@ डंकर आप पहले से स्थापित नियम चाहते हैं। यह अब तक के सबसे ज्यादा ट्रैफिक को स्वीकार करेगा। इससे परे कि आप ऐसे नियम रखना चाहते हैं जो सबसे अधिक यातायात को स्वीकार करते हैं, हालांकि पठनीयता के लिए भारी वजन करना सबसे अच्छा है। मेरे नियम समूहीकृत हैं, विलंबता संवेदनशील, उच्च यातायात (प्रकार द्वारा समूहीकृत), अन्य। Iptables में काउंटर होते हैं जो आपको यह देखने की अनुमति देते हैं कि प्रत्येक नियम कितना ट्रैफ़िक देता है। मैं Shorewall का उपयोग करता हूं, जो कुछ उपयोगी डिफॉल्ट जोड़ता है और मेरे फायरवॉल बनाने के लिए नियम फ़ाइल पढ़ने में आसान है।
बिल्टोर

2

स्थापित और संबंधित "स्टेटफुल" पैकेट फ़िल्टरिंग की विशेषताएं हैं, जहां फ़िल्टरिंग केवल एक स्थिर नियम सेट पर नहीं बल्कि संदर्भ पर भी निर्भर करता है, जिसके भीतर पैकेट माना जाता है। आपको काम करने के लिए कनेक्शन की अनुमति देने के लिए आवश्यक है, और आपको संबंधित ICMP संदेशों के लिए संबंधित होना चाहिए। स्टेटफुल फ़िल्टरिंग स्थिर "स्टेटलेस" नियमों की तुलना में अधिक सटीक रूप से फ़िल्टर करने की अनुमति देता है।

आइए पहले ESTABLISHED को देखें। उदाहरण के लिए, पोर्ट 22 पर टीसीपी पर विचार करें। आरंभकर्ता (ग्राहक) एक SYNको भेजता है serverIPaddr:22। सर्वर SYN+ACKक्लाइंट को वापस करता है। अब भेजने के लिए ग्राहक की बारी है ACK। सर्वर पर फ़िल्टरिंग नियम कैसे दिखना चाहिए, जैसे कि केवल "मिलान" ACKस्वीकार किया जाता है? एक सामान्य स्टेटलेस नियम जैसा दिखेगा

-A INPUT --proto tcp --port 22 -j ACCEPT

जो राज्य राज्य के अनुसार अधिक उदार है। स्टेटलेस नियम मनमाने ढंग से टीसीपी सेगमेंट की अनुमति देता है, जैसे ACKया FINपहले कनेक्शन स्थापित किए बिना। पोर्ट स्कैनर OS फिंगरप्रिंटिंग के लिए इस तरह के व्यवहार का फायदा उठा सकते हैं।

अब हम RELATED पर एक नजर डालते हैं। यह ICMP संदेशों के लिए उपयोग किया जाता है, ज्यादातर त्रुटि संदेश। उदाहरण के लिए, यदि सर्वर से क्लाइंट के लिए एक पैकेट गिरा है, तो सर्वर पर एक त्रुटि संदेश भेजा जाता है। यह त्रुटि संदेश पहले से स्थापित कनेक्शन के लिए "संबंधित" है। संबंधित नियम के बिना या तो आने वाले त्रुटि संदेशों को सामान्य रूप में (संदर्भ के बिना) की अनुमति देने की आवश्यकता होगी, या, जैसा कि कई साइटों के लिए कस्टम है, ICMP को पूरी तरह से छोड़ दें और परिवहन परत पर टाइमआउट की प्रतीक्षा करें। (ध्यान दें कि यह IPv6 के लिए एक बुरा विचार है; IPMP6 के लिए ICMP की तुलना में ICMPv6 IPv6 के लिए अधिक महत्वपूर्ण भूमिका निभाता है।)

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