Wie öffnet man einen Port auf CentOS/RHEL?

Veröffentlicht 27. August 2024

Problem: Ports unter CentOS/RHEL öffnen

Das Öffnen von Ports auf CentOS- oder RHEL-Systemen ist eine Aufgabe für Systemadministratoren und Entwickler. Es wird benötigt, wenn Sie bestimmten Netzwerkverkehr durch die Firewall zu Diensten auf Ihrem Server zulassen möchten. Der Prozess kann für diejenigen, die neu in Linux-Firewalls sind, verwirrend sein, besonders auf diesen Distributionen, die standardmäßig firewalld verwenden.

Ports unter CentOS/RHEL öffnen

FirewallD für die Portverwaltung nutzen

FirewallD ist das Standard-Firewall-Tool für CentOS und RHEL. Es verwaltet Firewall-Regeln. Befolgen Sie diese Schritte, um Ports mit FirewallD zu öffnen:

  1. FirewallD-Status überprüfen:

    sudo firewall-cmd --state
  2. Offene Ports auflisten:

    sudo firewall-cmd --list-ports
  3. Einen Port öffnen (z.B. Port 80 für HTTP):

    sudo firewall-cmd --add-port=80/tcp --permanent
  4. Firewall-Regeln neu laden:

    sudo firewall-cmd --reload

IPTables für den Portzugriff konfigurieren

IPTables ist ein älteres Firewall-Tool. Verwenden Sie es, um Ports zu öffnen:

  1. IPTables-Regeln überprüfen:

    sudo iptables -L
  2. Eine Regel zum Öffnen eines Ports hinzufügen (z.B. Port 22 für SSH):

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  3. Neue Regeln speichern:

    sudo service iptables save
  4. IPTables neu starten:

    sudo service iptables restart

Seien Sie vorsichtig beim Öffnen von Ports, da dies die Sicherheit Ihres Systems beeinträchtigen kann. Öffnen Sie nur die Ports, die Sie benötigen, und überwachen Sie Ihre Firewall-Logs regelmäßig.

Offene Ports unter CentOS überprüfen

Netstat zur Auflistung offener Ports verwenden

Netstat ist ein Tool zum Überprüfen offener Ports auf Ihrem CentOS-System. So verwenden Sie netstat:

  1. Öffnen Sie ein Terminal.
  2. Führen Sie diesen Befehl aus:
    sudo netstat -tuln

    Dies zeigt alle TCP- und UDP-Ports, die auf Verbindungen warten.

Die Ausgabe zeigt:

  • Protokoll (TCP oder UDP)
  • Lokale Adresse und Portnummer
  • Fremde Adresse und Portnummer
  • Verbindungsstatus

Beispiel:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

Dies bedeutet, dass Port 22 (SSH) offen ist und auf Verbindungen wartet.

LSOF zur Überprüfung lauschender Ports verwenden

LSOF (List Open Files) ist ein weiteres Tool zur Identifizierung offener Ports. So verwenden Sie LSOF:

  1. Installieren Sie LSOF, falls es nicht auf Ihrem System vorhanden ist:

    sudo yum install lsof
  2. Führen Sie diesen Befehl aus, um lauschende Ports anzuzeigen:

    sudo lsof -i -P -n | grep LISTEN

Dieser Befehl zeigt:

  • Den Prozessnamen, der den Port verwendet
  • Den Benutzer, der den Prozess ausführt
  • Die Portnummer

Beispiel:

sshd    1234    root    3u  IPv4  12345      0t0  TCP *:22 (LISTEN)

Dies zeigt, dass der SSH-Daemon auf Port 22 lauscht.

Sowohl netstat als auch LSOF liefern Informationen über offene Ports auf Ihrem CentOS-System und helfen Ihnen, Ihre Firewall-Einstellungen zu überprüfen.

Alternative Methoden zur Portkonfiguration

Das System-Config-Firewall-Tool verwenden

System-config-firewall ist ein Tool zur Verwaltung von Firewall-Einstellungen unter CentOS. Es bietet eine visuelle Oberfläche für diejenigen, die diese gegenüber Kommandozeilen-Operationen bevorzugen.

