Διαχείριση υπηρεσιών
Διαχείριση λιμένων
Ενεργοποίηση FirewallD
συμπέρασμα
Το FirewallD είναι ένα τείχος προστασίας με δυναμική διαχείριση που παρέχει υποστήριξη για κανόνες τείχους προστασίας IPv4 και IPv6 και ζώνες τείχους προστασίας που είναι διαθέσιμα σε διακομιστές που βασίζονται στο RHEL 7. Είναι μια άμεση αντικατάσταση iptablesκαι λειτουργεί με τον κώδικα του πυρήνα netfilter.
Σε αυτό το άρθρο θα ρίξουμε μια σύντομη ματιά στη διαχείριση του τείχους προστασίας στο CentOS 7 χρησιμοποιώντας την firewall-cmdεντολή.
Έλεγχος εάν εκτελείται το FirewallD
Το πρώτο βήμα είναι να ελέγξετε εάν το FirewallD είναι εγκατεστημένο και εκτελείται. Αυτό μπορεί να γίνει systemdεκτελώντας τα εξής:
$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2016-03-10 15:07:00 UTC; 1min 30s ago
...
Εναλλακτικά, μπορείτε να ελέγξετε χρησιμοποιώντας το firewall-cmdεργαλείο:
$ firewall-cmd --state
running
Διαχείριση ζωνών
Το FirewallD λειτουργεί χρησιμοποιώντας την έννοια zonesόπου μια ζώνη καθόρισε το επίπεδο εμπιστοσύνης που χρησιμοποιείται για μια σύνδεση. Μπορείτε να χωρίσετε διαφορετικές διεπαφές δικτύου σε διαφορετικές ζώνες για να εφαρμόσετε συγκεκριμένους κανόνες τείχους προστασίας ανά διεπαφή ή μπορείτε να χρησιμοποιήσετε μία ζώνη για όλες τις διεπαφές.
Εκτός πλαισίου, όλα γίνονται στην προεπιλεγμένη publicζώνη, αλλά υπάρχουν πολλές άλλες προρυθμισμένες ζώνες που μπορούν επίσης να εφαρμοστούν.
Αναφορά όλων των διαθέσιμων ζωνών
Ίσως χρειαστεί να λάβετε μια λίστα με όλες τις διαθέσιμες ζώνες, από τις οποίες υπάρχουν αρκετές εκτός συσκευασίας. Και πάλι, αυτό μπορεί να γίνει χρησιμοποιώντας firewall-cmd:
$ firewall-cmd --get-zones
block dmz drop external home internal public trusted work
Έλεγχος της προεπιλεγμένης ζώνης
Μπορείτε να ανακαλύψετε την προεπιλεγμένη ζώνη που έχει διαμορφωθεί αυτήν τη στιγμή χρησιμοποιώντας firewall-cmd:
$ firewall-cmd --get-default-zone
public
Εάν θέλετε να αλλάξετε την προεπιλεγμένη ζώνη (για παράδειγμα, σε home), αυτό μπορεί να γίνει εκτελώντας:
$ firewall-cmd --set-default-zone=home
success
Αυτές οι πληροφορίες θα αντικατοπτρίζονται στο κύριο αρχείο διαμόρφωσης, /etc/firewalld/firewalld.conf. Ωστόσο, συνιστάται να μην τροποποιήσετε με μη αυτόματο τρόπο αυτό το αρχείο και να χρησιμοποιήσετε firewall-cmd.
Έλεγχος των ζωνών που έχουν εκχωρηθεί αυτήν τη στιγμή
Μπορείτε να λάβετε μια λίστα με τις ζώνες στις οποίες έχετε εκχωρήσει διεπαφές εκτελώντας:
$ firewall-cmd --get-active-zones
public
interfaces: eth0
Μπορείτε επίσης να ελέγξετε τη ζώνη μιας μεμονωμένης διεπαφής ( eth0σε αυτήν την περίπτωση) εκτελώντας:
$ firewall-cmd --get-zone-of-interface=eth0
public
Δημιουργία ζωνών
Εάν οι προεπιλεγμένες προδιαμορφωμένες ζώνες δεν ταιριάζουν απόλυτα στις ανάγκες σας, ο ευκολότερος τρόπος για να δημιουργήσετε μια νέα ζώνη ( zone1) είναι πάλι μέσω firewall-cmd:
$ firewall-cmd --permanent --new-zone=zone1
success
Μετά τη δημιουργία, πρέπει να φορτώσετε ξανά:
$ firewall-cmd --reload
success
Εφαρμογή ζώνης σε διεπαφή
Προκειμένου να αντιστοιχίσετε μόνιμα μια διεπαφή δικτύου σε μια ζώνη, μπορείτε να χρησιμοποιήσετε, firewall-cmdωστόσο, θυμηθείτε να συμπεριλάβετε τη --permanentσημαία για να συνεχιστεί η αλλαγή. Εάν χρησιμοποιείτε NetworkManager, θα πρέπει επίσης να βεβαιωθείτε ότι χρησιμοποιείτε nmcliγια να ορίσετε τη ζώνη σύνδεσης.
$ firewall-cmd --permanent --zone=internal --change-interface=eth1`
success
Λήψη της μόνιμης διαμόρφωσης μιας ζώνης
Για να ελέγξετε τη μόνιμη διαμόρφωση μιας ζώνης ( publicσε αυτήν την περίπτωση) που περιλαμβάνει τις εκχωρημένες διεπαφές, τις επιτρεπόμενες υπηρεσίες, τις ρυθμίσεις θύρας και άλλα, εκτελέστε:
$ firewall-cmd --permanent --zone=public --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Διαχείριση υπηρεσιών
Αφού αντιστοιχίσετε και διαμορφώσετε τις απαιτούμενες ζώνες, μπορείτε να αρχίσετε να προσθέτετε υπηρεσίες σε ζώνες. Οι υπηρεσίες περιγράφουν τα πρωτόκολλα και τις θύρες που είναι προσβάσιμες για μια ζώνη.
Καταχώριση υπαρχουσών υπηρεσιών
Ένας αριθμός κοινών υπηρεσιών είναι προρυθμισμένες στο τείχος προστασίας. Αυτά μπορούν να παρατίθενται:
$ firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https
Μπορείτε επίσης να λάβετε μια λίστα με τις υπηρεσίες που είναι ενεργοποιημένες για την προεπιλεγμένη ζώνη:
$ firewall-cmd --list-services
dhcpv6-client ssh
Προσθήκη υπηρεσίας σε ζώνη
Μπορείτε να ενεργοποιήσετε publicμόνιμα μια δεδομένη υπηρεσία για μια ζώνη ( ) χρησιμοποιώντας τη --add-serviceσημαία:
$ firewall-cmd --permanent --zone=public --add-service=http
success
Και στη συνέχεια φορτώστε ξανά την τρέχουσα περίοδο λειτουργίας τείχους προστασίας:
$ firewall-cmd --reload
success
Στη συνέχεια, για επαλήθευση προστέθηκε:
$ firewall-cmd --zone=public --list-services
dhcpv6-client http ssh
Αφαίρεση υπηρεσίας από ζώνη
Μπορείτε να καταργήσετε publicμόνιμα μια δεδομένη υπηρεσία για μια ζώνη ( ) χρησιμοποιώντας τη --remove-serviceσημαία:
$ firewall-cmd --permanent --zone=public --remove-service=http
success
Και στη συνέχεια φορτώστε ξανά την τρέχουσα περίοδο λειτουργίας τείχους προστασίας:
$ firewall-cmd --reload
success
Στη συνέχεια, για επαλήθευση προστέθηκε:
$ firewall-cmd --zone=public --list-services
dhcpv6-client ssh
Προσθήκη/αφαίρεση πολλαπλών υπηρεσιών από μια ζώνη
Μπορείτε να προσθέσετε ή να αφαιρέσετε πολλές υπηρεσίες (για παράδειγμα, httpκαι https) από μια ζώνη είτε μία κάθε φορά είτε όλες ταυτόχρονα, τυλίγοντας τα επιθυμητά ονόματα υπηρεσιών σε σγουρά άγκιστρα ( {, }):
$ firewall-cmd --permanent --zone=public --add-service=
success
$ firewall-cmd --permanent --zone=public --list-services
dhcpv6-client http https ssh
Δημιουργία νέων υπηρεσιών
Μερικές φορές μπορεί να χρειαστεί να προσθέσετε νέες προσαρμοσμένες υπηρεσίες - για παράδειγμα, εάν έχετε αλλάξει τη θύρα για τον δαίμονα SSH. Οι υπηρεσίες ορίζονται χρησιμοποιώντας ασήμαντα αρχεία XML, με τα προεπιλεγμένα αρχεία να βρίσκονται σε /usr/lib/firewalld/services:
$ tree /usr/lib/firewalld/services
/usr/lib/firewalld/services
├── amanda-client.xml
├── bacula-client.xml
├── bacula.xml
├── dhcpv6-client.xml
├── dhcpv6.xml
├── dhcp.xml
├── dns.xml
├── freeipa-ldaps.xml
├── freeipa-ldap.xml
├── freeipa-replication.xml
├── ftp.xml
├── high-availability.xml
├── https.xml
├── http.xml
...
Ο ευκολότερος τρόπος για να δημιουργήσετε μια νέα υπηρεσία είναι να αντιγράψετε ένα από αυτά τα υπάρχοντα αρχεία υπηρεσίας και να το τροποποιήσετε. Οι προσαρμοσμένες υπηρεσίες θα πρέπει να βρίσκονται στο /etc/firewalld/services. Για παράδειγμα, για να προσαρμόσετε την υπηρεσία SSH:
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-custom.xml
Τα περιεχόμενα αυτού του αντιγραμμένου αρχείου θα πρέπει να έχουν την εξής μορφή:
$ cat /etc/firewalld/services/ssh-custom.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
Για να αλλάξετε τη θύρα, θα πρέπει να αλλάξετε το σύντομο όνομα για την υπηρεσία και τη θύρα. Μπορείτε επίσης να αλλάξετε την περιγραφή εάν το επιθυμείτε, αλλά πρόκειται απλώς για επιπλέον μεταδεδομένα που θα μπορούσαν να χρησιμοποιηθούν από μια διεπαφή χρήστη ή άλλη εφαρμογή. Σε αυτό το παράδειγμα, αλλάζω τη θύρα σε 1234:
$ nano /etc/firewalld/services/ssh-custom.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH-Custom</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="1234"/>
</service>
Μόλις αποθηκευτεί, θα χρειαστεί να φορτώσετε ξανά το τείχος προστασίας και, στη συνέχεια, μπορείτε να εφαρμόσετε τον κανόνα σας στη ζώνη σας:
$ firewall-cmd --reload
success
$ firewall-cmd --permanent --zone=public --add-service=ssh-custom
success
Διαχείριση λιμένων
Εκτός από τη χρήση υπηρεσιών, μπορείτε επίσης να επιτρέψετε μη αυτόματα τις θύρες βάσει πρωτοκόλλου. Για να επιτρέψετε τη θύρα TCP 7777για τη publicζώνη:
$ firewall-cmd --permanent --zone=public --add-port=7777/tcp
success
Μπορείτε επίσης να προσθέσετε μια περιοχή θυρών:
$ firewall-cmd --permanent --zone=public --add-port=7000-8000/tcp
success
Για να αφαιρέσετε (και επομένως να απορρίψετε) τη θύρα TCP 7777για τη publicζώνη:
$ firewall-cmd --permanent --zone=public --remove-port=7777/tcp
success
Μπορείτε επίσης να αναφέρετε τις επί του παρόντος επιτρεπόμενες θύρες για μια δεδομένη ζώνη ( public) μετά την επαναφόρτωση της τρέχουσας περιόδου λειτουργίας τείχους προστασίας:
$ firewall-cmd --zone=public --list-ports
7000-8000/tcp
Ενεργοποίηση FirewallD
Αφού διαμορφώσετε το τείχος προστασίας σύμφωνα με τις προτιμήσεις σας, θα πρέπει να βεβαιωθείτε ότι το έχετε ενεργοποιήσει μέσω του systemd για να διασφαλίσετε ότι θα ξεκινήσει κατά την εκκίνηση:
$ systemctl enable firewalld
συμπέρασμα
Υπάρχουν πολλές περισσότερες ρυθμίσεις και επιλογές στο FirewallD, όπως η προώθηση θύρας, η μεταμφίεση και η επικοινωνία με το τείχος προστασίας μέσω D-Bus. Ας ελπίσουμε ότι αυτός ο οδηγός σας βοήθησε να κατανοήσετε τα βασικά, ωστόσο, και σας έδωσε τα εργαλεία για να ξεκινήσετε με το τείχος προστασίας από τον διακομιστή σας. Κάποια επιπλέον ανάγνωση παρακάτω θα σας βοηθήσει να αξιοποιήσετε στο έπακρο το τείχος προστασίας σας.