Εύκολη διαμόρφωση IPTables και παραδείγματα στο Ubuntu 16.04

Εισαγωγή

iptablesείναι ένα ισχυρό εργαλείο που χρησιμοποιείται για τη διαμόρφωση του ενσωματωμένου τείχους προστασίας του πυρήνα Linux. Έρχεται προεγκατεστημένο στις περισσότερες διανομές Ubuntu, ωστόσο εάν χρησιμοποιείτε μια προσαρμοσμένη έκδοση του Ubuntu ή εκτελείτε μέσα σε ένα κοντέινερ, πιθανότατα θα πρέπει να το εγκαταστήσετε με μη αυτόματο τρόπο.

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 INPUTπροσθέστε έναν κανόνα στην INPUTαλυσίδα, μια αλυσίδα είναι μια ομάδα κανόνων, αυτοί που χρησιμοποιούμε περισσότερο σε αυτόν τον οδηγό θα είναι INPUT, OUTPUTκαι PREROUTING.
  • -p tcpορίσετε tcpως το πρωτόκολλο στο οποίο θα ισχύει αυτός ο κανόνας, μπορείτε επίσης να χρησιμοποιήσετε άλλα πρωτόκολλα όπως udp, icmpή all.
  • -m tcpχρησιμοποιήστε τη tcpμονάδα. iptablesυποστηρίζει πρόσθετες λειτουργίες μέσω μονάδων, μερικές από τις οποίες είναι ήδη προεγκατεστημένες iptablesκαι άλλες, όπως η geoipμονάδα.
  • --dport 22οι εντολές που ξεκινούν με --υποδεικνύουν πρόσθετες επιλογές για τη λειτουργική μονάδα που χρησιμοποιήθηκε προηγουμένως, σε αυτήν την περίπτωση θα πούμε στη tcpμονάδα να εφαρμόζεται μόνο στη θύρα 22.
  • -m geoipχρησιμοποιήστε τη geoipμονάδα. Θα περιορίσει τα πακέτα ανά χώρα (περισσότερες πληροφορίες στο βήμα 5).
  • --src-cc PEπείτε στη geoipμονάδα να περιορίσει τα εισερχόμενα πακέτα σε αυτά που προέρχονται από το Περού. Για περισσότερους κωδικούς χωρών αναζητήστε 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 Εφαρμόστε κανόνα σε μια συγκεκριμένη διεπαφή, για να επιτρέψετε την αφαίρεση αυτής της εντολής από οποιαδήποτε διεπαφή.

Για να περιορίσετε τα εισερχόμενα πακέτα σε μια συγκεκριμένη IP (δηλ 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/υποδίκτυο από το οποίο επιτρέπεται η σύνδεση.

Ορίστε προεπιλεγμένους κανόνες αλυσίδας.

Προειδοποίηση: προτού συνεχίσετε, βεβαιωθείτε ότι έχετε εφαρμόσει τους σωστούς κανόνες SSH εάν εργάζεστε σε απομακρυσμένο διακομιστή .

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αίτημα).

Να επιτρέπεται όλη η κίνηση στη διεπαφή loopback ( συνιστάται ).

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μονάδα για να επιτρέψετε RELATEDκαι ESTABLISHEDεξερχόμενα πακέτα.

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: tcp στη θύρα 21
  • HTTPS: tcp στη θύρα 443
  • DHCP: udp στη θύρα 67
  • NTP: udp στη θύρα 123

Σημείωση: Εάν θέλετε να επιτρέψετε apt-get, ίσως χρειαστεί να επιτρέψετε FTPκαιHTTPS .

Να επιτρέπεται η επιστρεφόμενη κίνηση μόνο για RELATEDκαι ήδη ESTABLISHEDσυνδέσεις ( συνιστάται γιατί μερικές φορές απαιτείται αμφίδρομη επικοινωνία).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Άλλοι χρήσιμοι κανόνες

Επιτρέψτε αιτήματα ping από το εξωτερικό.

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, το λειτουργικό σύστημα θα απορρίψει όλα τα πακέτα που ανακατευθύνονται στη διεπαφή επαναφοράς .

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 Παραδείγματα κανόνων

_Σημείωση: Εάν λαμβάνετε ένα 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

Αφήστε ένα σχόλιο

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα