
ra2 studio - stock.adobe.com
Linux-Firewall im Griff: Netfilter, CSF und UFW richtig nutzen
Um Firewall-Einstellungen und Regeln auf Linux-Servern im Griff zu behalten, kommen verschiedene Tools und Befehle wie iptables, nftables, CSF, firewalld und UFW zum Einsatz.
Für die Verwaltung der Firewall auf Linux-Systemen werden häufig iptables und dessen Nachfolger nftables verwendet. Die Administration kann im Terminal oder mit zusätzlichen Tools erfolgen.
Netfilter ist die zentrale Firewall-Architektur in Linux, die den Netzwerkverkehr über verschiedene Regelsätze filtert. Lange Zeit war iptables das Standard-Frontend für Netfilter, wobei der Schwerpunkt auf der Definition von Regeln für Paketfilterung, NAT und andere Netzwerkfunktionen lag. Mit der Einführung von nftables wurde ein moderneres und flexibleres System geschaffen, das iptables langfristig ablösen soll. Dabei bietet nftables eine vereinfachte Syntax, effizientere Verarbeitung und ein einheitliches Regelmanagement für IPv4, IPv6, ARP und Bridging. Beide Systeme nutzen Netfilter als zugrundeliegende Engine, wobei nftables die bisherige fragmentierte Struktur der iptables-Tabellen durch eine einheitlichere und leistungsfähigere Architektur ersetzt.
Firewall-Regeln mit iptables und nftables prüfen
Um Firewall-Regeln in Linux zu überprüfen und zu testen, lassen sich sowohl iptables als auch nftables direkt über das Terminal auslesen und testen. Für die Ausführung der Befehle sind Root-Rechte notwendig, zum Beispiel eine Sudo-Shell mit sudo -s.
Mit iptables zeigt der Befehl iptables -L -v -n die aktiven Regeln an, wobei die Parameter für detaillierte Informationen sorgen: -L listet die Regeln, -v zeigt Paket- und Byte-Zähler, -n verhindert DNS-Auflösungen. Um eine spezifische Regel zu testen, kann ein Ping-Befehl genutzt werden, zum Beispiel ping -c 4 10.0.0.1, während parallel mit watch -n1 iptables -L -v -n überprüft wird, ob die Regel Pakete blockiert oder durchlässt.
Bei nftables erfolgt die Anzeige der Regeln über nft list ruleset, was die gesamte Konfiguration ausgibt. Ein gezielter Test einer DROP-Regel für ICMP-Pakete kann durch das Hinzufügen der Regel nft add rule ip filter input icmp type echo-request drop erfolgen. Anschließend lässt sich mit ping -c 4 10.0.0.1 prüfen, ob der Ping noch durchgeht. Falls nicht, wurde die Regel korrekt angewendet. Zur Echtzeit-Überwachung helfen Befehle wie nft monitor trace, um zu verfolgen, welche Pakete durch die Firewall-Regeln verarbeitet oder verworfen werden.
Firewalld integriert Zonen auf Basis von iptables und nftables
Firewalld ist eine dynamische Firewall-Verwaltung für Linux, die auf nftables und iptables basiert und eine einfachere Konfiguration über Zonen und Dienste ermöglicht. Anstatt Regeln direkt mit iptables oder nftables zu setzen, organisiert Firewalld den Netzwerkverkehr in Sicherheitszonen, die je nach Netzwerkumgebung unterschiedliche Regeln anwenden. Firewalld lässt sich mit sudo apt install firewalld integrieren. Ein wichtiger Befehl ist das Prüfen, ob Firewalld gestartet ist und den Rechner mit den hinterlegten Regeln schützt:
sudo firewall-cmd --state
systemctl status firewalld
Aktive Regeln lassen sich mit firewall-cmd --list-all anzeigen, während neue Regeln dynamisch hinzugefügt werden können, zum Beispiel mit firewall-cmd --add-service=ssh --permanent, um SSH-Zugriffe zu erlauben. Änderungen werden mit firewall-cmd --reload übernommen. Firewalld eignet sich besonders für Systeme, die eine flexible und zentrale Firewall-Verwaltung benötigen, ohne sich mit der direkten Regelverwaltung von iptables oder nftables auseinandersetzen zu müssen.

