केवल स्थानीय नेटवर्क कनेक्शन स्वीकार करने के लिए कुछ फ़ायरवॉल पोर्ट सेट करें?


18

मैं लैन में एक सिस्टम पर फ़ायरवॉल कैसे सेट करूं ताकि कुछ पोर्ट केवल स्थानीय क्षेत्र नेटवर्क से कनेक्शन के लिए खुले हों, और बाहरी दुनिया से नहीं?

उदाहरण के लिए, मेरे पास वैज्ञानिक लिनक्स 6.1 (आरएचईएल आधारित डिस्ट्रो) चलाने वाला एक बॉक्स है , और मैं चाहता हूं कि इसका एसएसएच सर्वर केवल लोकलहोस्ट या लैन से कनेक्शन स्वीकार करे। मैं यह कैसे करु?

जवाबों:


24

कर्नेल के iptables पूरी तरह से खाली होने के साथ ( iptables -F), यह वही करेगा जो आप पूछते हैं:

# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP

यह कहता है कि सभी LAN पतों को टीसीपी पोर्ट 22 से बात करने की अनुमति है, जो कि लोकलहोस्ट को समान विचार मिलता है (हाँ, 127। * सिर्फ 127.0.0.1), और हर दूसरे पते के पैकेट उन दो पहले नियमों से मेल नहीं खाते जो अनजाने में गिरा दिए गए। बिट बाल्टी । आप उपयोग कर सकते हैं REJECTके बजाय DROPबजाय TCP पोर्ट 22 पैकेट के लिए एक काला छेद बनाने का है, तो आप एक सक्रिय अस्वीकृति (टीसीपी आरएसटी) चाहते हैं।

यदि आपका LAN 192.168.0। * ब्लॉक का उपयोग नहीं करता है, तो आपको स्वाभाविक रूप से अपने LAN की IP योजना से मिलान करने के लिए पहली पंक्ति में IP और मास्क को बदलना होगा।

यदि आपका फ़ायरवॉल पहले से ही कुछ नियमों को कॉन्फ़िगर करता है, तो ये कमांड्स नहीं कर सकते हैं। ( iptables -Lयह पता लगाने के लिए रूट के रूप में कहें ।) अक्सर क्या होता है कि मौजूदा नियमों में से एक पैकेट को फ़िल्टर करने की कोशिश कर रहे हैं, ताकि नए नियमों को लागू करने का कोई प्रभाव न हो। जब आप नए नियमों को एक श्रृंखला के बीच में विभाजित करने के बजाय उन्हें जोड़ने के आदेश -Iके -Aसाथ उपयोग कर सकते हैं iptables, तो आमतौर पर यह पता लगाना बेहतर होता है कि चेन सिस्टम बूट पर कैसे पॉपुलेट होते हैं और उस प्रक्रिया को संशोधित करते हैं ताकि आपके नए नियम हमेशा स्थापित हों सही क्रम।

आरएचईएल 7+

हाल ही में RHEL प्रकार की प्रणालियों पर, firewall-cmdइसका उपयोग करने का सबसे अच्छा तरीका है या इसके GUI समकक्ष। यह ओएस के firewalldडेमन को बताता है कि आप क्या चाहते हैं, जो वास्तव में पॉप्युलेट करता है और जो आप के माध्यम से देखते हैं उसे हेरफेर करता है iptables -L

RHEL 6 और इससे पहले

पुराने आरएचईएल सिस्टम पर, फायरवॉल चेन को संशोधित करने का सबसे आसान तरीका जब मामलों को संपादित करना होता है /etc/sysconfig/iptables। OS का GUI और TUI फ़ायरवॉल टूल सरल हैं, इसलिए एक बार जब आप इस तरह के और अधिक जटिल नियमों को जोड़ना शुरू करते हैं, तो बेहतर है कि आप अच्छी पुरानी कॉन्फ़िग फ़ाइलों में वापस जाएँ। खबरदार, एक बार जब आप ऐसा करना शुरू करते हैं, तो आप अपने परिवर्तनों को खोने का जोखिम उठाते हैं यदि आप कभी भी कॉन्फ़िगरेशन को संशोधित करने के लिए ओएस के फ़ायरवॉल टूल का उपयोग करते हैं, क्योंकि यह नहीं पता हो सकता है कि इन जैसे दस्तकारी नियमों से कैसे निपटें।

उस फ़ाइल में ऐसा कुछ जोड़ें:

-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP

