RHEL, Rocky और AlmaLinux में FirewallD को कैसे कॉन्फ़िगर करें


नेट-फ़िल्टर जैसा कि हम सभी जानते हैं कि यह Linux में फ़ायरवॉल है। Firewalld नेटवर्क ज़ोन के समर्थन के साथ फायरवॉल प्रबंधित करने के लिए एक गतिशील डेमॉन है। पिछले संस्करण में, आरएचईएल और सेंटोस हम पैकेट फ़िल्टरिंग ढांचे के लिए एक डेमन के रूप में iptables का उपयोग कर रहे हैं।

आरएचईएल-आधारित वितरण के नए संस्करणों जैसे कि फेडोरा, रॉकी लिनक्स, सेंटोस स्ट्रीम, अल्मालिनक्स और ओपनएसयूएसई में - iptables इंटरफ़ेस को फ़ायरवॉल द्वारा प्रतिस्थापित किया जा रहा है।

[आप यह भी पसंद कर सकते हैं: लिनक्स सिस्टम के लिए 10 उपयोगी ओपन सोर्स सुरक्षा फ़ायरवॉल]

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

Iptables में, हम INPUT, OUTPUT और FORWARD CHAINS के रूप में कॉन्फ़िगर करते थे लेकिन यहाँ फ़ायरवॉल में, अवधारणा ज़ोन का उपयोग करती है। डिफ़ॉल्ट रूप से, फ़ायरवॉल में विभिन्न क्षेत्र उपलब्ध हैं, जिनकी चर्चा इस लेख में की जाएगी।

बेसिक जोन जो पब्लिक जोन और प्राइवेट जोन की तरह होते हैं। इन क्षेत्रों के साथ काम करने के लिए, हमें निर्दिष्ट ज़ोन समर्थन के साथ इंटरफ़ेस जोड़ने की आवश्यकता है और फिर हम फायरवॉल में सेवाओं को जोड़ सकते हैं।

डिफ़ॉल्ट रूप से, कई सेवाएँ उपलब्ध हैं, फ़ायरवॉल की सबसे अच्छी विशेषताओं में से एक है, यह पूर्व-निर्धारित सेवाओं के साथ आती है और हम इन सेवाओं को केवल कॉपी करके अपनी सेवाओं को जोड़ने के लिए एक उदाहरण के रूप में ले सकते हैं।

फ़ायरवॉल IPv4, IPv6 और ईथरनेट ब्रिज के साथ भी बढ़िया काम करता है। हमारे पास फ़ायरवॉल में एक अलग रन-टाइम और स्थायी कॉन्फ़िगरेशन हो सकता है।

चलिए शुरू करते हैं कि ज़ोन के साथ कैसे काम करें और अपनी खुद की सेवाओं का निर्माण करें और लिनक्स में फ़ायरवॉल का अधिक रोमांचक उपयोग करें।

Operating System :	Red Hat Enterprise Linux release 9.0 (Plow)
IP Address       :	192.168.0.159
Host-name	:	tecmint-rhel9

चरण 1: आरएचईएल-आधारित सिस्टम में फ़ायरवॉल स्थापित करना

1. फ़ायरवॉल पैकेज RHEL, Fedora, Rocky Linux, CentOS Stream, AlmaLinux, और openSUSE में डिफ़ॉल्ट रूप से स्थापित है। यदि नहीं, तो आप निम्न यम कमांड का उपयोग करके इसे स्थापित कर सकते हैं।

# yum install firewalld -y

2. फ़ायरवॉल पैकेज स्थापित होने के बाद, यह सत्यापित करने का समय है कि iptables सेवा चल रही है या नहीं, यदि चल रही है, तो आपको नीचे दिए गए आदेशों के साथ iptables सेवा को रोकने और मास्क (अब और उपयोग नहीं) करने की आवश्यकता है।

# systemctl status iptables
# systemctl stop iptables
# systemctl mask iptables

चरण 2: फ़ायरवॉल घटक (क्षेत्र और नियम) को समझना

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

