Εισαγωγή
Firewalld είναι μια λύση διαχείρισης τείχους προστασίας που είναι διαθέσιμη για πολλές διανομές Linux. Χρησιμεύει ως διεπαφή για το σύστημα φιλτραρίσματος πακέτων iptables που παρέχεται από τον πυρήνα Linux. Σε αυτόν τον οδηγό, θα μάθετε πώς να διαμορφώσετε ένα τείχος προστασίας για τον διακομιστή σας. Θα σας δείξουμε επίσης τα βασικά της διαχείρισης του τείχους προστασίας με το εργαλείο διαχείρισης firewall-cmd.
Βασικά στοιχεία του Firewalld
Το FirewallD χρησιμοποιεί τις έννοιες των ζωνών και των υπηρεσιών, αντί για τις αλυσίδες και τους κανόνες του iptables. Ανάλογα με τις ζώνες και τις υπηρεσίες που διαμορφώνετε, μπορείτε να ελέγχετε ποια κίνηση επιτρέπεται ή δεν επιτρέπεται από και προς το σύστημα. Το FirewallD μπορεί να διαμορφωθεί και να διαχειριστεί χρησιμοποιώντας το βοηθητικό πρόγραμμα γραμμής εντολών firewall-cmd.
Εγκατάσταση και ενεργοποίηση του τείχους προστασίας κατά την εκκίνηση
Στις περισσότερες διανομές Linux το firewallD είναι ήδη εγκατεστημένο. Ωστόσο, εάν πρέπει να το εγκαταστήσετε μόνοι σας, πληκτρολογήστε την παρακάτω σύνταξη:
|
1 |
sudo yum install firewalld |
Μπορείτε να ενεργοποιήσετε την υπηρεσία και να επανεκκινήσετε τον διακομιστή σας μόλις εγκατασταθεί το firewalld:
|
1 2 |
sudo systemctl enable firewalld sudo reboot |
Στη συνέχεια, επανεκκινήστε τον διακομιστή σας. Το τείχος προστασίας σας θα ενεργοποιηθεί όταν επανεκκινήσετε επιτυχώς τον διακομιστή. Μετά από αυτό, χρησιμοποιήστε την παρακάτω εντολή για να επαληθεύσετε ότι η υπηρεσία έχει ενεργοποιηθεί:
|
1 |
sudo firewall-cmd --state |

Το αποτέλεσμα δείχνει ότι η προεπιλεγμένη ρύθμιση του τείχους προστασίας λειτουργεί.
Έλεγχος των προεπιλογών
Μπορείτε να ελέγξετε τη ζώνη που έχει επιλεγεί από τον διακομιστή χρησιμοποιώντας αυτήν την εντολή:
|
1 |
firewall-cmd --get-default-zone |

Επαληθεύστε την ενεργή ζώνη πληκτρολογώντας:
|
1 |
firewall-cmd --get-active-zones |

Εκτυπώστε τη διαμόρφωση της προεπιλεγμένης ζώνης για να μάθετε τους κανόνες που συνδέονται με τη δημόσια περιοχή χρησιμοποιώντας αυτήν τη σύνταξη:
|
1 |
sudo firewall-cmd --list-all |

Το αποτέλεσμα υποδεικνύει ότι αυτή η ζώνη είναι τόσο η προεπιλεγμένη όσο και η ενεργή ζώνη. Δείχνει επίσης ότι οι διεπαφές eth0 και eth1 έχουν εκχωρηθεί σε αυτήν τη ζώνη.
Έλεγχος εναλλακτικών ζωνών
Εκτός από τις προεπιλεγμένες και τις ενεργές ζώνες, υπάρχουν και άλλες ζώνες που μπορείτε να εξερευνήσετε. Εισαγάγετε αυτήν την εντολή για να δείτε όλες τις διαθέσιμες ζώνες:
|
1 |
firewall-cmd --get-zones |

Ελέγξτε τη συγκεκριμένη διαμόρφωση που έχει εκχωρηθεί σε μια ζώνη προσθέτοντας την παράμετρο –zone= στην εντολή –list-all:
|
1 |
sudo firewall-cmd --zone=home --list-all |

