मैं कुछ ips को कैसे अनुमति दूं और अन्य सभी कनेक्शन को iptables में ब्लॉक करूं?
मैं कुछ ips को कैसे अनुमति दूं और अन्य सभी कनेक्शन को iptables में ब्लॉक करूं?
जवाबों:
मैंने बहुत समय पहले डेस्कटॉप उपयोगकर्ता के लिए बुनियादी Iptables नियमों पर एक ब्लॉग पोस्ट लिखा था और आपको शायद इसे पढ़ना चाहिए, और स्टेटफुल फ़ायरवॉल डिज़ाइन पर इसके लिंक किए गए लेख । लेकिन पूर्व कर्नेल 2.6.39 (जिसमें शामिल है ipset
और आप आईपी के श्वेतसूची में उपयोग करना चाहते हैं यदि आपके पास 10 से अधिक श्वेतसूची में है (जहां 10 मनमाना है)।
पहले राज्य की संभाल लें कि हम जानते हैं कि हम स्वीकार करना चाहते हैं या छोड़ना चाहते हैं, और इंटरफेस।
iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept
यदि आप केवल राज्य द्वारा, केवल आईपी द्वारा एक अनुमति देना चाहते हैं
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
हालाँकि, आपको ऐसा करने में समस्याएँ होने की संभावना है, और मैं सुझाव देता हूं कि राज्य का उपयोग करके अपने जीवन को आसान बनाएं। उदाहरण के लिए, अनुमति नहीं देना -i lo
और -o lo
निश्चित रूप से कुछ अनुप्रयोगों के लिए समस्याएं पैदा करेगा।
iptables -F
कि सभी नियमों को स्पष्ट करना चाहिए, तो भी ubuntu.com को पिंग नहीं किया जा सकता
यहाँ (अप्रयुक्त!) उदाहरण है जो केवल आने वाले कनेक्शन को रोकता है । लूपबैक इंटरफ़ेस पर कनेक्शन, 192.168.3.x, ICMP या SSH पोर्ट से आ रहे हैं। अन्य सभी कनेक्शन खारिज कर दिए गए हैं।
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
lo
उपरोक्त उदाहरण में राज्य मिलान से बाहर रखा गया है और हमेशा अनुमति दी जाती है।
नीचे का नियम केवल आपके आईपी और पोर्ट 22 या ssh पर अन्य सभी आईपी को ब्लॉक करने की अनुमति देगा। डिस्कनेक्ट करने से पहले एक नए टर्मिनल के साथ परीक्षण करें।
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
yourIPaddress
मैं कुछ IP पते और सीमाएं जोड़ने सकता है? और अगर मैं 2888 जैसे गैर-मानक पोर्ट पर SSH का उपयोग कर रहा हूं, तो कमांड 22
आपके उदाहरण में बदल जाएगी 2288
? इसके अलावा, क्या यह अनुमतियों को छोड़कर सभी IP से इस सर्वर पर rsync, sftp आदि को भी ब्लॉक करेगा?
-p tcp
यहां महत्वपूर्ण है क्योंकि --dport
इसके बिना काम नहीं करता है। मैं -j REJECT
इसके बजाय उपयोग करने का सुझाव भी दूंगा DROP
क्योंकि REJECT
पोर्ट बंद पोर्ट के समान है और DROP
पैकेट को उस पोर्ट ब्लैक होल्ड के लिए नियत करता है। व्यवहार में, दूरस्थ हमलावर DROP
वास्तव में बंद बंदरगाहों से कॉन्फ़िगर किए गए बंदरगाहों का पता लगा सकता है ।
यहाँ पूर्ण कार्य उदाहरण है।
अनुप्रयोगों को भी काम करता है (फिर से: शुरू नहीं होने के बारे में मेरी टिप्पणी)