Jeder der einen Ubuntu-Server betreibt, sei es als Web-, Datenbank- oder Load-Balancer-Server, sollte sich hinreichend um die Sicherheit seines Systems kümmern. Eine sehr elegante und einfache Möglichkeit die Linux-Firewall IP-Tables zu konfigurieren ist das Programm UFW. Mit wenigen Befehlen können Sie Ports blockieren oder freigeben, ausgewählte Ports nur für bestimmte IP-Adressen zulassen und sogar in Kombination mit anderen Tools wie Fail2Ban automatisiert auffällige IPs aussperren.

In diesem kleinen Guide möchten wir Ihnen UFW vorstellen und zeigen, wie einfach es sein kann, eine Linux-Firewall zu konfigurieren.

UFW auf Ubuntu installieren

Standardmäßig sollte UFW schon auf Ihrem Linux-Server vorinstalliert sein. Man kann dies prüfen, indem man den Installationsbefehl eingibt:

sudo apt install ufw

Sollte UFW doch nicht installiert sein, kann man dies nun nachholen. Ansonsten erscheint die Meldung:

ufw is already the newest version ....

Nach der Installation ist UFW noch nicht aktiv. Das ist auch gut so, denn sollten Sie es ohne korrekte Konfiguration aktivieren, könnte es passieren, dass Sie sich versehentlich aus Ihrem Server aussperren.

IPv6 in UFW nutzen

Sollte Ihr Server bereits über eine IPv6 Adresse verfügen, können Sie den IPv6-Support in UFW aktivieren. Dazu ändern Sie folgende Einstellung in der UFW-Konfigurationsdatei:

nano /etc/default/ufw

Hier ändern Sie nun die Einstellung IPV6 auf yes:

... IPV6=yes ...

Anschließend speichern Sie die Einstellung mit Strg-X und bestätigen mit Enter.

UFW-Firewall Status und Regeln überpüfen

Man kann jederzeit den aktuellen Status und, falls die Firewall aktiviert wurde, alle Regeln mit folgendem Befehl einsehen:

sudo ufw status verbose

Da wir UFW noch nicht aktiviert haben und keine Regeln bestehen, erhalten wir folgenden Output:

Status: inactive

Sobald die Firewall aktiv ist und wir Regeln konfiguriert haben, sieht der Output in etwa so aus:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

In dem oben dargestellen Beispiel sind die Ports 22 (SSH), 80 (HTTP) und 443 (HTTPS) für jedermann erreichbar. Die letzen beiden Regeln mit dem „(V6)“ zeigt, dass wir IPv6 nutzen und UFW auch für dieses Protokoll die Ports geöffnet hat. Weiter unten wird gezeigt, wie man einzelnen Ports öffnen kann.

UFW konfigurieren

Bevor wir die ersten einzelnen Ports öffnen, sollten wir die grundsätzlichen Regeln (Default-Policies) konfigurieren. Unsere Firewall soll jeglichen Traffic zum Server unterbinden und gleichzeit dem Server alle Verbindungen nach draußen ermöglichen. Das können wir mit diesen beiden Befehlen umsetzen:

sudo ufw default allow outgoing
sudo ufw default deny incoming

Sollten wir auch den ausgehenden Traffic unterbinden wollen, müssten wir die einzelnen notwendigen Ports (z.B. für das Senden von E-Mails) wieder per Regel hinzufügen.

SSH-Verbindungen via Firewall erlauben

Die wohl wichtigste Regel ist die für unsere SSH-Verbindung. Ohne SSH können wir den Server nicht von außerhalb erreichen und wären ausgesperrt. Deshalb sollte, bevor UFW aktiviert wird, immer sichergestellt werden, dass der SSH-Port nicht durch die Firewall blockiert wird.

sudo ufw allow 22

In unserem Beispiel nutzen wir noch den Standard-Port 22 für SSH. Sollten Sie den Port geändert haben, müssen Sie die korrekte Portnummer wählen. Z.B.:

sudo ufw allow 22912

Weitere wichtige Ports erlauben

Nachdem wir den SSH-Port freigegeben haben sollten wir noch weitere Ports für unseren Server freigeben. Je nachdem ob z.B. ein MySQL-Datenbankserver auch von außen erreicbar sein soll oder ob ein E-Mail Server wie Postfix auf dem Server installiert wurde, müssen entsprechend alle notwendigen Ports geöffnet werden, da sie ansonsten nicht mehr erreichbar sind. Hier eine kleine Liste an wichtigen Ports:

  • 21 FTP
  • 80 HTTP und 443 HTTPS Webserver
  • 3306 MySQL Datenbankserver
  • 25 und 587 SMTP
  • 143 IMAP und 993 IMAPS
  • 110 POP3 und 995 POP3S