यहां, हम फ़ायरवॉल में उपलब्ध प्रत्येक ज़ोन का वर्णन करने जा रहे हैं।

  • ड्रॉप ज़ोन: यदि हम ड्रॉप ज़ोन का उपयोग करते हैं तो कोई भी आने वाला पैकेट ड्रॉप हो जाता है। यह वैसा ही है जैसा हम iptables -j drop जोड़ने के लिए उपयोग करते हैं। यदि हम ड्रॉप नियम का उपयोग करते हैं, तो इसका मतलब है कि कोई उत्तर नहीं है, केवल आउटगोइंग नेटवर्क कनेक्शन उपलब्ध होंगे।
  • ब्लॉक ज़ोन: ब्लॉक ज़ोन आने वाले नेटवर्क कनेक्शन को icmp-host-निषिद्ध के साथ अस्वीकार कर देगा। सर्वर के भीतर केवल स्थापित कनेक्शन की अनुमति होगी।
  • सार्वजनिक क्षेत्र: चयनित कनेक्शनों को स्वीकार करने के लिए हम सार्वजनिक क्षेत्र में नियमों को परिभाषित कर सकते हैं। यह केवल विशिष्ट पोर्ट को हमारे सर्वर में खोलने की अनुमति देगा अन्य कनेक्शन हटा दिए जाएंगे।
  • बाहरी क्षेत्र: यह क्षेत्र राउटर विकल्पों के रूप में कार्य करेगा जिसमें मास्करेडिंग सक्षम है, अन्य कनेक्शन हटा दिए जाएंगे और स्वीकार नहीं किए जाएंगे, और केवल निर्दिष्ट कनेक्शनों की अनुमति होगी।
  • DMZ क्षेत्र: अगर हमें कुछ सेवाओं तक जनता को पहुंच की अनुमति देने की आवश्यकता है, तो आप इसे DMZ क्षेत्र में परिभाषित कर सकते हैं। इसमें भी केवल चुनिंदा इनकमिंग कनेक्शनों को ही स्वीकार किए जाने की सुविधा है।
  • कार्य क्षेत्र: इस क्षेत्र में, हम केवल आंतरिक नेटवर्क को परिभाषित कर सकते हैं अर्थात निजी नेटवर्क यातायात की अनुमति है।
  • होम ज़ोन: यह ज़ोन विशेष रूप से घरेलू क्षेत्रों में उपयोग किया जाता है, हम इस ज़ोन का उपयोग नेटवर्क पर अन्य कंप्यूटरों पर भरोसा करने के लिए कर सकते हैं ताकि आपके कंप्यूटर को हर ज़ोन को नुकसान न पहुंचे। यह भी केवल चयनित आने वाले कनेक्शनों की अनुमति देता है।
  • आंतरिक क्षेत्र: यह चयनित अनुमत कनेक्शन वाले कार्य क्षेत्र के समान है।
  • विश्वसनीय क्षेत्र: यदि हम विश्वसनीय क्षेत्र निर्धारित करते हैं तो सारा ट्रैफ़िक स्वीकार कर लिया जाता है।

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

# firewall-cmd --get-zones
# firewall-cmd --get-default-zone
# firewall-cmd --list-all-zones

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

चरण 3: डिफ़ॉल्ट फ़ायरवॉल ज़ोन सेट करना

4. यदि आप डिफ़ॉल्ट ज़ोन को आंतरिक, बाहरी, ड्रॉप, कार्य या किसी अन्य ज़ोन के रूप में सेट करना चाहते हैं, तो आप डिफ़ॉल्ट ज़ोन सेट करने के लिए नीचे दिए गए आदेश का उपयोग कर सकते हैं। यहां हम आंतरिक क्षेत्र को डिफ़ॉल्ट के रूप में उपयोग करते हैं।

# firewall-cmd --set-default-zone=internal

5. ज़ोन सेट करने के बाद, नीचे दिए गए कमांड का उपयोग करके डिफ़ॉल्ट ज़ोन को सत्यापित करें।

# firewall-cmd --get-default-zone

