Welche Dienste lauschen auf Ihrem VPS, und was ist von außen erreichbar?
Jedes Programm, das Verbindungen annimmt, lauscht auf einem Port: SSH auf 22, ein Webserver auf 80 und 443, MariaDB auf 3306. Jeder Port, der von außen erreichbar ist, ist eine Tür zu Ihrem Server. Eine Website benötigt von außen meist nur 22, 80 und 443. Hier erfahren Sie, wie Sie sehen, was lauscht und auf welcher Adresse, und wie Sie prüfen, was der Rest des Internets sieht.
Prüfen, was lauscht
Führen Sie auf Ihrem VPS Folgendes aus:
sudo ss -tulpn
Die Optionen bedeuten: TCP (-t), UDP (-u), nur lauschende Sockets (-l), welches Programm (-p) und Nummern statt Namen (-n). Ein Beispiel:
tcp LISTEN 0.0.0.0:22 users:(("sshd",...))
tcp LISTEN 0.0.0.0:443 users:(("nginx",...))
tcp LISTEN 127.0.0.1:3306 users:(("mariadbd",...))
tcp LISTEN 0.0.0.0:6379 users:(("redis-server",...))
tcp LISTEN [::]:22 users:(("sshd",...))
Wichtig ist die Spalte Local Address, also die Adresse, auf der das Programm lauscht:
| Adresse | Bedeutung |
|---|---|
0.0.0.0 | Alle IPv4-Adressen, also auch Ihre öffentliche Adresse: von außen erreichbar, sofern keine Firewall dies blockiert |
[::] | Alle IPv6-Adressen: dasselbe für IPv6 |
127.0.0.1 oder [::1] | Nur der Server selbst (Loopback): von außen nie erreichbar |
127.0.0.53 oder 127.0.0.54 | Ebenfalls Loopback: der lokale DNS-Helfer von systemd-resolved |
Im Beispiel ist MariaDB in Ordnung: Nur Programme auf dem Server selbst können darauf zugreifen. Redis lauscht auf allen Adressen, und genau das ist der Fehler, um den es hier geht.
Im Dienst selbst abschotten
Eine Datenbank, ein Cache oder eine Verwaltungsoberfläche sollte fast nie von außen erreichbar sein. Der beste erste Schritt ist, dass der Dienst nur auf Loopback lauscht. Unter Debian und Ubuntu:
| Programm | Einstellung | Datei |
|---|---|---|
| MariaDB oder MySQL | bind-address = 127.0.0.1 | /etc/mysql/mariadb.conf.d/50-server.cnf |
| PostgreSQL | listen_addresses = 'localhost' | /etc/postgresql/<Version>/main/postgresql.conf |
| Redis | bind 127.0.0.1 -::1 und protected-mode yes | /etc/redis/redis.conf |
Starten Sie danach den Dienst neu (siehe Dienste auf Ihrem VPS mit systemctl verwalten) und prüfen Sie erneut mit ss -tulpn. Möchten Sie selbst von Ihrem Laptop aus auf die Datenbank zugreifen, verwenden Sie statt eines offenen Ports einen SSH-Tunnel, siehe Eine SSH-Config: mit einem kurzen Namen anmelden.
Die Firewall als zweite Schicht
Eine Firewall blockiert, was versehentlich doch auf allen Adressen lauscht. Wie Sie ufw einrichten, lesen Sie in Eine Firewall mit ufw (oder nftables). Verlassen Sie sich nicht auf eine einzige Schicht: Eine Firewall kann ausgeschaltet sein oder eine Regel zu großzügig.
ports:), umgehen ufw. Eine Datenbank mit "3306:3306" ist dann von außen erreichbar, auch wenn ufw meldet, dass der Port geschlossen ist. Setzen Sie 127.0.0.1: davor oder veröffentlichen Sie den Port nicht. Siehe Docker und die Firewall: Ports sicher veröffentlichen.Von außen prüfen
ss zeigt, was auf dem Server lauscht, aber nicht, was Ihre Firewall durchlässt. Die eigentliche Prüfung führen Sie von einem anderen Computer aus durch, nicht vom Server selbst. Mit nc (netcat) unter Mac oder Linux:
nc -vz -w 3 203.0.113.10 6379 nc -6 -vz -w 3 2001:db8::10 6379
Unter Windows erledigt PowerShell dasselbe mit Test-NetConnection 203.0.113.10 -Port 6379. Tragen Sie Ihre eigene IPv4- und IPv6-Adresse ein; diese finden Sie in der VPS-Übersicht. Das Ergebnis lesen Sie so:
- Offen (succeeded): Es lauscht etwas und ist von außen erreichbar.
- Geschlossen (Connection refused): Es lauscht nichts, oder die Firewall lehnt aktiv ab.
- Gefiltert (Time-out): Eine Firewall verwirft den Verkehr stillschweigend.
Für eine Datenbank sind geschlossen und gefiltert beide gut. Testen Sie auch IPv6: Ein häufiger Fehler ist eine Firewall mit nur IPv4-Regeln, während der Dienst auch auf [::] lauscht. Ein Portscanner wie nmap prüft mehrere Ports gleichzeitig; verwenden Sie einen solchen Scanner nur auf Ihrem eigenen Server.
Ihr VPS ist vollständig selbstverwaltet: Welche Dienste lauschen und wie Ihre Firewall eingestellt ist, regeln Sie selbst. Wir helfen beim WebOké-Teil, etwa bei der VPS-Übersicht, dem Netzwerk und Snapshots.
Mehr erfahren? Besuchen Sie den kostenlosen Kurs VPS und Linux-Serververwaltung, Lektion 5.1 Ports und lauschende Dienste oder Lektion 5.2 Eine Firewall mit ufw und nftables.
