Ein VPS ist von der ersten Minute an im Internet erreichbar und wird ständig mit automatisierten Angriffen auf alle offenen Ports konfrontiert. Die Firewall ist eine der ersten und wichtigsten Sicherheitsmaßnahmen: Sie regelt, über welche Ports und von wo aus der Server Datenverkehr zulässt.
Das Grundprinzip
Erlauben Sie nur das, was Sie tatsächlich nutzen (beispielsweise Port 22 für SSH, Port 80 und 443 für den Webserver), und blockieren Sie alle anderen eingehenden Verbindungen. Öffnen Sie die Datenbank (MySQL 3306, PostgreSQL 5432) und interne Dienste (z. B. Redis) niemals für das Internet; falls ein Fernzugriff erforderlich ist, erlauben Sie diesen ausschließlich von Ihrer eigenen IP-Adresse aus.
Wichtig: Aktivieren Sie vor dem Einschalten der Firewall stets SSH, da Sie sich sonst möglicherweise vom Server aussperren.
firewalld (AlmaLinux, Rocky Linux)
Auf RHEL-basierten Systemen ist „firewalld“ die Standard-Firewall:
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Ein Port darf nur von einer IP-Adresse aus erreichbar sein, beispielsweise MySQL von Ihrem eigenen Büro aus:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --reload
ufw (Ubuntu, Debian)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
Nur von einer IP-Adresse aus: „sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp“. Unter Debian müssen Sie zuvor folgenden Befehl ausführen: „sudo apt install ufw“.
IPv6
Unsere KVM-VPS erhalten ebenfalls eine IPv6-Adresse, daher müssen die Regeln auch für den IPv6-Verkehr gelten. Sowohl firewalld als auch ufw (mit der Standardeinstellung „IPV6=yes“) wenden die Regeln auf beide Protokolle an; wenn Sie iptables direkt verwenden, benötigen Sie für IPv6 zusätzlich ip6tables. Darum geht es in dem Artikel über die Einrichtung einer IPv6-Adresse auf einem VPS.
Docker und die Firewall
Docker öffnet die veröffentlichten Ports der Container (-p 8080:80) mit eigenen iptables-Regeln, wodurch die ufw-Regeln umgangen werden. Wenn Sie den Port eines Containers nur lokal erreichen möchten, binden Sie ihn an die lokale Adresse: -p 127.0.0.1:8080:80, und leiten Sie den Datenverkehr über einen Webserver (Reverse-Proxy) weiter.
Zusätzlicher Schutz
- Schutz vor Brute-Force-Angriffen: „fail2ban“ sperrt IP-Adressen, von denen wiederholt fehlgeschlagene Anmeldeversuche ausgehen, automatisch; die Installation wird im Artikel zur Konfiguration von „fail2ban“ beschrieben.
- SSH: Anmeldung per Schlüssel und Deaktivierung der Passwortanmeldung; siehe den Artikel „Sichere Konfiguration des SSH-Servers“.
- Portwechsel: Die Umstellung von SSH auf einen anderen Port reduziert die Log-Einträge, bietet jedoch für sich genommen keinen Schutz. Unter AlmaLinux muss der neue Port auch für SELinux freigegeben werden (
semanage port -a -t ssh_port_t -p tcp 2222).
Sollten Sie sich vom Server ausgesperrt haben, erstellen Sie bitte ein Support-Ticket im Kundenbereich, und wir helfen Ihnen dabei, wieder Zugriff zu erhalten.