RHCSA Series: Firewall Essentials και Network Traffic Control Using FirewallD and Iptables - Part 11


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

Σε αυτό το άρθρο θα εξετάσουμε τα βασικά του τείχους προστασίας, του προεπιλεγμένου δυναμικού τείχους προστασίας στο Red Hat Enterprise Linux 7 και της υπηρεσίας iptables, της παλαιού τύπου υπηρεσία τείχους προστασίας για Linux, με την οποία οι περισσότεροι διαχειριστές συστημάτων και δικτύου γνωρίζουν καλά και η οποία είναι επίσης διαθέσιμη στο RHEL 7.

Σύγκριση μεταξύ FirewallD και Iptables

Κάτω από την κουκούλα, τόσο το τείχος προστασίας όσο και η υπηρεσία iptables συνομιλούν με το πλαίσιο netfilter στον πυρήνα μέσω της ίδιας διεπαφής, χωρίς να προκαλεί έκπληξη την εντολή iptables . Ωστόσο, σε αντίθεση με την υπηρεσία iptables, το τείχος προστασίας μπορεί να αλλάξει τις ρυθμίσεις κατά την κανονική λειτουργία του συστήματος χωρίς να χαθούν οι υπάρχουσες συνδέσεις.

Το τείχος προστασίας θα πρέπει να εγκατασταθεί από προεπιλογή στο σύστημά σας RHEL, αν και μπορεί να μην εκτελείται. Μπορείτε να επαληθεύσετε με τις ακόλουθες εντολές (firewall-config είναι το εργαλείο διαμόρφωσης της διεπαφής χρήστη):


yum info firewalld firewall-config

και,


systemctl status -l firewalld.service

Από την άλλη πλευρά, η υπηρεσία iptables δεν περιλαμβάνεται από προεπιλογή, αλλά μπορεί να εγκατασταθεί μέσω.


yum update && yum install iptables-services

Και οι δύο δαίμονες μπορούν να ξεκινήσουν και να ενεργοποιηθούν κατά την εκκίνηση με τις συνήθεις εντολές systemd:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Διαβάστε επίσης: Χρήσιμες εντολές για τη διαχείριση υπηρεσιών συστήματος

Όσον αφορά τα αρχεία διαμόρφωσης, η υπηρεσία iptables χρησιμοποιεί το /etc/sysconfig/iptables (το οποίο δεν θα υπάρχει εάν το πακέτο δεν είναι εγκατεστημένο στο σύστημά σας). Σε ένα πλαίσιο RHEL 7 που χρησιμοποιείται ως κόμβος συμπλέγματος, αυτό το αρχείο έχει την εξής εμφάνιση:

Ενώ το τείχος προστασίας αποθηκεύει τις παραμέτρους του σε δύο καταλόγους, τον /usr/lib/firewalld και τον /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

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


man firewalld.conf
man firewall-cmd
man iptables

Εκτός από αυτό, θυμηθείτε να ρίξετε μια ματιά στο Reviewing Essential Commands & System Documentation – Part 1 της τρέχουσας σειράς, όπου περιέγραψα αρκετές πηγές όπου μπορείτε να λάβετε πληροφορίες σχετικά με τα πακέτα που είναι εγκατεστημένα στο σύστημά σας RHEL 7 .

Χρήση του Iptables για τον έλεγχο της κυκλοφορίας του δικτύου

Ίσως θελήσετε να ανατρέξετε στο Configure Iptables Firewall – Part 8 της σειράς Linux Foundation Certified Engineer (LFCE) για να ανανεώσετε τη μνήμη σας σχετικά με τα εσωτερικά iptables πριν προχωρήσετε περαιτέρω. Έτσι, θα μπορέσουμε να μεταβούμε απευθείας στα παραδείγματα.

Παράδειγμα 1: Επιτρέποντας τόσο την εισερχόμενη όσο και την εξερχόμενη κυκλοφορία ιστού

Οι θύρες TCP 80 και 443 είναι οι προεπιλεγμένες θύρες που χρησιμοποιούνται από τον διακομιστή ιστού Apache για τη διαχείριση κανονικών (HTTP) και ασφαλών (HTTPS<) κίνηση ιστού. Μπορείτε να επιτρέψετε την εισερχόμενη και την εξερχόμενη κυκλοφορία ιστού και από τις δύο θύρες στη διεπαφή enp0s3 ως εξής:


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Παράδειγμα 2: Αποκλεισμός όλων (ή ορισμένων) εισερχόμενων συνδέσεων από ένα συγκεκριμένο δίκτυο

Μπορεί να υπάρχουν φορές που χρειάζεται να αποκλείσετε όλο (ή κάποιους) τύπους κίνησης που προέρχεται από ένα συγκεκριμένο δίκτυο, π.χ. 192.168.1.0/24 για παράδειγμα:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

θα απορρίψει όλα τα πακέτα που προέρχονται από το δίκτυο 192.168.1.0/24, ενώ,


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

θα επιτρέπει μόνο την εισερχόμενη κίνηση μέσω της θύρας 22.

Παράδειγμα 3: Ανακατευθύνετε την εισερχόμενη κίνηση σε άλλο προορισμό

