Rpm mit Rocky

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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