|
|
(43 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| =Firewall konfigurieren mit firewalld=
| | [[Kategorie:Firewall]] |
| CentOS (7) bringt mit firewalld eine
| | [[Kategorie:RedHat]] |
| * 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
| |
| | |
| ==Weblinks==
| |
| * 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
| |