3.10 Firewall- und Paketfilterfehler analysieren
Firewalls können Verbindungen erlauben, verwerfen, ausdrücklich ablehnen, protokollieren oder an andere Ziele weiterleiten. Eine Anwendung kann korrekt laufen und auf dem richtigen Port lauschen, während der Zugriff trotzdem durch einen lokalen oder zentralen Paketfilter verhindert wird.
Die zentrale Frage dieser Seite lautet:
Erreicht der Datenverkehr das Zielsystem, und welche Firewallregel entscheidet tatsächlich über das Paket?
1. Sicherheits- und Aktionskennzeichnungen
| Kennzeichnung | Bedeutung |
|---|---|
[RO] |
Rein lesender Befehl, der normalerweise keine Konfiguration verändert |
[TEST] |
Aktiver Test, der Netzwerkverkehr erzeugt |
[PRIV] |
Administrator- oder Root-Rechte können erforderlich sein |
[FILE] |
Der Befehl schreibt Ausgaben in eine Datei |
[SENS] |
Die Ausgabe kann sensible Informationen enthalten |
[CHANGE] |
Der Befehl verändert die Konfiguration |
[DISRUPT] |
Der Befehl kann Verbindungen oder Dienste beeinträchtigen |
Firewallregeln enthalten häufig interne IP-Adressen, Servernamen, Anwendungen, Netzwerkbereiche und Sicherheitsrichtlinien. Entsprechende Ausgaben sind vertraulich zu behandeln.
2. Firewallfehler nicht vorschnell vermuten
Die Meldung „Das ist bestimmt die Firewall“ ist zunächst nur eine Hypothese. Vor einer Änderung müssen mindestens folgende Punkte geprüft werden:
- Wurde der richtige Hostname verwendet?
- Wurde die erwartete IP-Adresse aufgelöst?
- Ist eine gültige Route zum Ziel vorhanden?
- Läuft der benötigte Dienst?
- Lauscht der Dienst auf dem erwarteten Port und Protokoll?
- Lauscht der Dienst an der richtigen IP-Adresse?
- Funktioniert der Zugriff lokal auf dem Server?
- Funktioniert der Zugriff aus einem anderen Netzsegment?
- Erreicht das Paket das Zielsystem?
- Wird eine Blockierung protokolliert?
Wichtig:
Timeout
≠
sicherer Nachweis einer Firewallblockierung
Ein Timeout kann ebenfalls durch Paketverlust, falsches Routing, einen fehlenden Rückweg, eine falsche Zieladresse, NAT-Fehler oder einen ausgefallenen Host entstehen.
3. DROP, REJECT und ALLOW unterscheiden
| Aktion | Verhalten | Typische Beobachtung |
|---|---|---|
ALLOW beziehungsweise ACCEPT |
Passender Verkehr wird zugelassen | Verbindung kann aufgebaut werden |
DROP |
Paket wird ohne Antwort verworfen | Client wartet häufig bis zum Timeout |
REJECT |
Paket wird abgelehnt und eine Fehlermeldung zurückgesendet | Client erhält häufig schnell einen Fehler |
LOG |
Paketinformationen werden protokolliert | Allein keine endgültige Erlaubnis oder Blockierung |
DNAT beziehungsweise Portweiterleitung |
Zieladresse oder Zielport wird verändert | Client erreicht möglicherweise ein internes Ziel |
SNAT beziehungsweise Masquerading |
Quelladresse wird verändert | Ziel erkennt die Adresse des NAT-Systems |
RETURN |
Verarbeitung kehrt zur aufrufenden Regelkette zurück | Wirkung hängt von weiteren Regeln ab |
Bei TCP kann eine aktive Ablehnung beispielsweise durch ein TCP-RST sichtbar werden. Bei anderen Fällen kann eine ICMP- oder ICMPv6-Fehlermeldung zurückgegeben werden.
Das genaue Verhalten hängt vom Betriebssystem, Regelwerk und eingesetzten Sicherheitsprodukt ab.
4. Prüfen, welche Firewall tatsächlich verwendet wird
Auf einem System können mehrere Verwaltungsebenen vorhanden sein:
- native Betriebssystem-Firewall,
-
firewalld, -
nftables, -
iptables, -
ufw, - Sicherheitssoftware eines Drittanbieters,
- Endpoint-Detection-and-Response-System,
- Container-Firewallregeln,
- Hypervisor-Firewall,
- zentrale Netzwerk-Firewall,
- Router-ACL,
- Cloud-Sicherheitsgruppe,
- VPN- oder Zero-Trust-Client.
Eine Oberfläche wie ufw oder firewalld verwaltet im Hintergrund das eigentliche Paketfiltersystem. Regeln sollten deshalb nicht unkoordiniert über mehrere Werkzeuge verändert werden.
| Betriebssystem | Typische lokale Filter |
|---|---|
| Windows | Windows Defender Firewall, IPsec-Regeln, Sicherheitssoftware |
| Linux | nftables, firewalld, ufw, iptables und Sicherheitssoftware |
| macOS | Anwendungsfirewall, Packet Filter pf und Sicherheitssoftware |
Grundregel:
Zuerst die aktive Verwaltungs- und Richtlinienebene identifizieren, danach Regeln bewerten.
5. Datenfluss und Prüfrichtung festlegen
Vor der Regelsuche muss der betroffene Datenfluss eindeutig beschrieben werden.
Client-IP:Quellport
↓
Transportprotokoll
↓
Ziel-IP:Zielport
↓
Serveranwendung
Zu dokumentieren sind:
| Merkmal | Beispiel |
|---|---|
| Richtung | Client zum Server |
| Adressfamilie | IPv4 |
| Transportprotokoll | TCP |
| Quelladresse | 192.0.2.25 |
| Quellport | dynamisch, beispielsweise 53144 |
| Zieladresse | 192.0.2.53 |
| Zielport | 443 |
| Schnittstelle | Ethernet beziehungsweise eth0 |
| Netzwerkprofil oder Zone | Domain beziehungsweise public |
| Anwendung | Webserver |
| Zeitpunkt | Mit Zeitzone und Sekunden |
Eingehend und ausgehend sind standortabhängig:
Client: ausgehende Verbindung
Server: eingehende Verbindung
Bei Routern, NAT-Systemen und Firewalls zwischen Netzen kann zusätzlich die Weiterleitungsrichtung betroffen sein.
6. Windows-Firewallstatus und aktive Profile prüfen
Windows verwendet die Profile:
-
Domain -
Private -
Public
Je nach aktiver Netzwerkverbindung können unterschiedliche Profile und Regeln gelten.
Aktives Netzwerkprofil prüfen:
[RO] Get-NetConnectionProfile |
Format-Table InterfaceAlias, Name, NetworkCategory, IPv4Connectivity, IPv6Connectivity
Status aller Firewallprofile:
[RO] Get-NetFirewallProfile |
Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Ausführliche Profileinstellungen:
[RO] Get-NetFirewallProfile |
Format-List Name, Enabled, DefaultInboundAction, DefaultOutboundAction,
AllowInboundRules, AllowLocalFirewallRules,
AllowLocalIPsecRules, NotifyOnListen,
LogAllowed, LogBlocked, LogFileName, LogMaxSizeKilobytes
Klassische Statusanzeige:
[RO] netsh advfirewall show allprofiles
Zu kontrollieren sind:
- Welches Netzwerkprofil ist aktiv?
- Ist die Firewall für dieses Profil aktiviert?
- Was ist die Standardaktion für eingehenden Verkehr?
- Was ist die Standardaktion für ausgehenden Verkehr?
- Dürfen lokale Regeln angewendet werden?
- Werden die Einstellungen durch Gruppenrichtlinien verwaltet?
- Ist die Protokollierung zugelassener oder blockierter Pakete aktiviert?
Typischer Fehler:
Regel gilt nur für Profil Private
↓
Netzwerk wurde als Public erkannt
↓
Regel greift nicht
Das Netzwerkprofil darf nicht allein zur Fehlerbehebung verändert werden. Zuerst ist zu prüfen, warum Windows das Netzwerk entsprechend eingestuft hat und welche Unternehmensrichtlinie gelten soll.
7. Windows-Firewallregeln untersuchen
Alle aktivierten Regeln anzeigen:
[RO][SENS] Get-NetFirewallRule -Enabled True |
Format-Table DisplayName, Direction, Action, Profile
Aktive Blockierungsregeln anzeigen:
[RO][SENS] Get-NetFirewallRule -Enabled True -Action Block |
Format-Table DisplayName, Direction, Profile
Aktive eingehende Erlaubnisregeln anzeigen:
[RO][SENS] Get-NetFirewallRule -Enabled True -Direction Inbound -Action Allow |
Format-Table DisplayName, Profile
Bestimmte Regel ausführlich anzeigen:
[RO][SENS] Get-NetFirewallRule -DisplayName "NAME DER REGEL" |
Format-List *
Windows speichert Port-, Adress-, Programm-, Dienst- und Schnittstellenbedingungen in zugehörigen Filterobjekten. Get-NetFirewallRule allein zeigt deshalb nicht alle Bedingungen einer Regel.
Portbedingungen einer Regel:
[RO] Get-NetFirewallRule -DisplayName "NAME DER REGEL" |
Get-NetFirewallPortFilter |
Format-List *
Adressbedingungen einer Regel:
[RO][SENS] Get-NetFirewallRule -DisplayName "NAME DER REGEL" |
Get-NetFirewallAddressFilter |
Format-List *
Anwendungsbedingung einer Regel:
[RO][SENS] Get-NetFirewallRule -DisplayName "NAME DER REGEL" |
Get-NetFirewallApplicationFilter |
Format-List *
Dienstbedingung einer Regel:
[RO] Get-NetFirewallRule -DisplayName "NAME DER REGEL" |
Get-NetFirewallServiceFilter |
Format-List *
Schnittstellenbedingung einer Regel:
[RO] Get-NetFirewallRule -DisplayName "NAME DER REGEL" |
Get-NetFirewallInterfaceFilter |
Format-List *
Regeln für lokalen TCP-Port 443 suchen:
[RO][SENS] Get-NetFirewallPortFilter -Protocol TCP |
Where-Object LocalPort -eq "443" |
Get-NetFirewallRule |
Format-Table DisplayName, Enabled, Direction, Action, Profile
Regeln für lokalen UDP-Port 53 suchen:
[RO][SENS] Get-NetFirewallPortFilter -Protocol UDP |
Where-Object LocalPort -eq "53" |
Get-NetFirewallRule |
Format-Table DisplayName, Enabled, Direction, Action, Profile
Regeln für eine bestimmte Anwendung suchen:
[RO][SENS] Get-NetFirewallApplicationFilter |
Where-Object Program -like "*\PROGRAMM.exe" |
Get-NetFirewallRule |
Format-Table DisplayName, Enabled, Direction, Action, Profile
Der Programmpfad muss durch den tatsächlichen Pfad beziehungsweise ein eindeutiges Suchmuster ersetzt werden.
8. Windows-Regeln vollständig beurteilen
Bei einer vermeintlich passenden Regel müssen alle Bedingungen kontrolliert werden:
| Bedingung | Kontrollfrage |
|---|---|
Enabled |
Ist die Regel aktiviert? |
Direction |
Gilt sie eingehend oder ausgehend? |
Action |
Erlaubt oder blockiert sie? |
Profile |
Gilt sie für das aktive Profil? |
Protocol |
TCP, UDP, ICMPv4 oder ICMPv6? |
LocalPort |
Stimmt der lokale Port? |
RemotePort |
Ist ein bestimmter entfernter Port vorgegeben? |
LocalAddress |
Gilt sie für die verwendete lokale Adresse? |
RemoteAddress |
Ist die Clientadresse oder ihr Netz erlaubt? |
Program |
Stimmt der ausführbare Programmpfad? |
Service |
Ist die Regel an einen bestimmten Dienst gebunden? |
InterfaceType |
Gilt sie für LAN, WLAN oder Remotezugriff? |
EdgeTraversalPolicy |
Ist spezieller eingehender Verkehr betroffen? |
| Richtlinienquelle | Stammt sie lokal, aus Gruppenrichtlinien oder MDM? |
Richtlinienquelle anzeigen:
[RO][SENS] Get-NetFirewallRule -PolicyStore ActiveStore |
Select-Object DisplayName, Enabled, Direction, Action, Profile,
PolicyStoreSourceType, PolicyStoreSource |
Format-Table -AutoSize
ActiveStore repräsentiert die wirksame Zusammenführung der angewendeten Richtlinien. Eine lokal sichtbare Regel kann durch zentral verwaltete Vorgaben eingeschränkt sein.
Wichtig: Eine scheinbar passende Erlaubnisregel beweist nicht automatisch, dass keine andere wirksame Regel oder Sicherheitskomponente den Datenverkehr blockiert.
9. Windows-Firewallprotokollierung prüfen
Konfigurierte Protokolldateien und Einstellungen anzeigen:
[RO] Get-NetFirewallProfile |
Select-Object Name, LogAllowed, LogBlocked, LogFileName, LogMaxSizeKilobytes |
Format-List
Der konkrete Speicherort muss aus LogFileName übernommen werden. Er sollte nicht angenommen oder fest im Diagnoseablauf vorgegeben werden.
Konfigurierte Protokolldatei lesen:
[RO][PRIV][SENS] Get-Content "PFAD AUS LogFileName" -Tail 100
Datei fortlaufend beobachten:
[RO][PRIV][SENS] Get-Content "PFAD AUS LogFileName" -Tail 20 -Wait
Während der Beobachtung wird der fehlgeschlagene Verbindungstest erneut ausgeführt. Dabei müssen Zeitpunkt, Quelladresse, Zieladresse, Protokoll und Port abgeglichen werden.
Ereignisprotokolle zur Firewall suchen:
[RO][PRIV][SENS] Get-WinEvent -ListLog *Firewall* |
Select-Object LogName, IsEnabled, RecordCount
Anschließend kann ein tatsächlich vorhandenes Protokoll gezielt abgefragt werden:
[RO][PRIV][SENS] Get-WinEvent -LogName "ERMITTELTER PROTOKOLLNAME" -MaxEvents 50
Nicht jede Paketblockierung erscheint automatisch im Windows-Ereignisprotokoll. Die erforderliche Überwachung beziehungsweise Protokollierung muss zuvor aktiviert und durch die Unternehmensrichtlinie erlaubt sein.
10. Linux-Firewallsystem identifizieren
Vorhandene Werkzeuge ermitteln:
[RO] command -v firewall-cmd
[RO] command -v nft
[RO] command -v ufw
[RO] command -v iptables
Aktive Dienste prüfen:
[RO] systemctl is-active firewalld
[RO] systemctl is-active nftables
[RO] systemctl is-active ufw
Eine Ausgabe wie inactive, failed oder unknown muss im Kontext der jeweiligen Distribution bewertet werden. Beispielsweise kann ein nftables-Regelwerk aktiv sein, obwohl kein dauerhaft laufender nftables-Dienst angezeigt wird.
Geladene nftables-Regeln prüfen:
[RO][PRIV][SENS] sudo nft list ruleset
iptables-Regeln prüfen:
[RO][PRIV][SENS] sudo iptables -S
[RO][PRIV][SENS] sudo ip6tables -S
iptables-Regeln mit Zählern:
[RO][PRIV][SENS] sudo iptables -L -n -v --line-numbers
[RO][PRIV][SENS] sudo ip6tables -L -n -v --line-numbers
Auf modernen Linux-Systemen kann der Befehl iptables ein Kompatibilitätsfrontend für nftables sein. Deshalb muss geprüft werden, welche Verwaltungsebene die Distribution tatsächlich verwendet.
11. firewalld analysieren
firewalld arbeitet mit Zonen. Schnittstellen oder Quellnetze werden einer Zone zugeordnet, für die Dienste, Ports und weitere Regeln gelten.
Status prüfen:
[RO] firewall-cmd --state
Standardzone anzeigen:
[RO] firewall-cmd --get-default-zone
Aktive Zonen und zugehörige Schnittstellen anzeigen:
[RO] firewall-cmd --get-active-zones
Zone einer bestimmten Schnittstelle ermitteln:
[RO] firewall-cmd --get-zone-of-interface=eth0
eth0 muss durch die tatsächliche Schnittstelle ersetzt werden.
Komplette Laufzeitkonfiguration einer Zone anzeigen:
[RO][SENS] firewall-cmd --zone=public --list-all
Alle Zonen anzeigen:
[RO][SENS] firewall-cmd --list-all-zones
Freigegebene Dienste:
[RO] firewall-cmd --zone=public --list-services
Freigegebene Ports:
[RO] firewall-cmd --zone=public --list-ports
Prüfen, ob TCP-Port 443 in der Laufzeitkonfiguration freigegeben ist:
[RO] firewall-cmd --zone=public --query-port=443/tcp
Prüfen, ob der HTTPS-Dienst freigegeben ist:
[RO] firewall-cmd --zone=public --query-service=https
Rich Rules anzeigen:
[RO][SENS] firewall-cmd --zone=public --list-rich-rules
Policies anzeigen:
[RO][SENS] firewall-cmd --get-policies
Bei jeder Prüfung muss die tatsächlich aktive Zone verwendet werden. Die Zone public ist nur ein Beispiel.
12. firewalld: Laufzeit- und dauerhafte Konfiguration vergleichen
firewalld trennt zwischen:
- Runtime-Konfiguration: aktuell im laufenden System wirksam
- Permanent-Konfiguration: für erneutes Laden beziehungsweise Neustart gespeichert
Aktuelle Laufzeitkonfiguration:
[RO][SENS] firewall-cmd --zone=public --list-all
Dauerhafte Konfiguration:
[RO][SENS] firewall-cmd --permanent --zone=public --list-all
Typische Abweichungen:
| Situation | Folge |
|---|---|
| Port nur zur Laufzeit freigegeben | Freigabe verschwindet nach Reload oder Neustart |
| Port nur dauerhaft eingetragen | Freigabe ist noch nicht zwingend zur Laufzeit aktiv |
| Falsche Zone bearbeitet | Regel existiert, gilt aber nicht für die betroffene Schnittstelle |
| Dienstname freigegeben, aber andere Portdefinition erwartet | Tatsächlicher Dienstport kann abweichen |
| Schnittstellenzuordnung geändert | Anderes Zonenregelwerk wird wirksam |
Eine Abweichung ist nicht automatisch ein Fehler. Sie muss mit dem vorgesehenen Sollzustand verglichen werden.
13. ufw analysieren
Status und Standardrichtlinien anzeigen:
[RO][PRIV][SENS] sudo ufw status verbose
Regeln nummeriert anzeigen:
[RO][PRIV][SENS] sudo ufw status numbered
Erweiterte Rohdarstellung anzeigen:
[RO][PRIV][SENS] sudo ufw show raw
Zu kontrollieren sind:
- Ist
ufwaktiv? - Welche Standardaktion gilt eingehend?
- Welche Standardaktion gilt ausgehend?
- Ist der richtige Port freigegeben?
- Gilt die Regel für TCP oder UDP?
- Ist die Regel auf eine Quelladresse beschränkt?
- Existiert eine separate IPv6-Regel?
- Gilt die Regel für die richtige Schnittstelle?
- Gibt es vorhergehende Ablehnungsregeln?
Beispiel einer begrenzten Regelbeschreibung:
TCP-Port 443
nur aus 192.0.2.0/24
eingehend
über die vorgesehene Schnittstelle
Eine Ausgabe wie 443 ALLOW Anywhere muss zusätzlich hinsichtlich IPv4, IPv6 und der tatsächlich aktiven Backend-Regeln bewertet werden.
14. nftables-Regelwerk untersuchen
Gesamtes geladenes Regelwerk anzeigen:
[RO][PRIV][SENS] sudo nft list ruleset
Tabellen anzeigen:
[RO][PRIV] sudo nft list tables
Regelwerk mit Handles anzeigen:
[RO][PRIV][SENS] sudo nft -a list ruleset
Regelwerk mit Zählern und Handles beobachten:
[RO][PRIV][SENS] sudo nft -a list ruleset
Bei nftables sind insbesondere zu prüfen:
| Bestandteil | Bedeutung |
|---|---|
| Familie | ip, ip6, inet, arp, bridge oder netdev |
| Tabelle | Logische Sammlung von Chains und Regeln |
| Base Chain | An einen Netfilter-Hook gebundene Kette |
| Hook | Beispielsweise input, output oder forward |
| Priority | Reihenfolge gegenüber anderen Base Chains |
| Policy | Standardaktion der Base Chain |
| Match | Bedingung wie Adresse, Port, Protokoll oder Schnittstelle |
| Verdict | Beispielsweise accept, drop, reject, jump oder return |
| Counter | Anzahl passender Pakete und Bytes |
| Handle | Interne Kennung einer Regel |
Wichtige Diagnosefrage:
Steigt der Zähler der vermuteten Regel, während der Verbindungstest ausgeführt wird?
Wenn der Zähler nicht steigt, kann dies bedeuten:
- Das Paket erreicht das System nicht.
- Das Paket durchläuft eine andere Chain.
- Eine vorherige Regel entscheidet bereits.
- Protokoll, Port oder Adresse stimmen nicht.
- IPv4 und IPv6 wurden verwechselt.
- Eine andere Firewallkomponente greift ein.
15. iptables-Regeln untersuchen
Filterregeln mit Zählern und Zeilennummern:
[RO][PRIV][SENS] sudo iptables -L -n -v --line-numbers
IPv6-Regeln:
[RO][PRIV][SENS] sudo ip6tables -L -n -v --line-numbers
Regeln in Befehlsschreibweise:
[RO][PRIV][SENS] sudo iptables -S
NAT-Tabelle:
[RO][PRIV][SENS] sudo iptables -t nat -L -n -v --line-numbers
Weitere häufig relevante Tabellen:
[RO][PRIV][SENS] sudo iptables -t mangle -L -n -v --line-numbers
[RO][PRIV][SENS] sudo iptables -t raw -L -n -v --line-numbers
Zu prüfen sind:
- Standardrichtlinie der Chain,
- Reihenfolge der Regeln,
- Quell- und Zieladressen,
- Eingangs- und Ausgangsschnittstelle,
- Transportprotokoll,
- Quell- und Zielport,
- Verbindungszustand,
- Sprung in benutzerdefinierte Chains,
- Paket- und Bytezähler,
- IPv4- und IPv6-Regeln,
- NAT-Regeln.
Bei iptables entscheidet häufig die erste zutreffende Regel, die ein endgültiges Ziel wie ACCEPT, DROP oder REJECT ausführt. Eine Erlaubnisregel unterhalb einer bereits passenden Blockierungsregel wird dann nicht erreicht.
16. macOS-Anwendungsfirewall prüfen
Die macOS-Anwendungsfirewall kontrolliert hauptsächlich eingehende Verbindungen anhand von Anwendungen und Diensten. Sie ist nicht mit dem Packet Filter pf gleichzusetzen.
Grafische Prüfung:
Systemeinstellungen
→ Netzwerk
→ Firewall
Je nach macOS-Version können die genaue Position und Bezeichnungen abweichen.
Status der Anwendungsfirewall:
[RO] /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
Prüfen, ob alle eingehenden Verbindungen blockiert werden:
[RO] /usr/libexec/ApplicationFirewall/socketfilterfw --getblockall
Stealth-Modus prüfen:
[RO] /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
Automatische Freigabe signierter Software prüfen:
[RO] /usr/libexec/ApplicationFirewall/socketfilterfw --getallowsigned
Konfigurierte Anwendungen anzeigen:
[RO][PRIV][SENS] sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
Zu kontrollieren sind:
- Ist die Anwendungsfirewall eingeschaltet?
- Werden alle eingehenden Verbindungen blockiert?
- Ist die betroffene Anwendung aufgeführt?
- Ist die Anwendung zugelassen oder blockiert?
- Hat sich der Programmpfad nach einem Update geändert?
- Wird der Dienst durch eine andere ausführbare Datei gestartet?
- Wird die Einstellung durch ein Konfigurationsprofil oder MDM verwaltet?
Die genaue Ausgabe von socketfilterfw kann zwischen macOS-Versionen variieren.
17. macOS Packet Filter pf prüfen
pf ist ein paketbasierter Filter und getrennt von der macOS-Anwendungsfirewall zu betrachten.
Status und grundlegende Informationen:
[RO][PRIV] sudo pfctl -s info
Geladene Filterregeln anzeigen:
[RO][PRIV][SENS] sudo pfctl -s rules
NAT-Regeln anzeigen:
[RO][PRIV][SENS] sudo pfctl -s nat
Alle verfügbaren pf-Informationen anzeigen:
[RO][PRIV][SENS] sudo pfctl -s all
Zustandstabelle anzeigen:
[RO][PRIV][SENS] sudo pfctl -s states
Regeln mit zusätzlichen Informationen anzeigen:
[RO][PRIV][SENS] sudo pfctl -vvs rules
Zu kontrollieren sind:
- Ist
pfaktiviert? - Welche Regeln und Anchors wurden geladen?
- Gibt es NAT- oder Weiterleitungsregeln?
- Stimmen Schnittstelle, Adressfamilie, Adresse, Protokoll und Port?
- Erhöhen sich Regelzähler während des Tests?
- Wird das Regelwerk durch VPN-, Virtualisierungs- oder Sicherheitssoftware ergänzt?
Nicht ausführen, solange keine ausdrücklich genehmigte Änderung vorgesehen ist:
pf aktivieren oder deaktivieren
Regelwerk neu laden
Zustandstabellen leeren
Anchors verändern
Solche Aktionen können bestehende Netzwerkverbindungen und Sicherheitsrichtlinien beeinflussen.
18. Host-Firewall oder Netzwerk-Firewall unterscheiden
Ein Vergleich mehrerer Messpunkte hilft, die blockierende Stelle einzugrenzen.
Client
↓
Client-Firewall
↓
Switch/VLAN
↓
Router oder zentrale Firewall
↓
Server-Firewall
↓
Serveranwendung
| Beobachtung | Mögliche Schlussfolgerung |
|---|---|
| Paket verlässt den Client nicht | Client-Firewall, Anwendung oder lokales Routing prüfen |
| Paket verlässt Client, erreicht Server aber nicht | Netzwerkpfad, ACL, VPN, NAT oder zentrale Firewall prüfen |
| Paket erreicht Server, aber Anwendung erhält es nicht | Server-Firewall oder falsche Bindung prüfen |
| SYN erreicht Server, keine Antwort verlässt ihn | Listener, Server-Firewall oder lokales Routing prüfen |
| SYN-ACK verlässt Server, erreicht Client nicht | Rückweg oder Filter zwischen Server und Client prüfen |
| Verbindung funktioniert lokal, aber nicht entfernt | Bind-Adresse, Server-Firewall oder Netzwerkfilter prüfen |
| Nur ein Quellnetz ist betroffen | Quellnetz-, VLAN-, Zonen- oder Adressregel prüfen |
| Nur IPv6 ist betroffen | IPv6-Regeln und ICMPv6 gesondert prüfen |
Ein gleichzeitiger Paketmitschnitt auf Client und Server ist wesentlich aussagekräftiger als ein einseitiger Porttest.
19. Paketmitschnitt zur Firewallanalyse verwenden
Linux – TCP-Port 443 auf allen Schnittstellen:
[TEST][PRIV][FILE][SENS] sudo tcpdump -i any -nn \
'host 192.0.2.25 and tcp port 443' \
-w firewall-test.pcap
macOS – TCP-Port 443 auf einer konkreten Schnittstelle:
[TEST][PRIV][FILE][SENS] sudo tcpdump -i en0 -nn \
'host 192.0.2.25 and tcp port 443' \
-w firewall-test.pcap
Windows mit Dumpcap – Schnittstellen ermitteln:
[RO] dumpcap -D
Windows – Mitschnitt auf der zuvor bestimmten Schnittstelle:
[TEST][PRIV][FILE][SENS] dumpcap -i 1 `
-f "host 192.0.2.25 and tcp port 443" `
-w firewall-test.pcapng
Die Schnittstellennamen und -nummern sind Beispiele und müssen vorher ermittelt werden.
Wireshark-Anzeigefilter:
| Aufgabe | Filter |
|---|---|
| Gesamter Verkehr zwischen zwei IPv4-Systemen | ip.addr == 192.0.2.25 && ip.addr == 192.0.2.53 |
| TCP-Port 443 | tcp.port == 443 |
| Erste TCP-SYN-Pakete | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
| TCP-Reset | tcp.flags.reset == 1 |
| ICMP-Fehler | icmp |
| ICMPv6-Fehler | icmpv6 |
| Vermutete Wiederholungen | tcp.analysis.retransmission |
Interpretation:
| Paketmuster | Mögliche Bedeutung |
|---|---|
| Wiederholtes SYN ohne Antwort | DROP, Paketverlust, falscher Rückweg oder ausgefallenes Ziel |
| SYN gefolgt von RST/ACK | Port geschlossen oder aktive Ablehnung |
| ICMP administratively prohibited | Paketfilter oder Richtlinie lehnt Verkehr ausdrücklich ab |
| SYN und SYN-ACK sichtbar, ACK fehlt | Rückweg oder Clientseite prüfen |
| Vollständiger Handshake sichtbar | Firewall lässt den TCP-Aufbau grundsätzlich zu |
| Handshake erfolgreich, danach Abbruch | Anwendungs-, TLS- oder Sitzungsproblem möglich |
Der Mitschnitt beweist nur, was am jeweiligen Messpunkt sichtbar war.
20. Firewallprotokolle zeitlich korrekt auswerten
Für eine zuverlässige Zuordnung werden folgende Werte benötigt:
Datum und Uhrzeit
Zeitzone
Quelladresse
Zieladresse
Transportprotokoll
Quellport
Zielport
Richtung
Aktion
Schnittstelle oder Zone
Regelname beziehungsweise Regel-ID
Systemzeit prüfen:
| Betriebssystem | Befehl |
|---|---|
| Windows | [RO] Get-Date -Format o |
| Linux | [RO] date --iso-8601=seconds |
| macOS | [RO] date "+%Y-%m-%dT%H:%M:%S%z" |
Bei zentralen Firewalls können Zeitstempel in UTC gespeichert werden. Client-, Server- und Firewallzeit müssen deshalb einschließlich Zeitzone verglichen werden.
Empfohlener Testablauf:
- Exakten Startzeitpunkt notieren.
- Einen einzelnen reproduzierbaren Verbindungstest durchführen.
- Exakten Endzeitpunkt notieren.
- Protokolle auf dieses Zeitfenster beschränken.
- Quell- und Zieladresse sowie Port abgleichen.
- Regelname und Aktion dokumentieren.
- Bei NAT sowohl ursprüngliche als auch übersetzte Adressen berücksichtigen.
21. Stateful Inspection und Verbindungszustände berücksichtigen
Moderne Firewalls arbeiten häufig zustandsorientiert. Sie verfolgen bestehende Verbindungen und unterscheiden beispielsweise:
- neue Verbindung,
- bestehende Verbindung,
- zugehörige Verbindung,
- ungültiger Zustand.
Dadurch kann Rückverkehr erlaubt sein, obwohl keine allgemeine eingehende Freigabe für den dynamischen Clientport existiert.
Linux – Conntrack-Werkzeug vorhanden?
[RO] command -v conntrack
Verbindungseinträge anzeigen, sofern das Werkzeug installiert ist:
[RO][PRIV][SENS] sudo conntrack -L
Nur TCP-Verbindungen zu Port 443 filtern:
[RO][PRIV][SENS] sudo conntrack -L -p tcp --dport 443
conntrack ist nicht auf jedem Linux-System standardmäßig installiert.
Mögliche Fehlerbilder:
- asymmetrisches Routing führt nur eine Richtung durch die zustandsorientierte Firewall,
- veraltete Zustandseinträge beeinflussen neue Verbindungen,
- NAT-Zustände stimmen nicht mit dem aktuellen Pfad überein,
- Pakete werden als ungültig bewertet,
- mehrere Firewalls sehen unterschiedliche Teile derselben Verbindung.
Zustandstabellen dürfen nicht ohne Freigabe geleert werden. Das kann zahlreiche bestehende Verbindungen unterbrechen.
22. ICMP und ICMPv6 nicht pauschal blockieren
ICMP beziehungsweise ICMPv6 wird nicht nur für ping verwendet. Es übermittelt wichtige Netzwerk- und Fehlermeldungen.
Dazu gehören unter anderem:
- Ziel nicht erreichbar,
- Fragmentierung erforderlich,
- Packet Too Big,
- Time Exceeded,
- Echo Request und Echo Reply,
- Router- und Neighbor-Discovery-Funktionen bei IPv6.
Eine zu weitgehende Blockierung kann zu schwer erkennbaren Fehlern führen:
Kleine Pakete funktionieren
↓
Größere Übertragungen bleiben hängen
↓
Erforderliche MTU-Fehlermeldung wird blockiert
↓
Path-MTU-Ermittlung funktioniert nicht richtig
Bei IPv6 sind bestimmte ICMPv6-Funktionen für den regulären Betrieb notwendig. „ICMP vollständig blockieren“ ist daher keine geeignete allgemeine Sicherheitsregel.
23. Typische Firewallfehler
| Fehler | Wirkung |
|---|---|
| Falsches Windows-Profil | Regel ist vorhanden, aber nicht aktiv |
| Falsche firewalld-Zone | Regel gilt nicht für die betroffene Schnittstelle |
| TCP statt UDP freigegeben | Anwendung bleibt nicht erreichbar |
| UDP statt TCP freigegeben | TCP-Verbindung schlägt weiterhin fehl |
| Falscher lokaler oder entfernter Port | Regel passt nicht zum Datenfluss |
| Zu enges Quellnetz | Bestimmte Clients funktionieren, andere nicht |
| IPv4-Regel ohne IPv6-Entsprechung | Zugriff funktioniert nur über IPv4 |
| Falscher Programmpfad | Anwendungsregel greift nach Update nicht mehr |
| Erlaubnisregel unterhalb einer Blockierungsregel | Vorherige Regel entscheidet bereits |
| Runtime- und permanente Regeln weichen ab | Fehler erscheint nach Reload oder Neustart |
| Eingehend und ausgehend verwechselt | Falsche Richtung wurde freigegeben |
| INPUT und FORWARD verwechselt | Router- oder Containerverkehr wird falsch bewertet |
| Rückweg läuft über andere Firewall | Stateful Inspection kann Verbindung verwerfen |
| Lokale und zentrale Richtlinie widersprechen sich | Erwartete lokale Regel ist nicht wirksam |
| Containerport nicht veröffentlicht | Host-Firewallregel allein löst das Problem nicht |
| Sicherheitssoftware zusätzlich aktiv | Native Firewallregeln erklären das Verhalten nicht vollständig |
24. Containerverkehr und Firewalls berücksichtigen
Containerverkehr kann zusätzliche Regelketten, Bridges, NAT-Regeln und Weiterleitungen verwenden.
Client
↓
Host-Firewall
↓
veröffentlichter Hostport
↓
NAT oder Container-Proxy
↓
Container-Netzwerk
↓
Containerport
Docker-Portzuordnungen prüfen:
[RO] docker ps --format 'table {{.Names}}\t{{.Ports}}'
Portzuordnung eines Containers:
[RO] docker port CONTAINERNAME
Docker-Netzwerke anzeigen:
[RO] docker network ls
Konkretes Netzwerk untersuchen:
[RO][SENS] docker network inspect NETZWERKNAME
Zu prüfen sind:
- Ist der Port überhaupt veröffentlicht?
- Ist er nur an
127.0.0.1gebunden? - Stimmen Hostport und Containerport?
- Lauscht die Anwendung im Container?
- Ist IP-Forwarding erforderlich und aktiv?
- Wird der Verkehr durch die
FORWARD-Kette verarbeitet? - Verwalten Docker und das Host-Firewallsystem gemeinsame Regeln?
- Existiert ein Reverse Proxy vor dem Container?
Firewallregeln, die von einer Containerplattform erzeugt wurden, dürfen nicht manuell verändert werden, ohne deren Verwaltungslogik und Auswirkungen zu berücksichtigen.
25. Sichere Gegenprobe ohne vollständiges Abschalten
Eine Firewall vollständig zu deaktivieren ist keine bevorzugte Diagnosemethode. Bessere Gegenproben sind:
- Regelzähler vor und nach einem einzelnen Test vergleichen.
- Blockierungsprotokoll aktivieren, sofern genehmigt.
- Gleichzeitig auf Client und Server mitschneiden.
- Eine eng begrenzte temporäre Testregel beantragen.
- Nur eine definierte Quelladresse erlauben.
- Nur den benötigten Zielport und das richtige Protokoll erlauben.
- Testzeitraum begrenzen.
- Änderung und Rückbau dokumentieren.
- Regel nach dem Test entfernen oder deaktivieren.
- Anschließend den ursprünglichen Zustand bestätigen.
Beispiel für den Umfang einer genehmigten Testregel:
Quelle: 192.0.2.25
Ziel: 192.0.2.53
Protokoll: TCP
Zielport: 443
Richtung: eingehend
Gültigkeit: nur während des Wartungsfensters
Protokoll: aktiv
Die konkreten Änderungsbefehle werden erst nach Prüfung des vorhandenen Regelwerks, der Verwaltungsplattform und des genehmigten Sollzustands erstellt.
26. Warum die Firewall nicht einfach deaktiviert werden sollte
Ein vollständiges Abschalten kann:
- das System ungeschützt erreichbar machen,
- gegen Unternehmensrichtlinien verstoßen,
- andere Sicherheitsfunktionen beeinträchtigen,
- den ursprünglichen Fehlerzustand verändern,
- zentrale Richtlinien umgehen oder Konflikte erzeugen,
- nicht beweisen, welche konkrete Regel verantwortlich war,
- zusätzliche Verbindungen zulassen, die den Test verfälschen,
- bei Remoteadministration zum Verbindungsabbruch führen.
Microsoft empfiehlt ausdrücklich, die Windows-Firewall nicht einfach zu deaktivieren. Stattdessen sollen gezielte Regeln und Diagnosefunktionen verwendet werden.
Nicht als allgemeiner Diagnoseschritt verwenden:
Windows-Firewall vollständig ausschalten
firewalld stoppen
ufw deaktivieren
nftables-Regelwerk leeren
iptables-Regeln leeren
pf deaktivieren
Sicherheitssoftware beenden
Diese Aktionen sind Änderungen mit potenziell weitreichenden Sicherheits- und Betriebsfolgen.
27. Systematischer Diagnoseablauf
| Schritt | Prüfung | Leitfrage |
|---|---|---|
| 1 | Datenfluss definieren | Welche Quelle muss welches Ziel über welches Protokoll und welchen Port erreichen? |
| 2 | Fehler reproduzieren | Ist das Verhalten reproduzierbar und zeitlich dokumentiert? |
| 3 | DNS und Zieladresse prüfen | Wird wirklich das erwartete System angesprochen? |
| 4 | Routing prüfen | Verwendet das Paket den erwarteten Weg? |
| 5 | Serverdienst prüfen | Läuft der Dienst und lauscht er richtig? |
| 6 | Lokalen Test durchführen | Funktioniert der Dienst direkt auf dem Server? |
| 7 | Firewallsystem identifizieren | Welches Werkzeug und welche Richtlinie sind tatsächlich aktiv? |
| 8 | Profil, Zone oder Schnittstelle prüfen | Welcher Regelbereich gilt für den Verkehr? |
| 9 | Passende Regeln suchen | Stimmen Richtung, Protokoll, Port, Adressen und Anwendung? |
| 10 | Reihenfolge und Priorität prüfen | Entscheidet vorher bereits eine andere Regel? |
| 11 | Zähler und Protokolle beobachten | Trifft der Testverkehr auf die vermutete Regel? |
| 12 | Client- und Servermitschnitt vergleichen | An welcher Stelle verschwindet das Paket? |
| 13 | Zentrale Filter prüfen | Gibt es ACL, VPN-, Cloud- oder Netzwerk-Firewalls? |
| 14 | Eng begrenzte Änderung planen | Welche minimale Änderung stellt den Sollzustand her? |
| 15 | Änderung genehmigen und dokumentieren | Wer hat Umfang und Zeitraum freigegeben? |
| 16 | Nachprüfung durchführen | Funktioniert der Dienst und bleibt die Sicherheit erhalten? |
28. Kompakte Befehlstabelle
| Aufgabe | Windows | Linux | macOS |
|---|---|---|---|
| Aktives Netzwerkprofil oder Zone | [RO] Get-NetConnectionProfile |
firewalld: [RO] firewall-cmd --get-active-zones |
Anwendungsfirewall besitzt keine direkt vergleichbaren Netzwerkprofile |
| Firewallstatus | [RO] Get-NetFirewallProfile |
firewalld: [RO] firewall-cmd --state |
[RO] /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate |
| Aktive Regeln | [RO][SENS] Get-NetFirewallRule -Enabled True |
nftables: [RO][PRIV][SENS] sudo nft list ruleset |
pf: [RO][PRIV][SENS] sudo pfctl -s rules |
| Blockierungsregeln | [RO][SENS] Get-NetFirewallRule -Enabled True -Action Block |
Regelwerk nach drop beziehungsweise reject untersuchen |
Anwendungsregeln: [RO][PRIV][SENS] sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps |
| TCP-Portregel suchen | [RO] Get-NetFirewallPortFilter -Protocol TCP |
firewalld: [RO] firewall-cmd --zone=ZONE --query-port=443/tcp |
pf-Regeln: [RO][PRIV][SENS] sudo pfctl -vvs rules |
| UDP-Portregel suchen | [RO] Get-NetFirewallPortFilter -Protocol UDP |
firewalld: [RO] firewall-cmd --zone=ZONE --query-port=53/udp |
pf-Regeln: [RO][PRIV][SENS] sudo pfctl -vvs rules |
| Firewallprofile ausführlich | [RO] Get-NetFirewallProfile | Format-List * |
Nicht direkt vergleichbar | [RO] /usr/libexec/ApplicationFirewall/socketfilterfw --getblockall |
| iptables-Regeln | Nicht zutreffend | [RO][PRIV][SENS] sudo iptables -L -n -v --line-numbers |
Nicht standardmäßig verwendet |
| nftables-Regeln | Nicht zutreffend | [RO][PRIV][SENS] sudo nft -a list ruleset |
Nicht zutreffend |
| ufw-Status | Nicht zutreffend | [RO][PRIV][SENS] sudo ufw status verbose |
Nicht zutreffend |
| pf-Status | Nicht zutreffend | Nicht standardmäßig für alle Distributionen | [RO][PRIV] sudo pfctl -s info |
| TCP-Porttest | [TEST] Test-NetConnection HOST -Port 443 |
[TEST] nc -vz -w 5 HOST 443 |
[TEST] nc -vz -w 5 HOST 443 |
| Paketmitschnitt | Dumpcap oder pktmon | [TEST][PRIV][FILE][SENS] sudo tcpdump ... |
[TEST][PRIV][FILE][SENS] sudo tcpdump ... |
HOST, ZONE, Schnittstellen, Adressen und Ports müssen durch die Werte des konkreten Störungsfalls ersetzt werden.
29. Dokumentationsvorlage für Firewallfehler
Störung:
Zeitpunkt:
Zeitzone:
Betroffener Standort:
Betroffener Benutzer oder Dienst:
Clienthostname:
Client-IP-Adresse:
Client-VLAN:
Client-Schnittstelle:
Zielhostname:
Ziel-IP-Adresse:
Zielport:
Transportprotokoll:
Adressfamilie: IPv4 / IPv6
Erwartete Anwendung:
Dienststatus:
Lokaler Listener:
Bind-Adresse:
Lokaler Funktionstest:
Entfernter Verbindungstest:
Fehlermeldung:
Aktive lokale Firewall:
Aktives Profil beziehungsweise aktive Zone:
Standardaktion eingehend:
Standardaktion ausgehend:
Vermutete Regel:
Regelrichtung:
Regelaktion:
Quellbeschränkung:
Zielbeschränkung:
Portbedingung:
Programmbedingung:
Richtlinienquelle:
Regelzähler vor dem Test:
Regelzähler nach dem Test:
Firewallprotokolleintrag:
Paket am Client sichtbar:
Paket am Server sichtbar:
Antwort am Server sichtbar:
Antwort am Client sichtbar:
Zentrale Firewall oder ACL:
NAT beteiligt:
Container oder Reverse Proxy beteiligt:
Festgestellte Ursache:
Genehmigte Änderung:
Rückfallplan:
Ergebnis der Nachprüfung:
30. Kontrollfragen nach der Diagnose
- Wurde der Datenfluss vollständig beschrieben?
- Wurde zwischen eingehendem, ausgehendem und weitergeleitetem Verkehr unterschieden?
- Wurde TCP, UDP, ICMP oder ICMPv6 korrekt bestimmt?
- Wurde die tatsächlich verwendete Zieladresse dokumentiert?
- Wurde geprüft, ob der Dienst lokal lauscht?
- Wurde das aktive Windows-Profil beziehungsweise die aktive Linux-Zone ermittelt?
- Wurde zwischen IPv4- und IPv6-Regeln unterschieden?
- Wurden Adress-, Port-, Anwendungs- und Dienstfilter geprüft?
- Wurde die Reihenfolge beziehungsweise Priorität der Regeln berücksichtigt?
- Wurden zentrale Richtlinien und Drittanbieterprodukte berücksichtigt?
- Wurde zwischen Runtime- und permanenter Konfiguration unterschieden?
- Wurden Regelzähler während eines reproduzierbaren Tests beobachtet?
- Wurden Client- und Servermitschnitt verglichen?
- Wurde ein Timeout nicht automatisch als Firewallbeweis gewertet?
- Wurde die Firewall nicht unnötig vollständig deaktiviert?
- Wurde eine Änderung auf das erforderliche Minimum begrenzt?
- Wurde der Sollzustand nach der Änderung erneut geprüft?
- Wurde die Änderung einschließlich Rückfallplan dokumentiert?
31. Quellen und weiterführende Dokumentation
-
Microsoft Learn – Windows Firewall overview:
https://learn.microsoft.com/windows/security/operating-system-security/network-security/windows-firewall/ -
Microsoft Learn – Windows-Firewall über die Befehlszeile verwalten:
https://learn.microsoft.com/de-de/windows/security/operating-system-security/network-security/windows-firewall/configure-with-command-line -
Microsoft Learn – Get-NetFirewallProfile:
https://learn.microsoft.com/powershell/module/netsecurity/get-netfirewallprofile -
Microsoft Learn – Get-NetFirewallRule:
https://learn.microsoft.com/powershell/module/netsecurity/get-netfirewallrule -
Microsoft Learn – Get-NetFirewallPortFilter:
https://learn.microsoft.com/powershell/module/netsecurity/get-netfirewallportfilter -
Microsoft Learn – Get-NetFirewallAddressFilter:
https://learn.microsoft.com/powershell/module/netsecurity/get-netfirewalladdressfilter -
firewalld – Offizielle Dokumentation:
https://firewalld.org/documentation/ -
firewalld – Handbuch zu
firewall-cmd:
https://firewalld.org/documentation/man-pages/firewall-cmd -
Netfilter – nftables Wiki:
https://wiki.nftables.org/ -
Netfilter – nftables-Regelwerk nachverfolgen:
https://wiki.nftables.org/wiki-nftables/index.php/Ruleset_debug/tracing -
Ubuntu – UFW-Dokumentation:
https://documentation.ubuntu.com/server/how-to/security/firewalls/ -
Linux-Handbuch –
iptables(8):
https://man7.org/linux/man-pages/man8/iptables.8.html -
Linux-Handbuch –
nft(8):
https://man7.org/linux/man-pages/man8/nft.8.html -
Apple – Firewall-Sicherheit bei macOS:
https://support.apple.com/de-de/guide/security/seca0e83763f/web -
Apple – Verbindungen auf dem Mac mit einer Firewall blockieren:
https://support.apple.com/de-de/guide/mac-help/mh34041/mac -
Wireshark – Benutzerhandbuch:
https://www.wireshark.org/docs/wsug_html_chunked/