Entwicklung / Server & Infrastruktur / Sicherheit / UFW-Firewall

Aus Dokument
Zur Navigation springen Zur Suche springen

UFW-Firewall installieren und steuern

UFW steht für Uncomplicated Firewall. Das Werkzeug vereinfacht die Verwaltung der Linux-Firewall über verständliche Befehle. Im Hintergrund setzt UFW die Regeln des Systems um, ohne dass jede Firewall-Regel von Hand geschrieben werden muss.



Beschreibung

Eine Firewall entscheidet anhand von Regeln, welche Netzwerkverbindungen erlaubt oder abgewiesen werden. UFW eignet sich besonders für Ubuntu- und Debian-Systeme, auf denen nur bestimmte Dienste von außen erreichbar sein sollen.

Typische Aufgaben sind:

  • eingehende Verbindungen standardmäßig blockieren,
  • SSH, HTTP oder HTTPS gezielt freigeben,
  • Zugriffe auf bestimmte IP-Adressen oder Netze begrenzen,
  • ausgehende Verbindungen kontrollieren,
  • abgewiesene Verbindungsversuche protokollieren.

Hinweis

UFW schützt Netzwerkports, ersetzt aber keine sicheren Passwörter, Updates, SSH-Schlüssel oder die Absicherung der jeweiligen Anwendung.



Einsatzgebiete

UFW ist für viele einzelne Linux-Rechner und Server geeignet:

Einsatzgebiet Beispiel
Webserver Nur SSH, HTTP und HTTPS erlauben
Datenbankserver Datenbankport nur für einen Anwendungsserver öffnen
Entwicklungsrechner Eingehende Verbindungen blockieren, lokale Dienste schützen
Heimserver Zugriff nur aus dem lokalen Netzwerk zulassen
Cloud-Server Zusätzliche Firewall direkt auf dem Betriebssystem verwenden

Für große Cluster, dynamische Container-Netzwerke oder zentral verwaltete Unternehmensnetze können spezialisierte Firewall- und Netzwerkwerkzeuge besser geeignet sein.



Installation

Auf Ubuntu wird UFW über die Paketverwaltung installiert:

sudo apt update
sudo apt install ufw

Installation und aktuellen Zustand prüfen:

ufw --version
sudo ufw status verbose

Der Status inactive bedeutet, dass UFW installiert, aber noch nicht aktiviert ist.



Sicher aktivieren

Achtung

Bei einem entfernten Server muss vor der Aktivierung der verwendete SSH-Port freigegeben werden. Andernfalls kann die bestehende SSH-Verbindung nach dem Trennen nicht erneut aufgebaut werden.

Standardrichtlinien setzen:

sudo ufw default deny incoming
sudo ufw default allow outgoing

SSH freigeben und UFW aktivieren:

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

Wird SSH auf einem anderen Port betrieben, muss stattdessen dieser Port freigegeben werden. Beispiel für TCP-Port 2222:

sudo ufw allow 2222/tcp

Tipp

Eine bestehende SSH-Sitzung während der Einrichtung geöffnet lassen und die Anmeldung in einem zweiten Terminal testen.



UFW steuern

Status anzeigen

sudo ufw status
sudo ufw status verbose
sudo ufw status numbered

Die nummerierte Ansicht ist besonders hilfreich, wenn einzelne Regeln gelöscht werden sollen.

Firewall ein- und ausschalten

sudo ufw enable
sudo ufw disable

disable deaktiviert die Firewall, behält aber die konfigurierten Regeln bei.

Ports erlauben und blockieren

# HTTP und HTTPS erlauben
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Einen TCP-Port blockieren
sudo ufw deny 8080/tcp

# Einen UDP-Port erlauben
sudo ufw allow 51820/udp

Regeln können auch über einen Portbereich angelegt werden:

sudo ufw allow 6000:6010/tcp

Anwendungsprofile verwenden

Installierte Programme können UFW-Profile bereitstellen. Verfügbare Profile anzeigen:

sudo ufw app list
sudo ufw app info "Nginx Full"

Ein Profil freigeben:

sudo ufw allow "Nginx Full"

Profile sind lesbarer als einzelne Portnummern und fassen zusammengehörige Ports zusammen.



Zugriff nach IP-Adresse begrenzen

Zugriff von einer einzelnen IP-Adresse erlauben:

sudo ufw allow from 203.0.113.10

SSH nur aus einem internen Netz zulassen:

sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp

Zugriff einer bestimmten IP-Adresse blockieren:

sudo ufw deny from 203.0.113.50

Hinweis

Die Netze 192.168.0.0/16, 172.16.0.0/12 und 10.0.0.0/8 sind private Adressbereiche. Die Beispieladresse 203.0.113.10 ist ausschließlich für Dokumentationen reserviert und muss durch die tatsächliche Adresse ersetzt werden.



Regeln löschen und zurücksetzen

Regel anhand ihrer Nummer löschen:

sudo ufw status numbered
sudo ufw delete 3

Alternativ kann die ursprüngliche Regel angegeben werden:

sudo ufw delete allow 8080/tcp

Alle Regeln auf die Ausgangskonfiguration zurücksetzen:

sudo ufw reset

Achtung

ufw reset entfernt sämtliche selbst angelegten Regeln und deaktiviert UFW. Auf entfernten Servern anschließend zuerst wieder SSH freigeben.



Protokollierung und Fehlerdiagnose

Logging aktivieren und die gewünschte Detailstufe setzen:

sudo ufw logging on
sudo ufw logging medium

Protokolle mit systemd anzeigen:

sudo journalctl -k | grep UFW

Je nach System können Meldungen zusätzlich in /var/log/ufw.log oder /var/log/kern.log stehen.

Die Konfiguration neu laden:

sudo ufw reload

Bei Problemen helfen folgende Prüfungen:

sudo ufw status verbose
sudo ss -tulpn
sudo systemctl status ufw

Dabei zeigt ss, ob die Anwendung tatsächlich auf dem erwarteten Port lauscht. Eine UFW-Freigabe startet keinen Dienst und öffnet keinen Port, auf dem kein Programm läuft.



Beispiel: Webserver absichern

Das folgende Beispiel erlaubt SSH sowie HTTP und HTTPS. Andere eingehende Verbindungen werden standardmäßig blockiert:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow "Nginx Full"
sudo ufw enable
sudo ufw status verbose

Wichtige Befehle im Überblick

Aufgabe Befehl
Status anzeigen sudo ufw status verbose
Regeln nummerieren sudo ufw status numbered
Aktivieren sudo ufw enable
Deaktivieren sudo ufw disable
Regel erlauben sudo ufw allow PORT/PROTOKOLL
Regel blockieren sudo ufw deny PORT/PROTOKOLL
Regel löschen sudo ufw delete NUMMER
Konfiguration neu laden sudo ufw reload
Alle Regeln zurücksetzen sudo ufw reset



Verwandte Themen