Ubuntu 16.04 पर आसान IPTables कॉन्फ़िगरेशन और उदाहरण

परिचय

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

sudo apt-get install iptables iptables-persistent

स्थापना के बाद, यदि आपसे पूछा जाए कि क्या आपके वर्तमान नियमों को सहेजना है, तो यह फिलहाल मायने नहीं रखता है क्योंकि आप बाद में नए नियमों को हटाने या बनाने जा रहे हैं।

टिप्स

आप अपने पोर्ट को खोलने या बंद करने के लिए परीक्षण करने के लिए netcatकमांड ( अपने सर्वर से अलग कंप्यूटर पर ) का उपयोग कर सकते हैं ।

nc -z -w5 -v SERVER_IP PORT
  • nc netcat कमांड है।
  • -z बस पेलोड के बिना एक पैकेट भेजें।
  • -w5 प्रतिक्रिया के लिए 5 सेकंड तक प्रतीक्षा करें।
  • -v वाचाल प्रकार।
  • SERVER_IPअपने सर्वर पते से बदलें ।
  • PORTयदि आप इसे खोलना चाहते हैं तो पोर्ट के साथ बदलें (उदाहरण के लिए 22)।

अपने सर्वर पर आप यह netstatदेखने के लिए कमांड का उपयोग कर सकते हैं कि वर्तमान में कौन से पोर्ट कनेक्शन के लिए सुन रहे हैं।

sudo netstat -tulpn

नोट: यद्यपि netstatआप जिन पोर्ट के साथ काम करना चाहते हैं, उन्हें ढूंढना एक आसान तरीका है, आपको उन अनुप्रयोगों के बारे में पता होना चाहिए जो आपने वर्तमान में अपने सर्वर पर इंस्टॉल किए हैं और कौन से पोर्ट सुन रहे हैं, आपको आउटपुट में प्रत्येक पोर्ट को खोजने की अनुमति नहीं हैnetstat

वाक्य - विन्यास

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTINPUTश्रृंखला में एक नियम जोड़ें , एक श्रृंखला नियमों का एक समूह है, जिन्हें हम इस गाइड पर सबसे अधिक उपयोग करते हैं INPUT, OUTPUTऔर PREROUTING
  • -p tcpसेट tcpप्रोटोकॉल इस नियम, आप भी इस तरह के रूप में अन्य प्रोटोकॉल का उपयोग कर सकते हैं के लिए लागू होगी के रूप में udp, icmpया all
  • -m tcptcpमॉड्यूल का उपयोग करें । iptablesमॉड्यूल के माध्यम से अतिरिक्त सुविधाओं का समर्थन करता है, जिनमें से कुछ पहले से ही iptablesऔर अन्य जैसे कि geoipमॉड्यूल के साथ पूर्वस्थापित हैं ।
  • --dport 22--पहले से उपयोग किए गए मॉड्यूल के लिए अतिरिक्त विकल्पों के साथ शुरू होने वाले कमांड इंगित करते हैं, इस मामले में हम tcpमॉड्यूल को केवल पोर्ट पर लागू करने के लिए कहेंगे 22
  • -m geoipgeoipमॉड्यूल का उपयोग करें । यह देश के आधार पर पैकेट को सीमित करेगा (चरण 5 पर अधिक जानकारी)।
  • --src-cc PEgeoipपेरू से आने वाले पैकेट को सीमित करने के लिए मॉड्यूल को बताएं । अधिक देश कोड के लिए ISO 3166 country codesइंटरनेट पर खोज करते हैं ।
  • -j ACCEPT-jतर्क कहता है iptablesक्या हुआ अगर एक पैकेट की कमी पिछले तर्क में निर्दिष्ट से मेल खाता है क्या करना है। इस मामले में यह ACCEPTउन पैकेट, अन्य विकल्प हैं REJECT, DROPऔर अधिक होगा। आप iptables jump targetsइंटरनेट पर खोज कर अधिक विकल्प पा सकते हैं ।

1. मूल बातें

सभी नियमों को सूचीबद्ध करें।

sudo iptables -L

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

sudo iptables -S

एक विशिष्ट नियम को हटाने के लिए एक नियम चुनें sudo iptables -Sऔर उसके -Aसाथ बदलें -D

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

INPUTश्रृंखला में सभी गिने हुए नियमों को सूचीबद्ध करें ।

sudo iptables -L INPUT --line-numbers

एक क्रमांकित नियम हटाएं।

sudo iptables -D INPUT 2

सभी नियमों को साफ करने के लिए।

sudo iptables -F

चेतावनी: यदि आप SSH से जुड़े हैं तो आप कनेक्शन खो सकते हैं