6. यहां, हमारा इंटरफ़ेस enp0s3 है, अगर हमें उस क्षेत्र की जांच करने की ज़रूरत है जिसमें इंटरफ़ेस घिरा हुआ है तो हम नीचे दिए गए आदेश का उपयोग कर सकते हैं।

# firewall-cmd --get-zone-of-interface=enp0s3

7. फ़ायरवॉल की एक और दिलचस्प विशेषता है 'icmptype' फ़ायरवॉल द्वारा समर्थित icmp प्रकारों में से एक है। समर्थित आईसीएमपी प्रकारों की सूची प्राप्त करने के लिए हम नीचे दिए गए आदेश का उपयोग कर सकते हैं।

# firewall-cmd --get-icmptypes

चरण 4: फ़ायरवॉल में स्वयं की सेवाएँ बनाना

8. सेवाएँ पोर्ट और विकल्पों के साथ नियमों का एक सेट है जिसका उपयोग फ़ायरवॉल द्वारा किया जाता है। फ़ायरवॉल सेवा चालू होने और चलने पर सक्षम की गई सेवाएँ स्वचालित रूप से लोड हो जाएँगी।

डिफ़ॉल्ट रूप से, कई सेवाएँ उपलब्ध हैं, सभी उपलब्ध सेवाओं की सूची प्राप्त करने के लिए, निम्नलिखित कमांड का उपयोग करें।

# firewall-cmd --get-services

9. सभी डिफ़ॉल्ट उपलब्ध सेवाओं की सूची प्राप्त करने के लिए, निम्न निर्देशिका पर जाएं, यहां आपको सेवाओं की सूची मिल जाएगी।

# cd /usr/lib/firewalld/services/

10. अपनी स्वयं की सेवा बनाने के लिए, आपको इसे निम्न स्थान पर परिभाषित करने की आवश्यकता है। उदाहरण के लिए, यहाँ मैं RTMP पोर्ट 1935 के लिए एक सेवा जोड़ना चाहता हूँ, पहले किसी एक सेवा की प्रतिलिपि बनाएँ।

# cd /etc/firewalld/services/
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/

और फिर, उस स्थान पर नेविगेट करें जहां हमारी सेवा फ़ाइल की प्रतिलिपि बनाई गई थी, अगली बार फ़ाइल का नाम बदलकर 'ssh.xml' से 'rtmp.xml' कर दें, जैसा कि नीचे दी गई तस्वीर में दिखाया गया है।

# cd /etc/firewalld/services/
# mv ssh.xml rtmp.xml
# ls -l rtmp.xml

11. अगला फ़ाइल को शीर्षक, विवरण, प्रोटोकॉल और पोर्ट नंबर के रूप में खोलें और संपादित करें, जिसे हमें आरटीएमपी सेवा के लिए उपयोग करने की आवश्यकता है जैसा कि नीचे चित्र में दिखाया गया है।

12. इन परिवर्तनों को सक्रिय करने के लिए, फ़ायरवॉल सेवा को पुनरारंभ करें, या सेटिंग्स को पुनः लोड करें।

# firewall-cmd --reload

13. यह पुष्टि करने के लिए कि कोई सेवा जोड़ी गई है या नहीं, उपलब्ध सेवाओं की सूची प्राप्त करने के लिए निम्न कमांड चलाएँ।

# firewall-cmd --get-services

चरण 5: फ़ायरवॉल ज़ोन को सेवाएँ सौंपना

14. यहां हम यह देखने जा रहे हैं कि फ़ायरवॉल-cmd कमांड का उपयोग करके फ़ायरवॉल को कैसे प्रबंधित किया जाए। फ़ायरवॉल और सभी सक्रिय क्षेत्रों की वर्तमान स्थिति जानने के लिए, निम्न कमांड टाइप करें।

# firewall-cmd --state
# firewall-cmd --get-active-zones

15. इंटरफ़ेस enp0s3 के लिए सार्वजनिक क्षेत्र प्राप्त करने के लिए, यह डिफ़ॉल्ट इंटरफ़ेस है, जिसे /etc/firewalld/firewalld.conf फ़ाइल में DefaultZone= के रूप में परिभाषित किया गया है सार्वजनिक

