Die Standard-Firewall für Ubuntu ist UFW (Uncomplicated Firewall), ein einfaches Frontend für iptables, das es auch für Debian gibt. Wer UFW einrichten will, braucht nur ein Denkmodell: Eingehend ist standardmäßig alles verboten, offen sind nur die Ports, die du wirklich bereitstellst. Hier der komplette Ablauf, samt dem einen Schritt, der dich vor dem Aussperren bewahrt.
Vorab: Ist UFW installiert und aktiv?
sudo ufw status # "Status: inactive" heißt: installiert, aber aus
sudo apt install ufw # nur nötig, wenn ufw fehlt, etwa auf DebianUbuntu bringt UFW schon mit, schaltet es aber nicht ein. Auf Debian ist es nicht vorinstalliert und kommt mit sudo apt install ufw dazu. Solange UFW inaktiv ist, kannst du Regeln in Ruhe anlegen: Sie greifen erst mit sudo ufw enable.
1. SSH erlauben, bevor du irgendetwas aktivierst
sudo ufw allow OpenSSH # oder: sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verboseOpenSSH bedeutet immer Port 22. Läuft SSH auf deinem Server auf einem anderen Port, erlaubst du stattdessen diesen. Wie du ihn herausfindest, steht im Artikel Welchen Port nutzt SSH? (engl.).
2. Die Ports öffnen, die du bereitstellst
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# oder das benannte Profil
sudo ufw allow "Nginx Full"Ein Webserver braucht Port 80 und Port 443: 443 trägt HTTPS, und 80 beantwortet http://-Links mit einer Weiterleitung und bedient die HTTP-01-Challenge von Let’s Encrypt. Ein Mailserver braucht SMTP-Port 25 (engl.) für die Zustellung zwischen Servern sowie 587 oder 465 für Mailprogramme, die darüber versenden.
So siehst du, welche Anwendungsprofile es gibt:
sudo ufw app listSteht die Website hinter Cloudflare, müssen die Ports 80 und 443 die Adressbereiche von Cloudflare annehmen. Eine Regel, die dort nur deine eigene IP zulässt, oder ein Sperr-Tool, das eine Cloudflare-Adresse blockiert hat, wird für jeden Besucher zu Cloudflare-Fehler 522 (engl.).
3. Sensible Ports auf bestimmte Quellen beschränken
Ein Datenbank- oder Admin-Port sollte nie für das ganze Internet offen sein. Beschränke ihn auf eine einzelne Adresse oder ein privates Subnetz:
# nur die IP deines Büros darf SSH erreichen
sudo ufw allow from 203.0.113.7 to any port 22
# nur das private Netz darf MySQL erreichen
sudo ufw allow from 10.0.0.0/24 to any port 3306Meine IP-Adresse (engl.) zeigt die Adresse, von der deine Verbindung kommt, und genau die gehört in die erste Regel. Der Subnetzrechner (engl.) zeigt, welche Adressen ein Bereich wie 10.0.0.0/24 umfasst, bevor du ihn freigibst.
4. Regeln anzeigen und löschen
sudo ufw status numbered # jede Regel bekommt eine Nummer
sudo ufw delete 3 # Regel Nr. 3 löschenDie Nummern rücken nach jedem Löschen nach, lass dir die Liste also vor dem nächsten delete neu anzeigen. sudo ufw disable schaltet die Firewall ab und beim Booten nicht wieder ein. sudo ufw reset schaltet sie ebenfalls ab und setzt alle Regeln auf den Installationszustand zurück, auch deine SSH-Regel: Leg sie vor dem nächsten ufw enable neu an.
5. Die Standardrichtlinie bestätigen
Die sichere Grundhaltung ist: eingehend verbieten, ausgehend erlauben. UFW stellt das standardmäßig so ein, prüfe es aber trotzdem:
sudo ufw default deny incoming
sudo ufw default allow outgoingDie vorgelagerte Firewall nicht vergessen
Viele Anbieter setzen eine Netzwerk-Firewall vor die Maschine. Ist ein Port in UFW offen, aber trotzdem nicht erreichbar, schau ins Control Panel des Anbieters: Die Sperre kann vorgelagert sein, nicht im Betriebssystem.
Optional: Verbindungen drosseln und das Rauschen dämpfen
# bremst wiederholte Verbindungen von derselben IP aus
sudo ufw limit OpenSSHLaut der Manpage von ufw verweigert eine limit-Regel Verbindungen von einer IP-Adresse, die innerhalb von 30 Sekunden 6 oder mehr Verbindungen aufzubauen versucht. Kombiniere das mit SSH nur mit Schlüssel und fail2ban (engl.), dann lässt das ständige Grundrauschen an Scans aus dem öffentlichen Internet deinen Server kalt. Auf den KVM-Tarifen von VMHeaven, etwa der Linie Standard KVM, hast du die volle Kontrolle über die Firewall des Betriebssystems, dazu kommt DDoS-Schutz am Netzwerkrand.
Häufige Fragen
Trennt das Aktivieren von UFW meine SSH-Verbindung?
Ja, wenn du SSH nicht vorher erlaubt hast. Führe immer zuerst sudo ufw allow OpenSSH aus (oder die Regel für deinen eigenen SSH-Port) und erst danach sudo ufw enable.
Ein Port ist in UFW offen, aber trotzdem nicht erreichbar. Warum?
Viele Anbieter haben eine Netzwerk-Firewall vor der Maschine. Prüfe das Control Panel des Anbieters: Die Sperre kann vorgelagert sein und nicht im Betriebssystem liegen.
Wie beschränke ich einen Port in UFW auf eine einzelne IP?
Mit sudo ufw allow from 203.0.113.7 to any port 22 gilt die Regel nur für diese eine Adresse; statt einer Adresse geht auch ein Subnetz wie 10.0.0.0/24.