IPv4 और ipv6 iptables के समानांतर नियम प्रबंधित करना?


10

हमने हाल ही में IPv6 के साथ प्रयोग करना शुरू किया है, और जिन पहले मुद्दों पर हम संघर्ष कर रहे हैं उनमें से एक दो प्रोटोकॉल स्टैक के लिए फ़ायरवॉल (लिनक्स iptables / ip6ables) नियमों के पूरी तरह से अलग सेट के साथ काम कर रहा है। हमारा फ़ायरवॉल तर्क काफी हद तक उद्देश्य-विशिष्ट नेटवर्क के आसपास आधारित है (जैसे, 10.0.0.0/24 स्टाफ वर्कस्टेशन नेटवर्क है, 10.1.0.0/24 डेटाबेस नेटवर्क है, 10.2.0.0/24 वेब सर्वर नेटवर्क है, आदि) ), और IPv6 और IPv4 दोनों के लिए तर्क काफी हद तक समान होंगे, मोडुलो विभिन्न नेटवर्क उपसर्ग।

इस प्रकार की स्थिति का प्रबंधन करने वाले लोग क्या कर रहे हैं? आदर्श रूप से मैं एक ही स्रोत फ़ाइल (ओं) से दोनों iptables और ip6table रूलेट उत्पन्न करने में सक्षम होना चाहूंगा। मैं पहले से ही बैश का उपयोग करके एक साथ कुछ फेंक चुका हूं, लेकिन यह जरूरी नहीं कि सुंदर हो और मुझे संदेह है कि एक बेहतर समाधान कहीं बाहर मौजूद होना चाहिए।

मुझे विशेष रूप से कठपुतली-आधारित समाधान में दिलचस्पी होगी जो नियमों के सापेक्ष आदेश (या नियमों के समूहों) को लागू करने के लिए कठपुतली की अपनी निर्भरता तंत्र का अच्छा उपयोग करता है।

जवाबों:


5

फ़ायरवॉल बिल्डर के पास ठीक वही है जो आपको चाहिए। आप एक नियम सेट बना सकते हैं, इसे "संयुक्त ipv4 + ipv6" के रूप में चिह्नित कर सकते हैं और अपने ipv4 और ipv6 नेटवर्क को एक ही खंड (जैसे "डेटाबेस नेटवर्क" ETC) को एक ही नियम में निर्दिष्ट कर सकते हैं। इस कार्यक्रम के बाद दो अलग iptables विन्यास उत्पन्न करता है एक ipv4 के लिए और दूसरा ipv6 के लिए। यूजर्स गाइड का यह चैप्टर इसे दिखाता है, हालांकि यह एक उदाहरण के रूप में सिस्को राउटर एक्सेस लिस्ट का उपयोग करता है। यह iptables के लिए बिल्कुल वैसा ही काम करता है।

http://www.fwbuilder.org/4.0/docs/users_guide5/combined-ipv4-ipv6-rule-set.html


4

मुझे हाल ही में IPv4 और IPv6 दोनों के लिए iptables-rules बनाने का भी सामना करना पड़ा। कुछ खोज के बाद मैंने फिल व्हिनरे द्वारा IPv6 FireHOL शाखा का उपयोग करके समाप्त किया ।

FireHOL एक iptables फ़ायरवॉल जेनरेटर है जो स्टेटफुल iptables पैकेट फ़िल्टरिंग फायरवॉल का उत्पादन करता है, लिनक्स होस्ट और किसी भी नेटवर्क इंटरफेस की संख्या के साथ राउटर, किसी भी मार्ग पर, जितनी भी सेवाएँ दी जाती हैं, सेवाओं की विविधताओं के बीच किसी भी प्रकार की जटिलता (सकारात्मक और नकारात्मक सहित) भाव)। (स्रोत: फायरहॉल वेबसाइट)

दुर्भाग्य से आधिकारिक संस्करण में आईपीवी 6 के लिए समर्थन का अभाव है। लेकिन फिल व्हिनरे ने एक अनौपचारिक शाखा में समर्थन जोड़ा है।

कॉन्फ़िगरेशन कैसा दिखता है, इस पर कुछ उदाहरण:

# allowing outgoing http and https requests for ipv4 and ipv6 (default setting when nothing is specified):
client "http https" accept

# allow incoming ssh only on ipv4
ipv4 server ssh accept

# allow incoming IMAP requests only for ipv6
ipv6 server imap accept

आप इस फायरहोल शाखा को यहां देख सकते हैं:

git clone git://repo.or.cz/fireholvi.git

अतिरिक्त दस्तावेज आधिकारिक फायरहोल प्रलेखन या IPv6 के बारे में अतिरिक्त रीडमी में पाया जा सकता है ।