जहां आप इसे जोड़ते हैं वह मुश्किल बिट है। अगर आपको उस फ़ाइल के बारे में बात करते हुए एक लाइन मिल जाए --dport 22, तो बस इसे ऊपर की तीन पंक्तियों से बदल दें। अन्यथा, यह संभवतः पहले से मौजूद मौजूदा लाइन से पहले समाप्त हो जाना चाहिए -j ACCEPT। आम तौर पर, आपको iptables के काम करने के तरीके से कुछ परिचितता हासिल करनी होगी , जिस बिंदु पर सही प्रविष्टि बिंदु स्पष्ट होगा।

उस फ़ाइल को सहेजें, फिर service iptables restartफ़ायरवॉल नियमों को फिर से लोड करने के लिए कहें । कंसोल में लॉग इन करते समय ऐसा करना सुनिश्चित करें, अगर आप संपादन को मोटा-मोटा करते हैं! SSH पर लॉग इन करते समय आप अपने आप को अपनी मशीन से लॉक नहीं करना चाहते हैं।

ऊपर दिए गए आदेशों की समानता कोई संयोग नहीं है। इस फ़ाइल में अधिकांश iptablesकमांड में तर्क होते हैं । उपरोक्त के सापेक्ष अंतर यह है कि iptablesकमांड को गिरा दिया INPUTजाता है और श्रृंखला का नाम विशेष आरएचईएल-विशिष्ट RH-Firewall-1-INPUTश्रृंखला बन जाता है । (यदि आप फ़ाइल को अधिक विस्तार से जांचना चाहते हैं, तो आप पहले उस फ़ाइल में देखेंगे जहाँ उन्होंने अनिवार्य रूप से INPUTचेन का नाम बदल दिया है । ऐसा क्यों कह सकते हैं।)


4

लिनक्स के तहत फ़ायरवॉल सेटअप के लिए निम्न-स्तरीय उपकरण iptables है । उच्च स्तर के उपकरण भी उपलब्ध हैं। मुझे नहीं पता कि वैज्ञानिक लिनक्स के पास अनुशंसित फ़ायरवॉल टूल है या नहीं।

इस वेब पेज के अनुसार (मैंने सत्यापित नहीं किया है कि यह 6.1 पर लागू होता है), service iptables saveवर्तमान फ़ायरवॉल नियमों को बचाएगा, और ये सहेजे गए नियम बूट समय पर लोड किए जाते हैं। इसलिए आपको उन नियमों को सेट करने की आवश्यकता है जो आप iptablesकमांड (या किसी अन्य माध्यम) के माध्यम से चाहते हैं , फिर service iptables saveअपने सेटअप को स्थायी बनाने के लिए चलाएं ।

स्कॉट पैक की ब्लॉग पोस्ट "ऑडबॉल" पैकेट को छोड़ने के लिए एक शुरुआत है जो आमतौर पर आवश्यक नहीं हैं और एक हमले का हिस्सा होने का उच्च जोखिम है। इसके अलावा, आप आने वाले सभी बंदरगाहों को बंद करना चाहते हैं, और केवल उन्हीं को खोल सकते हैं जिनकी आपको आवश्यकता है। कुछ इस तरह:

# Accept everything on the loopback interface
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
# Drop oddball packets
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Accept packets that are part of established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept selected incoming connections, e.g. ssh from 10.0.42.x
iptables -A INPUT -p tcp --dport 22 -s 10.0.42.0/24 -j ACCEPT
# Reject incoming connections that aren't explicitly accepted
iptables -A INPUT -j REJECT

1
गाइल्स, क्या आपने सवाल को थोड़ा गलत नहीं बताया? मैं समझता हूं कि वैज्ञानिक लिनक्स बॉक्स LAN पर कंप्यूटरों में से एक है, लेकिन फ़ायरवॉल नहीं।
rozcietrzewiacz

@Gilles हाँ, बॉक्स LAN पर मौजूद कंप्यूटरों में से एक है।
22

@rozcietrzewiacz मैं समझता हूं कि फ़ायरवॉल सर्वर के समान मशीन पर है। मैं मानता हूं कि यह सवाल कुछ हद तक अस्पष्ट है, लेकिन चूँकि पेन्युअन ने केवल एक मशीन के ओएस का उल्लेख किया है, मुझे लगता है कि सब कुछ उस मशीन पर हो रहा है। अन्यथा यह एक यूनिक्स प्रश्न नहीं होगा, यह एक अंडरस्क्राइब नेटवर्क व्यवस्थापक प्रश्न होगा।
गिल्स एसओ- बुराई को रोकना '

