Rpm mit Rocky: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 1: Zeile 1:
= firewalld =
+
= RPM – Red Hat Package Manager =
  
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.
+
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.
  
= Konzepte =
+
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.
  
== Zonen ==
+
= Datenbankabfragen =
  
Eine Zone definiert das Vertrauensniveau eines Netzwerks. Jedes Interface wird einer Zone zugeordnet – darüber entscheidet firewalld welche Regeln gelten.
+
;Mit dem Query-Modus (-q) lässt sich die RPM-Datenbank nach installierten Paketen durchsuchen
  
{| class="wikitable"
+
== Paketname anzeigen ==
! Zone !! Beschreibung
+
;Vollständigen Namen des installierten Pakets anzeigen
|-
+
* rpm -q mc
| drop || Alle eingehenden Pakete werden verworfen – keine Antwort
+
mc-4.8.28-1.el9.x86_64
|-
 
| 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 ==
+
== Paketinformationen ==
 +
;Detaillierte Informationen – Version, Beschreibung, Lizenz, Installationsdatum
 +
* rpm -qi mc
  
;--permanent: Regel wird dauerhaft gespeichert – gilt nach reload und Reboot
+
== Dateien eines Pakets ==
;ohne --permanent: Regel gilt nur bis zum nächsten reload oder Reboot
+
;Alle Dateien die zum Paket gehören
 +
* rpm -ql mc
 +
;Nur Konfigurationsdateien
 +
* rpm -qc mc
 +
;Nur Dokumentationsdateien
 +
* rpm -qd mc
  
;Nach permanenten Änderungen immer reload ausführen
+
== Zu welchem Paket gehört eine Datei? ==
* firewall-cmd --reload
+
;Sehr nützlich wenn man wissen will woher eine Datei stammt
 +
* rpm -qf /usr/sbin/httpd
 +
httpd-2.4.57-5.el9.x86_64
 +
* rpm -qf /sbin/ifconfig
 +
net-tools-2.0-0.62.el9.x86_64
  
== Policies ==
+
== Abhängigkeiten ==
 +
;Was braucht das Paket
 +
* rpm -q --requires mc
 +
;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
  
;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.
+
== Installationsskripte anzeigen ==
 +
;Zeigt pre/postinstall und pre/postuninstall Skripte nützlich zur Fehlersuche
 +
* rpm -q --scripts httpd
  
= Installation und Start =
+
= Abfragen auf .rpm-Dateien =
  
;firewalld ist auf Rocky meist vorinstalliert
+
;Mit -p (package) lässt sich eine noch nicht installierte .rpm-Datei abfragen – ohne sie zu installieren
* dnf install -y firewalld
 
* systemctl enable --now firewalld
 
  
= Grundlegende Befehle =
+
;Paketname
 +
* rpm -qp mc.rpm
 +
;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
  
== Status ==
+
= Installation =
* firewall-cmd --state
 
running
 
* systemctl status firewalld
 
  
== Zonen anzeigen ==
+
;Im Normalfall wird dnf für Installationen verwendet – rpm direkt dann wenn eine einzelne .rpm-Datei vorliegt
;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 ==
+
;Paket installieren
* firewall-cmd --list-all
+
* rpm -ivh paket.rpm
* firewall-cmd --list-all --zone=dmz
+
;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
  
= Interfaces und Zonen =
+
=== Erklärungen ===
 +
;-i: installieren
 +
;-v: verbose – zeigt was passiert
 +
;-h: Hash – zeigt Fortschrittsbalken mit # Zeichen
  
== Interface einer Zone zuweisen ==
+
= Upgrade =
;Ü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
+
;Paket aktualisieren falls noch nicht installiert wird es installiert
* nmcli connection modify enp0s3 connection.zone external
+
* rpm -Uvh paket.rpm
* nmcli connection up enp0s3
 
  
= Dienste =
+
= Entfernen =
  
;firewalld kennt vordefinierte Dienste sie bündeln Port und Protokoll unter einem Namen
+
;Paket deinstallieren
 +
* rpm -e mc
 +
;Entfernen ohne Abhängigkeitsprüfung Vorsicht
 +
* rpm -e --nodeps mc
  
== Dienste anzeigen ==
+
= Verifizieren =
;Alle verfügbaren Dienste
 
* firewall-cmd --get-services
 
;Freigegebene Dienste in einer Zone
 
* firewall-cmd --list-services --zone=public
 
  
== Dienst freigeben ==
+
;RPM kann prüfen ob Dateien seit der Installation verändert wurden – nützlich zur Integritätsprüfung
* 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 ==
+
;Alle installierten Pakete verifizieren
* firewall-cmd --permanent --zone=public --remove-service=http
+
* rpm -Va
* firewall-cmd --reload
+
;Einzelnes Paket verifizieren
 +
* rpm -V httpd
  
== Eigenen Dienst definieren ==
+
;Die Ausgabe zeigt was sich geändert hat ein Punkt bedeutet ok, ein Buchstabe bedeutet Abweichung:
;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 =
+
{| class="wikitable"
 
+
! Zeichen !! Bedeutung
;Einzelne Ports direkt freigeben – ohne Dienst-Definition
+
|-
* firewall-cmd --permanent --zone=public --add-port=8080/tcp
+
| . || Keine Abweichung
* firewall-cmd --permanent --zone=public --add-port=53/udp
+
|-
* firewall-cmd --reload
+
| 5 || MD5-Prüfsumme geändert
 
+
|-
;Port entfernen
+
| S || Dateigröße geändert
* firewall-cmd --permanent --zone=public --remove-port=8080/tcp
+
|-
 
+
| L || Symbolischer Link geändert
= Protokolle =
+
|-
 
+
| T || Zeitmarkierung geändert
;Protokolle wie ICMP direkt freigeben – für ping im Laborbetrieb
+
|-
* firewall-cmd --permanent --zone=public --add-protocol=icmp
+
| D || Gerätedatei geändert
* firewall-cmd --reload
+
|-
 
+
| U || Besitzer (User) geändert
= Masquerading =
+
|-
 
+
| G || Gruppe geändert
;Masquerading ersetzt die Quell-IP ausgehender Pakete durch die externe IP – notwendig für NAT/Routing
+
|-
* firewall-cmd --permanent --zone=external --add-masquerade
+
| M || Rechte (Mode) geändert
* firewall-cmd --reload
+
|-
 
+
| ? || Unbekannte Abweichung
;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 ==
 
<pre>
 
rule family="ipv4"
 
  [source address="IP/Maske"]
 
  [destination address="IP/Maske"]
 
  [service name="dienst" | port port="PORT" protocol="tcp|udp"]
 
  [accept | drop | reject]
 
</pre>
 
 
 
== 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
+
;Beispielausgabe:
* journalctl -f | grep REJECT
+
* rpm -V sendmail
* journalctl -f | grep filter_FWD
+
.......T c /etc/rc.d/init.d/sendmail
 +
S.5....T c /etc/sendmail.cf
  
;Logging wieder deaktivieren
+
;c steht für Konfigurationsdatei – Änderungen dort sind normal und werden oft ignoriert
* firewall-cmd --set-log-denied=off
 
* firewall-cmd --reload
 
  
= Kontrolle =
+
= GPG-Signaturen prüfen =
  
;Alle Zonen prüfen
+
;Jedes RPM-Paket ist mit dem GPG-Schlüssel des Herstellers signiert – RPM kann das prüfen
* firewall-cmd --list-all --zone=external
+
* rpm --checksig paket.rpm
* firewall-cmd --list-all --zone=dmz
+
paket.rpm: digests signatures OK
* firewall-cmd --list-all --zone=internal
 
  
;Alle Policies prüfen
+
;Alle importierten GPG-Schlüssel anzeigen
* firewall-cmd --info-policy lan-to-wan
+
* rpm -qa gpg-pubkey
* firewall-cmd --info-policy dmz-to-wan
 
  
;Direkt in nftables schauen – zeigt was firewalld wirklich konfiguriert hat
+
;Schlüssel importieren
* nft list ruleset
+
* rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9

Aktuelle Version vom 6. Juli 2026, 15:12 Uhr

RPM – Red Hat Package Manager

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.

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.

Datenbankabfragen

Mit dem Query-Modus (-q) lässt sich die RPM-Datenbank nach installierten Paketen durchsuchen

Paketname anzeigen

Vollständigen Namen des installierten Pakets anzeigen
  • rpm -q mc
mc-4.8.28-1.el9.x86_64

Paketinformationen

Detaillierte Informationen – Version, Beschreibung, Lizenz, Installationsdatum
  • rpm -qi mc

Dateien eines Pakets

Alle Dateien die zum Paket gehören
  • rpm -ql mc
Nur Konfigurationsdateien
  • rpm -qc mc
Nur Dokumentationsdateien
  • rpm -qd mc

Zu welchem Paket gehört eine Datei?

Sehr nützlich wenn man wissen will woher eine Datei stammt
  • rpm -qf /usr/sbin/httpd
httpd-2.4.57-5.el9.x86_64
  • rpm -qf /sbin/ifconfig
net-tools-2.0-0.62.el9.x86_64

Abhängigkeiten

Was braucht das Paket
  • rpm -q --requires mc
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

Zeigt pre/postinstall und pre/postuninstall Skripte – nützlich zur Fehlersuche
  • rpm -q --scripts httpd

Abfragen auf .rpm-Dateien

Mit -p (package) lässt sich eine noch nicht installierte .rpm-Datei abfragen – ohne sie zu installieren
Paketname
  • rpm -qp mc.rpm
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

Im Normalfall wird dnf für Installationen verwendet – rpm direkt dann wenn eine einzelne .rpm-Datei vorliegt
Paket installieren
  • 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

-i
installieren
-v
verbose – zeigt was passiert
-h
Hash – zeigt Fortschrittsbalken mit # Zeichen

Upgrade

Paket aktualisieren – falls noch nicht installiert wird es installiert
  • rpm -Uvh paket.rpm

Entfernen

Paket deinstallieren
  • rpm -e mc
Entfernen ohne Abhängigkeitsprüfung – Vorsicht
  • rpm -e --nodeps mc

Verifizieren

RPM kann prüfen ob Dateien seit der Installation verändert wurden – nützlich zur Integritätsprüfung
Alle installierten Pakete verifizieren
  • rpm -Va
Einzelnes Paket verifizieren
  • rpm -V httpd
Die Ausgabe zeigt was sich geändert hat – ein Punkt bedeutet ok, ein Buchstabe bedeutet Abweichung
Zeichen Bedeutung
. Keine Abweichung
5 MD5-Prüfsumme geändert
S Dateigröße geändert
L Symbolischer Link geändert
T Zeitmarkierung geändert
D Gerätedatei geändert
U Besitzer (User) geändert
G Gruppe geändert
M Rechte (Mode) geändert
? Unbekannte Abweichung
Beispielausgabe
  • rpm -V sendmail
.......T c /etc/rc.d/init.d/sendmail
S.5....T c /etc/sendmail.cf
c steht für Konfigurationsdatei – Änderungen dort sind normal und werden oft ignoriert

GPG-Signaturen prüfen

Jedes RPM-Paket ist mit dem GPG-Schlüssel des Herstellers signiert – RPM kann das prüfen
  • rpm --checksig paket.rpm
paket.rpm: digests signatures OK
Alle importierten GPG-Schlüssel anzeigen
  • rpm -qa gpg-pubkey
Schlüssel importieren
  • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9