> For the complete documentation index, see [llms.txt](https://docs.instantroot.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instantroot.de/kvm-server/linux/ports-unter-linux-offnen.md).

# Ports unter Linux öffnen

In diesem Artikel erklären wir dir, wie du Ports auf deinem Linux KVM-Server öffnest und warum Ports für die Erreichbarkeit deiner Dienste wichtig sind.

Wenn ein Dienst von außen erreichbar sein soll, muss der passende Port freigegeben sein. Das betrifft zum Beispiel Webserver, Gameserver, Datenbanken, APIs oder eigene Anwendungen.

### Was ist ein Port?

Ein Port ist eine Nummer, über die ein bestimmter Dienst auf deinem Server erreichbar ist.

Die IP-Adresse zeigt auf den Server.\
Der Port zeigt auf den Dienst auf diesem Server.

Beispiel:

| Dienst          | Typischer Port |
| --------------- | -------------- |
| SSH             | `22`           |
| HTTP            | `80`           |
| HTTPS           | `443`          |
| Minecraft Java  | `25565`        |
| Teamspeak       | `9987`         |
| MySQL / MariaDB | `3306`         |
| PostgreSQL      | `5432`         |

Wenn du zum Beispiel eine Webseite betreibst, muss der Server über Port `80` und `443` erreichbar sein.

Wenn du einen Minecraft Server betreibst, muss normalerweise Port `25565` erreichbar sein.

### Wann muss ich einen Port öffnen?

Du musst einen Port öffnen, wenn ein Dienst von außen erreichbar sein soll.

Typische Beispiele:

* Webseite über Browser erreichbar machen
* Minecraft Server erreichbar machen
* API öffentlich bereitstellen
* Teamspeak Server betreiben
* eigene Anwendung auf einem bestimmten Port starten
* Remote-Verbindung zu einem Dienst erlauben

Nicht jeder Dienst sollte öffentlich erreichbar sein. Öffne nur Ports, die du wirklich brauchst.

### Wichtiger Unterschied: Dienst und Firewall

Ein offener Port allein reicht nicht aus.

Damit ein Port erreichbar ist, müssen zwei Dinge stimmen:

1. Der Dienst muss auf dem Port laufen.
2. Die Firewall muss Verbindungen auf diesen Port erlauben.

Beispiel:

Du öffnest Port `25565` in der Firewall, aber dein Minecraft Server läuft nicht. Dann ist der Port trotzdem nicht erreichbar.

Oder umgekehrt:

Dein Minecraft Server läuft auf Port `25565`, aber die Firewall blockiert den Port. Dann können Spieler ebenfalls nicht verbinden.

### Aktive Dienste und Ports anzeigen

Du kannst prüfen, welche Dienste aktuell auf deinem Server lauschen.

Nutze dafür:

`ss -tulpen`

Die Ausgabe zeigt aktive Ports und Prozesse.

Wichtige Spalten sind:

| Spalte             | Bedeutung                                       |
| ------------------ | ----------------------------------------------- |
| Local Address:Port | IP-Adresse und Port, auf dem der Dienst lauscht |
| Process            | Prozess oder Dienst, der den Port verwendet     |
| tcp                | TCP-Verbindung                                  |
| udp                | UDP-Verbindung                                  |

Wenn du nur bestimmte Ports prüfen möchtest, kannst du zum Beispiel verwenden:

`ss -tulpen | grep 25565`

### Firewall unter Linux

Viele Linux-Server verwenden eine Firewall, um Netzwerkzugriffe zu steuern.

Häufig genutzt werden:

* UFW
* firewalld
* iptables
* nftables

Auf vielen Einsteiger-Systemen ist UFW am einfachsten zu bedienen.

### UFW installieren

Falls UFW noch nicht installiert ist, kannst du es installieren.

Bei Debian oder Ubuntu:

`apt update`

`apt install ufw -y`

Bei AlmaLinux oder Rocky Linux wird häufig firewalld verwendet. UFW kann dort ebenfalls installiert werden, ist aber nicht immer standardmäßig eingerichtet.

### UFW Status prüfen

Prüfe zuerst, ob UFW aktiv ist:

`ufw status`

Mögliche Ausgaben:

| Ausgabe                     | Bedeutung                               |
| --------------------------- | --------------------------------------- |
| `Status: inactive`          | UFW ist deaktiviert                     |
| `Status: active`            | UFW ist aktiv                           |
| `Status: active` mit Regeln | UFW ist aktiv und hat bereits Freigaben |

### Sehr wichtig vor dem Aktivieren von UFW

Bevor du UFW aktivierst, musst du SSH erlauben.

Wenn du SSH nicht freigibst, kannst du dich unter Umständen selbst vom Server aussperren.

SSH nutzt standardmäßig Port `22`.

Erlaube SSH mit:

`ufw allow 22/tcp`

Oder kurz:

`ufw allow ssh`

Wenn du einen eigenen SSH-Port verwendest, musst du diesen Port freigeben.

Beispiel für SSH auf Port `2222`:

`ufw allow 2222/tcp`

### UFW aktivieren

Wenn SSH freigegeben ist, kannst du UFW aktivieren:

`ufw enable`

Danach den Status prüfen:

`ufw status`

### Einzelnen TCP-Port öffnen

Viele Dienste nutzen TCP.

Beispiel: Port `80` für HTTP öffnen:

`ufw allow 80/tcp`

Beispiel: Port `443` für HTTPS öffnen:

`ufw allow 443/tcp`

Beispiel: Minecraft Java Port öffnen:

`ufw allow 25565/tcp`

### Einzelnen UDP-Port öffnen

Manche Dienste nutzen UDP.

Beispiel: Teamspeak Voice Port öffnen:

`ufw allow 9987/udp`

Wenn ein Dienst UDP verwendet, reicht eine TCP-Regel nicht aus.

### TCP und UDP gleichzeitig öffnen

Wenn du nicht sicher bist, ob dein Dienst TCP oder UDP verwendet, prüfe die Dokumentation des Dienstes.

Du kannst TCP und UDP auch getrennt freigeben.

Beispiel:

`ufw allow 25565/tcp`

`ufw allow 25565/udp`

### Portbereich öffnen

Manche Anwendungen verwenden mehrere Ports oder einen ganzen Portbereich.

Beispiel TCP-Portbereich:

`ufw allow 3000:3010/tcp`

Beispiel UDP-Portbereich:

`ufw allow 3000:3010/udp`

Öffne Portbereiche nur, wenn du sie wirklich brauchst.

### Regel wieder entfernen

Wenn du einen Port nicht mehr benötigst, solltest du die Regel entfernen.

Beispiel:

`ufw delete allow 25565/tcp`

Danach prüfen:

`ufw status`

### Regeln nummeriert anzeigen

Wenn du mehrere Regeln hast, kannst du sie nummeriert anzeigen:

`ufw status numbered`

Dann kannst du eine Regel über ihre Nummer löschen.

Beispiel:

`ufw delete 3`

Prüfe danach erneut den Status.

### Häufige Ports

| Dienst                 |           Port | Protokoll |
| ---------------------- | -------------: | --------- |
| SSH                    |           `22` | TCP       |
| HTTP                   |           `80` | TCP       |
| HTTPS                  |          `443` | TCP       |
| Minecraft Java         |        `25565` | TCP       |
| Minecraft Bedrock      |        `19132` | UDP       |
| Teamspeak Voice        |         `9987` | UDP       |
| Teamspeak Query        |        `10011` | TCP       |
| Teamspeak Filetransfer |        `30033` | TCP       |
| MySQL / MariaDB        |         `3306` | TCP       |
| PostgreSQL             |         `5432` | TCP       |
| Redis                  |         `6379` | TCP       |
| Docker App Beispiel    |         `3000` | TCP       |
| Pterodactyl Wings      | `8080`, `2022` | TCP       |

### Ports für Webserver öffnen

Wenn du eine Webseite über deinen KVM-Server betreiben möchtest, brauchst du normalerweise:

`ufw allow 80/tcp`

`ufw allow 443/tcp`

Port `80` wird für unverschlüsseltes HTTP verwendet.\
Port `443` wird für HTTPS verwendet.

### Ports für Minecraft öffnen

Für Minecraft Java ist normalerweise Port `25565/tcp` nötig.

`ufw allow 25565/tcp`

Für Minecraft Bedrock ist normalerweise Port `19132/udp` nötig.

`ufw allow 19132/udp`

Wenn du einen anderen Port in der Serverkonfiguration verwendest, musst du diesen Port öffnen.

### Ports für Datenbanken

Datenbankports sollten normalerweise nicht öffentlich geöffnet werden.

Beispiele:

* MySQL / MariaDB: `3306`
* PostgreSQL: `5432`
* Redis: `6379`

Öffne Datenbankports nur, wenn du genau weißt, warum du das brauchst.

Besser ist oft:

* Datenbank nur lokal erreichbar machen
* Zugriff über VPN
* Zugriff auf bestimmte IP-Adressen beschränken
* starke Passwörter verwenden
* Benutzerrechte begrenzen

### Zugriff nur für eine bestimmte IP erlauben

Du kannst einen Port nur für eine bestimmte IP-Adresse freigeben.

Beispiel: SSH nur für eine bestimmte IP erlauben:

`ufw allow from 203.0.113.50 to any port 22 proto tcp`

Das ist sicherer als den Port für das gesamte Internet zu öffnen.

### Port blockieren

Du kannst einen Port auch gezielt blockieren.

Beispiel:

`ufw deny 3306/tcp`

Damit werden eingehende Verbindungen auf Port `3306` blockiert.

### Firewall neu laden

Nach Änderungen kannst du UFW neu laden:

`ufw reload`

Normalerweise werden UFW-Regeln direkt übernommen. Ein Reload schadet aber nicht, wenn du sicherstellen möchtest, dass alle Regeln aktiv sind.

### Prüfen, ob ein Port erreichbar ist

Du kannst von außen prüfen, ob ein Port erreichbar ist.

Unter Linux oder macOS kannst du zum Beispiel verwenden:

`nc -vz SERVER-IP 25565`

Für UDP ist eine Prüfung schwieriger, weil UDP verbindungslos arbeitet.

Du kannst außerdem externe Portscanner verwenden. Achte aber darauf, nur eigene Server zu prüfen.

### Wenn der Port trotz Freigabe nicht erreichbar ist

Wenn du den Port geöffnet hast, aber der Dienst nicht erreichbar ist, prüfe diese Punkte:

* läuft der Dienst wirklich?
* lauscht der Dienst auf dem richtigen Port?
* nutzt der Dienst TCP oder UDP?
* ist die Firewall-Regel korrekt?
* läuft zusätzlich eine Firewall im Dienst selbst?
* lauscht der Dienst nur auf `127.0.0.1`?
* wurde der falsche Port geöffnet?
* wurde der Server nach einer Konfigurationsänderung neu gestartet?

### Dienst lauscht nur auf localhost

Manche Anwendungen lauschen nur auf `127.0.0.1`.

Das bedeutet, dass der Dienst nur lokal auf dem Server erreichbar ist, aber nicht von außen.

Beispiel:

`127.0.0.1:3000`

Wenn ein Dienst öffentlich erreichbar sein soll, muss er meistens auf `0.0.0.0` oder auf der öffentlichen Server-IP lauschen.

Prüfe dazu die Konfiguration deiner Anwendung.

### Unterschied zwischen 0.0.0.0 und 127.0.0.1

| Adresse        | Bedeutung                                   |
| -------------- | ------------------------------------------- |
| `127.0.0.1`    | nur lokal auf dem Server erreichbar         |
| `0.0.0.0`      | auf allen Netzwerkschnittstellen erreichbar |
| öffentliche IP | über diese konkrete IP erreichbar           |

Wenn ein Webserver oder eine App nur auf `127.0.0.1` läuft, kann die Firewall korrekt sein und der Dienst trotzdem nicht von außen erreichbar sein.

### Typische Fehler

#### SSH wurde nicht freigegeben

Wenn du UFW aktivierst, ohne SSH vorher zu erlauben, kannst du dich aussperren.

Erlaube deshalb immer zuerst SSH:

`ufw allow 22/tcp`

Danach erst:

`ufw enable`

#### Falsches Protokoll geöffnet

Minecraft Bedrock nutzt UDP.\
Minecraft Java nutzt TCP.

Wenn du für Bedrock nur TCP öffnest, funktioniert die Verbindung nicht.

#### Dienst läuft nicht

Ein Port ist nur erreichbar, wenn auch ein Dienst darauf läuft.

Prüfe mit:

`ss -tulpen`

#### Falscher Port in der Anwendung

Wenn deine Anwendung auf Port `3001` läuft, du aber Port `3000` geöffnet hast, bleibt der Dienst unerreichbar.

#### Firewall im Programm selbst

Manche Programme haben eigene Zugriffsbeschränkungen.

Prüfe zusätzlich die Konfiguration der Anwendung.

### Sicherheit

Öffne nur Ports, die du wirklich benötigst.

Besonders vorsichtig solltest du sein bei:

* Datenbanken
* Admin-Oberflächen
* internen APIs
* Redis
* Elasticsearch
* Docker-Diensten
* Panels
* Entwicklungsservern

Ein öffentlich erreichbarer Dienst kann angegriffen werden, wenn er schlecht abgesichert ist.

### Empfehlung

Für die meisten Linux-Server ist ein einfacher Start:

1. SSH erlauben.
2. Firewall aktivieren.
3. Nur benötigte Ports öffnen.
4. Nicht benötigte Dienste schließen.
5. Regelmäßig prüfen, welche Ports offen sind.

Beispiel für einen Webserver:

`ufw allow 22/tcp`

`ufw allow 80/tcp`

`ufw allow 443/tcp`

`ufw enable`

### Support kontaktieren

Wenn ein Port trotz korrekter Freigabe nicht erreichbar ist, kontaktiere den Support.

Gib dabei bitte folgende Informationen an:

* Server-IP
* Betriebssystem
* betroffener Port
* verwendetes Protokoll: TCP oder UDP
* Dienst oder Anwendung, die den Port nutzt
* Ausgabe von `ufw status`
* Ausgabe von `ss -tulpen`
* genaue Fehlermeldung
* was du bereits versucht hast

Sende keine Passwörter, privaten Schlüssel oder vertraulichen Zugangsdaten.
