UFW (Uncomplicated Firewall)

☰ Menü

 Bevor wir beginnen:
Diesen Apache-Minikurs zum Mitnehmen gibt's im Fundus zum Download .

 

Ein Szenario...

 

Auf Ihrem (virtuellen) Linuxrechner laufen mehrere Netzwerkdienste, z.B. ein Web- und ein SSH-Server. Im Prinzip könnten Sie noch beliebige weitere Server auf dem Rechner nutzen wollen, z.B. VNC, RDP, Mail, FTP, DNS, DHCP, Cifs uvm.

Welche Netzwerkdienste Ihr Linux-Rechner anbietet, finden Sie mit dem Konsolenbefehl netstat -tnlp heraus. Die Optionen des netstat-Befehls bedeuten:

   -t:  TCP
   -n:  Ip-Adressen statt Rechnernamen
   -l:  Listen (nur aktive Prozesse anzeigen)
   -p:  Programmnamen anzeigen
root@debian:~# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      522/sshd            
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      8401/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      522/sshd            
tcp6       0      0 ::1:3350                :::*                    LISTEN      471/xrdp-sesman     
tcp6       0      0 :::8443                 :::*                    LISTEN      26599/java          
tcp6       0      0 :::443                  :::*                    LISTEN      26100/apache2       
tcp6       0      0 :::3389                 :::*                    LISTEN      514/xrdp            
tcp6       0      0 127.0.0.1:38847         :::*                    LISTEN      26599/java          
tcp6       0      0 127.0.0.1:8101          :::*                    LISTEN      26599/java          
tcp6       0      0 :::5007                 :::*                    LISTEN      26599/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      26599/java          
tcp6       0      0 :::80                   :::*                    LISTEN      26100/apache2       
Box 1: Offene Ports eines typischen Linux-PCs

Möchten Sie, dass der Webserver global erreichbar ist, andere Dienste aber nur lokal verfügbar sind, müssen Sie unerwünschte Zugriffe herausfiltern. Diese Aufgabe wird im Folgenden mit eine Paket-Firewall realisiert.

Firewall

Der Linuxkernel arbeitet mit einer so genannten Paketfirewall. Der Netzwerkverkehr wird mit Filterregeln bearbeitet. Filterregeln entscheiden anhand von IP-Adressen, Portnummern, Netzwerkdiensten und Protokollvarianten, ob Datenpakete durchgelassen werden, oder nicht.

Merke: Eine Paketfirewall entscheidet anhand einer Filtertabelle, wie und ob Datenpakete geleitet werden.

Die Tabelle Filter enthält drei Standardketten:
  • INPUT: betrifft Pakete, deren Ziel die Firewall selbst ist;
  • OUTPUT: betrifft Pakete, die von der Firewall ausgesandt werden;
  • FORWARD: betrifft Pakete, die die Firewall durchqueren (die weder ihre Quelle noch ihr Ziel ist).
Die Tabelle NAT enthält ebenfalls drei Standardketten:
  • PREROUTING: um Pakete zu verändern, sobald sie eintreffen;
  • POSTROUTING: um Pakete zu verändern, wenn sie für die Versendung bereit sind;
  • OUTPUT: um von der Firewall selbst erzeugte Pakete zu verändern.
Netfilter

Die Filterregeln im Linuxkernel werden mit Hilfe des Befehls iptables konfiguriert. Der Funktionsumfang von iptables ist dank einer komplexen Vielfalt von Optionen sehr groß. Die Bedienung von iptables ist somit nicht ganz einfach. Die Einarbeitung nimmt etwas Zeit in Anspruch . Genauere Informationen finden Sie im Debian-Handbuch. Im Folgenden behandeln wir nur eingehenden Datenverkehr. Dies bietet den Vorteil, sich nicht in iptables einarbeiten zu müssen.

 

Die Alternative: UFW

Wir verwenden statt iptables die leichter zu bedienende Variante ufw (Uncomplicated Firewall) .

Ob das Paket ufw bereits installiert ist, klären Sie mit dem Befehl [sudo] dpkg -l | grep ufw.

ii  ufw   0.35-4  all   program for managing a Netfilter firewall

Box 2: Das Paket 'ufw' ist in der Version '0.35-4' installiert. Es folgt eine Kurzbeschreibung.

Sollte es nicht installiert sein, können Sie dies mit der Befehlsfolge [sudo] apt-get update gefolgt von [sudo] apt-get upgrade und [sudo] apt-get install ufw nachholen.

Wichtige Befehle sind:

BefehlBeschreibung
[sudo] ufw --helpHilfe anzeigen
[sudo] ufw status verboseBetriebstatus und Firewallregeln anzeigen
[sudo] ufw status numberedNummerierte Liste der Firewallregeln anzeigen
[sudo] ufw delete xyzRegel mit der Nummer xyz entfernen
[sudo] ufw allow xyzxyz erlauben
[sudo] ufw deny xyzxyz verbieten
[sudo] ufw insert 2 xyzFüge Regel xyz vor Zeile 2 ein
{sudo] ufw enableFirewall einschalten
[sudo] ufw disableFirewall ausschalten
[sudo] ufw resetRegeln entfernen, Firewall stoppen

Box 3: Wichtige Firewall-Befehle. Die Syntax des Parameters xyz wird auf den nächsten Seiten erklärt.

Wenn Sie die Firewall aktiviert haben, sollten Sie sich zuerst einmal den ausführlichen (engl. verbose) Status ansehen:

root@debian:~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

Box 4: Ausführliche Anzeige des Status

 

Aufgaben

  1. Beschreiben Sie ein Szenario, in welchem es wichtig ist, dass ein Webserver global verfügbar ist, andere Dienste nur innerhalb eines LAN erreichbar sind!
  2. Warum müssen Sie ufw mit root-Rechten ausführen?
  3. Interpretieren Sie die Statusanzeige (s. Box 4) ausführlich!
W. Hermanns, © 2018