Was ist Firewalld?
Firewalld ist eine Firewall-Verwaltungslösung für viele Linux-Distributionen, darunter Ubuntu, Debian, CentOS, RHEL und Fedora. Es fungiert als Frontend für das vom Linux-Kernel bereitgestellte iptables-Filtersystem. Es ist protokollunabhängig, dh es unterstützt IPv4, IPv6, Ethernet-Bridges und IP-Sets.
Grundkonzept von Firewalld
FirewallD verwendet Zonen und Dienste anstelle von iptables-Ketten und -Regeln. Zonen sind eine Reihe von Regeln, die angeben, welcher Datenverkehr abhängig von der Vertrauensstufe, die Sie in einem Netzwerk haben, mit dem Ihre Computer verbunden sind, zugelassen werden soll. Netzwerkschnittstellen, denen eine Zone zugewiesen wurde, um ein Verhalten vorzuschreiben, das die Firewall zulassen sollte.
Die Firewalld wird mit dem Befehlszeilentool firewall-cmd verwaltet. Es bietet eine Schnittstelle zum Verwalten der Laufzeit und der permanenten Konfiguration.
Firewallzonen
In der Firewalld gibt es 9 vordefinierte Zonen je nach Vertrauensstufe in aufsteigender Reihenfolge.
Eine kurze Erklärung jeder Zone finden Sie unten:
- Ablegen : Diese Zone hat die geringste Vertrauensebene und wird verwendet, um den gesamten eingehenden Datenverkehr zu verwerfen, ohne eine Bestätigung an den Absender zu senden.
- Blockieren : Diese Zone ist der Dropzone sehr ähnlich, der eingehende Datenverkehr wird abgewiesen und der Absender erhält eine Nachricht.
- Öffentlich : Lässt Datenverkehr von bestimmten öffentlichen Netzwerken zu.
- Extern : Diese Zone wird verwendet, wenn Ihr System als Gateway oder Router fungiert.
- Intern : Der Satz von Regeln, die für die Computer in Ihrem privaten internen Netzwerk gelten.
- DMZ: Diese Zone ist ein isolierter Bereich von Computern in Ihrem internen Netzwerk, der möglicherweise nicht auf andere interne Ressourcen zugreift.
- Arbeit: Diese Zone wird für Arbeitsmaschinen verwendet. Das Vertrauensniveau ist hoch.
- Startseite : Die meisten Computer in dieser Zone vertrauen einander. Das Vertrauensniveau ist höher als die Arbeit.
- Vertrauenswürdig : Diese Zone hat die höchste Vertrauensstufe. Alle Computer im Netzwerk sind vertrauenswürdig.
Schritt 1 – Installation von Firewalld
Standardmäßig ist Firewalld auf den meisten Betriebssystemen vorinstalliert. Aber einige der minimalen Betriebssysteminstallationen enthalten kein fiWenn es nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:
sudo yum install firewalld # CentOS/RHEL 8/7/6 sudo dnf install firewalld # Fedora and CentOS/RHEL 8 sudo apt install firewalld # Ubuntu and Debian
Nach der Installation von firewalld müssen Sie es starten und aktivieren, damit es nach dem Systemneustart gestartet werden kann.
sudo systemctl start firewalld sudo systemctl enable firewalld
Führen Sie den folgenden Befehl aus, um den Status von firewalld
zu überprüfensystemctl status firewalld [OR] firewall-cmd --state
Schritt 2 – Arbeiten mit Zonen und Diensten
Standardmäßig ist public die Standardzone in firewalld und alle Netzwerkschnittstellen sind mit der öffentlichen Zone konfiguriert. Sie können die Standardzone mit dem folgenden Befehl auflisten:
firewall-cmd --get-default-zone
Ausgabe:
public
Führen Sie als Nächstes den folgenden Befehl aus, um eine Liste der aktiven Zonen abzurufen:
firewall-cmd --get-active-zones
Sie sollten die folgende Ausgabe erhalten:
public interfaces: eth0 eth1
Führen Sie den folgenden Befehl aus, um eine Liste aller verfügbaren Zonen zu erhalten:
firewall-cmd --get-zones
Sie sollten die folgende Ausgabe erhalten:
block dmz drop external home internal public trusted work
Mit dem folgenden Befehl können Sie alle Dienste auflisten, die einer öffentlichen Zone zugeordnet sind:
firewall-cmd --list-all
Sie sollten die folgende Ausgabe erhalten:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Führen Sie den folgenden Befehl aus, um die Standardzone von „Öffentlich“ in „Arbeit“ zu ändern:
firewall-cmd --set-default-zone=work
Sie können jetzt Ihre Standardzone mit dem folgenden Befehl überprüfen:
firewall-cmd --get-default-zone
Ausgabe:
work
Mit dem folgenden Befehl erhalten Sie eine Liste aller verfügbaren Dienste in Ihrem System:
firewall-cmd --get-services
Sie sollten die folgende Ausgabe erhalten:
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
Schritt 3 – Dienste in Firewalld zulassen und ablehnen
Sie können eingehenden Datenverkehr basierend auf vordefinierten Diensten in firewalld zulassen oder ablehnen.
Um beispielsweise den gesamten eingehenden Datenverkehr für den http-Dienst in der öffentlichen Zone zuzulassen, führen Sie den folgenden Befehl aus:
firewall-cmd --zone=public --add-service=http
Ausgabe:
success
Führen Sie den folgenden Befehl aus, um eingehenden Datenverkehr für den FTP-Dienst in der öffentlichen Zone zuzulassen:
firewall-cmd --zone=public --add-service=ftp
Ausgabe:
success
Der obige Befehl fügt den HTTP- und FTP-Dienst temporär hinzu und ist bei Neustarts nicht dauerhaft. Sie müssen den --permanent
verwenden Option, um sie dauerhaft zu machen, wie unten gezeigt:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=ftp
Führen Sie als Nächstes den folgenden Befehl aus, um die Änderungen zu implementieren:
firewall-cmd --reload
Sie können jetzt mit dem folgenden Befehl eine Liste der hinzugefügten Dienste abrufen:
firewall-cmd --permanent --zone=public --list-services
Sie sollten die folgende Ausgabe sehen:
cockpit dhcpv6-client ftp http ssh
Sie können die Detailinformationen zur öffentlichen Zone auch mit dem folgenden Befehl überprüfen:
firewall-cmd --info-zone public
Ausgabe:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ftp http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Wenn Sie die oben genannten Dienste von der Firewall entfernen/ablehnen möchten, verwenden Sie den --remove-service
Möglichkeit:
firewall-cmd --permanent --zone=public --remove-service=http firewall-cmd --permanent --zone=public --remove-service=ftp
Führen Sie als Nächstes den folgenden Befehl aus, um die Änderungen zu übernehmen:
firewall-cmd --reload
Schritt 4 – Ports in Firewalld zulassen und verweigern
Sie können auch basierend auf dem Port in firewalld eingehenden Datenverkehr zulassen oder ablehnen.
Lassen Sie beispielsweise den gesamten eingehenden Datenverkehr auf den Ports 8080 und 443 zu und führen Sie den folgenden Befehl aus:
firewall-cmd --permanent --zone=public --add-port=443/tcp firewall-cmd --permanent --zone=public --add-port=8080/tcp
Führen Sie als Nächstes den folgenden Befehl aus, um die Änderungen zu übernehmen:
firewall-cmd --reload
Überprüfen Sie als Nächstes die hinzugefügten Ports mit dem folgenden Befehl:
firewall-cmd --permanent --zone=public --list-ports
Ausgabe:
443/tcp 8080/tcp
Entfernen/verweigern Sie auf ähnliche Weise die oben genannten Ports von der Firewalld, verwenden Sie die Option –remove-port:
firewall-cmd --permanent --zone=public --remove-port=443/tcp firewall-cmd --permanent --zone=public --remove-port=8080/tcp
Führen Sie als Nächstes den folgenden Befehl aus, um die Änderungen zu übernehmen:
firewall-cmd --reload
Schritt 5 – Portweiterleitung mit Firewalld
Portweiterleitung ist der Prozess, der Anfragen von einer IP/Port-Kombination umleitet und sie an eine andere IP und/oder einen anderen Port umleitet. Diese Technik ermöglicht Remote-Rechnern, sich mit einem bestimmten Dienst innerhalb eines privaten Netzwerks zu verbinden.
Bevor Sie die Portweiterleitung konfigurieren, müssen Sie die Maskerade in der gewünschten Zone aktivieren. Sie können es mit --add-masquerade
aktivieren Möglichkeit:
firewall-cmd --zone=public --add-masquerade
Führen Sie als Nächstes den folgenden Befehl aus, um den Datenverkehr von Port 80 an Port 8080 auf demselben Server weiterzuleiten:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
Wenn Sie Datenverkehr vom lokalen Port 80 an Port 8080 auf einem Remote-Server mit der IP-Adresse 192.168.1.200 weiterleiten möchten, führen Sie den folgenden Befehl aus:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200
Führen Sie als Nächstes den folgenden Befehl aus, um die Änderungen zu übernehmen:
firewall-cmd --reload
Wenn Sie die obigen Regeln entfernen möchten, ersetzen Sie –add durch –remove, wie unten gezeigt:
firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200 firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080
Schlussfolgerung
In der obigen Anleitung haben Sie das Grundkonzept von Firewalld und die Implementierung auf dem Linux-Betriebssystem kennengelernt. Ich hoffe, Sie können jetzt unnötigen eingehenden Datenverkehr mit firewalld einschränken.