इस डिफ़ॉल्ट इंटरफ़ेस ज़ोन में सभी उपलब्ध सेवाओं को सूचीबद्ध करने के लिए।

# firewall-cmd --get-service

चरण 6: फ़ायरवॉल ज़ोन में सेवाएँ जोड़ना

16. उपरोक्त उदाहरणों में, हमने देखा है कि rtmp सेवा बनाकर अपनी स्वयं की सेवाएँ कैसे बनाई जाती हैं, यहाँ हम देखेंगे कि rtmp सेवा को ज़ोन में कैसे जोड़ा जाए।

# firewall-cmd --add-service=rtmp

17. जोड़े गए क्षेत्र को हटाने के लिए टाइप करें।

# firewall-cmd --zone=public --remove-service=rtmp

उपरोक्त चरण केवल एक अस्थायी अवधि थी। इसे स्थायी बनाने के लिए हमें -स्थायी विकल्प के साथ नीचे दिए गए आदेश को चलाने की आवश्यकता है।

# firewall-cmd --add-service=rtmp --permanent
# firewall-cmd --reload

18. नेटवर्क सोर्स रेंज के लिए नियमों को परिभाषित करें और किसी एक पोर्ट को खोलें। उदाहरण के लिए, यदि आप एक नेटवर्क रेंज खोलना चाहते हैं तो '192.168.0.0/24' और पोर्ट '1935' निम्न कमांड का उपयोग करें।

# firewall-cmd --permanent --add-source=192.168.0.0/24
# firewall-cmd --permanent --add-port=1935/tcp

किसी सेवा या पोर्ट को जोड़ने या हटाने के बाद फ़ायरवॉल सेवा को पुनः लोड करना सुनिश्चित करें।

# firewall-cmd --reload 
# firewall-cmd --list-all

चरण 7: नेटवर्क रेंज के लिए फ़ायरवॉल रिच नियम जोड़ना

19. यदि मैं http, https, vnc-server, और PostgreSQL जैसी सेवाओं को अनुमति देना चाहता हूँ, तो मैं निम्नलिखित नियमों का उपयोग करता हूँ। सबसे पहले, नियम जोड़ें और इसे स्थायी बनाएं और नियमों को पुनः लोड करें और स्थिति की जांच करें।

# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' 
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent

# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept'
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept' --permanent

# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc-server" accept'
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc-server" accept' --permanent

# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="postgresql" accept'
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="postgresql" accept' --permanent

अब, नेटवर्क रेंज 192.168.0.0/24 मेरे सर्वर से उपरोक्त सेवा का उपयोग कर सकता है। विकल्प –permanent का उपयोग हर नियम में किया जा सकता है, लेकिन हमें नियम को परिभाषित करना होगा और क्लाइंट एक्सेस के साथ जांच करनी होगी उसके बाद हमें इसे स्थायी बनाना होगा।

20. उपरोक्त नियमों को जोड़ने के बाद, फ़ायरवॉल नियमों को पुनः लोड करना न भूलें और नियमों का उपयोग करके सूचीबद्ध करें:

# firewall-cmd --reload
# firewall-cmd --list-all

फ़ायरवॉल के बारे में अधिक जानने के लिए।

# man firewalld

यही है, हमने देखा है कि RHEL-आधारित वितरणों जैसे Fedora, Rocky Linux, CentOS Stream, AlmaLinux, और openSUSE में Firewalld का उपयोग करके नेट-फ़िल्टर कैसे सेट किया जाता है।

नेट-फिल्टर प्रत्येक लिनक्स वितरण के लिए फ़ायरवॉल के लिए ढांचा है। हर RHEL और CentOS संस्करण में वापस, हमने iptables का उपयोग किया लेकिन नए संस्करणों में, उन्होंने फ़ायरवॉल पेश किया है। फ़ायरवॉल को समझना और उसका उपयोग करना आसान है। आशा है कि आपने लेखन का आनंद लिया होगा।