IPtables Debian Linux पर आउटगोइंग SMTP को कैसे अनुमति दें


13

यदि मैं OUTPUT श्रृंखला पर सभी ट्रैफ़िक को अनुमति देने का चयन करता हूं ( iptables -P OUTPUT ACCEPT) मेल ठीक भेजता है। जैसे ही मैं इन नियमों के साथ अपने सर्वर को लॉक करता हूं, आउटगोइंग मेल काम करना बंद कर देता है। हालांकि बाकी सब काम करता है, जो अजीब है।

क्या किसी को यहाँ कुछ भी दिखाई देता है जो मेरे आउटगोइंग मेल को भेजने से बचाए रखेगा? मैं स्तब्ध हूं, इन नियमों को बार-बार देखा है और बहुत सारे विभिन्न संस्करणों की कोशिश की है।

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


 iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

 iptables -A INPUT  -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

 iptables -A INPUT  -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

 iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

 iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
 iptables -A OUTPUT -p tcp --dport 587 -j ACCEPT

 iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 587 -j ACCEPT

 iptables -A OUTPUT  -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

 iptables -A OUTPUT  -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A INPUT  -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

 iptables -A INPUT -i lo -j ACCEPT
 iptables -A OUTPUT -o lo -j ACCEPT

 iptables -A OUTPUT -p udp  --dport 53 -j ACCEPT
 iptables -A INPUT -p udp  --sport 53 -j ACCEPT

 iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
 iptables -A INPUT -p tcp --dport 443 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT


 iptables -N LOGGING
 iptables -A INPUT -j LOGGING
 iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
 iptables -A LOGGING -j DROP

जवाबों:


18

आपके पास ट्रैफ़िक को निकलने देने का नियम है, लेकिन आपके पास वापसी ट्रैफ़िक को जाने देने का नियम नहीं है।

मैं अनुमान लगा रहा हूं कि आप इन 2 नियमों के -A INPUTबजाय इसके लिए हैं:

iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 587 -j ACCEPT

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

सभी -A INPUT ... --sportनियमों को हटाने और इसके बजाय सिर्फ इस एकल नियम का उपयोग करने के लिए एक बेहतर विचार होगा :

iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

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

यह नियम यूडीपी ट्रैफ़िक के लिए भी काम करता है, लेकिन क्योंकि यूडीपी स्टेटलेस है, यह बिल्कुल समान नहीं है। इसके बजाय कर्नेल को बाहर जाने वाले यूडीपी पैकेटों का ट्रैक रखना पड़ता है, और बस यह मान लेता है कि जब यूडीपी पैकेट उसी होस्ट / पोर्ट संयोजन पर वापस आते हैं, और यह थोड़े समय सीमा के भीतर है, कि वे संबंधित हैं।


उत्तर के लिए धन्यवाद। मुझे लगता है कि मैं ट्रैफ़िक को वापस नहीं जाने देना चाहता क्योंकि मैं केवल एक निवर्तमान SMTP कनेक्शन बना रहा हूँ? सोच रहा था कि अगर मैंने नियम को INPUT श्रृंखला में जोड़ दिया तो मैं SMTP वापस लेने की अनुमति दूंगा। यह एक वेब सर्वर है जिसे सिर्फ मेल भेजने के लिए एक बाहरी SMTP होस्ट से कनेक्ट करने की आवश्यकता है .... thx!
916 नेटवर्क

यदि आप वापसी ट्रैफ़िक को वापस नहीं आने देते हैं, तो आपके सिस्टम को सभी "हाँ मुझे आपका डेटा मिला" संदेश कैसे प्राप्त होने जा रहा है जो टीसीपी और एसएमटीपी प्रोटोकॉल का उपयोग करता है?
पैट्रिक

यह समझ आता है। मैंने अभी आपका नियम जोड़ा है और यह पूरी तरह से काम कर रहा है। मैं जवाब की सराहना करता हूं! मैंने वोट देने की कोशिश की लेकिन कहते हैं कि मेरे पास पर्याप्त प्रतिष्ठा नहीं है (Unix StackExchange पर नए)
916 नेटवर्क

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