Αλλαγή της ζώνης διεπαφής
Μπορείτε εύκολα να αλλάξετε τη ζώνη διεπαφής χρησιμοποιώντας την επιλογή –change-interface σε συνδυασμό με την επιλογή –change-interface. Η ακόλουθη εντολή θα εκχωρήσει τη διεπαφή eth1 στον χώρο εργασίας:
|
1 |
sudo firewall-cmd --zone=work --change-interface=eth1 |
Μπορείτε να επαληθεύσετε τις αλλαγές πληκτρολογώντας:
|
1 |
sudo firewall-cmd --get-active-zones |
Αλλαγή της προεπιλεγμένης ζώνης
Για να αλλάξετε την προεπιλεγμένη ζώνη, χρησιμοποιήστε το –set-default-zone ακολουθούμενο από το όνομα της ζώνης που θέλετε να ορίσετε ως προεπιλογή. Για παράδειγμα, για να αλλάξετε την προεπιλεγμένη ζώνη για να ξεκινήσετε, θα πρέπει να εκτελέσετε την ακόλουθη εντολή:
|
1 |
sudo firewall-cmd --set-default-zone=home |
Στη συνέχεια, μπορείτε να επαληθεύσετε τις αλλαγές με:
|
1 |
sudo firewall-cmd --get-default-zone |
Ορισμός κανόνων για τις εφαρμογές σας
Ας δούμε τα βασικά στοιχεία που απαιτούνται για τον ορισμό εξαιρέσεων τείχους προστασίας για τις υπηρεσίες:
Προσθήκη υπηρεσίας στις ζώνες σας
Ο πιο απλός τρόπος είναι προσθέτοντας τις θύρες ή τις υπηρεσίες που χρειάζεστε στις ζώνες που χρησιμοποιείτε. Ομοίως, μπορείτε να χρησιμοποιήσετε την επιλογή –get-services για να δείτε όλες τις διαθέσιμες υπηρεσίες:
|
1 |
firewall-cmd --get-services |

Μπορείτε να ενεργοποιήσετε την υπηρεσία για μια ζώνη με την παράμετρο –add-service =. Η ενέργεια στοχεύει στην προεπιλεγμένη ζώνη ή σε οποιαδήποτε ζώνη ορίζεται από την παράμετρο –zone =. Από προεπιλογή, διαμορφώνεται μόνο η τρέχουσα συνεδρία του τείχους προστασίας. Μπορείτε να ρυθμίσετε μια μόνιμη διαμόρφωση τείχους προστασίας ενεργοποιώντας τη σημαία –permanent. Για παράδειγμα, εάν εκτελείτε έναν διακομιστή ιστού που παρέχει κανονική κίνηση HTTP, μπορείτε να επιτρέψετε αυτήν την κίνηση για διεπαφές στη “public” ζώνη μας για αυτήν τη συνεδρία εισάγοντας:
|
1 |
sudo firewall-cmd --zone=public --add-service=http |
Μπορείτε να παραλείψετε το –zone = εάν θέλετε να αλλάξετε την προεπιλεγμένη ζώνη. Μπορείτε να ελέγξετε την επιτυχία της λειτουργίας με τις λειτουργίες –list-all ή –list-services:
|
1 |
sudo firewall-cmd --zone=public --list-services |

Μόλις επαληθεύσετε ότι όλα λειτουργούν όπως αναμένεται, πιθανότατα θα θέλετε να αλλάξετε τους μόνιμους κανόνες του τείχους προστασίας για να κάνετε την υπηρεσία σας διαθέσιμη ακόμα και μετά από επανεκκίνηση. Μπορούμε να κάνουμε την αλλαγή στη “public” ζώνη μας μόνιμα εισάγοντας τη σύνταξη:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --add-service=http output: success |
Μπορείτε να ελέγξετε αν αυτό ήταν επιτυχές προσθέτοντας τη σημαία –permanent στη λειτουργία –list-services. Πρέπει να χρησιμοποιήσετε το sudo για –all μόνιμες λειτουργίες:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --list-services output: dhcpv6-client http ssh |
Η “public” ζώνη σας επιτρέπει τώρα την κίνηση HTTP στη θύρα 80. Μπορείτε να το προσθέσετε στην τρέχουσα συνεδρία και στο σύνολο μόνιμων κανόνων χρησιμοποιώντας την παρακάτω εντολή:
|
1 2 3 |
sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https |
Εάν δεν υπάρχουν υπηρεσίες που να καλύπτουν τις απαιτήσεις σας, έχετε δύο εξαιρετικές επιλογές για να χειριστείτε αυτήν την κατάσταση:
- Άνοιγμα μιας θύρας για τις ζώνες σας
Ο πιο απλός τρόπος για να προσθέσετε υποστήριξη για τη συγκεκριμένη εφαρμογή σας είναι να ανοίξετε τις θύρες που χρησιμοποιούνται σε κάθε ζώνη. Είναι τόσο απλό όσο ο καθορισμός μιας θύρας ή ενός εύρους θυρών και του αντίστοιχου πρωτοκόλλου για τις θύρες που πρέπει να ανοίξετε. Για παράδειγμα, εάν η εφαρμογή σας εκτελείται στη θύρα 5000 και χρησιμοποιεί TCP, μπορείτε να την προσθέσετε στη “public” ζώνη για αυτήν τη συνεδρία με την παράμετρο –add-port =. Τα πρωτόκολλα μπορεί να είναι TCP ή UDP:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --add-port=5000/tcp output: success |
Για να ελέγξετε ότι η λειτουργία είναι επιτυχής, χρησιμοποιήστε τη λειτουργία –list-ports:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --list-ports Output: 5000/tcp |
Μπορείτε επίσης να καθορίσετε ένα εύρος για τη σειριακή διεπαφή διαχωρίζοντας τις θύρες έναρξης και λήξης στο εύρος με μια παύλα. Για παράδειγμα, εάν η εφαρμογή σας χρησιμοποιεί θύρες UDP από 4990 έως 4999, μπορείτε να τις ανοίξετε στη “public” ζώνη γράφοντας:
|
1 |
sudo firewall-cmd --zone=public --add-port=4990-4999/udp |
Μετά τη δοκιμή, πιθανότατα θα θέλουμε να τις προσθέσουμε στο μόνιμο τείχος προστασίας. Μπορείτε να το κάνετε αυτό πληκτρολογώντας τα εξής:
|
1 2 3 |
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports |

