मैं एक ही समय में आईपी मास्किंग और फायरवॉल दोनों के लिए iptables कैसे कॉन्फ़िगर कर सकता हूं?


0

मेरे पास एक मेजबान है जो इंटरनेट के लिए एक होम नेटवर्क को रूट करने के लिए एक प्रवेश द्वार के रूप में कार्य करता है। अब IP Masquerading महीनों के लिए सक्षम हो गई है और सिस्टम ने ठीक काम किया है।

मैं इसे फ़ायरवॉल के रूप में भी कार्य करने के लिए कैसे कॉन्फ़िगर करूं? किसी भी स्थिति में मैं यातायात में डाल दिया FORWARD श्रृंखला बस काम नहीं है।

उदाहरण के लिए

-A FORWARD -i eth1 -p tcp -j ACCEPT

रूटिंग से सभी टीसीपी ट्रैफिक को ड्राप कर देता है, बजाय इसके इसे eth1 से उत्पन्न ट्रैफिक पर रोक लगाने के बजाय। इसके अलावा ...

 -A FORWARD -s 192.168.2.0/24 -p tcp -j ACCEPT

... 192.168.2.0 सबनेट से सिर्फ टीसीपी ट्रैफिक की अनुमति नहीं देता, जिस क्षण मैं नियम लागू करता हूं सभी टीसीपी ट्रैफिक रूटिंग को रोक देता है।

मैं पैकेट से छेड़छाड़, या कैसे खाई और इसके बजाय SNAT के साथ पैकेट पर किसी भी स्पष्ट प्रलेखन खोजने में असमर्थ रहा है।

  • eth0 बाहरी इंटरफ़ेस, DSL राउटर के समान सबनेट पर है
  • eth1 आंतरिक इंटरफ़ेस है, मेरे सभी होस्ट डीएचसीपी पर ठीक काम कर रहे हैं

IP IP मस्काराडिंग और फ़ायरवॉलिंग दोनों करने के लिए मैं iptables को कैसे कॉन्फ़िगर करूँ?

# Generated by iptables-save v1.4.21 on Thu Oct 29 12:48:19 2015
*nat
:PREROUTING ACCEPT [10859:2328892]
:INPUT ACCEPT [1002:126271]
:OUTPUT ACCEPT [1256:91484]
:POSTROUTING ACCEPT [638:43890]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Oct 29 12:48:19 2015
# Generated by iptables-save v1.4.21 on Thu Oct 29 12:48:19 2015
*filter
:INPUT ACCEPT [5:803]
:FORWARD ACCEPT [127:18532]
:OUTPUT ACCEPT [5:431]
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT -m comment --comment "HTTP Serve eth1"
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT -m comment --comment "SSH Serve eth1"
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -m comment --comment "ssh on eth1"
-A INPUT -i eth0 -p tcp -m tcp --dport 53 -j DROP -m comment --comment "drop dns from eth0"
-A INPUT -p icmp -j ACCEPT
-A INPUT -i eth0 -j DROP
-A INPUT -i eth1 -j REJECT
-P INPUT DROP
-A FORWARD -p tcp -j ACCEPT -m comment --comment "all tcp from internal"
-A FORWARD -p udp -j ACCEPT -m comment --comment "all udp from internal"
-A FORWARD -p icmp -j ACCEPT
-P FORWARD DROP
-A OUTPUT -o eth1 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-P OUTPUT DROP
COMMIT
# Completed on Thu Oct 29 12:48:19 2015

एनबी, मैंने निष्क्रिय रूप से निष्क्रिय किया (एक हीन समाधान लगता है) और एसएनएटी को निम्नानुसार सक्षम किया, हालांकि, मैंने रूटर के सभी इंटरनेट और एसएसएच कनेक्टिविटी को इसके पांच मिनट के भीतर खो दिया। मुझे लगता है कि अगर मैं इसे क्रैक कर सकता हूं तो हमारे पास मेरे (और कई अन्य स्थितियों के लिए) जवाबदेह है? -एक पोस्टिंग- eth0 -j SNAT - 192.168.1.1 तक
TemperedGlass

अगर SNAT काम नहीं कर रहा है, आप शायद गलत स्रोत पते का उपयोग कर रहे हैं।
Daniel B

