Rpm mit Rocky: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= RPM – Red Hat Package Manager = RPM ist das Backend der Softwareverwaltung unter Rocky Linux. Jedes installierte Paket ist in der RPM-Datenbank registrier…“)
 
 
Zeile 1: Zeile 1:
= RPM – Red Hat Package Manager =
+
= firewalld =
  
RPM ist das Backend der Softwareverwaltung unter Rocky Linux. Jedes installierte Paket ist in der RPM-Datenbank registriert – RPM kennt also genau welche Dateien zu welchem Paket gehören, welche Abhängigkeiten bestehen und ob Dateien seit der Installation verändert wurden.
+
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.
  
Im Alltag wird dnf als Frontend genutzt – RPM kommt dann zum Einsatz wenn man tiefer in ein Paket schauen will, einzelne .rpm-Dateien installieren möchte oder die Integrität des Systems prüfen will.
+
= Konzepte =
  
= Datenbankabfragen =
+
== Zonen ==
  
;Mit dem Query-Modus (-q) lässt sich die RPM-Datenbank nach installierten Paketen durchsuchen
+
Eine Zone definiert das Vertrauensniveau eines Netzwerks. Jedes Interface wird einer Zone zugeordnet – darüber entscheidet firewalld welche Regeln gelten.
  
== Paketname anzeigen ==
+
{| class="wikitable"
;Vollständigen Namen des installierten Pakets anzeigen
+
! Zone !! Beschreibung
* rpm -q mc
+
|-
mc-4.8.28-1.el9.x86_64
+
| 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 =
  
== Paketinformationen ==
+
;firewalld kennt vordefinierte Dienste sie bündeln Port und Protokoll unter einem Namen
;Detaillierte Informationen Version, Beschreibung, Lizenz, Installationsdatum
 
* rpm -qi mc
 
  
== Dateien eines Pakets ==
+
== Dienste anzeigen ==
;Alle Dateien die zum Paket gehören
+
;Alle verfügbaren Dienste
* rpm -ql mc
+
* firewall-cmd --get-services
;Nur Konfigurationsdateien
+
;Freigegebene Dienste in einer Zone
* rpm -qc mc
+
* firewall-cmd --list-services --zone=public
;Nur Dokumentationsdateien
 
* rpm -qd mc
 
  
== Zu welchem Paket gehört eine Datei? ==
+
== Dienst freigeben ==
;Sehr nützlich wenn man wissen will woher eine Datei stammt
+
* firewall-cmd --permanent --zone=public --add-service=http
* rpm -qf /usr/sbin/httpd
+
* firewall-cmd --permanent --zone=public --add-service=https
httpd-2.4.57-5.el9.x86_64
+
* firewall-cmd --permanent --zone=public --add-service=ssh
* rpm -qf /sbin/ifconfig
+
* firewall-cmd --reload
net-tools-2.0-0.62.el9.x86_64
 
  
== Abhängigkeiten ==
+
== Dienst sperren ==
;Was braucht das Paket
+
* firewall-cmd --permanent --zone=public --remove-service=http
* rpm -q --requires mc
+
* firewall-cmd --reload
;Was stellt das Paket zur Verfügung
 
* rpm -q --provides mc
 
;Welches Paket stellt einen bestimmten Service bereit
 
* rpm -q --whatprovides libext2fs.so.2
 
;Welche Pakete nutzen einen Service
 
* rpm -q --whatrequires libext2fs.so.2
 
  
== Installationsskripte anzeigen ==
+
== Eigenen Dienst definieren ==
;Zeigt pre/postinstall und pre/postuninstall Skripte – nützlich zur Fehlersuche
+
;Für Dienste die firewalld nicht kennt – z.B. einen eigenen Port
* rpm -q --scripts httpd
+
* 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
  
= Abfragen auf .rpm-Dateien =
+
= Ports =
  
;Mit -p (package) lässt sich eine noch nicht installierte .rpm-Datei abfragen – ohne sie zu installieren
+
;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
  
;Paketname
+
;Port entfernen
* rpm -qp mc.rpm
+
* firewall-cmd --permanent --zone=public --remove-port=8080/tcp
;Paketinformationen
 
* rpm -qpi mc.rpm
 
;Alle Dateien im Paket
 
* rpm -qlp mc.rpm
 
;Konfigurationsdateien im Paket
 
* rpm -qpc mc.rpm
 
;Dokumentationsdateien im Paket
 
* rpm -qpd mc.rpm
 
  
= Installation =
+
= Protokolle =
  
;Im Normalfall wird dnf für Installationen verwendet – rpm direkt dann wenn eine einzelne .rpm-Datei vorliegt
+
;Protokolle wie ICMP direkt freigeben – für ping im Laborbetrieb
 +
* firewall-cmd --permanent --zone=public --add-protocol=icmp
 +
* firewall-cmd --reload
  
;Paket installieren
+
= Masquerading =
* rpm -ivh paket.rpm
 
;Installation testen ohne wirklich zu installieren
 
* rpm -i --test paket.rpm
 
;Bereits installiertes Paket erneut installieren – Konfigurationen bleiben erhalten
 
* rpm -i --replacepkgs paket.rpm
 
;Installation ohne Abhängigkeitsprüfung – nur im Notfall
 
* rpm -i --nodeps paket.rpm
 
;Kombination aus replacepkgs und replacefiles
 
* rpm -i --force paket.rpm
 
  
=== Erklärungen ===
+
;Masquerading ersetzt die Quell-IP ausgehender Pakete durch die externe IP – notwendig für NAT/Routing
;-i: installieren
+
* firewall-cmd --permanent --zone=external --add-masquerade
;-v: verbose – zeigt was passiert
+
* firewall-cmd --reload
;-h: Hash – zeigt Fortschrittsbalken mit # Zeichen
 
  
= Upgrade =
+
;Masquerading prüfen
 +
* firewall-cmd --query-masquerade --zone=external
  
;Paket aktualisieren – falls noch nicht installiert wird es installiert
+
= Rich Rules =
* rpm -Uvh paket.rpm
 
  
= Entfernen =
+
;Rich Rules erlauben komplexere Regeln – z.B. Zugriff nur auf eine bestimmte Ziel-IP oder aus einem bestimmten Quellnetz
  
;Paket deinstallieren
+
== Syntax ==
* rpm -e mc
+
<pre>
;Entfernen ohne Abhängigkeitsprüfung – Vorsicht
+
rule family="ipv4"
* rpm -e --nodeps mc
+
  [source address="IP/Maske"]
 +
  [destination address="IP/Maske"]
 +
  [service name="dienst" | port port="PORT" protocol="tcp|udp"]
 +
  [accept | drop | reject]
 +
</pre>
  
= Verifizieren =
+
== Beispiele ==
  
;RPM kann prüfen ob Dateien seit der Installation verändert wurden – nützlich zur Integritätsprüfung
+
;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'
  
;Alle installierten Pakete verifizieren
+
;HTTP nur aus einem bestimmten Netz
* rpm -Va
+
* firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept'
;Einzelnes Paket verifizieren
 
* rpm -V httpd
 
  
;Die Ausgabe zeigt was sich geändert hat – ein Punkt bedeutet ok, ein Buchstabe bedeutet Abweichung:
+
;SSH nach 3 Fehlversuchen sperren
 +
* firewall-cmd --permanent --zone=public --add-rich-rule='rule service name="ssh" limit value="3/m" accept'
  
{| class="wikitable"
+
;IP-Adresse komplett sperren
! Zeichen !! Bedeutung
+
* firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="1.2.3.4" drop'
|-
+
 
| . || Keine Abweichung
+
= Policies =
|-
+
 
| 5 || MD5-Prüfsumme geändert
+
;Policies regeln den Verkehr zwischen Zonen – notwendig für Forwarding in Router-Setups
|-
+
 
| S || Dateigröße geändert
+
== Policy anlegen ==
|-
+
;LAN → WAN mit Masquerading
| L || Symbolischer Link geändert
+
* firewall-cmd --permanent --new-policy lan-to-wan
|-
+
* firewall-cmd --permanent --policy lan-to-wan --add-ingress-zone internal
| T || Zeitmarkierung geändert
+
* firewall-cmd --permanent --policy lan-to-wan --add-egress-zone external
|-
+
* firewall-cmd --permanent --policy lan-to-wan --set-target ACCEPT
| D || Gerätedatei geändert
+
* firewall-cmd --permanent --policy lan-to-wan --add-masquerade
|-
+
* firewall-cmd --reload
| U || Besitzer (User) geändert
+
 
|-
+
== Policy anzeigen ==
| G || Gruppe geändert
+
* firewall-cmd --info-policy lan-to-wan
|-
+
* firewall-cmd --get-policies
| M || Rechte (Mode) geändert
+
 
|-
+
= Logging =
| ? || Unbekannte Abweichung
+
 
|}
+
;Blockierte Pakete protokollieren – nützlich zur Fehlersuche
 +
* firewall-cmd --set-log-denied=all
 +
* firewall-cmd --reload
  
;Beispielausgabe:
+
;Logs anzeigen
* rpm -V sendmail
+
* journalctl -f | grep REJECT
.......T c /etc/rc.d/init.d/sendmail
+
* journalctl -f | grep filter_FWD
S.5....T c /etc/sendmail.cf
 
  
;c steht für Konfigurationsdatei – Änderungen dort sind normal und werden oft ignoriert
+
;Logging wieder deaktivieren
 +
* firewall-cmd --set-log-denied=off
 +
* firewall-cmd --reload
  
= GPG-Signaturen prüfen =
+
= Kontrolle =
  
;Jedes RPM-Paket ist mit dem GPG-Schlüssel des Herstellers signiert – RPM kann das prüfen
+
;Alle Zonen prüfen
* rpm --checksig paket.rpm
+
* firewall-cmd --list-all --zone=external
paket.rpm: digests signatures OK
+
* firewall-cmd --list-all --zone=dmz
 +
* firewall-cmd --list-all --zone=internal
  
;Alle importierten GPG-Schlüssel anzeigen
+
;Alle Policies prüfen
* rpm -qa gpg-pubkey
+
* firewall-cmd --info-policy lan-to-wan
 +
* firewall-cmd --info-policy dmz-to-wan
  
;Schlüssel importieren
+
;Direkt in nftables schauen – zeigt was firewalld wirklich konfiguriert hat
* rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
+
* nft list ruleset

Aktuelle Version vom 20. Mai 2026, 11:29 Uhr

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