निजी तौर पर मैं शायद एक उत्पादन मशीन पर इसका उपयोग करते समय सतर्क रहूंगा जहां 100% विश्वसनीय फ़ायरवॉल होना महत्वपूर्ण है। लेकिन फिर भी यह देखने लायक है।


3

कारण के निरंतर प्रचार के हित में, मैं कठपुतली का लाभ उठाने का सुझाव देता हूं। वर्तमान में iptables 4 और 6 नियमों को संभालने के लिए एक अच्छी स्क्रिप्ट नहीं है, लेकिन एक बार जब आप भाषा में समायोजित करते हैं, तो इसे लिखना बहुत अधिक चुनौती नहीं होगी।

Mediawiki की सार्वजनिक git रिपॉजिटरी कॉन्फ़िगरेशन पैटर्न की एक शानदार खान है और इसमें एक iptables वर्ग शामिल है जो इसके साथ शुरू करने के लिए एक अच्छा आधार प्रदान करेगा। जब आप IPv4 या IPv6 नियमों पर चीजों को आधार बना रहे होते हैं, तो आप एक ही बार में दोनों स्टैक के नियमों को लागू कर सकते हैं और अलग-अलग नियमों के लिए झंडे लगा सकते हैं।

इसके अंत में अंतिम बोनस यह है कि किसी सेवा के लिए फ़ायरवॉल नियम सेवा परिभाषा में लिखे जा सकते हैं और जब कोई सेवा तैनात या हटा दी जाती है तो स्वचालित रूप से तैनात और हटा दी जाती है।


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

@ लार्क्स मैं सहमत हूं और इसी तरह निराश हो गया है कि एक अच्छा सामान्य समाधान जारी नहीं किया गया है ... लेकिन शायद यह समय है जब मैंने इसे खुद किया। कठपुतली before => Resource['declared_name']किसी भी परिभाषा का उपयोग करने की अनुमति देगा , इसलिए आप उन्हें एक कार्यान्वयन का उपयोग करके ऑर्डर कर सकते हैं जो टुकड़ों के साथ चीजों को ऑर्डर करने की कोशिश नहीं करता है। संरचना के लिए Augueas का एक अच्छा उपयोग भी इस मुद्दे को रोक देगा - अपने शीर्ष वृक्ष की टिप्पणी करें और अपनी इच्छानुसार नीचे आदेश दें।
जेफ फेरलैंड

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

2

यहाँ मेरे अपने प्रश्न का उत्तर दे रहा हूं, लेकिन मुझे लगा कि यह जानकारी सामान्य हित की हो सकती है:

इस सवाल पर गौर करते हुए, मैं उबंटू के लोगों से ufw ( अनकम्प्लिटेड फायरवॉल ) से टकरा गया। Ufw विन्यास में सक्षम IPV6 के साथ, ufw समानांतर में iptables और ip6tables नियमों का प्रबंधन करेगा। इसका मतलब है कि आप ऐसा कुछ कर सकते हैं:

# ufw allow ssh/tcp

और के साथ अंत:

# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere (v6)

इस तरह दिखने वाले iptables / ip6tables नियमों में कौन से परिणाम हैं:

# iptables-save | grep 'dport 22'
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
# ip6tables-save | grep 'dport 22'
-A ufw6-user-input -p tcp -m tcp --dport 22 -j ACCEPT

Ufw एप्लिकेशन प्रोफाइल का भी समर्थन करता है, जो आपको बंदरगाहों के नामित समूह बनाने की अनुमति देता है। तुम यह केर सकते हो:

# ufw allow 'WWW Full'

और अंत में दोनों बंदरगाहों को खोलने के लिए 80 और 443 (आईपीवी 4 और आईपीवी 6 दोनों के लिए)।

मैंने केवल इसे देखना शुरू किया है, लेकिन यह काफी अच्छी तरह से एक साथ रखा गया है।


0

चूंकि यह अभी भी सूची से गायब है: शोरवेल एक व्यापक रूप से अपनाया गया और नियमित रूप से अद्यतन किया गया सुविधा-संपन्न पैकेट फ़िल्टर कॉन्फ़िगरेशन उपकरण है। इसे कुछ समय के लिए IPv6 का समर्थन मिला था ।


1
मेरी समझ में यह है कि "shorewall" केवल ipv4 है और "shorewall6" केवल ipv6 है, anod दोनों प्रोटोकॉल को कवर करने के लिए दोनों का उपयोग करना चाहिए। क्या वे एक समान कॉन्फ़िगरेशन साझा कर सकते हैं?
लार्क्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.