Last Updated on: 4th Mai 2020, 01:54 pm
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