Εάν χρησιμοποιείτε το κουτί RHEL 7 όχι μόνο ως τείχος προστασίας λογισμικού, αλλά και ως πραγματικό τείχος προστασίας που βασίζεται σε υλικό, έτσι ώστε να βρίσκεται ανάμεσα σε δύο διαφορετικά δίκτυα, η προώθηση IP πρέπει να έχει ήδη ενεργοποιηθεί στο σύστημά σας . Εάν όχι, πρέπει να επεξεργαστείτε το /etc/sysctl.conf και να ορίσετε την τιμή του net.ipv4.ip_forward σε 1, ως εξής:


net.ipv4.ip_forward = 1

στη συνέχεια αποθηκεύστε την αλλαγή, κλείστε το πρόγραμμα επεξεργασίας κειμένου και, τέλος, εκτελέστε την ακόλουθη εντολή για να εφαρμόσετε την αλλαγή:


sysctl -p /etc/sysctl.conf

Για παράδειγμα, μπορεί να έχετε εγκατεστημένο έναν εκτυπωτή σε ένα εσωτερικό κουτί με IP 192.168.0.10, με την υπηρεσία CUPS να ακούει στη θύρα 631 (και οι δύο στον διακομιστή εκτύπωσης και στο τείχος προστασίας σας). Για να προωθήσετε αιτήματα εκτύπωσης από πελάτες στην άλλη πλευρά του τείχους προστασίας, θα πρέπει να προσθέσετε τον ακόλουθο κανόνα iptables:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

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

Ξεκινώντας με το FirewallD

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

Για να απαριθμήσετε τις ενεργές ζώνες:


firewall-cmd --get-active-zones

Στο παρακάτω παράδειγμα, η δημόσια ζώνη είναι ενεργή και η διεπαφή enp0s3 της έχει εκχωρηθεί αυτόματα. Για να δείτε όλες τις πληροφορίες σχετικά με μια συγκεκριμένη ζώνη:


firewall-cmd --zone=public --list-all

Εφόσον μπορείτε να διαβάσετε περισσότερα για τις ζώνες στον οδηγό RHEL 7 Security, θα παραθέσουμε μόνο ορισμένα συγκεκριμένα παραδείγματα εδώ.

Παράδειγμα 4: Επιτρέποντας υπηρεσίες μέσω του τείχους προστασίας

Για να λάβετε μια λίστα με τις υποστηριζόμενες υπηρεσίες, χρησιμοποιήστε.


firewall-cmd --get-services

Για να επιτρέψετε την κυκλοφορία ιστού http και https μέσω του τείχους προστασίας, η οποία θα τεθεί σε ισχύ αμέσως και στις επόμενες εκκινήσεις:


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

Εάν το–zone παραλειφθεί, χρησιμοποιείται η προεπιλεγμένη ζώνη (μπορείτε να ελέγξετε με το firewall-cmd –get-default-zone).

Για να αφαιρέσετε τον κανόνα, αντικαταστήστε τη λέξη προσθήκη με αφαίρεση στις παραπάνω εντολές.

Παράδειγμα 5: Προώθηση IP/θύρας

Πρώτα απ 'όλα, πρέπει να μάθετε εάν η μεταμφίεση είναι ενεργοποιημένη για την επιθυμητή ζώνη:


firewall-cmd --zone=MyZone --query-masquerade

Στην παρακάτω εικόνα, μπορούμε να δούμε ότι η μεταμφίεση είναι ενεργοποιημένη για την εξωτερική ζώνη, αλλά όχι για τη δημόσια:

Μπορείτε είτε να ενεργοποιήσετε τη μεταμφίεση για δημόσιο:


firewall-cmd --zone=public --add-masquerade

ή χρησιμοποιήστε μεταμφιέσεις σε εξωτερικό. Δείτε τι θα κάναμε για να αντιγράψουμε το Παράδειγμα 3 με το τείχος προστασίας:


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

Και μην ξεχάσετε να φορτώσετε ξανά το τείχος προστασίας.

Μπορείτε να βρείτε περαιτέρω παραδείγματα στο Μέρος 9 της σειράς RHCSA, όπου εξηγήσαμε πώς να επιτρέψετε ή να απενεργοποιήσετε τις θύρες που χρησιμοποιούνται συνήθως από έναν διακομιστή web και έναν διακομιστή ftp, και πώς να αλλάξετε τον αντίστοιχο κανόνα όταν η προεπιλεγμένη θύρα για αυτές τις υπηρεσίες αλλάζουν. Επιπλέον, μπορεί να θέλετε να ανατρέξετε στο wiki του τείχους προστασίας για περαιτέρω παραδείγματα.

Διαβάστε επίσης: Χρήσιμα παραδείγματα FirewallD για τη διαμόρφωση του τείχους προστασίας στο RHEL 7

συμπέρασμα

Σε αυτό το άρθρο εξηγήσαμε τι είναι ένα τείχος προστασίας, ποιες είναι οι διαθέσιμες υπηρεσίες για την εφαρμογή ενός στο RHEL 7 και παρέχουμε μερικά παραδείγματα που μπορούν να σας βοηθήσουν να ξεκινήσετε με αυτό έργο. Εάν έχετε οποιαδήποτε σχόλια, προτάσεις ή ερωτήσεις, μη διστάσετε να μας ενημερώσετε χρησιμοποιώντας την παρακάτω φόρμα. Ευχαριστώ εκ των προτέρων!