|
|
Zeile 1: |
Zeile 1: |
| '''firewalld''' is a [[Firewall]] management tool for Linux
| |
|
| |
| == Beschreibung ==
| |
| It provides firewall features by acting as a front-end for the Linux kernel's [[netfilter]] framework via the [[nftables]] userspace utility (before v0.6.0 [[iptables]] backend), acting as an alternative to the nft command line program.
| |
| * The name ''firewalld'' adheres to the [[Unix]] convention of naming system [[daemon (computing)|daemons]] by appending the letter "d".
| |
|
| |
| firewalld is written in [[Python (programming language)|Python]].
| |
| * It was intended to be ported to [[C++]], but the porting project was abandoned in January 2015
| |
|
| |
| ===Features===
| |
| firewalld supports both [[IPv4]] and [[IPv6]] networks and can administer separate ''firewall zones'' with varying degrees of trust as defined in ''zone profiles''.
| |
| * Administrators can configure [[Network Manager]] to automatically switch zone profiles based on known [[Wi-Fi]] (wireless) and [[Ethernet]] (wired) networks, but firewalld cannot do this on its own.
| |
|
| |
| Services and applications can use the [[D-Bus]] interface to query and configure the firewall.
| |
| * firewalld supports timed rules, meaning the number of connections (or "hits") to a service can be limited globally.
| |
| * There is no support for hit-counting and subsequent connection rejection per source IP; a common technique deployed to limit the impact of [[Brute-force search | brute-force]] [[security hacker | hacking]] and [[distributed denial-of-service]] attacks.
| |
|
| |
| firewalld's command syntax is similar to but more verbose than other [[iptables]] front-ends like [[Ubuntu (operating system)|Ubuntu]]'s [[Uncomplicated Firewall]] (ufw).
| |
| * The command-line interface allows managing firewall rulesets for protocol, ports, source and destination; or predefined services by name.
| |
|
| |
| Services are defined as [[XML]] files containing port- and protocol-mappings, and optionally extra information like specifying [[subnetwork|subnets]] and listing required Kernel helper modules.
| |
|
| |
| The syntax resembles that of [[systemd]]'s service files.
| |
| * A simple service file for a web server listening on [[Transmission Control Protocol|TCP]] port 443 might look like this:
| |
| <nowiki><source lang="xml"></nowiki>
| |
| <?xml version="1.0" encoding="utf-8"?>
| |
| <service>
| |
| <short>Web Server</short>
| |
| <description>Public web host over HTTPS.</description>
| |
| <port port="443" protocol="tcp" />
| |
| </service>
| |
| <nowiki></source></nowiki>
| |
|
| |
| ===Limitations===
| |
| Firewalld currently does not support outbound rules to the same capacity of inbound rules.
| |
| * Limitations include things such on ipsets, service names, and default outbound block by default rules required by standards such as NIST 800-171 and 800-53.
| |
| * Default block all needs to be done at the "raw" IPTables level via the --direct flag, and with the order of operations FirewallD uses to prioritize Rrules, rich rules, direct rules, it may be easier to enter all rules for outbound via --direct or use iptables (netfilter-persist)
| |
|
| |
| ==Graphical front-ends (GUIs)==
| |
| ===firewall-config===
| |
| is a graphical front-end that is optionally included with firewalld, with support for most of its features.
| |
|
| |
| ===firewall-applet===
| |
| is a small status indicator utility that is optionally included with firewalld.
| |
| * It can provide firewall event log notifications as well as a quick way to open firewall-config.
| |
| * firewall-applet was ported from the [[GTK+]] to the [[Qt (software)|Qt]] framework in the summer of 2015 following the [[GNOME Desktop]]’s deprecation of [[system tray]] icons.
| |
|
| |
| ==Adoption==
| |
| firewalld ships by default on the following Linux distributions
| |
| * [[CentOS]] 7 and newer
| |
| * [[Fedora (operating system)|Fedora]] 18 and newer
| |
| * [[Red Hat Enterprise Linux]] 7 and newer
| |
| * [[OpenSUSE]] Leap 15 and newer<ref name="SUSE">https://en.opensuse.org/Firewalld</ref>
| |
| * [[SUSE Linux Enterprise]] 15 and newer<ref name="SUSE" />
| |
|
| |
| firewalld is enabled by default in all of these distributions.
| |
| * firewalld is also available as one of many firewall options in the package repository of many other popular distributions such as [[Debian]] or Ubuntu.
| |
| == Installation ==
| |
| == Anwendungen ==
| |
| === Firewall konfigurieren mit firewalld===
| |
| * CentOS (7) bringt mit firewalld eine einfach zu konfigurierende Firewall mit.
| |
| * Im Gegensatz zu UFW unter Ubuntu ist die Firewall unter Centos 7 von Anfang an aktiv.
| |
| * Sie unterstützt IPv4 und IPv6 als auch unterschiedliche Zonen für unterschiedliche Interfaces.
| |
| * Wird einem Interface z. B.
| |
| * die Zone „home“ zugewiesen, werden alle eingehenden Verbindungen angenommen.
| |
| * Wird die Zone „public“ zugewiesen, werden keine eingehenden Verbindungen angenommen, außer diese wurden explizit zugelassen.
| |
| * Für einen Server im Internet ist somit die Zone „public“ die geeignete.
| |
| * Um zu überprüfen ob die Firewall bereits aktiv ist wird folgender Befehl als root ausgeführt
| |
| # systemctl status firewalld
| |
| wenn die Firewall aktiv ist, erhält man eine Ausgabe wie die folgende:
| |
| Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
| |
| Active: active (running) since So 2014-08-31 09:23:48 CEST; 14min ago
| |
| Main PID: 539 (firewalld)
| |
| CGroup: /system.slice/firewalld.service
| |
| └─539 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
| |
| Aug 31 09:23:48 centos systemd[1]: Started firewalld - dynamic firewall daemon.
| |
|
| |
| Ist der Dämon nicht aktiv, kann er mit
| |
| # systemctl start firewalld
| |
| gestartet werden.
| |
|
| |
| * Konfiguriert wird die Firewall mit dem Kommando firewall-cmd und den entsprechenden Optionen.
| |
| * Damit eine Änderung dauerhaft ist, und nicht nach einenm Neustart verloren geht, muss immer die Option –permanent verwendet werden.
| |
|
| |
| Um herauszufinden welche Zone(n) gerade aktiv sind führt man folgenden Befehl aus:
| |
|
| |
| # firewall-cmd --get-active-zones
| |
|
| |
| und erhält z. B.
| |
| * folgende Ausgabe
| |
|
| |
| # firewall-cmd --get-active-zones
| |
| public
| |
| interfaces: eth0
| |
|
| |
| Dies bedeutet, dass dem Interface eth0 die Zone public zugewiesen ist.
| |
| * Bei einem Server mit nur einem Netzwerkinterface ist das in den meisten Fällen die sinnvollste Einstellung.
| |
| * Eine Liste mit allen verfügbaren Zonen erhält man mit:
| |
|
| |
| # firewall-cmd --get-zones
| |
| block dmz drop external home internal public trusted work
| |
|
| |
| Die Standard Zone kann folgendermaßen geändert werden, in diesem Fall z. B.
| |
| * auf „home“
| |
|
| |
| # firewall-cmd --set-default-zone=home
| |
| success
| |
|
| |
| Damit die Änderung auch nach einem Neustart noch funktioniert muss, wie oben beschrieben ein –permanent angehängt werden
| |
|
| |
| # firewall-cmd --set-default-zone=home --permanent
| |
| success
| |
|
| |
| Dienste welche Verbindungen annehmen dürfen werden immer einer Zone zugewiesen.
| |
| * Firewalld kommt mit vorkonfigurierten Diensten, von denen mache schon aktiv sind, z.B SSH auf Port 22.
| |
| * Die Konfiguration der Zone public erhält man mit:
| |
|
| |
| # firewall-cmd --zone=public --list-all
| |
| public (default, active)
| |
| interfaces: eth0
| |
| sources:
| |
| services: dhcpv6-client ssh
| |
| ports:
| |
| masquerade: no
| |
| forward-ports:
| |
| icmp-blocks:
| |
| rich rules:
| |
|
| |
| Die vorkonfigurierten Services sind unter /usr/lib/firewalld/services gespeichert.
| |
| * Eigene Services können unter /etc/firewalld/services hinzugefügt werden.
| |
| * Wenn eine Datei in beiden Verzeichnissen vorhanden ist, wird die Datei in /etc/firewalld/services verwendet.
| |
| * Einen neuen Service (in diesem Fall http, Port 80) kann man mit folgendem Befehl freigeben:
| |
|
| |
| # firewall-cmd --zone=public --add-service=http --permanent
| |
| success
| |
|
| |
| Damit Änderungen aktiv werden muss immer die Konfiguration neu geladen werden
| |
|
| |
| # firewall-cmd --reload
| |
| success
| |
|
| |
| Ruft man nun erneut die Konfiguration der Zone public auf sieht man dass der Service http hinzugefügt wurde
| |
|
| |
| # firewall-cmd --zone=public --list-all
| |
| public (default, active)
| |
| interfaces: eth0
| |
| sources:
| |
| services: dhcpv6-client http ssh
| |
| ports:
| |
| masquerade: no
| |
| forward-ports:
| |
| icmp-blocks:
| |
| rich rules:
| |
|
| |
| Entfernen kann man den Service wieder mit folgendem Befehl:
| |
|
| |
| # firewall-cmd --zone=public --remove-service=http --permanent
| |
| success
| |
|
| |
| und anschließendem
| |
|
| |
| # firewall-cmd --reload
| |
| success
| |
|
| |
| Natürlich ist es auch möglich einen Port für ein bestimmtes Protokoll freizugeben, ohne dafür einen Service zu konfigurieren.
| |
| * In diesem Fall geben wir Port 443 für TCP frei.
| |
|
| |
| # firewall-cmd --zone=public --add-port=443/tcp --permanent
| |
| success
| |
|
| |
| Aktiviert wird die Freigabe wieder mit
| |
|
| |
| # firewall-cmd --reload
| |
| success
| |
|
| |
| Eine erneutes Anzeigen der Konfiguration der Zone public zeigt uns dass der Port freigegeben wurde
| |
|
| |
| # firewall-cmd --zone=public --list-all
| |
| public (default, active)
| |
| interfaces: eth0
| |
| sources:
| |
| services: dhcpv6-client http ssh
| |
| ports: 443/tcp
| |
| masquerade: no
| |
| forward-ports:
| |
| icmp-blocks:
| |
| rich rules:
| |
|
| |
| Entfernen kann man die Portfreigabe wieder mit
| |
|
| |
| # firewall-cmd --zone=public --remove-port=443/tcp --permanent
| |
| success
| |
|
| |
| == Syntax ==
| |
| === Optionen ===
| |
| === Parameter ===
| |
| === Umgebungsvariablen ===
| |
| === Exit-Status ===
| |
| == Konfiguration ==
| |
| === Dateien ===
| |
| == Sicherheit ==
| |
| == Dokumentation ==
| |
| === RFC ===
| |
| === Man-Pages ===
| |
| === Info-Pages ===
| |
| == Siehe auch ==
| |
| == Links ==
| |
| === Projekt ===
| |
| === Weblinks ===
| |
| * https://en.wikipedia.org/wiki/Firewalld
| |
| * https://www.techgrube.de/tutorials/centos-firewall-konfigurieren-mit-firewalld
| |
| * https://firewalld.org/documentation/man-pages/firewall-cmd.html
| |
| * https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
| |
| * https://computingforgeeks.com/how-to-install-and-configure-firewalld-on-debian/
| |
| * https://www.linuxnix.com/installing-configuring-firewalld-linux/
| |
| * https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd
| |
|
| |
| === Einzelnachweise ===
| |
| <references />
| |
| == Testfragen ==
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 1''
| |
| <div class="mw-collapsible-content">'''Antwort1'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 2''
| |
| <div class="mw-collapsible-content">'''Antwort2'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 3''
| |
| <div class="mw-collapsible-content">'''Antwort3'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 4''
| |
| <div class="mw-collapsible-content">'''Antwort4'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 5''
| |
| <div class="mw-collapsible-content">'''Antwort5'''</div>
| |
| </div>
| |
|
| |
|
| |
| [[Kategorie:Firewall]] | | [[Kategorie:Firewall]] |
| [[Kategorie:RedHat]] | | [[Kategorie:RedHat]] |