Mit Firewalld lassen sich gezielt Regeln für Subnetze setzen, um den Zugriff auf bestimmte Dienste oder Ports zu steuern. Um zum Beispiel das gesamte Subnetz 10.0.0.0/255.255.0.0 in die Trusted-Zone aufzunehmen und damit uneingeschränkten Zugriff zu erlauben, dient der Befehl:
firewall-cmd --permanent --zone=trusted --add-source=10.0.0.0/16
Soll stattdessen nur der Zugriff auf SSH innerhalb dieses Subnetzes erlaubt sein, während alle anderen Verbindungen blockiert bleiben, erfolgt das mit:
firewall-cmd --permanent --zone=internal --add-source=10.0.0.0/16
firewall-cmd --permanent --zone=internal --add-service=ssh
Für eine gezielte Portfreigabe, zum Beispiel TCP-Port 443, ist der folgende Befehl geeignet:
firewall-cmd --permanent --zone=internal --add-port=443/tcp
Alle Änderungen werden erst nach einem Neustart von Firewalld aktiv:
firewall-cmd --reload
Zur Überprüfung der gesetzten Regeln für das Subnetz hilft:
firewall-cmd --list-all --zone=internal
Die einzelnen Zonen lassen sich im Verzeichnis /usr/lib/firewalld/zones steuern. Für die Zonen gibt es jeweils eigene XML-Dateien. Die Zonen lassen sich mit dem folgenden Befehl anzeigen:
firewall-cmd --get-zones
Die aktiv genutzten Zonen und die verbundenen Netzwerkschnittstellen werden mit dem folgenden Befehl angezeigt:
firewall-cmd --get-active-zones
Die Standard-Zone lässt sich wie folgt anzeigen und auch anpassen:
firewall-cmd --get-default-zone public
firewall-cmd --set-default-zone=home
Im Fokus stehen hier auch die Dienste, die in einer Zone definiert sind und für welche die Regeln in der Zone gelten. Auch die Ports in der Zone und deren Regel sind wichtig für die Verwaltung und Überwachung. Die Anzeige dieser Informationen erfolgt mit:
firewall-cmd --zone=public --list-services
firewall-cmd --zone=public --list-ports
Das Integrieren von zusätzlichen Diensten und Ports ist relativ einfach möglich:
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --zone=public --permanent --add-port=5000/tcp
Wer das alles nicht im Terminal steuern will, sondern mit einer grafischen Oberfläche, kann mit sudo apt install firewall-applet eine grafische Oberfläche für firewalld installieren, mit der sich die Firewall auf Basis der genannten Zonen und Regeln steuern lässt.