- Ορισμός μιας υπηρεσίας
Μια υπηρεσία είναι μια συλλογή θυρών με ένα σχετικό όνομα και περιγραφή. Οι υπηρεσίες είναι ευκολότερο να διαχειριστούν από τις θύρες, αλλά απαιτείται λίγη αρχική εργασία. Ο πιο απλός τρόπος για να ξεκινήσετε είναι να αντιγράψετε ένα υπάρχον σενάριο (στο / usr / lib / firewalld / services) στον κατάλογο /etc/firewalld/services. Για παράδειγμα, μπορείτε να αντιγράψετε τον ορισμό της υπηρεσίας SSH για να τον χρησιμοποιήσετε στον ορισμό της υπηρεσίας “example” ως εξής. Το όνομα του αρχείου χωρίς την κατάληξη XML καθορίζει το όνομα της υπηρεσίας στη λίστα των υπηρεσιών του τείχους προστασίας:
|
1 |
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml |
Σε αυτό το σημείο, μπορείτε να προσαρμόσετε τον ορισμό στο αντιγραμμένο αρχείο:
|
1 |
sudo vi /etc/firewalld/services/example.xml |
Αρχικά, το αρχείο περιέχει τον ορισμό SSH που αντιγράψατε:
|
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) είναι ένα πρωτόκολλο για σύνδεση σε και εκτέλεση εντολών σε απομακρυσμένα μηχανήματα. Αυτό παρέχει ασφαλείς κρυπτογραφημένες επικοινωνίες. Εάν εσείς σχεδιάζετε να αποκτήσετε πρόσβαση στο μηχάνημά σας απομακρυσμένα μέσω SSH πάνω από μια προστατευμένη με τείχος προστασίας διεπαφή, ενεργοποιήστε αυτή την επιλογή. Χρειάζεστε να έχετε openssh-server πακέτο εγκατεστημένο για να είναι αυτή η επιλογή χρήσιμη.</description> <port protocol="tcp" port="22"/> </service> |
Το μεγαλύτερο μέρος αυτού του ορισμού αποτελείται από μεταδεδομένα. Πρέπει να αλλάξετε το σύντομο όνομα της υπηρεσίας στις ετικέτες <short>. Αυτό είναι ένα ευανάγνωστο όνομα υπηρεσίας. Φανταστείτε ότι για την υπηρεσία “example”, πρέπει να ανοίξουμε τη θύρα 7777 για TCP και την 8888 για UDP. Μπορείτε να αλλάξετε τον υπάρχοντα ορισμό εισάγοντας τη λειτουργία INSERT πατώντας i:
|
1 2 3 4 5 6 7 |
<xml version="1.0" encoding="utf-8"?> <service> <short>Παράδειγμα Υπηρεσίας</short> <description>Αυτή είναι απλώς μια δοκιμαστική υπηρεσία. Αυτό πιθανότατα δεν 'θα έπρεπε να χρησιμοποιείται σε ένα πραγματικό σύστημα.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/> </service> |
Στη συνέχεια, πατήστε ESC και πληκτρολογήστε :x για να αποθηκεύσετε και να κλείσετε το αρχείο. Έπειτα, πληκτρολογήστε την παρακάτω εντολή για να επανεκκινήσετε το τείχος προστασίας σας, ώστε να έχετε πρόσβαση στη νέα σας υπηρεσία:
|
1 |
sudo firewall-cmd --reload |
Μετά από αυτό, χρησιμοποιήστε την παρακάτω εντολή για να δείτε μια λίστα με τις διαθέσιμες υπηρεσίες:
|
1 |
firewall-cmd --get-services |