Je nach System müssen die entsprechenden Ports geöffnet werden. Wie schon oben beim SSH-Port gezeigt, werden die Ports wie folgt freigegeben:

sudo ufw allow XXX

Mann kann aber auch mehrere Ports auf einmal freigeben, indem man sie durch ein Komme trennt:

sudo ufw allow XXX, XXX, XXX

Nur ausgwählte IP-Adressen erlauben

UFW bietet auch die Möglichkeit, nur ausgewühlte IP-Adressen auf den Server zuzugreifen. Das macht vorallem dann Sinn, wenn keiner von außerhalb den Server erreichen soll (z.B. zum Aufbau einen Private-Networks). Wir können mit folgendem Befehl nur eine ausgewühlte IP zulassen:

sudo ufw allow from XXX.XXX.XXX.XXX

IP-Subnets zulassen

Um ein ganzes IP-Subnet zuzulassen müssen wir folgenden Befehl eingeben:

sudo ufw allow from XXX.XXX.XXX.XXX/24

Ports nur für bestimmte IPs freigeben

Eine weitere Möglichkeit ist die Freigabe von Ports für bestimmte IP-Adressen. Das mach vorallem für sicherheitsrelevante Ports wie SSH Sinn. Wichtig ist natürlich, dass man über eine gleichbleibende IP-Adresse verfügt (z.B. durch einen bestimmten Internet-Provider oder VPN-Server). Folgender Befehl lässt nur eine bestimmte IP auf einen ausgewählten Port (in unserem Fall SSH) zu:

sudo ufw allow from XXX.XXX.XXX.XXX to any port 22

Ports via Firewall sperren

Natürlich können wir auch ausgewählte Ports vollständig sperren. Dazu nutzen wir folgenden Befehl, wobei XXX für den Port steht:

sudo ufw deny XXX

Um z.B. den Port 25 für FTP zu sperren nutzen wir den Befehl wie folgt:

sudo ufw deny 25

IP-Adressen aussperren

Und zum Schluss noch der Befehl, um IP-Adressen zu sperren:

sudo ufw deny from XXX.XXX.XXX.XXX

UFW-Regeln löschen

Natürlich können wir auch einzelne oder alle Regeln auf einmal löschen. Jede Regel erhält eine Nummer, anhand dieser Nummer können wir die Regel zum löschen auswählen. Mit folgendem Befehl können wir die Nummern aller Regeln ausgeben:

sudo ufw status numbered

Dadurch erhalten wir folgende Ausgabe:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    XXX.XXX.XXX.XXX
[ 2] 80                         ALLOW IN    Anywhere
[ 3] 443                        ALLOW IN    Anywhere
[ 4] 80 (v6)                    ALLOW IN    Anywhere (v6)
[ 5] 443 (v6)                   ALLOW IN    Anywhere (v6)

Möchten wir nun die Regel für den Port 80 löschen, führen wir folgenden Befehl aus:

sudo ufw delete 2

Wichtig ist hierbei, dass sich die Nummerierung nach dem Löschen einer Regel ändert. Wir sollten uns also um weitere Regeln korrekt zu löschen nochmal alle Regeln numeriert ausgeben lassen.

UFW Firewall deaktivieren

Um die Firewall zu deaktivieren geben wir folgenden Befehl in die Konsole:

sudo ufw disable

UFW Regeln zurücksetzen

Um alle Einstellungen zurückzusetzen nutzen wir den Befehl:

sudo ufw reset

Fazit

Mehr Sicherheit auf Linux-Servern durch UFW!

UFW ist ein sehr möchtiges Tool und erlaubt es, jeden Linux-Server abzusichern. In Kombination mit Tools wie Fail2Ban ist man in der Lage, potentielle Angreifer / Hacker frühzeitig daran zu hindern, in den Server einzudringen. Gerade durch die Möglichkeit, IP-Adressen für bestimmte Ports zu erlauben, kann man die Sicherheit seiner Linux-Server stark erhöhen.

Falls Sie Hilfe bei der Firewall-Konfiguration mit UFW haben helfen wir Ihnen gerne weiter. Nutzen Sie am besten unser Kontaktformular um ein Gespräch zu vereinbaren.