ufw - Ubuntu Linux-Firewall

Letzte Änderung: 18.03.2016

Regelbeispiele

Freigeben eines Ports (nur TCP):

sudo ufw allow 110/tcp

Freigeben des Zugriffs auf einen Port von einer bestimmten IP:

sudo ufw allow proto tcp from 1.2.3.4 to any port 4949

Erlauben des UDP-Ports 9987:

sudo ufw allow proto udp to any port 9987

Eine bestimmte IP komplett sperren:

sudo ufw insert 1 deny from 1.2.3.4 to any

Übersicht aller Regeln

Eine Übersicht gibt es mit ufw verbose:

$ sudo ufw verbose
Status: Aktiv

Zu                         Aktion      Von
--                         ------      ---
Apache                     ALLOW       Anywhere
Apache (v6)                ALLOW       Anywhere (v6)

Gezielt Regeln entfernen

Um gezielt eine Regel zu entfernen, sollte zurerst eine nummerierte Liste angezeigt werden und dann ganz spezifisch die jeweilige Regel gelöscht werden:

$ sudo ufw status numbered
Status: Aktiv

     Zu                         Aktion      Von
     --                         ------      ---
[1] Apache                     ALLOW IN    Anywhere
[2] Anywhere                   DENY IN     1.2.3.4
[3] Apache (v6)                ALLOW IN    Anywhere (v6)

$ sudo ufw delete 2
Wird gelöscht:
 deny from 1.2.3.4
Fortfahren (j|n)? j
Regel gelöscht

Application-Profiles

Ubuntu liefert einige Application-Profiles mit, z.B. "Apache". Wir können aber auch unsere eigenen machen, was die Übersichtlichkeit erhöht. So sieht ein Profil aus (/etc/ufw/applications.d/test-sshd.profile):

[test-sshd]
title=test-sshd
description=SSH-Server auf Port 1234
ports=1234/tcp

Aktiviert wird das so:

sudo ufw allow test-sshd

bzw. bei SSH bietet sich die eingebaute Limitierung an (siehe Man-Page):

sudo ufw limit test-sshd

Komplizierte Regeln per Application Profiles lösen

Kompliziertere Regeln können so auch einfach eingebaut werden. Hier das Beispiel eines TS-Servers mit verschiedenen Ports. Dabei sind die meisten Ports per UDP von überall erreichbar, die Verwaltung per telnet allerdings nur von wenigen IPs. Dazu machen wir zwei Profiles und schalten die entsprechend frei:

$ cat test-ts3.profile
[test-ts3]
title=test-ts3
description=Ports des TS3-Servers
ports=9987:9992/udp|9999:10000/udp|30033/tcp

[test-ts3-telnet]
title=test-ts3-telnet
decription=telnet-Zugang zum TS3-Server fuer die Administration
ports=10011/tcp

Und dann freischalten:

sudo ufw allow test-ts3

Die spezifischen IPs laufen dann so:

sudo ufw allow from 1.2.3.4 to any app test-ts3-telnet
sudo ufw allow from 2a01:1:2:3::4 to any app test-ts3-telnet

Nach eventuellen Änderungen am Profil muss es neu eingelesen werden:

sudo ufw app update test-ts3

fail2ban-Anpassung

Damit fail2ban einfach ufw nutzt, müssen ein paar Anpassungen gemacht werden:

Anlegen einer Datei /etc/fail2ban/jail.local. Diese enthält Überschreibungen der Standardkonfiguration von fail2ban (so werden auch Updates überlebt). Hier ein Beispiel für SSH:

[ssh]
banaction=ufw-ssh
port=1234

Anlegen einer Datei /etc/fail2ban/action.d/ufw-ssh.conf. Hierbei muss der Name der banaction des vorherigen Abschnitts entsprechen. Dort legen wir nun fest, welche Anweisung von fail2ban ausgeführt wird. Die Datei könnte so aussehen:

[Definition]
actionstart =
actionstop =
actioncheck =
actionban = ufw insert 1 deny from <ip> to any app test-sshd
actionunban = ufw delete deny from <ip> to any app test-sshd

Wenn logcheck installiert ist, sollten entsprechende Einträge darin auftauchen.