So richtest du mit UFW eine einfache Firewall für deinen Ubuntu-Server ein und gibst nur die wirklich benötigten Ports frei.
Im letzten Teil dieser Serie kümmern wir uns um die Absicherung unseres Servers mit einer Firewall. Auch wenn unser Server nur als lokale Entwicklungsumgebung dient, ist es eine gute Angewohnheit, von Anfang an nur die Ports freizugeben, die wirklich gebraucht werden.
Dieser Beitrag baut auf Teil 5 – Installation PHPMyAdmin und HeidiSQL auf.
Was ist UFW?
UFW steht für „Uncomplicated Firewall“ und ist eine vereinfachte Oberfläche für das Linux-eigene Firewall-System iptables. Statt komplexer iptables-Regeln reicht bei UFW ein einfacher Befehl aus, um einen Port freizugeben oder zu sperren.
Ubuntu bringt UFW standardmäßig mit, es muss also nicht extra installiert werden. Trotzdem prüfen wir das gleich am Anfang einmal nach.
UFW installieren und Status prüfen
Falls UFW aus irgendeinem Grund doch fehlen sollte, installieren wir es mit folgendem Befehl nach:
sudo apt install ufw -y
Bevor wir UFW aktivieren, schauen wir uns erst einmal den aktuellen Status an:
sudo ufw status
Wichtiger Hinweis, bevor wir weitermachen: UFW darf erst aktiviert werden, nachdem wir die benötigten Ports freigegeben haben. Aktivierst du UFW zu früh, kann es passieren, dass du dich über SSH selbst aussperrst, weil auch der SSH-Zugang standardmäßig blockiert wird.
Benötigte Ports freigeben
UFW bringt für viele bekannte Dienste bereits fertige Profile mit. Welche das sind, können wir uns anzeigen lassen:
sudo ufw app list
Für unseren Webserver benötigen wir folgende Freigaben: SSH für die Fernwartung, HTTP und HTTPS für den Webserver, sowie die Samba-Ports für unsere Netzwerkfreigaben.
sudo ufw allow OpenSSH sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow Samba
Zur Erläuterung:
| Befehl / Option | Bedeutung |
| allow OpenSSH | Nutzt das mitgelieferte Profil für SSH (Port 22/tcp). Wichtig, damit wir uns nach der Aktivierung weiterhin per Putty anmelden können. |
| 80/tcp | Gibt den Standardport für HTTP-Verbindungen frei, den unser Apache-Webserver aus Teil 2 benötigt. |
| 443/tcp | Gibt den Standardport für HTTPS-Verbindungen frei (verschlüsselte Verbindungen). |
| allow Samba | Nutzt das mitgelieferte Profil für Samba und gibt automatisch alle dafür nötigen Ports frei, die wir in Teil 1 und Teil 2 für unsere Netzwerkfreigaben eingerichtet haben. |
UFW aktivieren und Status prüfen
Jetzt, nachdem alle benötigten Ports freigegeben sind, können wir UFW gefahrlos aktivieren:
sudo ufw enable
UFW fragt an dieser Stelle noch einmal nach, ob wir uns sicher sind, da eine aktive SSH-Verbindung dadurch kurz unterbrochen werden könnte. Wir bestätigen mit „y“.
Mit folgendem Befehl lassen wir uns eine ausführliche Übersicht aller aktiven Regeln anzeigen:
sudo ufw status verbose
Falls du dir später eine Regel wieder anschauen und gezielt löschen möchtest, lässt du dir die Regeln am besten nummeriert anzeigen:
sudo ufw status numbered
Eine einzelne Regel kannst du dann anhand ihrer Nummer wieder löschen. Ersetze dazu NUMMER durch die entsprechende Zeilennummer aus der vorherigen Ausgabe:
sudo ufw delete NUMMER
Fail2Ban zur Ergänzung
Der Vollständigkeit halber möchte ich an dieser Stelle noch Fail2Ban erwähnen. Fail2Ban überwacht Log-Dateien, z. B. von SSH, und sperrt IP-Adressen automatisch für eine gewisse Zeit, wenn sich von dort mehrfach hintereinander mit falschen Zugangsdaten angemeldet wurde. Das schützt effektiv vor sogenannten Brute-Force-Angriffen.
Für unseren Server ist Fail2Ban allerdings nicht wirklich notwendig. Da wir diesen Server ausschließlich als lokale Entwicklungsumgebung in unserem eigenen Netzwerk betreiben und er nicht aus dem Internet erreichbar ist, gibt es für Angreifer von außen gar keine Möglichkeit, sich überhaupt mit unserem SSH-Server zu verbinden.
Solltest du deinen Server später doch einmal aus dem Internet erreichbar machen wollen, empfehle ich dir, Fail2Ban zusätzlich zu installieren:
sudo apt install fail2ban -y
Nach der Installation ist Fail2Ban mit sinnvollen Standardeinstellungen sofort aktiv und überwacht bereits den SSH-Zugang. Den Status kannst du dir mit folgendem Befehl anzeigen lassen:
sudo systemctl status fail2ban
Eine detaillierte Konfiguration von Fail2Ban würde den Rahmen dieser Anleitung sprengen, da es für unseren lokalen Entwicklungsserver nicht erforderlich ist.
Abschluss Firewall und der Serie
Damit haben wir unseren Ubuntu-Server mit UFW abgesichert und nur die wirklich benötigten Ports freigegeben. Zusätzlich weißt du jetzt, wie du mit Fail2Ban nachrüsten kannst, falls der Server später doch einmal aus dem Internet erreichbar sein soll.
Damit ist auch diese Serie zum eigenen Webserver mit PHP, MySQL/MariaDB abgeschlossen. Von der Installation des Ubuntu-Servers in Teil 1 – Installation Ubuntu 24.04 LTS Server bis zur abgesicherten Firewall haben wir uns Schritt für Schritt einen kompletten, lokalen LAMP-Server mit wechselbaren PHP-Versionen aufgebaut. Viel Spaß beim Ausprobieren und Weiterentwickeln!


0 Kommentare