इसके अलावा, क्या आप भी पूरा करने की कोशिश कर रहे हैं? कृपया का आउटपुट प्रदान करें iptables-save अपने वांछित नियमों के साथ-साथ उनमें से एक मौखिक विवरण।
Daniel B

मैं अब इसे 192.168.1.1 के साथ देख रहा हूं - इंटरनेट काम कर रहा है, लेकिन मैं ट्रैफ़िक को फ़िल्टर नहीं कर सकता (नेट टेबल मुझे बताती हैं कि इसे वहां न करें, और अगर मैं फ़ॉर्वर्ड टेबल में सबनेट / इंटरफेस लागू करता हूं तो प्रोटोकॉल के लिए ट्रैफ़िक विफल हो जाता है) मैं इंटरनेट एक्सेस करने से कुछ मेजबानों को रोकना चाहता हूं। इसलिए एक उदाहरण असफल नियम (ऊपर फ़ाइल को बचाने के लिए केवल काम करने वाला कॉन्फिगरेशन) है-एक फॉरवर्ड -p tcp -s 192.168.2.123 -j DROP -m कमेंट - कॉममेंट उपरोक्त = 192.168.2.123 से "ब्लॉक tcp" का प्रभाव = iptables के बाद सभी tcp अग्रेषण विफल हो जाता है, जो उस नियम के साथ कॉन्फिगरेशन को बहाल करता है।
TemperedGlass

अब तक प्रतिक्रियाओं के लिए धन्यवाद btw। उम्मीद है कि अब इसके स्पष्ट?
TemperedGlass

जवाबों:


1

iptables, और सामान्य रूप से नेटवर्किंग, आपके द्वारा इसे क्रेडिट देने से अधिक जटिल है।

तो मान लें कि आप केवल ऐसा करते हैं, आंतरिक eth1 से सभी आउटगोइंग ट्रैफ़िक को सक्षम करने की उम्मीद करते हैं, जैसा कि आपकी पहली पंक्ति में है:

-A FORWARD -i eth1 -p tcp -j ACCEPT
-P FORWARD DROP

यह विराम कहां है सभी कनेक्शन और यातायात 2-तरफ़ा है । FORWARD उन सभी ट्रैफ़िक को संसाधित कर रहा है जो राउटर (INPUT) को लक्षित नहीं कर रहे हैं या राउटर (OUTPUT) से sourced है। तो FORWARD को आपका आउटबाउंड tcp ट्रैफ़िक आरंभ करने वाला कनेक्शन (जो आपका नियम अनुमति देता है) और सभी उत्तर उस कनेक्शन को स्वीकार करने और ट्रैफ़िक वापस पास करने का प्रयास करने पर प्राप्त होता है (जो कि जब तक आप सब कुछ नहीं छोड़ते, जो मेल नहीं खाता है, उसे एक नए नियम की आवश्यकता होगी परमिट)।

यह वह जगह है जहां iptables बहुत जटिल हो जाता है, बहुत जल्दी, क्योंकि दोनों दिशाओं में हर संभावित पैकेट के लिए एक नियम स्थापित करना पागल है। यदि पहला नियम हमेशा स्थापित कनेक्शन का उपयोग करके ट्रैफ़िक की अनुमति देने के लिए सरल हो जाता है, तो वह है - mst राज्य का उपयोग करना - ESTABLISHED जैसा कि आपने अपने NAT समस्या को हल करने के लिए अपने अन्य प्रश्न में उपयोग करना शुरू कर दिया है । जो आपको उन कनेक्शनों के लिए नियम लिखने देगा जो आप शुरू करने की अनुमति देना चाहते हैं। आने वाले और बाहर जाने वाले कनेक्शनों को अपने नियमों में क्रमबद्ध करने में मददगार हो सकता है (जब तक कि आप केवल आउटगोइंग के बारे में चिंतित न हों) नीचे दिए अनुसार:

#setup
-N outbound
-N inbound
#design
-A FORWARD -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j inbound
-A FORWARD -i eth1 -o eth0 -j outbound
-P FORWARD DROP
#allow outgoing web access
-A outbound -p tcp -m tcp --dport 80,443 -j ACCEPT
#and nothing else
-A outbound DROP
#etc....
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.