1

इसके साथ करने का पसंदीदा तरीका है iptables। ऐसा लगता है कि यह पर्याप्त रूप से दूसरों द्वारा कवर किया गया है, इसलिए, बस पूर्णता के लिए, मैं एक वैकल्पिक एक्सेस कंट्रोल विधि बताऊंगा जो कि अधिकांश लिनक्स डिस्ट्रोस पर कई डेमॉन के लिए उपलब्ध है। वह एक्सेस कंट्रोल मेथड libwrapलाइब्रेरी द्वारा प्रदान किया जाता है।

यह जाँचने के लिए कि आपके पसंदीदा डेमन का libwrapसमर्थन है या नहीं, निम्नलिखित को चलाने का प्रयास करें:

ldd `which sshd` | grep libwrap

यदि आपको कोई गैर-रिक्त परिणाम मिलता है, जैसे कि

libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f84e7b0e000)

तो आप निश्चित रूप से जाने के लिए अच्छे हैं।

यह लगभग निश्चित है कि आपके sshdडेमन का libwrapसमर्थन है, और इसलिए इसे अभिगम नियंत्रण के लिए /etc/hosts.allowऔर /etc/hosts.denyफाइलों से परामर्श करना चाहिए । अपने स्थानीय LAN नेटवर्क को मानते हुए 192.168.100.0/24, आप अपनी फ़ाइल में निम्न डालकर स्थानीय होस्ट या स्थानीय LAN पर छोड़कर सभी क्लाइंट तक पहुँच से इनकार कर सकते हैं :sshd/etc/hosts.deny

sshd: ALL EXCEPT 127.0.0.0/255.0.0.0, [::1]/128, 192.168.100.0/255.255.255.0

ध्यान दें कि यह विधि नहीं है वास्तव में खोलने या बंद बंदरगाहों, दर असल। यह केवल डेमॉन को बताता है कि एक्सेस कंट्रोल की इस पद्धति का उपयोग करें कि दिए गए पैटर्न (मेलों) से मेल खाने वाले क्लाइंट से कनेक्शन प्रयासों को स्वीकार या अस्वीकार करें।

पूर्ण विवरण के लिए, मैन पेजों की जाँच करें, जिनके साथ शुरू होता है hosts_access(5)


1

यदि आपके पास अपना स्वयं का लिनक्स-आधारित फ़ायरवॉल है, तो आप सबसे अच्छा सेटअप iptablesकरेंगे, जैसा कि अन्य यहाँ वर्णन करते हैं। यदि नहीं और फ़ायरवॉल आपका राउटर है, तो सबसे संभवत: डिफ़ॉल्ट कॉन्फ़िगरेशन पहले से ही बाहर तक पहुंच को रोकता है, जब तक कि आप पोर्ट अग्रेषण को स्पष्ट रूप से सक्षम नहीं करते हैं (जैसा कि मैंने हाल ही में इस प्रश्न के उत्तर में वर्णित किया है )।

उपरोक्त अतिरिक्त सुरक्षा के लिए, आप इन-लैन कनेक्शन के लिए एक अलग सबनेट का उपयोग कर सकते हैं। ऐसा करने के लिए, प्रत्येक कंप्यूटर के लिए एक दूसरा IP पता जोड़ें जो केवल LAN के भीतर उपयोग किया जाएगा और राउटर द्वारा नहीं। मान लीजिए कि पूरा लैन अब 192.168.0.xxxपतों का उपयोग कर रहा है और राउटर (गेटवे, फ़ायरवॉल) है 192.168.0.1। इसलिए प्रत्येक कंप्यूटर के लिए एक दूसरा पता जोड़ें - उदाहरण के लिए:

ifconfig eth0:0 192.168.5.1/24

अगला, sshdकेवल इस पते का उपयोग करने के लिए कॉन्फ़िगरेशन संपादित करें (ताकि यह कनेक्शन पर आने की अनुमति न दे 192.168.0.xxx) - अपने नए सबनेट ( उपरोक्त उदाहरण में) में से एक को संपादित /etc/ssh/sshd_configऔर संशोधित करें । बस! यदि आप उस सबनेट के संचार के मार्ग के लिए प्रवेश द्वार को कॉन्फ़िगर नहीं करते हैं, तो इसे बाहर से अलग किया जाना चाहिए।ListenAddress192.168.5.1

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