ubuntuusers.de

ubuntuusers.deWikiufw

ufw

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

ufw steht für Uncomplicated Firewall. Ziel von ufw ist es, ein unkompliziertes kommandozeilen-basiertes Frontend für das sehr leistungsfähige, aber nicht gerade einfach zu konfigurierende iptables zu bieten. ufw unterstützt sowohl IPv4 als auch IPv6.

Gufw {en} ist eine graphisches Oberfläche für ufw, aber nicht offizieller Bestandteil von ufw.

Hinweis:

An dieser Stelle sei darauf hingewiesen, dass eine "normale" Desktop-Installation von Ubuntu keine Firewall benötigt. Mehr Informationen findet man in den Artikeln Personal Firewalls und Sicherheits 1x1.

Installation

ufw ist in der Standardinstallation enthalten, kann ansonsten aber auch über die Pakete

  • ufw

  • gufw (universe, optionale grafische Oberfläche)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install ufw gufw 

sudo aptitude install ufw gufw 

installiert werden [1].

Benutzung

Wie bereits oben erwähnt, ist ufw ein Programm für die Kommandozeile, d.h. alle Aufrufe etc. erfolgen im Terminal [2]. Des weiteren sind für alle Aufrufe Root-Rechte notwendig.

Status, Start, Stop

Als erstes sollte man prüfen, ob das Programm aktiv ist. In der Regel ist ufw deaktiviert, da dies im Zuge der Standardinstallation so vorgegeben wird. Den Status überprüft man mit

sudo ufw status 
Firewall not loaded

In diesem Falle ist der Dienst nicht aktiv. Aktiviert werden kann die Firewall mittels

sudo ufw enable 
Firewall started and enabled on system startup

So wird ufw auch als Dienst eingerichtet, d.h. beim Neustart des Rechners wird diese direkt aktiviert. Um ufw wieder abzuschalten, dient der Befehl

sudo ufw disable 
Firewall stopped and disabled on system startup

was auch den automatischen Start des Programms deaktivert.

Firewall-Regeln

Das Aktivieren der Firewall an sich hat in der Standardinstallation noch keine Auswirkungen, da keine Filterregeln definiert sind bzw. nur solche, die die interne Netzwerkkommunikation regeln.

Hinweis:

Bevor man anfängt, Regeln zu definieren, sollte man sich bewusst sein, dass per Standard-Einstellung von ufw alle nicht explizit erlaubten Verbindungen verboten sind. Wenn man den fraglichen Rechner nicht physisch vor sich hat, sondern z.B. nur per SSH verbunden ist, kann dies dazu führen, dass man sich selber aussperrt. Deshalb sollte man in diesem Fall zunächst die default-Regeln anpassen (siehe weiter unten) oder die gewünschten Verbindungen explizit erlauben.

Hinweis:

Bei den Regeln ist immer zu bedenken, dass unter Linux (bzw. Unix allgemein) die Netzwerkschnittstelle auch zu Rechner-internen Kommunikation genutzt wird. Eine falsche Konfiguration kann also auch dazu führen, dass z.B. der XServer nicht mehr ansprechbar ist! [3]

ufw verwendet ein dreistufiges Regelwerk, welches in drei Konfigurationsdateien hinterlegt ist. Diese werden in der folgenden Reihenfolge gelesen und ausgewertet:

  1. /etc/ufw/before.rules

  2. /var/lib/ufw/user.rules (oder /lib/ufw/user.rules - in welche auch die in der Kommandozeile definierten Regeln persistiert werden)

  3. /etc/ufw/after.rules

Das heißt also, dass Regeln in user.rules ggf. die in before.rules überschreiben und Regeln in after.rules die von user.rules

In den Original-Regeldateien sind nur einige grundlegenden Regeln hinterlegt, die den problemlosen internen Netzwerkverkehr regeln. Das Hinzufügen von Regeln mittels ufw ist recht einfach, die einfachste allgemeine Syntax ist

sudo ufw allow|deny|reject SERVICE 

wobei mit allow der SERVICE erlaubt wird, mit deny würde der Netzwerkverkehr für SERVICE geblockt. reject ist erst ab Ubuntu 9.04 Jaunty Jackalope vorhanden. Der Unterschied zu deny ist, dass der Absender des Netzwerkpakets eine Nachricht erhält, dass es abgelehnt wurde. SERVICE kann dabei z.B. einer der in /etc/services Services sein, wie z.B. POP3, HTTP oder auch - falls installiert - z.B. MySQL.

Mit dieser (einfachen) Regel wird pauschal das komplette Protokoll freigegeben bzw. gesperrt. Natürlich beherrscht ufw auch detailliertere Regeln, die allgemeine Syntax lautet:

sudo ufw allow|deny [proto <protokoll>] [from <adresse> [port <port>]] [to <addresse> [port <port>]] 

wobei die folgenden Parameter gesetzt werden können:

ufw Parameter
ParameterErklärung
proto <protokoll> Definiert das Protokoll, also TCP oder UDP
from <adresse> Definiert die Absenderadresse, auf die die Regel zutrifft, <adresse> ist dabei die (IP-)Adresse.
to <adresse> Definiert die Zieladresse, auf die die Regel angewendet wird, <adresse> ist dabei die (IP-)Adresse.
port <port> Definiert den Port, auf die die Regel (für Ausgangs- / Zieladresse) angewendet wird.

