IPtables को बनाए रखना आसान है


14

मेरे नेटवर्क को कुछ साइटों को छोड़कर पूरी तरह से बंद कर दिया गया है जो श्वेतसूची में हैं। यह सब iptables के माध्यम से किया जाता है, जो कुछ इस तरह दिखता है:

# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...

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

# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT

मेरा मानना ​​है कि यह संभव है, क्योंकि man iptablesकहते हैं:

पता या तो एक नेटवर्क नाम हो सकता है, एक होस्टनाम (कृपया ध्यान दें कि किसी भी नाम को निर्दिष्ट करना दूरस्थ नाम से हल किया जाना चाहिए जैसे कि DNS एक बहुत बुरा विचार है), एक नेटवर्क आईपी पता (/ मुखौटा के साथ), या एक सादा आईपी पता।

लेकिन मैं जिस चीज को लेकर चिंतित हूं वह यह है कि "किसी भी नाम को निर्दिष्ट करने के लिए निर्दिष्ट करना ... DNS एक बहुत बुरा विचार है"। यह एक बुरा विचार क्यों है? क्या यह सब कुछ धीमा कर देता है?

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


आपको security.stackexchange.com पर बेहतर उत्तर मिलेगा
जिम बी

आप सही हो सकते हैं कि यह प्रश्न उस साइट पर है, लेकिन यदि आपको स्वीकृत उत्तर में कोई समस्या है तो कृपया बताएं कि क्यों।
बिग मैकलेरज्यूज

यदि आप अपने नेटवर्क को बंद करने और ऐसा करने के तरीके के बारे में जानना चाहते हैं, तो सुरक्षा पर पूछें, यदि आप iptables का उपयोग करना चाहते हैं (जैसा कि IPtables का उपयोग करने का विरोध किया गया है) तो यह वह जगह है।
जिम बी

जवाबों:


28
  • DNS नाम हल किए जाते हैं जब नियमों को जोड़ा जाता है, तब नहीं, जब पैकेट की जांच की जाती है। यह उन लोगों की अपेक्षाओं का उल्लंघन करता है जो ज्यादातर लोग करते हैं।
    • बदले हुए DNS परिणामों को प्रतिबिंबित करने के लिए नियम अपडेट नहीं किया जाता है। जब इसे जोड़ा जाता है और इसे हल किया जाता है। आपको समय-समय पर नियमों को फिर से लोड करने की आवश्यकता होगी, या कुछ साइटें टूट सकती हैं।
  • इसमें एक सुरक्षा मुद्दा है कि आप मूल रूप से अपने फ़ायरवॉल नियमों का नियंत्रण बाहरी इकाई को सौंप रहे हैं।
    • क्या होगा यदि आपके मूल DNS सर्वर से छेड़छाड़ की जाती है और गलत डेटा लौटाता है।

यदि आपका उद्देश्य HTTP एक्सेस को ब्लॉक करना है, तो आप आमतौर पर उस स्तर पर फ़िल्टर करने के लिए डिज़ाइन किए गए सॉफ़्टवेयर के एक टुकड़े को स्थापित करने के लिए बेहतर होते हैं (जैसे स्क्वीड + स्क्वीडक्वार्ड)।


1) मैं देखता हूं कि यह एक मुद्दा कैसे हो सकता है - google.com आज 1.2.3.4 पर हल हो सकता है लेकिन कल वह पता अमान्य है। क्या बस फ़ायरवॉल को पुनः आरंभ करना इस बात का ध्यान रखेगा? 2) क्या यह अभी भी एक सुरक्षा मुद्दा है अगर DNS सर्वर अच्छी तरह से जाना जाता है - जैसे कि Google का DNS या OpenDNS?
बिग मैक्लेरजैग

1
मैंने इसे उत्तर के रूप में चिह्नित किया क्योंकि यह बताता है कि मुझे iptables नियमों में होस्टनाम का उपयोग क्यों नहीं करना चाहिए और मुझे अपने फ़ायरवॉल को सरल बनाने के लिए कार्रवाई का एक कोर्स देता है।
बिग मैकलेरज्यूज

मैं स्क्विड के लिए अपना समर्थन जोड़ना चाहूंगा। मैंने अपने कार्यालय के लिए स्क्वीड को लागू किया, और एक बार यह स्थापित करने के लिए कि यह श्वेतसूची में होस्ट को बनाए रखने के लिए बहुत आसान है (हालांकि मैं इसे ब्लैकलिस्ट करने के लिए उपयोग करता हूं)। ऐसा लगता है जैसे आपके हाथों पर एक स्मारक है; मुझे यह भी नहीं पता होगा कि उदाहरण के लिए Google को श्वेतसूची में कहां से शुरू करना है। www.google.com अकेले 5 IP का समाधान करता है, जिसे ssl.gstatic.com के लिए कुछ भी नहीं कहना है, और प्रमाणीकरण में शामिल अन्य सभी होस्ट, G + आदि, जो संभवतः प्रत्येक के लिए कई IP का समाधान करते हैं।
s.co.tt

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

