2012-05-20 23 views
12

मैं अपने सर्वर (iptables के साथ) सुरक्षित कर रहा हूं ताकि केवल http और ssh पोर्ट खुले हों और यह ठीक है, हालांकि मैं कुछ अनुप्रयोगों में mail कमांड (सर्वर: CentOS 6.2) का उपयोग करता हूं और अब यह धन्यवाद नहीं है iptables सब कुछ अवरुद्ध।iptables के माध्यम से मेल की अनुमति कैसे दें?

मैं इसे किस पोर्ट तक पहुंचने की अनुमति देता हूं?

मेल उपयोग: echo "{{message}}" | mail -s "{{subject}}" [email protected]

मैं मानक मेल पोर्ट 25 की कोशिश की है, लेकिन मैं उस के साथ कोई सफलता मिली है।

iptables --flush 

iptables -P INPUT DROP 
iptables -P OUTPUT DROP 

# incoming ssh 
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

# outgoing ssh 
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

#HTTP 
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 

# mail (does not work) 
iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT 

(संपादित) उत्तर: काम कर iptables नियम:

iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A INPUT -i eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT 

उत्तर

11

OUTPUT आदेशों भी --dport, नहीं --sport का संदर्भ लेना चाहिए यहाँ मौजूदा सेटअप है। एसएमटीपी सर्वर से कनेक्शन शुरू करने के लिए आप NEW आउटगोइंग पैकेट को भी अनुमति देना चाहेंगे।

सामान्य में, तथापि, OUTPUT नियंत्रण केवल उन पैकेट कि अपनी खुद की प्रणाली उत्पन्न करता है के बाद से, आप ACCEPT को OUTPUT नीति जब तक आप पीढ़ी बाहर जाने वाले पैकेट के को रोकने के लिए की जरूरत है निर्धारित कर सकते हैं।


दो और टिप्पणियां:

1. जे D के सुझाव "सब कुछ के लिए अनुमति देने और फिर विशिष्ट यातायात अवरुद्ध शुरू" करने के लिए असुरक्षित है। कभी भी इस तरह से iptables कॉन्फ़िगर करें क्योंकि आपको पहले से ही पता होना होगा कि एक हमलावर किस बंदरगाह का उपयोग कर सकता है और उन्हें अलग-अलग ब्लॉक कर सकता है। हमेशा यदि आप कर सकते हैं तो एक ब्लैकलिस्ट के बजाय श्वेतसूची का उपयोग करें।

2. खाइयों से एक संकेत: जब आप iptables डिबगिंग रहे हैं, यह अक्सर शुरुआत और प्रत्येक श्रृंखला के अंत में -I nsert और -A ppend लॉग संदेशों के लिए उपयोगी है, तो काउंटर साफ़ करें, और कोई प्रयोग चलाते हैं । (अपने मामले में, mail कमांड जारी करें।) फिर काउंटर और लॉग जांचें कि यह समझने के लिए कि पैकेट कैसे चेन के माध्यम से माइग्रेट किए गए हैं और जहां उन्हें छोड़ दिया गया हो।

+0

एएच हाँ, धन्यवाद। मुझे लगता है कि मैं सभी आउटपुट भी अनुमति दूंगा। – Andrew

+0

ऐसा करने के दो तरीके हैं: 1. जैसा कि आप सब कुछ अवरुद्ध कर रहे हैं और फिर विशिष्ट प्रोटोकॉल यातायात के लिए छेद छिद्रण शुरू करते हैं। 2. सबकुछ अनुमति दें और फिर प्रशांत यातायात को अवरुद्ध करना शुरू करें। मैं दृढ़ता से विश्वास करता हूं 1. एक बेहतर रणनीति है। –

+3

@JayD: ब्लंटनेस को क्षमा करें, लेकिन # 1 बस # 2 की तुलना में "बेहतर रणनीति" नहीं है; # 2 लापरवाही के बिंदु पर असुरक्षित है। सीखने के व्यायाम के अलावा किसी भी चीज़ के लिए _ever_ इस विधि की सिफारिश न करें। –