Grundsätzlich kann für <protokoll>, <adresse> und <port> auch immer any als Wert gesetzt werden, dann trifft die Regel für das entsprechende Parameter auf alle möglichen Fälle zu. Eine Regel mit ufw kann z.B. so aussehen:

sudo ufw allow proto tcp from any to 123.456.78.90 port 22 

Dies erlaubt das TCP-Protokoll von jedem Port eines beliebigen Systems zum Rechner mit der IP-Adresse 123.456.78.90 und dem dortigen Port 22. Wichtig zum Verständnis: verbirgt sich hinter 123.456.78.90 der eigene Rechner (damit ist der Rechner gemeint, auf dem gerade ufw konfiguriert wird), so hat man gerade Port 22 für eingehende Verbindungen von einem beliebigem Rechner aus geöffnet. Hat der eigene Rechner hingegen nicht die IP 123.456.78.90 so hat man gerade folgendes gemacht: der eigene Rechner kann Pakete, die über den Port 22 rausgeschickt werden, nur an 123.456.78.90 schicken; es sei denn, man definiert eine weitere Regel.
Am besten stellt man es sich so vor, dass die Firewall "zwischen" dem eigenen Rechner und dem Rest der Welt hockt, und jedes durchlaufende Paket auf Quelle und Ziel überprüft; der eigene Rechner hat also keine besonderen Privilegien und Pakete vom eigenen Rechner werden also genauso herausgefiltert, wenn sie die REgeln nicht erfüllen, wie die Pakete eines jeden bliebigen anderen Rechners, die die Firewall passieren müssen.

Es ist auch möglich, Übertragungsprotokolle (TCP/UDP) pauschal für einen Port freizugegeben, was das folgende Beispiel zeigt:

sudo ufw allow 80/tcp 

Damit werden alle TCP-Pakete auf Port 80 erlaubt, egal von welchem Rechner sie kommen bzw. zu welchen Programm/Dienst sie gehen.

Wie man sieht, ist die Regeldefinition im Wesentlichen mit der von iptables identisch. Allerdings deutlich einfacher zu merken, da bei ufw "Klartext" statt kryptische Parameter verwendet werden.

Natürlich nutzt es wenig, wenn man einzelne Protokolle und Programme reglementiert, alle anderen Protokolle/Ports/... undefiniert lässt. Daher wird in der Regel immer eine globale Regel gesetzt, die kann entweder allow oder deny sein. Diese werden über ufw wie wie folgt gesetzt:

sudo ufw default allow      # alles erlauben
sudo ufw default deny       # alles verbieten 

Dies bewirkt folgendes: Mit default allow wird jeglicher Netzwerkverkehr freigeben, d.h. wenn man eine spezielle Regel definiert, ist diese in der Regel eine deny-Regel. Dieser Fall wird in der Regel nur dann angewendet, wenn man spezielle Programme/Protokolle/Zielrechner sperren will, der überwiegende Teil des Verkehrs aber frei sein soll.

Mit default deny wird jeglicher Netzwerkverkehr geblockt, d.h. wenn man eine spezielle Regel definiert, ist diese in der Regel eine allow-Regel. Dies ist der gängigere Fall, da hier dann gezielt Programme/Protokolle/Ports freigegeben werden, d.h. nur dieser Verkehr ist frei.

Logging

Damit ufw alle Aktionen der Firewall "mitschreibt", muss das Logging explizit aktiviert werden. Dies geschieht über den Befehl

sudo ufw logging on 

Das Logging erfolgt dabei ins Syslog, also /var/log/syslog.

Möchte man das Logging wieder deaktivieren, so ersetzt man im oben genannten Befehl einfach on durch off.

Applikations-Filter

Die ab Ubuntu 8.10 Intrepid Ibex eingesetzte Version von ufw kennt auch sogenannte Applikations-Filter. Diese werden i.d.R. automatisch mit der Installation eines durch ufw zu schützenden Dienste / Programms mit installiert. Die entsprechenden Konfigurationsdateien befinden sich im Verzeichnis /etc/ufw/applications.d. Es handelt sich um einfache Textdateien, welche den Dienstnamen, eine kurz Beschreibung sowie die zu öffnenden Ports und Protokolle enthalten.

Eine Übersicht über alle aktuellen Applikationsfilter erhält man mit dem Befehl

ufw app list 

Dies sieht dann z.B. so aus:

Available applications:
  Apache
  Apache Full
  Apache Secure
  CUPS

Möchte man nun Details z.B. zu CUPS haben, so ruft man den Befehl

ufw app info CUPS 

auf. Die Ausgabe sieht dann so aus:

Profile: CUPS
Title: Common UNIX Printing System server
Description: CUPS is a printing system with support for IPP, samba, lpd,
and other protocols.

Port:
  631

Hinweis:

Für Progammnamen wie z.B. Apache Full muss der Name in Hochkommata gefasst werden, also z.B.

ufw app info 'Apache Full' 

Weiterführende Details zu ufw app findet man in den Manpages oder im englische Ubuntu-Wiki (siehe Links).

Diese Revision wurde am 1. September 2014 14:03 von Ulukii erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Netzwerk, Internet, Firewall