OUTPUTश्रृंखला में केवल नियम स्पष्ट करें ।

sudo iptables -F OUTPUT

2. प्रारंभिक नियम बनाएं

इंटरफ़ेस SSHपर अनुमति देंeth0

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 किसी भी इंटरफ़ेस से इस कमांड को हटाने की अनुमति देने के लिए एक विशिष्ट इंटरफ़ेस पर नियम लागू करें।

आने वाले पैकेट को एक विशिष्ट आईपी (यानी 10.0.3.1/32) तक सीमित करने के लिए ।

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 कनेक्शन से अनुमति देने के लिए एक IP / सबनेट निर्दिष्ट करता है।

डिफ़ॉल्ट श्रृंखला नियम सेट करें।

चेतावनी: आगे बढ़ने से पहले सुनिश्चित करें कि आपने रिमोट सर्वर पर काम कर रहे सही एसएसएच नियमों को लागू किया है

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP सभी आने वाले पैकेटों से इनकार करते हैं (अर्थात कोई भी आपके चलने वाले सर्वर जैसे Apache, SQL, आदि से कनेक्ट नहीं हो पाएगा)।
  • -P FORWARD DROP सभी अग्रेषित पैकेट से इनकार करता है (अर्थात जब आप अपने सिस्टम को राउटर के रूप में उपयोग कर रहे हैं)।
  • -P OUTPUT ACCEPTसभी आउटगोइंग पैकेट (अर्थात जब आप HTTPअनुरोध करते हैं)।

लूपबैक इंटरफ़ेस ( अनुशंसित ) पर सभी ट्रैफ़िक को अनुमति दें ।

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. नियम लगातार बनाये रखें

वर्तमान iptablesनियमों को बचाएं ।

sudo netfilter-persistent save
sudo netfilter-persistent reload

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

sudo dpkg-reconfigure iptables-persistent

4. जावक कनेक्शन की अनुमति दें

DNS प्रश्नों की अनुमति दें।

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

पैकेट और stateअनुमति के लिए मॉड्यूल का उपयोग करें ।RELATEDESTABLISHED

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

वांछित बंदरगाहों की अनुमति दें; इस मामले में, HTTPबंदरगाहों।

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

अधिक पोर्ट जो आप उपयोग करना चाहते हैं।

  • FTP: पोर्ट 21 पर tcp
  • HTTPS: पोर्ट 443 पर tcp
  • DHCP: बंदरगाह 67 पर udp
  • NTP: पोर्ट 123 पर udp

नोट: यदि आप अनुमति देना चाहते हैं तो अनुमति apt-getदेना आवश्यक हो सकता है FTPऔरHTTPS

केवल RELATEDऔर पहले से ही ESTABLISHEDकनेक्शन के लिए लौटाए गए ट्रैफ़िक को अनुमति दें ( अनुशंसित है क्योंकि कभी-कभी द्विदिश संचार की आवश्यकता होती है)।

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
अन्य उपयोगी नियम

बाहर से पिंग अनुरोधों की अनुमति दें।

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

पर आगे यातायात eth0बंदरगाह 2200करने के लिए 10.0.3.21:22(उपयोगी अगर आपको लगता है कि एक कंटेनर के अंदर चल रहा है एक SSH सर्वर का पर्दाफाश करना चाहते हैं)।

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

यदि आप SSH का उपयोग करके अपने सर्वर पर सफलतापूर्वक लॉगिन करते हैं, तो एक स्थायी कनेक्शन बनाया जाएगा (यानी 1 घंटे से अधिक के लिए भी कनेक्ट होने पर भी कोई नया कनेक्शन नहीं)। यदि आप विफल हो जाते हैं और फिर से लॉगिन करने का प्रयास करते हैं, तो एक नया कनेक्शन बनाया जाएगा। यह प्रति घंटे नए कनेक्शन को सीमित करके निरंतर SSH लॉगिन प्रयासों को अवरुद्ध करेगा।

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

बंदरगाह पर सभी अनुरोधों को पुन: निर्देशित 443बंदरगाह के लिए 4430(उपयोगी अगर आप बंदरगाह के लिए बाध्य करने के लिए चाहते हैं 443के बिना root)।

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 नेटवर्क इंटरफ़ेस।
  • -m geoip देश ब्लॉक मॉड्यूल (चरण 5 देखें)।

चेतावनी: उपयोग न करें lo, OS लूपबैक इंटरफ़ेस पर पुनर्निर्देशित सभी पैकेटों को छोड़ देगा

5. पूरे देशों को अनुमति दें या ब्लॉक करें

