CentOS और Ubuntu में फ़ायरवॉल को कैसे स्थापित करें, कॉन्फ़िगर करें और उपयोग करें


फ़ायरवॉल (फ़ायरवॉल डेमॉन) नेटवर्क के लिए समर्थन के साथ सिस्टम (या फ़ायरवॉल) ज़ोन को गतिशील रूप से प्रबंधित करने के लिए iptables सेवा का एक विकल्प है, और कॉन्फ़िगरेशन के प्रबंधन के लिए डी-बस इंटरफ़ेस प्रदान करता है। इसका उपयोग करना और कॉन्फ़िगर करना आसान है, और यह अब RHEL/CentOS , Fedora और कई अन्य लिनक्स वितरण पर डिफ़ॉल्ट फ़ायरवॉल प्रबंधन उपकरण है।

इस लेख में, हम चर्चा करेंगे कि सिस्टम फ़ायरवॉल को फ़ायरवॉल से कैसे कॉन्फ़िगर करें और CentOS/RHEL 7 और Ubuntu में बुनियादी पैकेट फ़िल्टरिंग को लागू करें।

फायरविल्ड के बारे में मूल बातें

फ़ायरवॉल में तीन परतें शामिल हैं, जो हैं:

  • core layer: responsible for handling the configuration and the back ends (listed below).
  • D-Bus interface: the primary means of changing and creating the firewall configuration.
  • backends: for interacting with netfilter (the native kernel module used for firewalling). They include iptables, ip6tables, ebtables, ipset, nft, linnftables; networkmanager; and modules.

यह नेटवर्क/फ़ायरवॉल ज़ोन को लागू करके फ़ायरवॉल नियमों का प्रबंधन करता है जो नेटवर्क कनेक्शन या इंटरफेस के ट्रस्ट स्तर को परिभाषित करते हैं। अन्य समर्थित फ़ायरवॉल सुविधाओं में सेवाएँ, प्रत्यक्ष कॉन्फ़िगरेशन (सीधे कच्चे iptables सिंटैक्स पास करने के लिए उपयोग किया जाता है), IPSets और साथ ही ICMP प्रकार शामिल हैं।

दो प्रकार के कॉन्फ़िगरेशन वातावरण फ़ायरवॉल द्वारा समर्थित हैं:

  • runtime configuration which is only effective until the machine has been rebooted or the firewalld service has been restarted
  • permanent configuration which is saved and works persistently.

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

इसके अलावा, फ़ायरवॉल अन्य स्थानीय सेवाओं या अनुप्रयोगों के लिए एक अच्छी तरह से परिभाषित इंटरफ़ेस प्रदान करता है, सीधे फ़ायरवॉल नियमों में परिवर्तन का अनुरोध करने के लिए, यदि वे रूट विशेषाधिकार के साथ चल रहे हैं।

फ़ायरवॉल के लिए वैश्विक कॉन्फ़िगरेशन फ़ाइल /etc/firewalld/firewalld.conf पर स्थित है और फ़ायरवॉल सुविधाएँ XML प्रारूप में कॉन्फ़िगर की गई हैं।

महत्वपूर्ण फायरवालड फीचर्स को समझना

फ़ायरवॉल की केंद्रीय विशेषता नेटवर्क/फ़ायरवॉल ज़ोन है। हर दूसरी सुविधा एक क्षेत्र से जुड़ी हुई है। फ़ायरवॉल ज़ोन कनेक्शन, इंटरफ़ेस या स्रोत पते बाइंडिंग के लिए विश्वास स्तर का वर्णन करता है।

डिफ़ॉल्ट कॉन्फ़िगरेशन कई पूर्वनिर्धारित ज़ोन के साथ आता है जो अविश्वासित से विश्वसनीय: ज़ोन के डिफ़ॉल्ट ट्रस्ट स्तर के अनुसार क्रमबद्ध होते हैं: ड्रॉप, ब्लॉक, सार्वजनिक, बाहरी, डीएमजी, काम, घर, आंतरिक और विश्वसनीय। वे /usr/lib/firewalld/क्षेत्र निर्देशिका के तहत संग्रहीत फ़ाइलों में परिभाषित किए गए हैं।

