IT-Security

UFW Firewall

Letzte Aktualisierung:

Die UFW (uncomplicated firewall) ist sowohl unter Ubuntu wie auch unter Debian in neueren Releases verfügbar. Ziel ist es, eine einfach zu konfigurierende Softwarefirewall zur Verfügung zu haben, die ohne komplexe Hardware auskommt, die nicht gerade triviale Einstellung von iptables beherrscht und sowohl für IPv4 wie auch IPv6 eingesetzt werden kann. Wer mehr dazu wissen möchte, dem empfehle ich das entsprechende Ubuntu-Wiki.

Ich beschränke mich in diesem Beitrag auf die Einrichtung spezieller Ports, die ich exemplarisch ausgewählt habe, weil ich sie auch auf meinen Servern einsetze. Alle anderen Ports, die nicht aufgeführt sind, bleiben geschlossen (closed by default).

Installation

Die Installation ist zunächst mal kein Hexenwerk:

sudo apt install ufw

Es gibt für ufw auch eine graphische Oberfläche. Diese verwende ich aber nicht, weil ich meine Server auf der Konsole administriere. Dann prüfen, ob die Firewall läuft:

sudo ufw status 
$ Firewall not loaded

Läuft noch nicht, also einschalten:

sudo ufw enable 
$ Firewall started and enabled on system startup

Stoppen lässt sich die Firewall entsprechend mit

sudo ufw disable 
$ Firewall stopped and disabled on system startup

Aber Achtung! Die eingeschaltete Firewall unterbindet natürlich auch den Verbindungsaufbau via ssh. Entsprechend sollte man den Zugang schnellstmöglich einrichten.

ssh Freigaben einrichten

Wer sich auf seinem Server mittels ssh einloggen will, sollte den entsprechenden Port auf der Maschine in der Firewall freigegeben haben, sonst klappt das eben so wenig wie bei den anderen Ports.

sudo ufw allow OpenSSH

Anschließend mit y bestätigen.

Apache2 Freigaben einrichten

Wer einen Apache Webserver betreibt und den Server per Firewall schützt, sollte mindestens sowohl Port 443 wie auch Port 80 (wenn gewünscht) in der Firewall öffnen. Da es der Sinn eines Webservers ist, intern wie extern erreichbar zu sein und ggf auch auf anderen Ports Services zur Verfügung zu stellen, habe ich die Firewall hier entsprechend weit geöffnet.

sudo ufw allow in "Apache Full"
sudo ufw enable

Anschließend wieder mit y bestätigen.

Zur Erläuterung: "Apache Full" ist ein hinterlegtes Schema in der Firewall, das die entsprechenden Ports, die der Apache nutzt, freigibt. Dieses Schema ist nicht für alle Netzkomponenten verfügbar. Für Apache ist es angelegt und einsetzbar, sobald dieser installiert wurde. Deswegen muss man beispielsweise für Samba konkrete Einstellungen vornehmen.

Samba Freigaben einrichten

Die Freigaben für Samba einzurichten bedarf etwas der Erläuterung: in dem ug Beispiel gehe ich davon aus, dass der Router die IP-Adresse 192.168.1.1 hat und das Netzwerkschema 192.168.1.0/24 entsprechend verwendet wird. Alle Clients innerhalb dieses Netzsegmentes soll auf den Samba-Share zugreifen können (auf den Webserver sollen hingegen alle Netzsegmente von überall, also auch aus dem Internet, zugreifen können). Entsprechend der benötigten Ports und Protokolle, die Samba verwendet, sieht dann de Freigabe wie folgt aus:

sudo ufw allow proto tcp from 192.168.1.0/24 to any port 135
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 139
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 445

sudo ufw allow proto udp from 192.168.1.0/24 to any port 137
sudo ufw allow proto udp from 192.168.1.0/24 to any port 138

Freigaben für IMAP und SMTP

wer die Ports 25 (SMTP) und 143 (IMAP) verwendet und einen eigenen Server hinter einem Router betreibt, sollte – abhängig von der Netzwerkstruktur – die beiden Ports von innerhalb und außerhalb des internen Netzes erreichbar haben. Eine solche Freigabe empfiehlt sich aber nur in Kombination mit fail2ban, sonst ist es eine Frage der Zeit, wann die Maschine entweder gekapert wurde oder nur noch mit fehlerhaften Logins durch irgendwelche Bots von Aussen beschäftigt ist.

sudo ufw allow proto tcp from any to any port 143
sudo ufw allow proto tcp from any to any port 25
sudo ufw enable

Freigabe für VNC (Bildschirm)

sudo ufw allow proto tcp from any to any port 5900

Regeln löschen

Wer Regeln wieder löschen möchte, kann dazu den Befehl ufw delete benutzen. Wenn man sich die Details der Regeln beim Löschen sparen möchte, kann man sich diese zunächst nummeriert aufzählen lassen und dann beim Löschen einfach per Nummer verwenden:

sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere
[ 2] Apache Full                ALLOW IN    Anywhere
[ 3] 135/tcp                    ALLOW IN    192.168.1.0/24
[ 4] 139/tcp                    ALLOW IN    192.168.1.0/24
[ 5] 445/tcp                    ALLOW IN    192.168.1.0/24
[ 6] 137/udp                    ALLOW IN    192.168.1.0/24
[ 7] 138/udp                    ALLOW IN    192.168.1.0/24
[ 8] OpenSSH (v6)               ALLOW IN    Anywhere (v6)
[ 9] Apache Full (v6)           ALLOW IN    Anywhere (v6)

Löschen der Regel Nummer 9 funktioniert dann entsprechend mit

sudo ufw delete 9