ConfigServer Security & Firewall (CSF): Stateful Packet Inspection
Ein weiteres, wichtiges Tool in diesem Bereich ist ConfigServer Security and Firewall (CSF). Damit können Admins auf Linux-Servern eine Stateful-Packet-Inspection-Firewall (SPI) integrieren. Diese verfolgt aktiv die Zustände von Netzwerkverbindungen und analysiert jedes Datenpaket im Kontext der bestehenden Kommunikation. Anders als eine statische Firewall, die Pakete isoliert betrachtet, erlaubt oder blockiert die SPI-Firewall Pakete abhängig davon, ob sie Teil einer legitimen Verbindung sind. Das Open-Source-Tool CSF nutzt SPI als Kernfunktion, um eingehende und ausgehende Verbindungen dynamisch zu überwachen und Angriffsversuche abzuwehren. CSF wertet die Herkunft, Zieladresse und Protokollzustände aus, erkennt verdächtige Muster und blockiert automatisch Angriffe, bevor schädliche Pakete ins Netzwerk gelangen. Dadurch verbessert sich die Gesamtsicherheit eines Servers erheblich. die Installation von CSF erfolgt mit:
wget http://download.configserver.com/csf.tgztar -xzf csf.tgz
cd csf
sh install.sh
Die Konfiguration von CSF erfolgt über die Konfigurationsdatei csf.conf im Verzeichnis etc/csf.
Uncomplicated Firewall (UFW) als Alternative zu iptables und Firewalld
Die Uncomplicated Firewall (UFW) ist eine vereinfachte Firewall-Verwaltung für Linux, die auf iptables basiert und eine nutzerfreundliche Konfiguration über einfache Befehle ermöglicht. Während iptables eine detaillierte Regelverwaltung bietet und nftables als dessen moderner Nachfolger eine effizientere Architektur nutzt, stellt UFW eine leicht bedienbare Alternative dar, die besonders für Administratoren geeignet ist, die ohne komplexe Regelwerke arbeiten möchten. Im Vergleich zu Firewalld, das mit Zonen arbeitet und dynamische Regelanpassungen erlaubt, konzentriert sich UFW auf eine einfache Verwaltung durch Basisbefehle. Regeln lassen sich mit ufw allow 22/tcp für SSH-Zugriff oder ufw deny 80/tcp für die Blockierung von HTTP-Traffic setzen. Der Status wird mit ufw status verbose geprüft. UFW kann auf Systemen wie Ubuntu als Standard-Firewall genutzt werden und ergänzt sich mit anderen Firewall-Frameworks, sofern iptables-basierte Regeln bevorzugt werden.
Im Terminal lässt sich der Status der lokalen Linux-Firewall mit dem folgenden Befehl überprüfen:
sudo ufw status
Wenn die Firewall nicht aktiv ist, kann sie mit dem folgenden Befehl schnell und einfach für das System aktiviert werden:
sudo ufw enable
Deaktivieren lässt sich die Firewall mit
sudo ufw disable
UFW nutzt die Dienste, die in etc/services zu finden sind. Die bekannten Anwendungen lassen mit dem folgenden Befehl anzeigen:
ufw app list
Für genauere Informationen lassen sich auch die Details eines Profils anzeigen:
ufw app info OpenSSH
Natürlich können für die Erstellung von Regeln auch direkt die Ports verwendet werden, zum Beispiel mit:
ufw allow 22/tcp

Das Firewall-Protokoll lässt sich entweder über den Menüpunkt Protokoll in Gufw (Installation mit sudo apt install gufw) oder direkt in der Datei /var/log/ufw.log einsehen. Die Protokollierung wird mit ufw logging on aktiviert und mit ufw logging off wieder deaktiviert. Änderungen an der Protokollierung erfordern eine zuvor deaktivierte Firewall, was mit ufw disable erfolgen kann. Nach der Anpassung lässt sich die Firewall mit ufw enable erneut aktivieren.

Zugriffsregelung und Firewall-Konfiguration testen mit iptables, nftables und UFW
Die Überprüfung einer Firewall-Konfiguration erfordert nicht nur das Anzeigen von Regeln, sondern auch gezielte Tests mit spezialisierten Tools. Mit hping3 lassen sich zum Beispiel gezielte Pakete an eine Firewall senden, um deren Verhalten zu analysieren. Beispielsweise prüft der Befehl hping3 -S -p 443 10.0.0.1 den Status des TCP-Ports 443, während hping3 --udp -p 53 10.0.0.1 zeigt, ob DNS-Anfragen passieren.
Für detaillierte Paketuntersuchungen kann tcpdump genutzt werden: tcpdump -i eth0 port 22 überwacht den SSH-Verkehr und zeigt, ob Pakete durch die Firewall gelangen oder blockiert werden.
Bei nftables erlaubt nft add table inet my_table; nft add chain inet my_table my_chain { type filter hook input priority 0 \; } das Erstellen einer Testregel, die man mit nft list ruleset überprüfen kann.
Firewalld bietet mit firewall-cmd --query-service=http eine Methode, um zu prüfen, ob ein bestimmter Dienst zugelassen ist.
Ein weiterer Testansatz ist der Ncat-Reverse-Test, bei dem nc -l -p 8080 auf einem Zielserver eine Verbindung erwartet, während nc 10.0.0.1 8080 auf einem anderen System testet, ob die Firewall die Verbindung durchlässt. Durch diese Methoden lassen sich Firewall-Regeln praxisnah evaluieren und Schwachstellen identifizieren.