नेटवर्क यातायात का प्रबंधन सिस्टम एडमिनिस्ट्रेटर को निपटने के लिए सबसे कठिन नौकरियों में से एक है। उसे जरूर फ़ायरवॉल कॉन्फ़िगर करें इस तरह से यह सिस्टम और उपयोगकर्ताओं की आवश्यकताओं को इनकमिंग और आउटगोइंग दोनों कनेक्शनों के लिए पूरा करेगा, बिना सिस्टम को हमलों के लिए असुरक्षित छोड़ेगा।
यह कहाँ है आईपीटेबल्स
उपयोगी होना। इप्टेबल्स एक Linux कमांड लाइन फ़ायरवॉल है जो सिस्टम प्रशासकों को विन्यास योग्य तालिका नियमों के एक सेट के माध्यम से इनकमिंग और आउटगोइंग ट्रैफ़िक को प्रबंधित करने की अनुमति देता है।
इप्टेबल्स तालिकाओं के एक सेट का उपयोग करता है जिसमें श्रृंखलाएं होती हैं जिनमें अंतर्निहित या उपयोगकर्ता परिभाषित नियमों का सेट होता है। उनके लिए धन्यवाद एक सिस्टम एडमिनिस्ट्रेटर अपने सिस्टम के नेटवर्क ट्रैफिक को ठीक से फिल्टर कर सकता है।
प्रति iptables मैनुअल, वर्तमान में 3 प्रकार की तालिकाएँ हैं:
फ़िल्टर
- यह डिफॉल्ट टेबल है, जिसमें बिल्ट इन चेन्स हैं: नेट
- एक तालिका जिसे परामर्श किया जाता है जब कोई पैकेट एक नया कनेक्शन बनाने का प्रयास करता है। इसमें निम्नलिखित अंतर्निर्मित हैं: वध करना
- इस तालिका का उपयोग पैकेट बदलने के लिए किया जाता है। कर्नेल संस्करण तक 2.4 इस तालिका में केवल दो जंजीरें थीं, लेकिन अब वे 5 हैं: इस लेख में, आप कुछ उपयोगी कमांड देखेंगे जो iptables के माध्यम से आपके Linux बॉक्स फ़ायरवॉल को प्रबंधित करने में आपकी सहायता करेंगे। इस लेख के प्रयोजन के लिए, मैं सरल आदेशों से शुरू करूंगा और अंत तक अधिक जटिल तक जाऊंगा।
सबसे पहले, आपको पता होना चाहिए कि विभिन्न लिनक्स वितरणों में iptables सेवा को कैसे प्रबंधित किया जाए। यह काफी आसान है:
सेंट/आरएचईएल 7 और फेडोरा 22+. पर # systemctl iptables शुरू करें। # systemctl iptables को रोकें। # systemctl iptables को पुनरारंभ करें।
सेंट/आरएचईएल 6/5 और फेडोरा पर # /etc/init.d/iptables प्रारंभ # /etc/init.d/iptables बंद करो। # /etc/init.d/iptables पुनरारंभ करें।
यदि आप अपने मौजूदा नियमों की जांच करना चाहते हैं, तो निम्न आदेश का उपयोग करें:
# आईपीटेबल्स -एल -एन -वी।
इसे नीचे दिए गए के समान आउटपुट वापस करना चाहिए:
चेन इनपुट (नीति ACCEPT 1129K पैकेट, 415M बाइट्स) pkts बाइट्स टारगेट ऑप्ट आउट सोर्स डेस्टिनेशन 0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 53 0 0 स्वीकार करें udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 53 0 0 स्वीकार tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 67 0 0 स्वीकार करें udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 यूडीपी डीपीटी: 67
चेन फॉरवर्ड (नीति स्वीकार 0 पैकेट, 0 बाइट्स) pkts बाइट्स लक्ष्य प्रोट ऑप्ट इन आउट सोर्स गंतव्य 0 0 सभी स्वीकार करें - * lxcbr0 0.0.0.0/0 0.0.0.0/0 0 0 सभी स्वीकार करें - lxcbr0 * 0.0.0.0/ 0 0.0.0.0/0
चेन आउटपुट (नीति 354K पैकेट स्वीकार करें, 185M बाइट्स) pkts बाइट्स टारगेट ऑप्ट इन आउट सोर्स डेस्टिनेशन
यदि आप किसी विशिष्ट तालिका के नियमों की जांच करना पसंद करते हैं, तो आप इसका उपयोग कर सकते हैं -टी
विकल्प के बाद तालिका जिसे आप जांचना चाहते हैं। उदाहरण के लिए, में नियमों की जाँच करने के लिए नेट
तालिका, आप उपयोग कर सकते हैं:
# iptables -t nat -L -v -n.
यदि आपको किसी आईपी पते से कोई असामान्य या अपमानजनक गतिविधि मिलती है, तो आप उस आईपी पते को निम्नलिखित नियम से ब्लॉक कर सकते हैं:
# iptables -एक इनपुट -s xxx.xxx.xxx.xxx -j DROP।
जहां आपको बदलने की जरूरत है "xxx.xxx.xxx.xxx"
वास्तविक आईपी पते के साथ। इस कमांड को चलाते समय बहुत सावधान रहें क्योंकि आप गलती से अपना खुद का आईपी एड्रेस ब्लॉक कर सकते हैं। NS -ए
विकल्प चयनित श्रृंखला के अंत में नियम जोड़ता है।
मामले में आप केवल ब्लॉक करना चाहते हैं टीसीपी उस आईपी पते से ट्रैफ़िक, आप इसका उपयोग कर सकते हैं -पी
विकल्प जो प्रोटोकॉल को निर्दिष्ट करता है। इस तरह कमांड इस तरह दिखेगा:
# iptables - एक इनपुट -पी टीसीपी -एस xxx.xxx.xxx.xxx -j ड्रॉप।
यदि आपने तय किया है कि अब आप विशिष्ट आईपी पते से अनुरोधों को अवरुद्ध नहीं करना चाहते हैं, तो आप निम्न आदेश के साथ अवरुद्ध नियम को हटा सकते हैं:
# iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP।
NS -डी
विकल्प चयनित श्रृंखला से एक या अधिक नियम हटाता है। यदि आप लंबे विकल्प का उपयोग करना पसंद करते हैं तो आप इसका उपयोग कर सकते हैं --हटाएं
.
कभी-कभी आप किसी विशिष्ट पोर्ट पर इनकमिंग या आउटगोइंग कनेक्शन को ब्लॉक करना चाह सकते हैं। यह एक अच्छा सुरक्षा उपाय है और आपको अपना फ़ायरवॉल सेट करते समय वास्तव में उस मामले पर विचार करना चाहिए।
किसी विशिष्ट पोर्ट उपयोग पर आउटगोइंग कनेक्शन को ब्लॉक करने के लिए:
# iptables -A OUTPUT -p tcp --dport xxx -j DROP.
आने वाले कनेक्शन का उपयोग करने की अनुमति देने के लिए:
# iptables - एक इनपुट -पी टीसीपी --dport xxx -j स्वीकार करें।
दोनों उदाहरणों में परिवर्तन "xxx"
वास्तविक बंदरगाह के साथ आप अनुमति देना चाहते हैं। अगर आप ब्लॉक करना चाहते हैं यूडीपी के बजाय यातायात टीसीपी, बस बदलें "टीसीपी"
साथ "यूडीपी"
उपरोक्त iptables नियम में।
आप उपयोग करके एक साथ कई पोर्ट की अनुमति दे सकते हैं मल्टीपोर्ट, नीचे आप इनकमिंग और आउटगोइंग दोनों कनेक्शनों के लिए ऐसा नियम पा सकते हैं:
# iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT. # iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT.
आप किसी दिए गए नेटवर्क पर विशिष्ट पोर्ट पर कुछ कनेक्शन सीमित करना चाह सकते हैं। मान लें कि आप पोर्ट पर आउटगोइंग कनेक्शन की अनुमति देना चाहते हैं 22
नेटवर्क के लिए 192.168.100.0/24
.
आप इसे इस आदेश के साथ कर सकते हैं:
# iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT.
कुछ नियोक्ता इस तक पहुंच को अवरुद्ध करना पसंद करते हैं फेसबुक उनके कर्मचारियों को। नीचे एक उदाहरण दिया गया है कि कैसे फेसबुक पर ट्रैफिक को ब्लॉक किया जाए।
ध्यान दें: यदि आप एक सिस्टम व्यवस्थापक हैं और इन नियमों को लागू करने की आवश्यकता है, तो ध्यान रखें कि आपके सहकर्मी आपसे बात करना बंद कर सकते हैं :)
सबसे पहले Facebook द्वारा उपयोग किए जाने वाले IP पते खोजें:
# होस्ट facebook.com facebook.com का पता 66.220.156.68 है।
# जोइस 66.220.156.68 | ग्रेप सीआईडीआर। सीआईडीआर: 66.220.14.0/20.
फिर आप उस फेसबुक नेटवर्क को ब्लॉक कर सकते हैं:
# iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP।
ध्यान रखें कि Facebook द्वारा उपयोग की जाने वाली IP पता श्रेणी आपके देश में भिन्न हो सकती है।
कभी-कभी आप एक सेवा के ट्रैफ़िक को दूसरे पोर्ट पर अग्रेषित करना चाह सकते हैं। आप इसे निम्न आदेश के साथ प्राप्त कर सकते हैं:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525.
उपरोक्त आदेश नेटवर्क इंटरफ़ेस पर आने वाले सभी ट्रैफ़िक को अग्रेषित करता है eth0
, पोर्ट. से 25
बायें तरफ़ मुड़ने के लिए 2525
. आप अपनी जरूरत के अनुसार बंदरगाहों को बदल सकते हैं।
कभी-कभी IP पते आपकी वेबसाइट पर वेब पोर्ट के लिए बहुत अधिक कनेक्शन का अनुरोध कर सकते हैं। इससे कई समस्याएं हो सकती हैं और ऐसी समस्याओं को रोकने के लिए, आप निम्न नियम का उपयोग कर सकते हैं:
# iptables - एक इनपुट -पी टीसीपी - पोर्ट 80 -एम सीमा - 100 / मिनट की सीमा - सीमा-विस्फोट 200 -जे स्वीकार करें।
उपरोक्त आदेश आने वाले कनेक्शन को प्रति मिनट से. तक सीमित करता है 100
और बर्स्ट की सीमा निर्धारित करता है 200
. आप अपनी विशिष्ट आवश्यकताओं के लिए सीमा और सीमा-विस्फोट को संपादित कर सकते हैं।
कुछ सिस्टम एडमिनिस्ट्रेटर सुरक्षा चिंताओं के कारण आने वाले पिंग अनुरोधों को ब्लॉक करना पसंद करते हैं। जबकि खतरा इतना बड़ा नहीं है, यह जानना अच्छा है कि इस तरह के अनुरोध को कैसे रोका जाए:
# iptables - एक इनपुट -पी आईसीएमपी -i eth0 -j ड्रॉप।
लूपबैक एक्सेस (से एक्सेस 127.0.0.1
) महत्वपूर्ण है और आपको इसे हमेशा सक्रिय रखना चाहिए:
# iptables-एक इनपुट-आई लो-जे स्वीकार करें। # iptables -A OUTPUT -o lo -j ACCEPT।
यदि आप गिराए गए पैकेट को नेटवर्क इंटरफेस पर लॉग करना चाहते हैं eth0
, आप निम्न आदेश का उपयोग कर सकते हैं:
# iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables गिराए गए पैकेट:"
आप के बाद मान बदल सकते हैं "--लॉग-उपसर्ग"
अपनी पसंद से कुछ के साथ। संदेश लॉग इन हैं /var/log/messages
और आप उनके साथ खोज सकते हैं:
# grep "आईपीटेबल्स गिराए गए पैकेट:" /var/log/messages.
आप विशिष्ट मैक पते से अपने सिस्टम तक पहुंच को ब्लॉक कर सकते हैं:
# iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP।
बेशक, आपको बदलना होगा "00:00:00:00:00:00"
वास्तविक मैक पते के साथ जिसे आप ब्लॉक करना चाहते हैं।
यदि आप दिए गए पोर्ट पर एकल आईपी पते से बहुत अधिक समवर्ती कनेक्शन स्थापित नहीं करना चाहते हैं तो आप नीचे दिए गए आदेश का उपयोग कर सकते हैं:
# iptables - एक इनपुट -पी टीसीपी --syn --dport 22 -m connlimit --connlimit-3 -j से ऊपर अस्वीकार।
उपरोक्त आदेश से अधिक की अनुमति नहीं है 3
प्रति ग्राहक कनेक्शन। बेशक, आप अलग-अलग सेवा से मेल खाने के लिए पोर्ट नंबर बदल सकते हैं। यह भी --connlimit-उपरोक्त
अपनी आवश्यकता से मेल खाने के लिए बदला जाना चाहिए।
एक बार जब आप अपने iptables नियमों को परिभाषित कर लेते हैं, तो आप समय-समय पर खोजना चाहेंगे और उन्हें बदलने की आवश्यकता हो सकती है। अपने नियमों के भीतर खोज करने का एक आसान तरीका उपयोग करना है:
# iptables -L $टेबल -v -n | ग्रेप $ स्ट्रिंग।
उपरोक्त उदाहरण में, आपको बदलना होगा $टेबल
वास्तविक तालिका के साथ जिसमें आप खोजना चाहते हैं और $स्ट्रिंग
वास्तविक स्ट्रिंग के साथ जिसके लिए आप खोज रहे हैं।
यहाँ एक उदाहरण है:
# iptables -L INPUT -v -n | ग्रेप १९२.१६८.०.१००।
iptables के साथ, आप अपनी खुद की चेन को परिभाषित कर सकते हैं और उसमें कस्टम नियम स्टोर कर सकते हैं। एक श्रृंखला को परिभाषित करने के लिए, उपयोग करें:
# iptables -N कस्टम-फ़िल्टर।
अब आप जांच सकते हैं कि आपका नया फ़िल्टर है या नहीं:
# आईपीटेबल्स -एल।
चेन इनपुट (नीति स्वीकार) लक्ष्य विरोध ऑप्ट स्रोत गंतव्य।
चेन फॉरवर्ड (नीति स्वीकार) लक्ष्य विरोध ऑप्ट स्रोत गंतव्य
चेन आउटपुट (नीति स्वीकार) लक्ष्य विरोध ऑप्ट स्रोत गंतव्य
जंजीर कस्टम फ़िल्टर(0 संदर्भ) लक्ष्य विरोध ऑप्ट स्रोत गंतव्य
यदि आप अपनी फ़ायरवॉल श्रृंखला को फ्लश करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:
# आईपीटेबल्स -एफ।
आप विशिष्ट तालिका से श्रृंखलाओं को फ्लश कर सकते हैं:
# आईपीटेबल्स-टी नेट-एफ।
तुम बदल सकते हो "नट"
वास्तविक तालिका के साथ आप किन जंजीरों को फ्लश करना चाहते हैं।
यदि आप अपने फ़ायरवॉल नियमों को सहेजना चाहते हैं, तो आप इसका उपयोग कर सकते हैं iptables-सेव
आदेश। आप अपने नियमों को फ़ाइल में सहेजने और संग्रहीत करने के लिए निम्न का उपयोग कर सकते हैं:
# iptables-save > ~/iptables.rules.
यह आप पर निर्भर करता है कि आप फ़ाइल को कहाँ संग्रहीत करेंगे और आप इसे कैसे नाम देंगे।
यदि आप iptables नियमों की सूची को पुनर्स्थापित करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं iptables-पुनर्स्थापना
. आदेश इस तरह दिखता है:
# iptables-पुनर्स्थापनाबेशक आपकी नियम फ़ाइल का पथ भिन्न हो सकता है।
21. पीसीआई अनुपालन के लिए सेटअप आईपीटेबल नियम
कुछ सिस्टम एडमिनिस्ट्रेटर को अपने सर्वर को पीसीआई कंप्लिएंट होने के लिए कॉन्फ़िगर करने की आवश्यकता हो सकती है। विभिन्न पीसीआई अनुपालन विक्रेताओं द्वारा कई आवश्यकताएं हैं, लेकिन कुछ सामान्य हैं।
कई मामलों में, आपके पास एक से अधिक IP पते होने चाहिए। आपको साइट के आईपी पते के लिए नीचे दिए गए नियमों को लागू करना होगा। नीचे दिए गए नियमों का उपयोग करते समय अतिरिक्त सावधानी बरतें और उनका उपयोग तभी करें जब आप सुनिश्चित हों कि आप क्या कर रहे हैं:
# iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP।यदि आप cPanel या इसी तरह के कंट्रोल पैनल का उपयोग करते हैं, तो आपको इसके पोर्ट को भी ब्लॉक करना पड़ सकता है। यहाँ एक उदाहरण है:
# iptables -I in_sg -d DEDI_IP -p tcp -m मल्टीपोर्ट --dports 2082,2083,2095,2096,2525,2086,2087 -j DROP।ध्यान दें: यह सुनिश्चित करने के लिए कि आप अपने पीसीआई विक्रेता की आवश्यकताओं को पूरा करते हैं, उनकी रिपोर्ट को ध्यान से देखें और आवश्यक नियम लागू करें। कुछ मामलों में आपको कुछ बंदरगाहों पर भी यूडीपी यातायात को अवरुद्ध करने की आवश्यकता हो सकती है।
22. स्थापित और संबंधित कनेक्शन की अनुमति दें
चूंकि नेटवर्क ट्रैफ़िक इनकमिंग और आउटगोइंग पर अलग है, इसलिए आप स्थापित और संबंधित इनकमिंग ट्रैफ़िक को अनुमति देना चाहेंगे। आने वाले कनेक्शन के लिए इसके साथ करें:
# iptables -एक इनपुट -एम conntrack --ctstate स्थापित, संबंधित -j स्वीकार करें।आउटगोइंग उपयोग के लिए:
# iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT.23. IPtables में अमान्य पैकेट छोड़ें
कुछ नेटवर्क पैकेट को अमान्य के रूप में चिह्नित करना संभव है। कुछ लोग उन पैकेजों को लॉग करना पसंद कर सकते हैं, लेकिन अन्य उन्हें छोड़ना पसंद करते हैं। पैकेटों को अमान्य करने के लिए, आप इसका उपयोग कर सकते हैं:
# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP24. नेटवर्क इंटरफेस पर ब्लॉक कनेक्शन
कुछ सिस्टम में एक से अधिक नेटवर्क इंटरफ़ेस हो सकते हैं। आप उस नेटवर्क इंटरफेस तक पहुंच को सीमित कर सकते हैं या कुछ आईपी पते से कनेक्शन ब्लॉक कर सकते हैं।
उदाहरण के लिए:
# iptables -एक इनपुट -i eth0 -s xxx.xxx.xxx.xxx -j DROP।परिवर्तन "xxx.xxx.xxx.xxx" वास्तविक आईपी पते (या नेटवर्क) के साथ जिसे आप ब्लॉक करना चाहते हैं।
25. IPTables के माध्यम से आउटगोइंग मेल अक्षम करें
यदि आपका सिस्टम कोई ईमेल नहीं भेज रहा है, तो आप SMTP पोर्ट पर आउटगोइंग पोर्ट को ब्लॉक कर सकते हैं। उदाहरण के लिए आप इसका उपयोग कर सकते हैं:
# iptables -A OUTPUT -p tcp --dports 25,465,587 -j रिजेक्ट।निष्कर्ष
इप्टेबल्स एक शक्तिशाली फ़ायरवॉल है जिससे आप आसानी से लाभ उठा सकते हैं। प्रत्येक सिस्टम एडमिनिस्ट्रेटर के लिए कम से कम यह सीखना महत्वपूर्ण है iptables की मूल बातें. यदि आप iptables और इसके विकल्पों के बारे में अधिक विस्तृत जानकारी प्राप्त करना चाहते हैं, तो इसके मैनुअल को पढ़ने की अत्यधिक अनुशंसा की जाती है:
# आदमी iptables।अगर आपको लगता है कि हमें इस सूची में और कमांड जोड़ने चाहिए, तो कृपया उन्हें नीचे टिप्पणी अनुभाग में सबमिट करके हमारे साथ साझा करें।