So verwenden Sie system-config-firewall:

  1. Installieren Sie das Tool:

    sudo yum install system-config-firewall
  2. Starten Sie die Anwendung:

    sudo system-config-firewall
  3. Wählen Sie in der Oberfläche "Andere Ports" und klicken Sie auf "Hinzufügen".

  4. Wählen Sie das Protokoll (TCP oder UDP) und geben Sie die Portnummer ein.

  5. Klicken Sie auf "Anwenden", um die Änderungen zu speichern.

Diese Methode ist nützlich für Benutzer, die visuelle Tools bevorzugen.

Cloud-spezifische Portverwaltung

Wenn Sie CentOS auf Cloud-Plattformen betreiben, müssen Sie möglicherweise zusätzliche Firewall-Einstellungen für Ihren Cloud-Anbieter berücksichtigen.

Für cloud-gehostetes CentOS:

  1. Prüfen Sie die Dokumentation Ihres Cloud-Anbieters zur Firewall-Verwaltung.

  2. Verwenden Sie das Kontrollpanel oder CLI-Tools der Cloud-Plattform zur Verwaltung von Netzwerk-Sicherheitsgruppen.

  3. Konfigurieren Sie sowohl die CentOS-Firewall als auch die Firewall des Cloud-Anbieters, um den gewünschten Datenverkehr zuzulassen.

  4. Einige Cloud-Anbieter verlangen möglicherweise, dass Sie Ports auf Netzwerkebene öffnen, bevor Sie die Firewall auf Betriebssystemebene konfigurieren.

  5. Testen Sie Ihre Konfiguration, um sicherzustellen, dass sowohl die Cloud- als auch die Betriebssystem-Firewall korrekt zusammenarbeiten.

Denken Sie daran, dass Cloud-Umgebungen möglicherweise andere Sicherheitspraktiken haben als On-Premises-Setups. Befolgen Sie immer die Sicherheitsrichtlinien Ihres Cloud-Anbieters bei der Verwaltung von Ports und Firewall-Regeln.

Probleme beim Portzugriff unter CentOS beheben

Wenn Sie auf Probleme beim Portzugriff unter CentOS stoßen, könnten Sie auf folgende Schwierigkeiten treffen. Hier sind einige Lösungen, die Ihnen bei der Behebung helfen:

  1. Port öffnet sich nicht:

    • Überprüfen Sie die Firewall-Regeln mit firewall-cmd --list-all
    • Fügen Sie den Port zur richtigen Zone hinzu
    • Laden Sie die Firewall nach Änderungen neu
  2. Dienst startet nicht:

    • Prüfen Sie, ob der Dienst läuft mit systemctl status service_name
    • Überprüfen Sie die Dienst-Logs auf Fehler
    • Stellen Sie sicher, dass der Dienst den richtigen Port verwendet
  3. Falsche SELinux-Einstellungen:

    • Verwenden Sie sestatus, um zu prüfen, ob SELinux aktiviert ist
    • Führen Sie semanage port -l | grep port_number aus, um SELinux-Port-Labels zu überprüfen
    • Falls nötig, fügen Sie den richtigen SELinux-Kontext hinzu mit semanage port -a -t port_label_t -p tcp port_number
  4. Konflikte mit Anwendungen:

    • Nutzen Sie netstat -tuln oder ss -tuln, um zu prüfen, ob eine andere Anwendung den Port verwendet
    • Stoppen oder ändern Sie die konfliktverursachende Anwendung bei Bedarf

Um Firewall-Logs auf Verbindungsversuche zu überprüfen:

  1. Aktivieren Sie die Protokollierung für abgelehnte Pakete:

    sudo firewall-cmd --set-log-denied=all --permanent
    sudo firewall-cmd --reload
  2. Zeigen Sie die Firewall-Logs an:

    sudo journalctl -f -u firewalld
  3. Suchen Sie nach Einträgen mit "FINAL_REJECT" oder "FINAL_DROP", die blockierte Verbindungen anzeigen

  4. Überprüfen Sie die Log-Einträge, um die Quell-IP, den Zielport und das Protokoll des blockierten Datenverkehrs zu finden