आप CLI क्लाइंट का उपयोग करके अपने कस्टम ज़ोन को कॉन्फ़िगर या जोड़ सकते हैं या मौजूदा फ़ाइलों से /etc/firewalld/क्षेत्र में एक ज़ोन फ़ाइल बना या कॉपी कर सकते हैं और इसे संपादित कर सकते हैं।

rong> या /etc/firewalld/सेवाओं/ निर्देशिका के तहत संग्रहीत फ़ाइलों में परिभाषित किया गया है।

यदि आप बुनियादी iptables/ip6tables/ebtables अवधारणाओं को जानते हैं, तो आप फ़ायरवॉल पर सीधे पहुँच प्राप्त करने के लिए डायरेक्ट इंटरफेस (या कॉन्फ़िगरेशन) का भी उपयोग कर सकते हैं। लेकिन, बिना किसी iptables ज्ञान के उन लोगों के लिए, आप IPv4 और IPv6 के लिए अधिक जटिल फ़ायरवॉल नियम बनाने के लिए समृद्ध भाषा को नियोजित कर सकते हैं।

लिनक्स में फ़ायरवॉल पैकेज कैसे स्थापित करें

CentOS 7 पर, फ़ायरवॉल पैकेज पहले से इंस्टॉल आता है और आप निम्न कमांड का उपयोग करके सत्यापित कर सकते हैं।

$ rpm -qa firewalld

Ubuntu 16.04 और 18.04 पर, आप इसे दिखाए गए डिफ़ॉल्ट पैकेज प्रबंधक का उपयोग करके स्थापित कर सकते हैं।

$ sudo apt install firewalld

लिनक्स में फ़ायरवॉल सर्विस कैसे प्रबंधित करें

फायरवल्ड एक नियमित सिस्टमड सेवा है, जिसे सिस्टमक्टल कमांड के माध्यम से प्रबंधित किया जा सकता है।

 
$ sudo systemctl start firewalld	#start the service for the mean time
$ sudo systemctl enable firewalld	#enable the service to auto-start at boot time
$ sudo systemctl status firewalld	#view service status

