Deutsch

firewalld auf AlmaLinux- und Rocky-Linux-VPS konfigurieren

2 min
VPS/VDS-Hosting

firewalld ist der Standard-Firewall-Manager von AlmaLinux 9 und Rocky Linux 9. Auf Ihrem VPS Linux Infrawire öffnen Sie damit nur die nötigen Dienste, beschränken SSH auf Ihre eigene IP und leiten Ports um, ohne rohe nftables-Regeln anzufassen.

Das größte Risiko ist, die eigene SSH-Sitzung zu kappen. Diese Anleitung ist darauf ausgelegt: Jede riskante Änderung wird zuerst in der Runtime-Konfiguration getestet und erst dann dauerhaft gemacht.

📋 Voraussetzungen

  • Ein VPS mit AlmaLinux 9 oder Rocky Linux 9
  • Root-SSH-Zugang (IP und Root-Passwort finden Sie in Ihrem Kundenbereich)
  • Eine zweite SSH-Sitzung, die während der Regeländerungen offen bleibt

1. firewalld installieren und starten

Bash
dnf install -y firewalld systemctl enable --now firewalld firewall-cmd --state

Der letzte Befehl muss running ausgeben. Die Standardzone ist public: Sie erlaubt bereits SSH, Cockpit und den DHCPv6-Client und verwirft die übrigen eingehenden Verbindungen.

2. Zonen, Dienste und Ports verstehen

Eine Zone ist ein Regelsatz, der auf eine Schnittstelle angewendet wird. Ein Dienst ist eine benannte Portgruppe (ssh ist 22/tcp, http ist 80/tcp, https ist 443/tcp).

Bash
firewall-cmd --get-default-zone firewall-cmd --get-active-zones firewall-cmd --list-all firewall-cmd --get-services | tr ' ' '\n' | head -20

Es gibt zwei Konfigurationen. Die Runtime-Konfiguration gilt sofort und verschwindet beim Neuladen oder Neustart. Die permanente Konfiguration (--permanent) liegt auf der Platte, wird aber erst nach firewall-cmd --reload aktiv.

3. Dienste und Ports öffnen

Bash
# Dienste firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https # Ein eigener Port firewall-cmd --permanent --add-port=8080/tcp # Ein Portbereich firewall-cmd --permanent --add-port=30000-30100/udp # Permanente Konfiguration anwenden firewall-cmd --reload

Zum Schließen nutzen Sie die passende Option --remove-service oder --remove-port. Entfernen Sie den Dienst cockpit, wenn Sie die Webkonsole nicht verwenden: firewall-cmd --permanent --remove-service=cockpit.

4. SSH per Rich Rule nur von Ihrer IP erlauben

Rich Rules drücken Bedingungen wie die Quelladresse aus. Entfernen Sie die allgemeine SSH-Regel nie, bevor die eingeschränkte Regel nachweislich funktioniert.

Bash
# 1. Regel nur in der Runtime hinzufügen (durch IHRE öffentliche IP ersetzen) firewall-cmd --add-rich-rule='rule family="ipv4" source address="YOUR_IP/32" service name="ssh" accept' # 2. Ein NEUES Terminal öffnen und prüfen, ob SSH von YOUR_IP aus weiter funktioniert # 3. Dauerhaft machen und danach den offenen SSH-Dienst entfernen firewall-cmd --runtime-to-permanent firewall-cmd --permanent --remove-service=ssh firewall-cmd --reload

Ändert sich Ihre IP, verlieren Sie den Zugang: Halten Sie die VPS-Konsole in Ihrem Kundenbereich als Rettungsweg bereit. Für eine IPv6-Adresse schreiben Sie stattdessen family="ipv6" und die IPv6-Adresse.

5. Einen Port umleiten

Um eingehenden Verkehr auf Port 80 an eine Anwendung weiterzugeben, die auf demselben Server an 8080 lauscht:

Bash
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 firewall-cmd --reload

Für die Weiterleitung an einen anderen Rechner ergänzen Sie toaddr=TARGET_IP in der forward-port-Option und aktivieren Masquerading mit firewall-cmd --permanent --add-masquerade. Der Kernel muss außerdem Weiterleitung erlauben, was firewalld beim Masquerading übernimmt.

6. Konfiguration prüfen

Bash
firewall-cmd --list-all firewall-cmd --list-rich-rules firewall-cmd --permanent --list-all ss -tlnp

Vergleichen Sie Runtime- und permanente Liste: Nach einem Reload müssen sie übereinstimmen. Testen Sie von einem anderen Rechner aus einen Port mit nc -zv VPS_IP 80. Ein lauschender Dienst (ss -tlnp) ist nur erreichbar, wenn die Firewall seinen Port erlaubt.

🛠️ Fehlerbehebung

FirewallD is not running: Starten Sie ihn mit systemctl enable --now firewalld und prüfen Sie journalctl -u firewalld auf Fehler.

Eine neue Regel wirkt nicht: Sie haben --permanent ohne Neuladen benutzt. Führen Sie firewall-cmd --reload aus.

INVALID_SERVICE oder INVALID_ZONE: Tippfehler im Namen. Gültige Namen zeigen firewall-cmd --get-services und --get-zones.

SSH auf eigenem Port wird abgewiesen, obwohl der Port offen ist: SELinux muss den Port kennen. Führen Sie semanage port -a -t ssh_port_t -p tcp 2222 aus (installieren Sie zuvor policycoreutils-python-utils), öffnen Sie den Port in firewalld und starten Sie sshd neu.

Ausgesperrt: Nutzen Sie die VPS-Konsole aus Ihrem Kundenbereich und führen Sie firewall-cmd --permanent --add-service=ssh sowie firewall-cmd --reload aus. Vermeiden Sie firewall-cmd --panic-on, das den gesamten Verkehr einschließlich Ihrer Sitzung blockiert.


🔒 Ihr VPS zeigt jetzt nur noch, was Sie wählen, und SSH bleibt in Reichweite!

Bleiben Sie über die neuesten Angebote, Rabatte und Sonderaktionen informiert.

Aktionen ansehen

Wir verwenden Cookies

Wir verwenden Analyse-Cookies, um Ihre Erfahrung auf unserer Website zu verbessern. Es werden keine Daten an Dritte verkauft. Mehr erfahren Sie in unserer Datenschutzerklärung.