क्या आप iptables के लिए एक अच्छा परिचय सुझा सकते हैं? [बन्द है]


15

मुझे लिनक्स सर्वर पर फ़ायरवॉल सेटअप करना होगा (मेरा पिछला अनुभव विंडोज़ के साथ है)। मेरे नियम बहुत सरल होने के लिए हैं - सभी को मना करें, सभी के साथ कुछ पोर्ट की अनुमति दें, विशिष्ट आईपी सबनेट के लिए कुछ पोर्ट की अनुमति दें, जबकि नेटवर्क छोटा है, लेकिन जटिल है (प्रत्येक मेजबान के पास कम से कम 2 192.168 ... नेट, सभी में आईपी हो सकते हैं कई अलग-अलग तरीकों से जुड़े)। मुझे लगता है कि iptables रैपर का उपयोग करके सिस्टम को तार्किक रूप से कई अनावश्यक संस्थाओं से परिचित कराया जा सकता है और इसे सरल रखना और सीधे iptables का उपयोग करना बेहतर होगा।

क्या आप iptables नियम लिखने के बारे में एक अच्छे त्वरित परिचय की सिफारिश कर सकते हैं?

जवाबों:


26

नेटफिल्टर वेब साइट पर आधिकारिक और अनुशंसित प्रलेखन के लिंक मौजूद हैं।

यह कोई नया विषय नहीं है, संसाधन असीम हैं

अधिकांश बुनियादी आदेश काफी सहज हैं और आसानी से मैनपेज का संदर्भ हो सकते हैं ।

netfilter, जो कर्नेल स्तर की तकनीक है जो पैकेट को छानने में सक्षम बनाता है, काफी उन्नत है। अतिरिक्त तालिकाएँ हैं जो पैकेटों का अनुवाद कर सकती हैं, पैकेटों का अनुवाद कर सकती हैं और अन्यथा रूटिंग को प्रभावित कर सकती हैं। iptablesउपयोगिता नेटफिल्टर के साथ बातचीत के लिए userland उपकरण है। यदि आप उन्नत कार्यक्षमता के बारे में सीखना चाहते हैं, तो मेरा सुझाव है कि आप उपरोक्त दस्तावेज का संदर्भ लें। बुनियादी कार्यक्षमता के लिए एक परिचय के लिए, कृपया आगे पढ़ें।

सभी मौजूदा नियमों को सूचीबद्ध करने के लिए:

iptables -L -n

-n IPtables को ips को हल करने से रोकता है, जो तेजी से उत्पादन करता है।

डिफॉल्ट टेबल वह filterटेबल होती है, जो तीन चेन में बेसिक फायरवॉल रूल्स लागू करने के लिए इस्तेमाल की जाती है। में तीन डिफ़ॉल्ट चेन filterतालिका हैं INPUT, OUTPUT, और FORWARD

श्रृंखला काफी हद तक आत्म व्याख्यात्मक हैं। INPUT श्रृंखला में आने वाले पैकेट को प्रभावित करता है, OUTPUT श्रृंखला स्थानीय रूप से उत्पन्न पैकेटों को प्रभावित करती है, और अंत में सिस्टम के माध्यम से उस मार्ग के किसी भी पैकेट के लिए अग्रेषित करती है।

जिन लक्ष्यों को आप निर्दिष्ट कर सकते हैं, उनमें आप DROPपैकेट दे सकते हैं , जिसका अर्थ है केवल अनदेखा करना और प्रतिक्रिया न करना। आप REJECTपैकेट ले सकते हैं , जहां इनकार के स्रोत पर एक आईसीएमपी प्रतिक्रिया भेजी जाएगी। अंत में, आप ACCEPTउन्हें कर सकते हैं, जो पैकेट को रूट करना जारी रखने की अनुमति देता है।

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

ध्यान दें, का -Aअर्थ है श्रृंखला के अंत में संलग्न करें। यदि आप शीर्ष पर सम्मिलित करना चाहते हैं, तो आप उपयोग कर सकते हैं -I। सभी नियमों को ऊपर से नीचे संसाधित किया जाता है। -Dहटाने के लिए।

करने के लिए DROPएक इनकमिंग पैकेट से आ रही 192.168.235.235:

iptables -A INPUT -s 192.168.235.235 -j DROP

