CentOS 7 में FirewallD ट्रैफ़िक फ़िल्टरिंग नियमों को कॉन्फ़िगर करने के लिए प्रकट हुआ है। यह iptables नियमों को प्रबंधित करने के लिए उपयोग किया जाने वाला उपकरण है। CentOS 8 nftables का उपयोग कर रहा है मानक iptables पैकेट फ़िल्टरिंग सेवा के बजाय फ्रेमवर्क, और जब आप फ़ायरवॉल नियमों को फ़ायरवॉल में कॉन्फ़िगर करते हैं, तो आप वास्तव में nftables को कॉन्फ़िगर करते हैं। इस लेख में हम विचार करेंगे कि Linux CentOS 8 (और CentOS 7) चलाने वाले सर्वर पर फ़ायरवॉल को कैसे स्थापित और कॉन्फ़िगर किया जाए और इस फ़ायरवॉल की मुख्य अवधारणाएँ।
फ़ायरवॉलD एक फ़ायरवॉल सेवा है जिसका उपयोग सर्वर को अवांछित ट्रैफ़िक से बचाने के लिए किया जाता है। यह गतिशील फ़ायरवॉल नियम प्रबंधन (पुनरारंभ किए बिना) का समर्थन करता है। यह iptables और nftables के लिए एक इंटरफेस के रूप में काम करता है। FirewallD का उपयोग लगभग सभी Linux डिस्ट्रोस में किया जा सकता है।
फ़ायरवॉल की बुनियादी अवधारणाएं:क्षेत्र और नियम
फ़ायरवॉल . की स्थापना और कॉन्फ़िगरेशन से पहले , हम सीखेंगे कि विभिन्न कनेक्शनों पर विश्वास के स्तर को निर्धारित करने के लिए किन क्षेत्रों का उपयोग किया जाता है। आप फ़ायरवॉल . पर अलग-अलग फ़िल्टरिंग नियम लागू कर सकते हैं ज़ोन, पूर्वनिर्धारित सेवाओं, प्रोटोकॉल या पोर्ट, पोर्ट फ़ॉरवर्डिंग और रिच-नियमों के लिए सक्रिय फ़ायरवॉल विकल्प सेट करें।
फ़ायरवॉल ज़ोन पर लागू नियमों के आधार पर ज़ोन द्वारा इनबाउंड ट्रैफ़िक को फ़िल्टर कर रहा है। यदि प्रेषक का आईपी पता किसी क्षेत्र के नियमों से मेल खाता है, तो पैकेट इस क्षेत्र के माध्यम से भेजा जाएगा। यदि IP पता सर्वर पर कॉन्फ़िगर किए गए किसी भी ज़ोन से मेल नहीं खाता है, तो डिफ़ॉल्ट ज़ोन पैकेट को प्रोसेस करेगा। जब आप फ़ायरवॉल स्थापित करते हैं, तो डिफ़ॉल्ट क्षेत्र को सार्वजनिक कहा जाता है।
फ़ायरवॉल में विभिन्न सेवाओं के लिए पूर्व-कॉन्फ़िगर अनुमतियों वाले कुछ क्षेत्र हैं। आप इन सेटिंग्स का उपयोग कर सकते हैं या अपने स्वयं के क्षेत्र बना सकते हैं। जब आप फ़ायरवॉल स्थापित करते हैं (/usr/lib/firewalld/zones/ में स्थित) डिफ़ॉल्ट ज़ोन की सूची यहाँ दी गई है:
छोड़ें | इसमें विश्वास का न्यूनतम स्तर होता है। सभी इनबाउंड कनेक्शन बिना किसी प्रतिक्रिया के अवरुद्ध हैं, केवल आउटबाउंड कनेक्शन की अनुमति है। |
अवरुद्ध करें | यह क्षेत्र पिछले वाले के समान है, लेकिन आने वाले अनुरोधों को icmp-host-प्रतिबंधित के साथ अस्वीकार कर दिया गया है IPv4 या icmp6-adm-प्रतिबंधित . के लिए संदेश IPv6 के लिए संदेश। |
सार्वजनिक | इसका उपयोग सार्वजनिक, अविश्वसनीय नेटवर्क के लिए किया जाता है। आप व्यक्तिगत रूप से आने वाले कनेक्शन की अनुमति दे सकते हैं। |
बाहरी | यह किसी भी बाहरी नेटवर्क को संदर्भित करता है जब आपके फ़ायरवॉल को गेटवे के रूप में उपयोग किया जाता है। इसका उपयोग NAT को छिपाने के लिए किया जाता है, इसलिए आपका आंतरिक नेटवर्क निजी रहता है, लेकिन उपलब्ध रहता है। |
आंतरिक | यह बाहरी क्षेत्र का विलोम है। मेजबान के पास पर्याप्त विश्वास स्तर है, कई अतिरिक्त सेवाएं उपलब्ध हैं। |
dmz | इस क्षेत्र का उपयोग असैन्यीकृत क्षेत्र (DMZ) के कंप्यूटरों के लिए किया जाता है और इसमें ऐसे पृथक कंप्यूटर शामिल हैं जिनकी आपके नेटवर्क तक पहुंच नहीं है। केवल चयनित इनकमिंग कनेक्शन की अनुमति है। |
कार्य | यह आपके काम करने वाले कंप्यूटरों के लिए एक क्षेत्र है (नेटवर्क में अधिकांश कंप्यूटर विश्वसनीय हैं) |
घर | यह एक घरेलू नेटवर्क को संदर्भित करता है। आप अधिकांश अन्य कंप्यूटरों पर भरोसा कर सकते हैं, लेकिन केवल चयनित आने वाले कनेक्शन समर्थित हैं। |
विश्वसनीय | नेटवर्क के सभी कंप्यूटर विश्वसनीय होते हैं। यह सबसे खुला विकल्प है जिसके लिए जिम्मेदार उपयोग की आवश्यकता है। |
फ़ायरवॉल नियमों के दो सेट का उपयोग करता है - स्थायी और रनटाइम। सर्वर के पुनरारंभ होने तक रनटाइम नियम सक्रिय हैं। डिफ़ॉल्ट रूप से, आप जिन नियमों को फ़ायरवॉल में जोड़ते हैं रनटाइम . माना जाता है . स्थायी नियम जोड़ने के लिए, आपको –स्थायी . का उपयोग करना होगा झंडा। सर्वर के पुनरारंभ होने के बाद ये नियम लागू होंगे।
CentOS में FirewallD को कैसे स्थापित और सक्षम करें?
CentOS में OS स्थापना के दौरान डिफ़ॉल्ट रूप से 7/8 फ़ायरवॉल स्थापित होता है। यदि आपने फ़ायरवॉल को हटा दिया है और इसे वापस स्थापित करना चाहते हैं, तो आप मानक yum/dnf पैकेज मैनेजर का उपयोग कर सकते हैं:
# yum install firewalld -y
— Centos 7 पर# dnf install firewalld -y
— सेंटोस 8
फ़ायरवॉल डेमॉन को स्वचालित रूप से प्रारंभ करने के लिए इसे स्टार्टअप में जोड़ें:
# systemctl enable firewalld
और इसे शुरू करें:
# systemctl start firewalld
सेवा की स्थिति जांचें:
# systemctl status firewalld
● फ़ायरवॉलड.सर्विस - फ़ायरवॉलड - डायनेमिक फ़ायरवॉल डेमनलोडेड:लोडेड (/usr/lib/systemd/system/firewalld.service; सक्षम; विक्रेता प्रीसेट:सक्षम) सक्रिय:सक्रिय (चल रहा है) दस्तावेज़:आदमी:फ़ायरवॉल्ड(1) मुख्य पीआईडी:13646 (फ़ायरवॉल्ड) सीग्रुप:/system.slice/firewalld.service└─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopidsystemd[1]:फ़ायरवॉल शुरू करना - डायनेमिक फ़ायरवॉल डेमॉन ...
या इसे इस कमांड का उपयोग करके करें:
# firewall-cmd --state
# firewall-cmd --state
फ़ायरवॉल डी नियम प्रबंधित करना
डिफ़ॉल्ट फ़ायरवॉलडी नियम
फायरवॉल नियमों को कॉन्फ़िगर करने से पहले, आपको यह जांचना चाहिए कि डिफ़ॉल्ट रूप से किस क्षेत्र का उपयोग किया जाता है:
# firewall-cmd --get-default-zone
चूंकि हमने अभी फ़ायरवॉल स्थापित किया है और इसे अभी तक कॉन्फ़िगर नहीं किया है, डिफ़ॉल्ट क्षेत्र सार्वजनिक . है ।
सक्रिय क्षेत्र की जाँच करें। केवल एक ही क्षेत्र है - सार्वजनिक:
# firewall-cmd --get-active-zones
पब्लिकइंटरफेस:eth0
जैसा कि हम देख सकते हैं, eth0 इंटरफ़ेस को सार्वजनिक . द्वारा प्रबंधित किया जाता है क्षेत्र।
आप CentOS नेटवर्क इंटरफेस की सूची इस प्रकार प्रदर्शित कर सकते हैं:
# ip link show
या:# nmcli device status
सक्रिय क्षेत्रों के नियम देखने के लिए, कमांड का उपयोग करें:
# firewall-cmd --list-all
इस लिस्टिंग में, आप देख सकते हैं कि डीएचसीपी क्लाइंट और एसएसएच से संबंधित सामान्य ऑपरेशन ज़ोन में जोड़े गए हैं।
उपलब्ध क्षेत्र
सभी जोनों की सूची देखने के लिए, यह कमांड चलाएँ:
# firewall-cmd --get-zones
मुझे निम्नलिखित सूची मिली है:
dmz ड्रॉप बाहरी घर आंतरिक सार्वजनिक विश्वसनीय कार्य ब्लॉक करें
किसी विशिष्ट क्षेत्र के नियम देखने के लिए, -ज़ोन ध्वज को कमांड में जोड़ें:
# firewall-cmd --zone=home --list-all
होमटारगेट:डिफॉल्टिकएमपी-ब्लॉक-इनवर्जन:नोइंटरफेस:सोर्स:सर्विसेज:डीएचसीपीवी6-क्लाइंट एमडीएनएस सांबा-क्लाइंट एसएसएचपोर्ट्स:प्रोटोकॉल:मास्करेड:नोफोरवर्ड-पोर्ट्स:सोर्स-पोर्ट्स:आईसीएमपी-ब्लॉक्स:रिच रूल्स:
आप सभी क्षेत्रों के नियम देख सकते हैं:
# firewall-cmd --list-all-zones
डिफ़ॉल्ट क्षेत्र कैसे बदलें?
डिफ़ॉल्ट रूप से, सभी नेटवर्क इंटरफेस सार्वजनिक . में स्थित होते हैं ज़ोन, लेकिन उन्हें कमांड के साथ किसी भी ज़ोन में ले जाया जा सकता है:
# firewall-cmd --zone=home —change-interface=eth0
-क्षेत्र= . के बाद इच्छित क्षेत्र निर्दिष्ट करें पैरामीटर।
डिफ़ॉल्ट ज़ोन को होम में बदलने के लिए, यह कमांड चलाएँ:
# firewall-cmd --set-default-zone=home
FirewallD में ऐप नियम कैसे जोड़ें?
किसी ऐप के लिए पोर्ट खोलने के लिए, आप सेवा को अपवाद के रूप में जोड़ सकते हैं। यहां उपलब्ध सेवाओं की सूची प्रदर्शित करने का तरीका बताया गया है:
# firewall-cmd --get-services
आउटपुट में बहुत सारी सेवाएँ होंगी। किसी सेवा के बारे में विस्तृत जानकारी उसके XML . में निहित है फ़ाइल। ये फ़ाइलें /usr/lib/firewalld/services. . में स्थित हैं
उदाहरण के लिए:
# cd /usr/lib/firewalld/services
# cat smtp.xml
Mail (SMTP) यह विकल्प आने वाली SMTP मेल डिलीवरी की अनुमति देता है। यदि आपको दूरस्थ होस्ट को मेल डिलीवर करने के लिए सीधे आपकी मशीन से कनेक्ट करने की अनुमति देने की आवश्यकता है, तो इस विकल्प को सक्षम करें। यदि आप अपने मेल को अपने ISP के सर्वर से POP3 या IMAP द्वारा एकत्रित करते हैं, या यदि आप फ़ेचमेल जैसे टूल का उपयोग करते हैं, तो आपको इसे सक्षम करने की आवश्यकता नहीं है। ध्यान दें कि अनुचित तरीके से कॉन्फ़िगर किया गया SMTP सर्वर दूरस्थ मशीनों को स्पैम भेजने के लिए आपके सर्वर का उपयोग करने की अनुमति दे सकता है।
XML फ़ाइल में सेवा विवरण, प्रोटोकॉल और फ़ायरवॉल में खोले जाने वाले पोर्ट की संख्या होती है।
नियम जोड़ते समय, आप –ऐड-सर्विस . का उपयोग कर सकते हैं एक विशिष्ट सेवा के लिए फ़ायरवॉल पहुँच की अनुमति देने के लिए पैरामीटर:
# firewall-cmd --zone=public --add-service=http
# firewall-cmd --zone=public --add-service=https
नियम जोड़ने के बाद, आप यह सुनिश्चित कर सकते हैं कि सेवाओं को निर्दिष्ट क्षेत्र में जोड़ा गया है:
# firewall-cmd --zone=public --list-services
dhcpv6-client http https ssh
यदि आप नियमों को स्थायी बनाना चाहते हैं, तो –स्थायी . का उपयोग करें उन्हें जोड़ते समय पैरामीटर।
किसी सेवा को क्षेत्र से हटाने के लिए:
# firewall-cmd --permanent --zone=public --remove-service=http
# firewall-cmd --zone=public --permanent --list-services
dhcpv6-client https ssh test
यदि आप अपनी सेवा को yj अपवादों में जोड़ना चाहते हैं, तो आप एक XML . बना सकते हैं स्वयं फ़ाइल करें और वहां डेटा निर्दिष्ट करें। आप किसी भी सेवा से डेटा कॉपी कर सकते हैं और नाम, विवरण और पोर्ट नंबर बदल सकते हैं।
कॉपी smtp.xml उपयोगकर्ता सेवाओं के लिए निर्देशिका में:
# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services
फ़ाइल में सेवा विवरण बदलें।
XML फ़ाइल का नाम भी बदला जाना चाहिए (मैंने अपनी सेवा को परीक्षण . कहा है ) फिर फ़ायरवॉल को पुनरारंभ करें और सुनिश्चित करें कि आपकी सेवा सूची में दिखाई देती है:
# firewall-cmd --get-services
syslog-tls टेलनेट टेस्ट tftp
अब आप सेवा को किसी भी क्षेत्र में जोड़ सकते हैं:
# firewall-cmd --zone=public --add-service=test --permanent
# firewall-cmd --zone=public --permanent --list-services
dhcpv6-client http https ssh test
यदि आपको सूची में कोई सेवा नहीं मिली है, तो आप इस आदेश का उपयोग करके फ़ायरवॉल में अपना इच्छित पोर्ट खोल सकते हैं:
# firewall-cmd --zone=public —add-port=77/tcp
— टीसीपी खोलता है पोर्ट 77# firewall-cmd --zone=public —add-port=77/udp
— यूडीपी खोलता है पोर्ट 77# firewall-cmd --zone=public —add-port=77-88/udp
— यूडीपी खोलता है पोर्ट रेंज 77-88# firewall-cmd --zone=public —list-ports
- अनुमत बंदरगाहों की सूची प्रदर्शित करता है
ICMP अनुरोधों को ब्लॉक/अनुमति देने के लिए:
# firewall-cmd --zone=public --add-icmp-block=echo-reply
# firewall-cmd --zone= public --remove-icmp-block=echo-reply
जोड़ा गया पोर्ट निकालने के लिए:# firewall-cmd --zone=public —remove-port=77/udp
— UDP . के लिए रनटाइम नियम हटाता है पोर्ट 77
# firewall-cmd --permanent --zone=public —remove-port=77/udp
— स्थायी नियम हटाता है
FirewallD में एक नया क्षेत्र कैसे बनाएं?
आप अपना खुद का क्षेत्र बना सकते हैं (मैं इसे हमारा . कहूंगा ):
# firewall-cmd --permanent --new-zone=our
एक नया ज़ोन बनाने के बाद, जैसे कोई सेवा बनाने के बाद, आपको फ़ायरवॉल्ड . को पुनरारंभ करना होगा :
# firewall-cmd --reload
# firewall-cmd --get-zones
dmz ड्रॉप बाहरी घर आंतरिक हमारे सार्वजनिक विश्वसनीय कार्य को ब्लॉक करें
हमारे जोन उपलब्ध है। आप इसमें सेवाएं जोड़ सकते हैं या कुछ पोर्ट खोल सकते हैं।
फ़ायरवॉल:आईपी पते कैसे ब्लॉक करें और अपवाद कैसे बनाएं
आप फ़ायरवॉल अपवादों में विश्वसनीय IP पते जोड़ सकते हैं या अवांछित IP पतों को ब्लॉक कर सकते हैं।
IP पता जोड़ने के लिए (उदा., 8.8.8.8) o फ़ायरवॉल का उपयोग करके आपके सर्वर पर अपवाद, यह कमांड चलाएँ:
# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="8.8.8.8" accept'
क्षेत्र की जाँच करें और सुनिश्चित करें कि आईपी पता अमीर-नियमों में अपवादों में जोड़ा गया है:
# firewall-cmd --zone=public --list-all
किसी IP पते को ब्लॉक करने के लिए, स्वीकार करें . को बदलें अस्वीकार . के साथ :
# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="8.8.4.4" reject'
# firewall-cmd --zone=public --list-all
आप किसी सेवा को केवल विशिष्ट आईपी पते से अनुरोध स्वीकार करने की अनुमति दे सकते हैं:
#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="https" accept'
यदि आप अपने सर्वर के सभी अनुरोधों को तुरंत ब्लॉक करना चाहते हैं, तो पैनिक कमांड का उपयोग करें:
# firewall-cmd --panic-on
आप इस कमांड से पैनिक मोड को डिसेबल कर सकते हैं:
# firewall-cmd --panic-off
या अपने सर्वर को पुनरारंभ करके।
आप अपने फायरवॉल कॉन्फ़िगरेशन को ब्लॉक कर सकते हैं ताकि रूट विशेषाधिकार वाली स्थानीय सेवाएं आपके द्वारा बनाए गए फ़ायरवॉल नियमों को नहीं बदल सकें:
# firewall-cmd --lockdown-on
लॉकडाउन मोड को अक्षम करने के लिए:
# firewall-cmd --lockdown-off
FirewallD के साथ पोर्ट फ़ॉरवर्डिंग को कॉन्फ़िगर करना
आप फ़ायरवॉल में पोर्ट फ़ॉरवर्डिंग नियम बना सकते हैं। TCP पोर्ट 443 से 9090 तक अग्रेषित करने के लिए:
# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent
पोर्ट फ़ॉरवर्डिंग नियम को हटाने के लिए:
# firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090