5.1 स्थापित करें xtables-addons

आप xtables-addonsविभिन्न तरीकों का उपयोग करके मॉड्यूल स्थापित कर सकते हैं, स्थापना विधि का उपयोग करने के लिए स्वतंत्र महसूस करें जो आपके लिए सबसे अच्छा काम करता है।

  • का उपयोग कर स्थापित करें apt-get

    sudo apt-get install xtables-addons-common
    
  • का उपयोग कर स्थापित करें module-assistant

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • स्रोत से स्थापित करें

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

एक "देश" डेटाबेस बनाएँ।

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

अपने सिस्टम को रिबूट करें।

sudo reboot

बाद xtables-addonsसफलतापूर्वक स्थापित हो गया है, पहले रिबूट के बाद, चलाने depmodअन्यथा देश अवरुद्ध ठीक से काम नहीं करेगा (यह केवल पहली बार के लिए आवश्यक है)।

sudo depmod 

डेटाबेस को मासिक रूप /etc/cron.monthly/geoip-updaterसे अपडेट करने के लिए एक स्क्रिप्ट बनाएं geoip

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

/etc/cron.monthly/geoip-updaterनिष्पादन योग्य बनाएं ।

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 उदाहरण के नियम

_Note: यदि आप iptables: No chain/target/match by that nameकिसी geoipनियम को लागू करने का प्रयास करते समय कोई त्रुटि प्राप्त कर रहे हैं , तो यह संभव है कि xtables-addonsसही तरीके से स्थापित नहीं किया गया हो। एक और स्थापना विधि का प्रयास करें।

चीन, हांगकांग, रूस और कोरिया से आने वाले सभी पैकेटों को ब्लॉक करें।

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

80उपरोक्त देशों को छोड़कर हर जगह से पोर्ट पर आने वाले पैकेट की अनुमति दें ।

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

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

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

443केवल पेरू से बंदरगाह पर आने वाले पैकेट की अनुमति दें ।

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT


Leave a Comment

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

LiteCart PHP, jQuery और HTML में लिखा गया एक स्वतंत्र और ओपन सोर्स शॉपिंग कार्ट प्लेटफॉर्म है। यह ई-कॉमर्स सॉफ्टवेअर का उपयोग करने के लिए एक सरल, हल���का और आसान है

डेबियन पर सेटअप NFS शेयर

डेबियन पर सेटअप NFS शेयर

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

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

एक अलग प्रणाली का उपयोग? माटोमो (पूर्व में पिविक) एक ओपन सोर्स एनालिटिक्स प्लेटफॉर्म है, जो गूगल एनालिटिक्स का एक खुला विकल्प है। Matomo स्रोत को होस्ट किया गया है

Linux पर एक TeamTalk Server सेटअप करें

Linux पर एक TeamTalk Server सेटअप करें

टीमटॉक एक कॉन्फ्रेंसिंग प्रणाली है जो उपयोगकर्ताओं को उच्च-गुणवत्ता वाले ऑडियो / वीडियो वार्तालाप, टेक्स्ट चैट, स्थानांतरण फ़ाइलें और स्क्रीन साझा करने की अनुमति देती है। यह मैं

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

परिचय यह आलेख बताएगा कि विंडोज सर्वर 2012 पर गारस मोड सर्वर को कैसे डाउनलोड और इंस्टॉल किया जाए। यह गाइड गहराई में होने के लिए बनाया गया है।

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

एक अलग प्रणाली का उपयोग? परिचय CyberPanel बाजार पर पहला नियंत्रण पैनल है जो दोनों खुला स्रोत है और OpenLiteSpeed ​​का उपयोग करता है। क्या थी?

CentOS पर FFmpeg कैसे स्थापित करें

CentOS पर FFmpeg कैसे स्थापित करें

FFmpeg ऑडियो और वीडियो रिकॉर्ड करने, कन्वर्ट करने और स्ट्रीम करने के लिए एक लोकप्रिय ओपन सोर्स समाधान है, जो सभी प्रकार की ऑनलाइन स्ट्रीमिंग सेवाओं में व्यापक रूप से उपयोग किया जाता है। मैं

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

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

अपने Vultr VPS को कैसे एक्सेस करें

अपने Vultr VPS को कैसे एक्सेस करें

Vultr अपने VPS को कॉन्फ़िगर करने, स्थापित करने और उपयोग करने के लिए कई अलग-अलग तरीके प्रदान करता है। क्रेडेंशियल एक्सेस करें आपके VPS के लिए डिफ़ॉल्ट एक्सेस क्रेडेंशियल ar

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

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