Αυτή η υπηρεσία είναι πλέον διαθέσιμη στη ζώνη σας.
Δημιουργία των Ζωνών σας
Αν και οι προκαθορισμένες ζώνες είναι πιθανό να επαρκούν για τους περισσότερους χρήστες, μπορεί να είναι χρήσιμο να ορίσετε τις δικές σας ζώνες που περιγράφουν πληρέστερα τη λειτουργία τους.
Όταν προσθέτετε μια ζώνη, προσθέστε την στις μόνιμες ρυθμίσεις του τείχους προστασίας σας. Στη συνέχεια, μπορείτε να κάνετε επαναφόρτωση για να μεταφέρετε τις ρυθμίσεις στη συνεδρία σας. Για παράδειγμα, μπορείτε να δημιουργήσετε τις δύο ζώνες που συζητήθηκαν προηγουμένως πληκτρολογώντας:
|
1 2 |
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS |
Μπορείτε να επιβεβαιώσετε ότι υπάρχουν στη μόνιμη διαμόρφωσή σας χρησιμοποιώντας αυτήν την εντολή:
|
1 |
sudo firewall-cmd --permanent --get-zones |

Επαναφορτώστε το τείχος προστασίας για να φέρετε αυτές τις νέες ζώνες στην ενεργή διαμόρφωση:
|
1 2 3 4 5 |
sudo firewall-cmd --reload firewall-cmd --get-zones έξοδος: block dmz drop external home internal privateDNS public publicweb trusted work |
Τώρα, μπορείτε να αντιστοιχίσετε τις κατάλληλες υπηρεσίες και θύρες στις ζώνες σας. Για παράδειγμα, για τη ζώνη “publicweb” ίσως θέλετε να προσθέσετε τις υπηρεσίες SSH, HTTP και HTTPS:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https |

Επίσης, μπορείτε να προσθέσετε την υπηρεσία DNS στη ζώνη σας “privateDNS” χρησιμοποιώντας αυτήν την εντολή:
|
1 2 |
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all |

Στη συνέχεια, μπορείτε να αλλάξετε τις διεπαφές σας σε αυτές τις νέες ζώνες για να τις δοκιμάσετε:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1 |
Δοκιμάστε τη διαμόρφωση για να δείτε αν λειτουργεί. Εάν αυτές οι τιμές λειτουργούν για εσάς, πρέπει να προσθέσετε τους ίδιους κανόνες στη μόνιμη διαμόρφωση. Μπορείτε να το κάνετε αυτό εφαρμόζοντας ξανά τους κανόνες με την ένδειξη —permanent:
|
1 2 3 4 5 6 7 |
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns |
Αφού εφαρμόσετε αυτούς τους κανόνες μόνιμα, μπορείτε να επανεκκινήσετε το δίκτυό σας και να επαναφορτώσετε την υπηρεσία firewall:
|
1 2 3 |
sudo systemctl restart network sudo systemctl reload firewalld |
Ελέγξτε ότι οι ζώνες αντιστοιχίστηκαν σωστά:
|
1 |
firewall-cmd --get-active-zones |

Επιπλέον, βεβαιωθείτε ότι και οι δύο ζώνες έχουν τη σωστή υπηρεσία:
|
1 2 3 4 |
sudo firewall-cmd --zone=publicweb --list-services έξοδος: http https ssh |
|
1 2 3 4 5 |
sudo firewall-cmd --zone=privateDNS --list-services έξοδος: dns |
Εάν θέλετε να ορίσετε μία από τις ζώνες σας ως προεπιλεγμένη για άλλες διεπαφές, πρέπει να διαμορφώσετε αυτήν τη συμπεριφορά με την παράμετρο –set-default-zone= χρησιμοποιώντας αυτήν την εντολή:
|
1 |
sudo firewall-cmd --set-default-zone=publicweb |
Συμπέρασμα
Σε αυτό το σημείο, έχετε δημιουργήσει με επιτυχία τις δικές σας ζώνες. Θα πρέπει να έχετε μια βασική κατανόηση της διαχείρισης της υπηρεσίας firewalld στο σύστημα CentOS σας για καθημερινή χρήση. Η καλή κατανόηση της υπηρεσίας firewalld σάς επιτρέπει να επωφεληθείτε πλήρως από την ισχύ και την ευελιξία της.
Καλή συνέχεια!


Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.