मैं उबंटू में सभी लेकिन तीन बंदरगाहों को कैसे ब्लॉक कर सकता हूं?


22

मैं 1962, 999, 12020 को छोड़कर सभी बंदरगाहों को कैसे ब्लॉक कर सकता हूं?

एक तरह की स्क्रिप्ट के लिए एसएसएच और दो अन्य के लिए एक पोर्ट। तो, इन बंदरगाहों पर आउटगोइंग की अनुमति देना आवश्यक है, है ना?

मेरे iptables:

# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*mangle
:PREROUTING ACCEPT [643521:136954367]
:INPUT ACCEPT [643521:136954367]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
:POSTROUTING ACCEPT [645723:99904505]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*filter
:INPUT ACCEPT [643490:136950781]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
-A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*nat
:PREROUTING ACCEPT [5673:734891]
:POSTROUTING ACCEPT [2816:179474]
:OUTPUT ACCEPT [2816:179474]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012

क्षमा करें, लेकिन मैं एक असली नौसिखिया हूँ जब यह इस सामान की बात आती है और मैं बस अपने सर्वर को और अधिक सुरक्षित बनाना चाहता हूं।


यूएफडब्ल्यू का उपयोग क्यों नहीं?
सोविएरो

जवाबों:


25

सबसे पहले आपको हमेशा यह सुनिश्चित करने के लिए फ्लश करना चाहिए कि क्या पहले से ही परिभाषित है ... कुछ भी नहीं

iptables -F

यदि अंत तक पहुँच जाता है और कोई नियम मेल नहीं खाता है, तो INPUT श्रृंखला की डिफ़ॉल्ट नीति को DROP पर सेट करें:

iptables -P INPUT DROP

यह सुनिश्चित करने के लिए कि आप को जोड़ना चाहिए लूपबैक को निष्क्रिय नहीं किया गया है

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

लो-इफ पर सभी ट्रैफ़िक की अनुमति देने के लिए और आपके द्वारा स्थापित किए गए कनेक्शन के लिए हर इन-ट्रैफ़िक ट्रैफ़िक। है कि हर नियम आप अपनी सेवाओं के लिए की जरूरत है जोड़ने के बाद (खुला ssh करने के लिए मत भूलना यदि आपको आवश्यकता वरना आप बाहर हैं!) :

iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 

एक छोटी सी चाल मैं अपने आप को और दूसरों को गलती से ड्रिलिंग छेद से सुरक्षा में रखने के लिए करता हूं जो मैं अंत में जोड़ता हूं:

iptables -A INPUT -j DROP

यह रेखा INPUT श्रृंखला के लिए सब कुछ से मेल खाती है और पॉलिसी को कुछ भी नहीं मिलना चाहिए। इसका लाभ तब भी है जब आप अपने नियम को शुरू करने के कुछ समय बाद ACCEPT- नियम जोड़ते हैं, तो यह कभी भी चेक नहीं किया जाएगा क्योंकि सबकुछ पहले ही गिर जाता है। इसलिए यह सुनिश्चित करता है कि आपको सब कुछ एक जगह पर रखना होगा।

आपके प्रश्न के लिए पूरी बात इस तरह दिखाई देती है:

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 
iptables -A INPUT -j DROP

1
बस स्पष्ट करने के लिए: -Pपॉलिसी को चेन पर सेट करें। यह वास्तव में एक नियम नहीं जोड़ रहा है। चेन की नीति पैकेट पर की जाने वाली कार्रवाई को इंगित करती है यदि श्रृंखला के अंत तक पहुंच जाती है। उसके कारण, पॉलिसी सेट करने से पहले अपने नियमों को जोड़ना स्मार्ट है DROP
बेलमिन फर्नांडीज

अगर मुझे यह सही ढंग से याद है, आम तौर पर यह कोई फर्क नहीं पड़ता कि नीति कहां रखी जाए ... शायद मुझे अपना जवाब थोड़ा संपादित करना चाहिए।
मोसे

3
एक नोट: ssh के माध्यम से फ़ायरवॉल सेट करते समय बहुत सावधानी से डिफ़ॉल्ट नीति को अस्वीकार करना और फ्लशिंग करना। आप अपने आप को बंद कर लेंगे। हां, मैंने ऐसा किया है। :-) अब मैं आमतौर पर अंतिम नियम बनाता हूं iptables -A INPUT -j DROP, इसके लिए बहुत कारण है।
सेरेक्स

मैंने अपने ssh को थोड़ा चेतावनी दी ;-)
Mose

@Mose: आम तौर पर कोई फर्क नहीं पड़ता इस पर सही। मैं उस पर प्रकाश डालने की कोशिश कर रहा था। लेकिन यह आपको बंद कर सकता है क्योंकि यह पहले ही उल्लेख किया जा चुका है।
बेलमिन फर्नांडीज

20

आपके जैसे ही एक नौसिखिया का जवाब :-) मुझे अपने उबंटू सर्वर को भी सुरक्षित करने की आवश्यकता थी, iptables सीखना एक दर्द था जो मुझे नहीं मिल रहा था। UFW (Uncomplicated Firewall) फायरवॉल विन्यास को यथासंभव आसान बनाने का एक कार्यक्रम है।

  • स्थापित करें:

    sudo apt-get install ufw
    
  • इसे तुरंत अक्षम करें (मुझे बचाव-बूट करना पड़ा क्योंकि मैं अपने स्वयं के SSH लॉगिन से बाहर था):

    sudo ufw disable
    
  • डिफ़ॉल्ट नियम के रूप में "इंकार" सेट करें (यह सभी पोर्ट को ब्लॉक करता है):

    sudo ufw default deny
    
  • उन पोर्ट की अनुमति दें जिनकी आपको आवश्यकता है:

    sudo ufw allow to 1962
    sudo ufw allow to 999
    sudo ufw allow to 12020
    
    sudo ufw allow from 1962
    sudo ufw allow from 999
    sudo ufw allow from 12020
    
  • यदि आप निश्चित हैं कि ऊपर दिए गए नियम आपके ssh कनेक्शन को नहीं तोड़ते हैं, तो ufw सक्षम करें:

    sudo ufw enable
    

डॉक्स अच्छी तरह से लिखे गए हैं और अधिक उदाहरण प्रदान करते हैं: https://help.ubuntu.com/community/UFW


1
फ़ायरवॉल कॉन्फ़िगरेशन के साथ काम करते समय, क्रोन जॉब बनाने के लिए एक अच्छा विचार हो सकता है जो फ़ायरवॉल को फिर से निष्क्रिय करता है। बस अगर आप बाहर बंद हो जाते हैं।
पेमकिन

ध्यान दें कि यह ufw 0.35 के साथ काम नहीं करता है, जैसे त्रुटियों को फेंकना ERROR: Bad destination addressऔरERROR: Bad source address
डेव

और एक विशिष्ट इंटरफ़ेस के लिए एक पोर्ट को छोड़कर सभी पोर्ट की अनुमति कैसे दें? मैं डिफ़ॉल्ट इनकार नियम का उपयोग कर रहा हूं और वीपीएन का उपयोग करते समय DNS रिसाव को रोकने के लिए ईथरनेट पोर्ट पर DNS पोर्ट 53 को ब्लॉक करना चाहता हूं। वर्तमान में मुझे उन सभी पोर्ट्स की अनुमति देनी है जो मैं निजी आईपी रेंज के लिए उपयोग करना चाहता हूं जो बहुत सुविधाजनक नहीं है।
बपतिस्मा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.