Rpm mit Rocky
Version vom 20. Mai 2026, 11:29 Uhr von Thomas.will (Diskussion | Beiträge)
firewalld
firewalld ist der Standard-Paketfilter unter Rocky Linux. Er arbeitet als Frontend für nftables und verwaltet Firewall-Regeln über das Konzept von Zonen. Anders als bei klassischen iptables-Regeln die sofort verloren gehen wenn man einen Fehler macht, unterscheidet firewalld zwischen laufenden und permanenten Regeln – eine wichtige Sicherheit im Laborbetrieb.
Konzepte
Zonen
Eine Zone definiert das Vertrauensniveau eines Netzwerks. Jedes Interface wird einer Zone zugeordnet – darüber entscheidet firewalld welche Regeln gelten.
| Zone | Beschreibung |
|---|---|
| drop | Alle eingehenden Pakete werden verworfen – keine Antwort |
| block | Eingehende Pakete werden mit icmp-host-prohibited abgelehnt |
| public | Öffentliche Netze – nur ausgewählte Dienste erlaubt – Standard |
| external | Externe Netze mit Masquerading – für Router |
| dmz | Demilitarisierte Zone – eingeschränkter Zugriff |
| work | Arbeitsnetze – mehr Vertrauen als public |
| home | Heimnetze – noch mehr Vertrauen |
| internal | Interne Netze – hohes Vertrauen |
| trusted | Alle Verbindungen erlaubt |
Laufend vs. Permanent
- --permanent
- Regel wird dauerhaft gespeichert – gilt nach reload und Reboot
- ohne --permanent
- Regel gilt nur bis zum nächsten reload oder Reboot
- Nach permanenten Änderungen immer reload ausführen
- firewall-cmd --reload
Policies
- In modernem firewalld (ab 0.9) regeln Policies den Verkehr zwischen Zonen – ohne Policy wird Forwarding zwischen Zonen standardmäßig geblockt. Das ist der richtige Weg für Router und Firewalls mit mehreren Interfaces.
Installation und Start
- firewalld ist auf Rocky meist vorinstalliert
- dnf install -y firewalld
- systemctl enable --now firewalld
Grundlegende Befehle
Status
- firewall-cmd --state
running
- systemctl status firewalld
Zonen anzeigen
- Alle verfügbaren Zonen
- firewall-cmd --get-zones
- Standard-Zone anzeigen
- firewall-cmd --get-default-zone
- Standard-Zone setzen
- firewall-cmd --set-default-zone=public
- Alle aktiven Zonen mit Interfaces
- firewall-cmd --get-active-zones
Zone im Detail anzeigen
- firewall-cmd --list-all
- firewall-cmd --list-all --zone=dmz
Interfaces und Zonen
Interface einer Zone zuweisen
- Über firewall-cmd – nicht reproduzierbar nach Reboot wenn NetworkManager die Zone überschreibt
- firewall-cmd --permanent --zone=external --change-interface=enp0s3
- Besser
- Zone über NetworkManager setzen – gilt dauerhaft
- nmcli connection modify enp0s3 connection.zone external
- nmcli connection up enp0s3
Dienste
- firewalld kennt vordefinierte Dienste – sie bündeln Port und Protokoll unter einem Namen
Dienste anzeigen
- Alle verfügbaren Dienste
- firewall-cmd --get-services
- Freigegebene Dienste in einer Zone
- firewall-cmd --list-services --zone=public
Dienst freigeben
- firewall-cmd --permanent --zone=public --add-service=http
- firewall-cmd --permanent --zone=public --add-service=https
- firewall-cmd --permanent --zone=public --add-service=ssh
- firewall-cmd --reload
Dienst sperren
- firewall-cmd --permanent --zone=public --remove-service=http
- firewall-cmd --reload
Eigenen Dienst definieren
- Für Dienste die firewalld nicht kennt – z.B. einen eigenen Port
- firewall-cmd --permanent --new-service=meinservice
- firewall-cmd --permanent --service=meinservice --add-port=8080/tcp
- firewall-cmd --permanent --zone=public --add-service=meinservice
- firewall-cmd --reload
Ports
- Einzelne Ports direkt freigeben – ohne Dienst-Definition
- firewall-cmd --permanent --zone=public --add-port=8080/tcp
- firewall-cmd --permanent --zone=public --add-port=53/udp
- firewall-cmd --reload
- Port entfernen
- firewall-cmd --permanent --zone=public --remove-port=8080/tcp
Protokolle
- Protokolle wie ICMP direkt freigeben – für ping im Laborbetrieb
- firewall-cmd --permanent --zone=public --add-protocol=icmp
- firewall-cmd --reload
Masquerading
- Masquerading ersetzt die Quell-IP ausgehender Pakete durch die externe IP – notwendig für NAT/Routing
- firewall-cmd --permanent --zone=external --add-masquerade
- firewall-cmd --reload
- Masquerading prüfen
- firewall-cmd --query-masquerade --zone=external
Rich Rules
- Rich Rules erlauben komplexere Regeln – z.B. Zugriff nur auf eine bestimmte Ziel-IP oder aus einem bestimmten Quellnetz
Syntax
rule family="ipv4" [source address="IP/Maske"] [destination address="IP/Maske"] [service name="dienst" | port port="PORT" protocol="tcp|udp"] [accept | drop | reject]
Beispiele
- DNS nur auf einen bestimmten Server erlauben
- firewall-cmd --permanent --zone=dmz --add-rich-rule='rule family="ipv4" destination address="10.88.2XX.21" service name="dns" accept'
- HTTP nur aus einem bestimmten Netz
- firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept'
- SSH nach 3 Fehlversuchen sperren
- firewall-cmd --permanent --zone=public --add-rich-rule='rule service name="ssh" limit value="3/m" accept'
- IP-Adresse komplett sperren
- firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="1.2.3.4" drop'
Policies
- Policies regeln den Verkehr zwischen Zonen – notwendig für Forwarding in Router-Setups
Policy anlegen
- LAN → WAN mit Masquerading
- firewall-cmd --permanent --new-policy lan-to-wan
- firewall-cmd --permanent --policy lan-to-wan --add-ingress-zone internal
- firewall-cmd --permanent --policy lan-to-wan --add-egress-zone external
- firewall-cmd --permanent --policy lan-to-wan --set-target ACCEPT
- firewall-cmd --permanent --policy lan-to-wan --add-masquerade
- firewall-cmd --reload
Policy anzeigen
- firewall-cmd --info-policy lan-to-wan
- firewall-cmd --get-policies
Logging
- Blockierte Pakete protokollieren – nützlich zur Fehlersuche
- firewall-cmd --set-log-denied=all
- firewall-cmd --reload
- Logs anzeigen
- journalctl -f | grep REJECT
- journalctl -f | grep filter_FWD
- Logging wieder deaktivieren
- firewall-cmd --set-log-denied=off
- firewall-cmd --reload
Kontrolle
- Alle Zonen prüfen
- firewall-cmd --list-all --zone=external
- firewall-cmd --list-all --zone=dmz
- firewall-cmd --list-all --zone=internal
- Alle Policies prüfen
- firewall-cmd --info-policy lan-to-wan
- firewall-cmd --info-policy dmz-to-wan
- Direkt in nftables schauen – zeigt was firewalld wirklich konfiguriert hat
- nft list ruleset