फ़ायरवॉल सेवा शुरू करने के बाद, आप यह भी जांच सकते हैं कि डेमोन चल रहा है या नहीं, फ़ायरवॉल- cmd टूल का उपयोग करके (यदि यह सक्रिय नहीं है, तो यह कमांड आउटपुट करेगा "नहीं" चल रहा है ")।

$ sudo firewall-cmd --state

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

$ sudo firewall-cmd --reload

फ़ायरवॉल में फ़ायरवॉल ज़ोन के साथ कैसे काम करें

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

$ sudo firewall-cmd --get-zones
$ sudo firewall-cmd --get-services

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

$ sudo firewall-cmd --get-default-zone

डिफ़ॉल्ट क्षेत्र सेट करने के लिए, उदाहरण के लिए बाहरी, निम्न कमांड का उपयोग करें। ध्यान दें कि विकल्प जोड़ने पर <कोड> - स्थायी स्थायी रूप से कॉन्फ़िगरेशन सेट करता है (या स्थायी कॉन्फ़िगरेशन वातावरण से जानकारी की क्वेरी करने में सक्षम बनाता है)।

$ sudo firewall-cmd --set-default-zone=external
OR
$ sudo firewall-cmd --set-default-zone=external --permanent
$ sudo firewall-cmd --reload 

इसके बाद, आइए देखें कि ज़ोन में इंटरफ़ेस कैसे जोड़ें। यह उदाहरण दिखाता है कि अपने वायरलेस नेटवर्क एडेप्टर ( wlp1s0 ) को जोन होम में कैसे जोड़ा जाए, जिसका उपयोग घरेलू क्षेत्रों में किया जाता है।

$ sudo firewall-cmd --zone=home --add-interface=wlp1s0

एक इंटरफ़ेस को केवल एक ही ज़ोन में जोड़ा जा सकता है। इसे दूसरे ज़ोन में स्थानांतरित करने के लिए, - change-interface स्विच को दिखाए अनुसार उपयोग करें, या –remove-interface स्विच का उपयोग करके पिछले क्षेत्र से इसे हटा दें, फिर इसे जोड़ें नए क्षेत्र के लिए।

मान लें कि आप सार्वजनिक WI-FI नेटवर्क से कनेक्ट करना चाहते हैं, तो आपको अपने वायरलेस इंटरफ़ेस को सार्वजनिक क्षेत्र में वापस ले जाना चाहिए, जैसे:

$ sudo firewall-cmd --zone=public --add-interface=wlp1s0
$ sudo firewall-cmd --zone=public --change-interface=wlp1s0

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

$ sudo firewall-cmd --get-active-zones

पिछले बिंदु के संबंध में, यदि आप किसी विशेष क्षेत्र के बारे में अधिक जानकारी प्राप्त करना चाहते हैं, अर्थात् इसमें सब कुछ जोड़ा या सक्षम किया गया है, तो इनमें से किसी एक कमांड का उपयोग करें:

$ sudo firewall-cmd --zone=home --list-all
OR
$ sudo firewall-cmd --info-zone public

एक अन्य उपयोगी विकल्प है - get-target , जो आपको एक स्थायी क्षेत्र का लक्ष्य दिखाता है। एक लक्ष्य: डिफ़ॉल्ट, ACCEPT, DROP, REJECT में से एक है। आप विभिन्न क्षेत्रों के लक्ष्य की जांच कर सकते हैं:

$ sudo firewall-cmd --permanent --zone=public --get-target  
$ sudo firewall-cmd --permanent --zone=block --get-target  
$ sudo firewall-cmd --permanent --zone=dmz --get-target  
$ sudo firewall-cmd --permanent --zone=external --get-target
$ sudo firewall-cmd --permanent --zone=drop --get-target

फ़ायरवॉल में पोर्ट कैसे खोलें और ब्लॉक करें

फ़ायरवॉल में एक पोर्ट (या पोर्ट/प्रोटोकॉल संयोजन) खोलने के लिए, बस इसे - add-port विकल्प वाले ज़ोन में जोड़ें। यदि आप स्पष्ट रूप से ज़ोन निर्दिष्ट नहीं करते हैं, तो यह डिफ़ॉल्ट ज़ोन में सक्षम हो जाएगा।

निम्न उदाहरण दिखाता है कि HTTP और HTTPS 80 और 443 को कैसे जोड़ा जाए। > प्रोटोकॉल, क्रमशः:

$ sudo firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=443/tcp

अगला, फ़ायरवॉल को पुनः लोड करें और सार्वजनिक क्षेत्र में सक्षम सुविधाओं को एक बार फिर से जांचें, आपको बस जोड़े गए बंदरगाहों को देखने में सक्षम होना चाहिए।

$ sudo firewall-cmd --reload
$ sudo firewall-cmd --info-zone public

फ़ायरवॉल में पोर्ट को ब्लॉक करना या बंद करना भी उतना ही आसान है, बस इसे - remove-port ऑप्शन वाले ज़ोन से हटा दें। उदाहरण के लिए, सार्वजनिक क्षेत्र में बंदरगाहों 80 और 443 को बंद करने के लिए।

$ sudo firewall-cmd --zone=public --permanent --remove-port=80/tcp --remove-port=443/tcp

पोर्ट या पोर्ट/प्रोटोकॉल संयोजन का उपयोग करने के बजाय, आप उस सेवा नाम का उपयोग कर सकते हैं, जिसे किसी पोर्ट को अगले भाग में बताया गया है।

फ़ायरवॉल में सेवाओं को कैसे खोलें और ब्लॉक करें

फ़ायरवॉल में एक सेवा खोलने के लिए, इसे - add-service विकल्प का उपयोग करके सक्षम करें। यदि ज़ोन को छोड़ दिया जाता है, तो डिफ़ॉल्ट ज़ोन का उपयोग किया जाएगा।

निम्न आदेश स्थायी रूप से सार्वजनिक क्षेत्र में http सेवा को सक्षम करेगा।

$ sudo firewall-cmd --zone=public --permanent --add-service=http 
$ sudo firewall-cmd --reload 

- निष्कासन-सेवा विकल्प का उपयोग किसी सेवा को निष्क्रिय करने के लिए किया जा सकता है।

$ sudo firewall-cmd --zone=public --permanent --remove-service=http 
$ sudo firewall-cmd --reload 

फ़ायरवॉल के उपयोग से आईपी मास्केरडिंग को सक्षम और अक्षम कैसे करें

आईपी संदेशवाहक (जिसे IPMASQ या MASQ के रूप में भी जाना जाता है) NAT ( नेटवर्क पता अनुवाद है लिनक्स नेटवर्किंग में मजबूत>) तंत्र, जो आपके नेटवर्क को अपने नेटवर्क में होस्ट करने की अनुमति देता है, जिसमें निजी आईपी पते आपके लिनक्स सर्वर (आईपीएमएएसक्यू गेटवे) द्वारा दिए गए सार्वजनिक आईपी पते का उपयोग करके इंटरनेट के साथ संवाद करते हैं।

यह एक से कई मैपिंग है। आपके अदृश्य होस्ट से ट्रैफ़िक इंटरनेट के अन्य कंप्यूटरों को दिखाई देगा जैसे कि वह आपके लिनक्स सर्वर से आ रहा हो।

आप सार्वजनिक क्षेत्र में, उदाहरण के लिए, एक इच्छित क्षेत्र में आईपी मास्किंग को सक्षम कर सकते हैं। लेकिन ऐसा करने से पहले, पहले जांच लें कि मस्कारिंग सक्रिय है या नहीं ( "नहीं" का अर्थ है कि उसका अक्षम और "हां" का अर्थ है अन्यथा)।

$ sudo firewall-cmd --zone=public --query-masquerade
$ sudo firewall-cmd --zone=public --add-masquerade

पोर्ट फॉरवर्डिंग करने के लिए मस्कारिंग का एक विशिष्ट उपयोग मामला है। मान लें कि आप SSH को दूरस्थ मशीन से IP 10.20.1.3 के साथ अपने आंतरिक नेटवर्क में होस्ट करना चाहते हैं, जिस पर sshd डेमन पोर्ट 5000 सुन रहा है।

आप अपने लक्ष्य होस्ट पर अपने पोर्ट सर्वर पर पोर्ट 22 पोर्ट के सभी कनेक्शन जारी कर सकते हैं:

$ sudo firewall-cmd --zone=public --add-forward-port=port=22=proto=tcp:toport=5000:toaddr=10.20.1.3

किसी क्षेत्र में मस्कारिंग को अक्षम करने के लिए, - remove-masquerade स्विच का उपयोग करें।

$ sudo firewall-cmd --zone=public --remove-masquerade

फ़ायरवॉल में IMCP संदेश को सक्षम और अक्षम कैसे करें

ICMP ( इंटरनेट नियंत्रण संदेश प्रोटोकॉल ) संदेश या तो सूचना अनुरोधों या सूचना अनुरोधों का जवाब देते हैं या त्रुटि स्थितियों में।

आप फ़ायरवॉल में ICMP संदेशों को सक्षम या अक्षम कर सकते हैं, लेकिन इससे पहले कि सभी समर्थित icmp प्रकारों को सूचीबद्ध करें।

$ sudo firewall-cmd --get-icmptypes

इच्छित प्रकार को ब्लॉक करने या हटाने के लिए।

$ sudo firewall-cmd --zone=home --add-icmp-block=echo-reply
OR
$ sudo firewall-cmd --zone=home --remove-icmp-block=echo-reply

आप - list-icmp-block स्विच का उपयोग करके ज़ोन में जोड़े गए सभी icmp प्रकार देख सकते हैं।

$ sudo firewall-cmd --zone=home --list-icmp-blocks

कच्चे iptables कमांड पास करने के लिए डायरेक्ट इंटरफेस का उपयोग कैसे करें

फ़ायरवॉल- cmd आपको फ़ायरवॉल के लिए और अधिक सीधी पहुँच प्राप्त करने के लिए प्रत्यक्ष विकल्प ( - direct ) भी प्रदान करता है। यह उन लोगों के लिए उपयोगी है जिनके पास iptables का बुनियादी ज्ञान है।

लाल

यहां - add-rules स्विच का उपयोग करके कच्चे iptables नियम को कैसे पास किया जाए, इसका एक उदाहरण है। आप - add-rule के साथ - remove-rule को बदलकर इन नियमों को आसानी से हटा सकते हैं:

$ sudo firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 80 -j ACCEPT

iptables के बारे में अधिक जानकारी के लिए, यह मार्गदर्शिका देखें: लिनक्स में सेवाओं तक दूरस्थ पहुँच को सक्षम करने के लिए एक Iptables फ़ायरवॉल कैसे सेट करें।

यदि आप iptables सिंटैक्स से परिचित नहीं हैं, तो आप फायरवॉल की " समृद्ध भाषा " का विकल्प चुन सकते हैं, ताकि अगले समझाए गए तरीके से आसान तरीके से अधिक जटिल फ़ायरवॉल नियम बना सकें।

Firewalld में समृद्ध भाषा का उपयोग कैसे करें

समृद्ध भाषा ( समृद्ध नियम के रूप में भी जाना जाता है) का उपयोग IPv4 और IPv6 के लिए अधिक जटिल फ़ायरवॉल नियम जोड़ने के लिए किया जाता है iptables सिंटैक्स के ज्ञान के बिना।

यह उन ज़ोन सुविधाओं (सेवा, पोर्ट, icmp-block, masquerade और Forward-port) का विस्तार करता है जिन्हें हमने कवर किया है। यह लॉग और कार्यों के लिए स्रोत और गंतव्य पते, लॉगिंग, क्रिया और सीमा का समर्थन करता है।

- add-rich-rule का उपयोग रिच नियम जोड़ने के लिए किया जाता है। यह उदाहरण दिखाता है कि नए IPv4 और IPv6 कनेक्शन के लिए सर्विस http और लॉग 1 प्रति मिनट ऑडिट का उपयोग करने की अनुमति कैसे दें:

$ sudo firewall-cmd --add-rich-rule='rule service name="http" audit limit value="1/m" accept'

अतिरिक्त नियम को हटाने के लिए, - add-rich-rule विकल्प को - remove-rich-rule से बदलें।

$ sudo firewall-cmd --remove-rich-rule='rule service name="http" audit limit value="1/m" accept'

यह सुविधा एक विशिष्ट आईपी पते से यातायात को अवरुद्ध करने या अनुमति देने के लिए भी अनुमति देती है। निम्न उदाहरण दिखाता है कि आईपी 10.20.1.20 से कनेक्शन कैसे अस्वीकार करें।

$ sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.254" reject'

फ़ायरवॉल में पैनिक मोड को कैसे सक्षम और अक्षम करें

आप इस मोड को आपातकालीन स्थितियों में सक्षम कर सकते हैं जहां आपके नेटवर्क वातावरण के लिए खतरा बाहर निकलता है।

पैनिक मोड को क्वेरी करने के लिए, - query-आतंक विकल्प का उपयोग करें।

$ sudo firewall-cmd --query-panic

पैनिक मोड को सक्षम करने के लिए, <कोड> - पैनिक-ऑन विकल्प का उपयोग करें। यदि आप पिंग कमांड का उपयोग करके काम कर रहे हैं जैसा कि दिखाया गया है। क्योंकि पैकेट गिरा हुआ है, इसलिए www.google.com नाम को हल नहीं किया जा सकता है, इसलिए त्रुटि प्रदर्शित होती है।

$ sudo firewall-cmd --panic-on
$ ping -c 2 www.google.com

पैनिक मोड को अक्षम करने के लिए, - आतंक-बंद विकल्प का उपयोग करें।

$ sudo firewall-cmd --panic-off

फ़ायरवॉल को लॉकडाउन कैसे करें

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

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

$ sudo firewall-cmd --lockdown-on
OR
$ sudo firewall-cmd --lockdown-off

ध्यान दें कि मुख्य कॉन्फ़िगरेशन फ़ाइल को संपादित करके इस सुविधा को सक्षम या अक्षम करने की अनुशंसा की जाती है, क्योंकि लॉकडाउन सक्षम करने पर फ़ायरवॉल- cmd लॉकडाउन श्वेतसूची पर मौजूद नहीं हो सकता है।

$ sudo vim /etc/firewalld/firewalld.conf

पैरामीटर लॉकडाउन खोजें और <कोड> नहीं (मतलब बंद) से <कोड> हां (इसका मतलब) से इसका मान बदलें।

Lockdown=yes

इस सेटिंग को स्थायी रूप से पुनः लोड करने के लिए फ़ायरवॉल।

$ sudo firewall-cmd --reload

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

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