लोड संतुलन के लिए DNS का उपयोग करने वाले सिस्टम की समस्या भी है। यदि आप एक पंक्ति में दो बार इस तरह के डोमेन को देखते हैं तो आपको एक ही परिणाम नहीं मिल सकता है, इसलिए एक एकल लुकअप भी आपको आईपी पते की एक विस्तृत सूची देने वाला नहीं है जो संभवतः डोमेन को हल कर सकता है।
cdhowie

10

यदि आप अपने फ़ायरवॉल में होस्टनाम का उपयोग करते हैं, तो आपका फ़ायरवॉल अब DNS पर निर्भर है। यह कई मुद्दों के लिए फ़ायरवॉल खोलता है:

  • उच्च संस्करणों के तहत DNS लुकअप विलंबता का कारण बन सकता है।
  • DNS परिवर्तन तुरंत प्रचारित नहीं करते हैं। तो आपका फ़ायरवॉल कैश्ड आईपी का उपयोग कर सकता है।
  • डीएनएस को ख़राब किया जा सकता है, अपहरण किया जा सकता है, हैक किया जा सकता है।
  • DNS विफल हो सकता है - मतलब आपका फ़ायरवॉल विफल हो जाता है।
  • आपके फ़ायरवॉल नियम अब 3rd पार्टी द्वारा नियंत्रित किए जाते हैं।

यदि आप होस्टनाम का उपयोग करते हैं और आप DNS को नियंत्रित नहीं करते हैं, तो कोई और प्रभावी रूप से आपके IPtables नियमों को नियंत्रित करता है। गलतियाँ, त्रुटियाँ या सुरक्षा मुद्दे उनके अंत में आपके लिए समस्या बन जाते हैं।

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


2
यह एक अच्छा जवाब है, लेकिन यह उस हिस्से को याद कर रहा है जो मुझे फ़ायरवॉल को सरल बनाने में मदद करेगा।
बिग मैकलेरज्यूज

3

आप अपने नियमों को आसान बनाने के लिए shorewall जैसे iptables के आसपास रैपर का उपयोग कर सकते हैं।


यह एक अच्छा विचार है, लेकिन आपने मुझे यह नहीं बताया कि मुझे iptables नियमों में होस्टनाम का उपयोग क्यों नहीं करना चाहिए।
बिग मैकलेरज्यूज

मैं Shorewall के बारे में ज्यादा नहीं जानता, लेकिन मैं इस धारणा के तहत हूं कि davidkennedy85 को अभी भी एक सेवा की हर आईपी पते की सूची बनाए रखने की आवश्यकता होगी जिसे वह Shorewall configs के भीतर अनुमति देना चाहता है। यह नेटफिल्टर [और आदि] का प्रबंधन थोड़ा आसान बना सकता है, लेकिन उनकी मुख्य समस्या को हल नहीं करेगा, जो कि आईपी की एक विशाल सूची है।
s.co.tt

2

जैसा कि दूसरों ने पहले ही कहा है कि आप iptables नियमों में DNS रिसोल्वेबल नामों का उपयोग नहीं करते हैं। वे गलत हैं, तीसरे पक्ष द्वारा नियंत्रित हैं और आमतौर पर एक खराब चीज (टीएम) हैं। मैं यह भी जोड़ूंगा कि जिस समय iptables सेवा शुरू हो रही है, उस समय आपका DNS विफल हो सकता है या पहुंच से बाहर हो सकता है। जिस स्थिति में नियम बिल्कुल नहीं जोड़ा जाएगा और एक पूरी तरह की नई समस्याएँ हो सकती हैं (जैसे पुनरारंभ के बाद ssh एक्सेस खोना)।

आप क्या कर सकते हैं:

  1. तार्किक रूप से नियमों को अलग करने के लिए कस्टम चेन का उपयोग करें
  2. ipsetनियमों से समूहीकृत और अलग किए गए पते का उपयोग करें
  3. नियमों में टिप्पणी जोड़ें

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


हाँ, ipsetउत्तर हैं। Ipset को अपडेट करने के लिए crontab से स्क्रिप्ट चलाने के साथ।
mivk

2

मैं व्यक्तिगत रूप से / etc / मेजबान में मैन्युअल रूप से एक आईपी को एक होस्टनाम असाइन करता हूं और फिर इसे iptables में उपयोग करता हूं ।

इस तरह आप

  1. अपने फ़ायरवॉल नियमों को किसी बाहरी संस्था पर न उतारें
  2. आसानी से बनाए रखने योग्य iptables
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.