यह DROPउस आईपी से आने वाले सभी प्रोटोकॉल के लिए लक्ष्य के लिए कूदता है ।

मंजूर करना:

iptables -A INPUT -s 192.168.235.235 -j ACCEPT

अपने स्थानीय सर्वर या नेटवर्क से उस आईपी तक पहुंचने से रोकने के लिए:

iptables -A OUTPUT -d 192.168.235.235 -j DROP

आप -pप्रोटोकॉल, -sपैकेट के स्रोत, पैकेट के लिए -dगंतव्य, गंतव्य बंदरगाह --dport, स्रोत बंदरगाह --sportऔर कई अन्य झंडे को निर्दिष्ट कर सकते हैं जो इस बात को प्रभावित करेंगे कि पैकेट को नियम द्वारा कैसे व्यवहार किया जाता है।

यदि आपकी डिफ़ॉल्ट INPUTनीति थी DROPऔर आप 192.168.123.0/24सबनेट पर अपने सर्वर पर एसएसएच का उपयोग करने की अनुमति देना चाहते थे , तो यहां एक उदाहरण है:

iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT

यह सही है, आप CIDR नोटेशन का भी उपयोग कर सकते हैं !

सामान्यतया, DROPसभी चेन के लिए सबसे अच्छी डिफ़ॉल्ट पॉलिसी है । प्रत्येक श्रृंखला में एक डिफ़ॉल्ट नीति होती है, जिसे -Pध्वज द्वारा निर्दिष्ट किया जाता है । यहां तक ​​कि अगर आपने अपनी पॉलिसी को डिफ़ॉल्ट रूप से सेट किया है DROP, तब भी यह सलाह दी जाती है कि एक चेन में अंतिम प्रविष्टि के DROPरूप में अच्छी तरह से होना चाहिए ।

उदाहरण के लिए, DROPINPUT, FORWARD और OUTPUT श्रृंखलाओं के लिए नीति बदलने के लिए:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

सावधान रहें , यदि आप पहले खुद को एसएसएच एक्सेस की अनुमति के बिना रिमोट सिस्टम पर INPUT के लिए DROP की डिफ़ॉल्ट नीति निर्दिष्ट करते हैं, तो आप सिस्टम को एक्सेस करने से खुद को रोक सकते हैं। यदि दूरस्थ सिस्टम पर, आप एक असफल क्रेफ़ैट के रूप में हर 5 मिनट में सभी नियमों को फ्लश करने के लिए एक अस्थायी क्रॉस्टैब निर्दिष्ट कर सकते हैं।

सभी नियमों को हटाने और सभी ट्रैफ़िक को अनुमति देने के लिए:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F

ध्यान दें, -Xसभी बनाई गई श्रृंखलाओं को निकालता है। -Fसभी नियमों की धज्जियाँ उड़ाता है।

नियमों को बचाने और पुनर्स्थापित करने के लिए देशी उपकरण हैं। विशेष रूप से, iptables-saveऔर iptables-restore। अधिकांश आधुनिक लिनक्स वितरण है saveऔर restoreएक iptables के भीतर काम करता है सिस्टम के साथ प्रदान की गई फ़ाइल init।

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


2
बस यहाँ कुछ यादृच्छिक iptables सामान की तलाश करते हुए यह उत्तर आया (मैं अब Google से पहले SF / SO खोजता हूँ!), और यह बहुत विस्तृत उत्तर अधिक वोट-अप प्यार के लायक लगता है, इसलिए मैंने इसे कुछ दिया!
एंड्रयू बार्बर

+1 अच्छा जवाब। मैं डेबियन WIKI का भी उल्लेख करूंगा ।
michal.kreuzman


1

मुझे हाल ही में https://help.ubuntu.com/community/IptablesHowTo मददगार लगी। मुझे नहीं लगता कि वहाँ कुछ भी विशेष रूप से Ubuntu- विशिष्ट है।


मैं अपने लैपटॉप पर आर्क का उपयोग करता हूं, लेकिन उबंटू ल्यूसिड सर्वर बिल्कुल वही है जो सेट करने का कार्य है। तो यह हाथ में आ सकता है यदि अप्रचलित नहीं है (यह उबंटू 8.04 को संबोधित करता है जहां तक ​​मैं देख सकता हूं)।
इवान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.