firewalld bietet eine dynamisch verwaltete Firewall mit Unterstützung für Netzwerk- oder Firewallzonen, um die Vertrauensstufe von Netzwerkverbindungen oder Schnittstellen zu definieren. Es unterstützt IPv4- und IPv6-Firewalleinstellungen und Ethernet-Bridges sowie eine Trennung von Laufzeit- und permanenten Konfigurationsoptionen. Es bietet außerdem eine Schnittstelle für Dienste oder Anwendungen zum direkten Hinzufügen von ip*tables- und ebtables-Regeln.
Um das Quell-Repository auszuchecken, können Sie Folgendes verwenden:
Git-Klon https://github.com/firewalld/firewalld.git
Dadurch wird eine lokale Kopie des Repositorys erstellt.
Den Verhaltenskodex für Mitwirkende finden Sie in CODE_OF_CONDUCT.md
Firewalld verwendet GNU gettext zur Lokalisierungsunterstützung. Übersetzungen können mit der Weblate-Instanz von Fedora durchgeführt werden. Übersetzungen werden regelmäßig in das Haupt-Firewalld-Repository eingefügt.
Dies sind die Laufzeitabhängigkeiten:
linux >= 5.3 python >= 3.8 python3-dbus python3-gobject python3-nftables >= 0.9.4
Hinweis : Python2 wird nicht unterstützt.
Diese Abhängigkeiten können die Funktionalität von Firewalld verbessern, sind aber nicht erforderlich.
ebtables ipset iptables polkit python3-capng (libcap-ng-python3)
Zusätzlich zu den Laufzeitabhängigkeiten sind noch einige andere erforderlich, um aus dem Quellcode zu erstellen:
desktop-file-utils: /usr/bin/desktop-file-install gettext intltool glib2: /usr/bin/glib-compile-schemas glib2-devel: /usr/share/aclocal/gsettings.m4 systemd-units pytest
So können Sie Manpages und Dokumentation aus Docbook-Dateien erstellen:
docbook-style-xsl libxslt
Verwenden Sie den üblichen Autoconf/Automake-Beschwörungsformel, um Makefiles zu generieren
./autogen.sh ./konfigurieren
Sie können einen bestimmten Python-Interpreter verwenden, indem Sie die PYTHON-Variable übergeben. Dies wird auch von der Testsuite verwendet.
./configure PYTHON=/path/to/python3
Verwenden
machen
um die Dokumentation zu erstellen und die PO-Dateien zu aktualisieren.
Verwenden
Scheck machen
um die Testsuite auszuführen. Tests werden innerhalb von Netzwerk-Namespaces ausgeführt und beeinträchtigen nicht die laufende Firewall des Hosts. Sie können auch parallel ausgeführt werden, indem Flags an Autotest übergeben werden.
Überprüfen Sie TESTSUITEFLAGS="-j4"
Die Testsuite verwendet außerdem Schlüsselwörter, um die Ausführung einer Teilmenge von Tests zu ermöglichen, die einen bestimmten Bereich abdecken. Zum Beispiel:
make check TESTSUITEFLAGS="-k rich -j4"
Ausgabe:
24: Rich Rules Audit ok 25: Rich-Regeln-Priorität ok 26: Reich regiert schlecht, ok 53: Rich Rules Audit ok 23: Reiche Regeln gut ok 55: Reich regiert schlecht, ok 74: Forward-Port nach Neuladen entfernen, ok
Sie können eine Liste mit Tests und Schlüsselwörtern erhalten
make -C src/tests check TESTSUITEFLAGS="-l"
Oder nur die Schlüsselwörter
make -C src/tests check TESTSUITEFLAGS="-l" |awk '/^[[:space:]]*[[:digit:]]+/{getline; print $0}' |tr ' ' 'n' |sort |uniq
Es gibt Integrationstests. Derzeit umfasst dies NetworkManager. Diese können für den Host schädlich sein. Führen Sie sie in einer Einweg-VM oder einem Einwegcontainer aus.
Check-Integration durchführen
Es gibt auch ein Check-Container-Ziel, das die Testsuite in verschiedenen Podman/Docker-Containern ausführt. Dies ist nützlich für die Abdeckung mehrerer Distributionen. Es werden auch Tests ausgeführt, die für den Host schädlich sein können, beispielsweise Integrationstests.
check-container TESTSUITEFLAGS="-j4" erstellen
Als Teil des dist
Build-Ziels wird ein OCI-Container-Image generiert. Dies wird zusammen mit dem normalen Release-Tarball verteilt. Es kann verwendet werden, um firewalld aus einem Container auszuführen. Die Container-Firewall lässt sich nicht in den Host integrieren (z. B. podman, libvirt, NetworkManager).
So laden Sie das Container-Image manuell in Ihre Umgebung:
podman load -i .../path/to/firewalld-oci-<ver>.tar
So rufen Sie das Bild von quay.io ab:
podman pull quay.io/firewalld/firewalld:<ver>
wobei <ver>
optional ist, wird die neueste Version verwendet, wenn es weggelassen wird.
So starten Sie den Daemon/Container:
podman run -d --network host --privileged --name my-firewalld firewalld
Die Konfiguration von Firewalld wird im Container gespeichert. Daher möchten Benutzer das Bild möglicherweise gelegentlich podman commit
.
Die Verwendung der CLI von firewalld sollte über podman exec erfolgen, nachdem der Daemon/Container gestartet wurde:
podman exec my-firewalld firewall-cmd ...
Das gleiche Container-Image kann für die Integration mit NetworkManager, Podman, Libvirt usw. auf dem Host verwendet werden. Dazu muss der Host über eine Dbus-Richtlinie für Firewalld verfügen.
Eine Dbus-Richtlinie kann aus dem Firewalld-Quellcodebaum am Speicherort config/FirewallD.conf
abgerufen werden.
cp config/FirewallD.conf /usr/share/dbus-1/system.d/FirewallD.conf
Sobald die Dbus-Richtlinie eingerichtet ist, kann der Container wie folgt gestartet werden:
podman run -d -v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket --network host --privileged --name my-firewalld firewalld firewalld --nofork --nopid
Die einzigen Ergänzungen sind: Volume Mount, explizites CMD.
Mit diesem Ansatz können die Konfigurationsdateien von Firewalld auf dem Host gespeichert werden.
podman run -d -v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket -v /etc/firewalld:/etc/firewalld --network host --privileged --name my-firewalld firewalld firewalld --nofork --nopid
Für Fedora- und RHEL-basierte Distributionen gibt es im Quell-Repo eine Spezifikationsdatei mit dem Namen firewalld.spec. Dies sollte für Fedora-Versionen >= 16 und RHEL >= 7 verwendbar sein.
Homepage: http://firewalld.org
Einen Fehler melden: https://github.com/firewalld/firewalld/issues
Git-Repo-Browser: https://github.com/firewalld/firewalld
Git-Repository: https://github.com/firewalld/firewalld.git
Dokumentation: http://firewalld.org/documentation/
Zur Verwendung: https://lists.fedorahosted.org/archives/list/[email protected]/
Für die Entwicklung: https://lists.fedorahosted.org/archives/list/[email protected]/
Verzeichnis | Inhalt |
---|---|
config/ | Konfigurationsdateien |
config/icmptypes/ | Vordefinierte ICMP-Typen |
config/services/ | Vordefinierte Dienste |
config/xmlschema/ | XML-Schema sucht nach Konfigurationsdateien |
config/zones/ | Vordefinierte Zonen |
config/ipsets/ | Vordefinierte IP-Sets |
doc/ | Dokumentation |
doc/man/ | Basisverzeichnis für Manpages |
doc/man/man1/ | Man(1)-Seiten |
doc/man/man5/ | Man(5)-Seiten |
po/ | Übersetzungen |
Shell-Vervollständigung/ | Basisverzeichnis für Autovervollständigungsskripts |
src/ | Quellbaum |
src/firewall/ | Importbaum für den Dienst und alle Anwendungen |
src/icons/ | Icons in den Größen: 16, 22, 24, 32, 48 und skalierbar |
src/tests/ | Testsuite |