Port-Zugriffsprobleme: Firewall- und Dienstprüfung
Anleitung zur Diagnose von Port-Zugriffsproblemen mit netstat, ss, iptables, ufw und Dienstüberwachung.
Inhaltsverzeichnis
Einführung
Wenn Sie von außen nicht auf einen Dienst zugreifen können, der auf Ihrem Server läuft, liegt dies in der Regel an Port-Zugriffsproblemen. In dieser Anleitung erklären wir Ihnen ausführlich die Werkzeuge und Methoden zur systematischen Diagnose und Behebung von Port-Zugriffsproblemen.
Port-Status prüfen
Port-Prüfung mit dem ss-Befehl
Der ss-Befehl wird auf modernen Linux-Systemen zur Anzeige von Socket-Statistiken verwendet:
# Alle lauschenden TCP-Ports auflisten
ss -tlnp
# Alle lauschenden UDP-Ports auflisten
ss -ulnp
# Bestimmten Port prüfen
ss -tlnp | grep :80
ss -tlnp | grep :443
ss -tlnp | grep :3306
# Alle Verbindungen anzeigen (lauschend + verbunden)
ss -tanp
# Detaillierte Socket-Informationen
ss -tlnp -e
ss-Ausgabe interpretieren
# Beispielausgabe:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=5678,fd=6))
LISTEN 0 128 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=9012,fd=22))
| Feld | Beschreibung |
|---|---|
| State LISTEN | Port lauscht aktiv |
| 0.0.0.0:port | Von allen Schnittstellen erreichbar |
| 127.0.0.1:port | Nur von localhost erreichbar |
| Process | Prozessinformation des lauschenden Dienstes |
Wenn ein Dienst auf 127.0.0.1 lauscht, ist er von außen nicht erreichbar. Sie müssen die bind-address- oder listen-Direktive in der Dienstkonfiguration auf 0.0.0.0 ändern.
netstat-Befehl (ältere Systeme)
# Alle lauschenden Ports auflisten
netstat -tlnp
# Alle Ports einschließlich UDP
netstat -tulnp
# Bestimmten Port prüfen
netstat -tlnp | grep :8080
# Verbindungsanzahl anzeigen
netstat -an | grep :80 | wc -l
Firewall-Prüfung
Prüfung mit iptables
# Alle Regeln auflisten
sudo iptables -L -n -v
# INPUT-Kette prüfen
sudo iptables -L INPUT -n -v --line-numbers
# NAT-Tabelle prüfen
sudo iptables -t nat -L -n -v
# Nach Regeln für bestimmten Port suchen
sudo iptables -L -n -v | grep 80
Ports mit iptables öffnen
# TCP-Port 80 öffnen
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# TCP-Port 443 öffnen
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Port-Zugriff von bestimmter IP
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
# Port-Bereich öffnen
sudo iptables -A INPUT -p tcp --dport 8000:9000 -j ACCEPT
# Regeln speichern
sudo iptables-save > /etc/iptables/rules.v4
sudo netfilter-persistent save
UFW (Uncomplicated Firewall)
# UFW-Status prüfen
sudo ufw status verbose
# Nummerierte Regeln auflisten
sudo ufw status numbered
# Ports öffnen
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
# Port-Zugriff von bestimmter IP
sudo ufw allow from 192.168.1.100 to any port 3306
# Port-Bereich öffnen
sudo ufw allow 8000:9000/tcp
# Regel löschen
sudo ufw delete allow 8080/tcp
# UFW aktivieren
sudo ufw enable
# UFW neu laden
sudo ufw reload
firewalld
# Aktive Zone prüfen
sudo firewall-cmd --get-active-zones
# Alle Regeln auflisten
sudo firewall-cmd --list-all
# Port öffnen (temporär)
sudo firewall-cmd --add-port=80/tcp
# Port öffnen (permanent)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
Dienst-Lausch-Konfiguration
Nginx
server {
listen 80; # Auf allen Schnittstellen lauschen
listen [::]:80; # Einschließlich IPv6
server_name example.com;
}
MySQL/MariaDB
[mysqld]
bind-address = 0.0.0.0 # Auf allen Schnittstellen lauschen
# bind-address = 127.0.0.1 # Nur localhost (Standard, sicher)
port = 3306
PostgreSQL
listen_addresses = '*' # Alle Schnittstellen
port = 5432
Redis
bind 0.0.0.0
port 6379
protected-mode yes
requirepass STARKES_PASSWORT
Verwenden Sie beim Freigeben von Datenbank- und Cache-Diensten nach außen immer starke Passwörter und IP-Beschränkungen.
Externer Port-Test
# Remote-Port-Test vom lokalen Rechner
nc -zv SERVER_IP 80
nc -zv SERVER_IP 443
# Detaillierter Port-Scan mit nmap
nmap -p 80,443,3306,5432,6379 SERVER_IP
# Dienstversionserkennung
nmap -sV -p 80,443 SERVER_IP
# HTTP-Port-Test mit curl
curl -I http://SERVER_IP:80
REXE Path Panel Integration
Auf REXE-Servern sind alle Ports offen, solange eine IP keine einzige Regel hat. Sobald Ihre IP mindestens eine Regel hat, wird automatisch Default Block aktiviert und nur die erlaubten Ports bleiben offen. Um externen Zugriff auf Ihren Dienst zu ermöglichen, müssen Sie eine Filterregel für den entsprechenden Port im Path Panel erstellen:
1. Melden Sie sich im Path Panel an (x.rexe.tr)
2. Klicken Sie auf die entsprechende IP-Adresse
3. Klicken Sie auf "Neue Regel hinzufügen"
4. Protokoll: TCP (oder UDP)
5. Richtung: Symmetric (bidirektional)
6. Zielport: Der Port, den Sie öffnen möchten
7. Aktion: Allow
8. Speichern Sie die Regel und warten Sie auf den propagated-Status
Auch wenn die Regel im Panel noch als nicht verteilt (nicht aktualisiert) angezeigt wird, wurde die Regel höchstwahrscheinlich bereits innerhalb von 2-5 Minuten ausgerollt. Der Status kann sich verzögert aktualisieren – etwa wegen des Statusabfrage-Intervalls des Panels oder der Zeit, die die Regel benötigt, um auf der Path-Seite auf allen Nodes (außer unserem) angewendet zu werden. Dies ist nur eine visuelle Verzögerung im Panel; der Port ist im System tatsächlich bereits geöffnet.
Fehlerbehebungs-Skript
#!/bin/bash
PORT=$1
SERVER_IP=$2
if [ -z "$PORT" ] || [ -z "$SERVER_IP" ]; then
echo "Verwendung: $0 <port> <server_ip>"
exit 1
fi
echo "=== Port $PORT Zugriffsprüfung ==="
echo -e "\n[1] Dienst-Lausch-Prüfung:"
ss -tlnp | grep ":$PORT" || echo "Port $PORT lauscht nicht!"
echo -e "\n[2] Firewall-Prüfung:"
if command -v ufw &> /dev/null; then
sudo ufw status | grep "$PORT"
else
sudo iptables -L -n | grep "$PORT"
fi
echo -e "\n[3] Externer Zugriffstest:"
nc -zv -w 5 $SERVER_IP $PORT 2>&1
echo -e "\n=== Prüfung abgeschlossen ==="
Häufige Probleme und Lösungen
| Problem | Ursache | Lösung |
|---|---|---|
| Port lauscht nicht | Dienst läuft nicht | systemctl start dienstname |
| Lauscht auf 127.0.0.1 | Bind-Adresse ist localhost | In Konfiguration auf 0.0.0.0 ändern |
| Firewall blockiert | Keine Port-Regel | Port mit iptables/ufw/firewalld öffnen |
| Path Panel blockiert | Keine Filterregel | Regel im Path Panel erstellen |
| Connection refused | Dienst-Port geändert | Dienstkonfiguration prüfen |
Fazit
Um Port-Zugriffsprobleme zu lösen, müssen Sie eine dreischichtige Prüfung durchführen: Dienst-Lausch-Status, Server-Firewall-Regeln und REXE Path Panel-Regeln. Stellen Sie zunächst sicher, dass der Dienst auf dem richtigen Port und der richtigen Schnittstelle lauscht, prüfen Sie dann die Firewall-Regeln und erstellen Sie schließlich die erforderlichen Regeln im Path Panel.
Verwandte Artikel
SSH-Verbindungsproblem: Keine Verbindung zum Server möglich
Anleitung zur Behebung von SSH-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für SSH-Port erstellen und Fehlerbehebungsschritte.
RDP-Verbindungsproblem: Keine Verbindung zu Windows Server
Anleitung zur Behebung von RDP-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für RDP-Port erstellen und Fehlerbehebungsschritte.
MTR-Test durchführen und Ergebnisse an Support senden
Anleitung zum Netzwerktest mit WinMTR und Linux MTR, ICMP-Filterregel erstellen und Ergebnisse an das Support-Team senden. Paketverlust und Latenz diagnostizieren.