# ufw — Firewall-Regeln einfach verwalten

> Praxis-Guide zu ufw — dem einfachen Firewall-Frontend für iptables/nftables: Regeln, Profile, Rate-Limiting und Logging auf Ubuntu und Debian.

Source: https://www.jpkc.com/db/cheatsheets/security/ufw/

<!-- PROSE:intro -->
ufw (Uncomplicated Firewall) ist das benutzerfreundliche Firewall-Frontend von Ubuntu und Debian. Statt sperriger iptables- oder nftables-Regeln schreibst du Befehle wie `ufw allow 22` oder `ufw enable` – ufw übersetzt sie im Hintergrund in die eigentlichen Kernel-Regeln. Eine eigene Firewall ist es nicht, sondern eine schlanke Verwaltungsschicht über den ohnehin vorhandenen Netfilter-Funktionen. Dieser Guide zeigt dir die wichtigsten Befehle für den Alltag – vom ersten Aktivieren über Anwendungsprofile bis zu Rate-Limiting und Logging.
<!-- PROSE:intro:end -->

## Aktivieren & Status

`ufw enable` — Aktiviert die Firewall (startet automatisch beim Booten).

```bash
sudo ufw enable
```

> **Achtung – Lockout-Gefahr:** Ist die Default-Policy auf `deny incoming` gesetzt und existiert noch keine SSH-Regel, sperrst du dich beim Aktivieren von einem entfernten Server aus. Erst `sudo ufw allow OpenSSH` (oder `sudo ufw allow 22`), dann `sudo ufw enable`.

`ufw disable` — Deaktiviert die Firewall.

```bash
sudo ufw disable
```

`ufw status` — Zeigt Status und Regeln der Firewall an.

```bash
sudo ufw status
```

`ufw status verbose` — Zeigt den Status inklusive Default-Policies und Logging.

```bash
sudo ufw status verbose
```

`ufw status numbered` — Zeigt die Regeln mit Nummern an (zum Löschen).

```bash
sudo ufw status numbered
```

## Erlauben & Verweigern

`ufw allow <port>` — Erlaubt eingehenden Verkehr auf einem Port (TCP und UDP).

```bash
sudo ufw allow 80
```

`ufw allow <port>/tcp` — Erlaubt nur TCP-Verkehr auf einem Port.

```bash
sudo ufw allow 443/tcp
```

`ufw allow <start>:<end>/tcp` — Erlaubt einen Bereich von TCP-Ports.

```bash
sudo ufw allow 3000:3100/tcp
```

`ufw deny <port>` — Verweigert eingehenden Verkehr auf einem Port.

```bash
sudo ufw deny 23
```

`ufw allow from <ip>` — Erlaubt sämtlichen Verkehr von einer bestimmten IP.

```bash
sudo ufw allow from 10.0.0.5
```

`ufw allow from <ip> to any port <port>` — Erlaubt einer bestimmten IP den Zugriff auf einen Port.

```bash
sudo ufw allow from 10.0.0.0/24 to any port 22
```

`ufw deny from <ip>` — Blockiert sämtlichen Verkehr von einer bestimmten IP.

```bash
sudo ufw deny from 192.168.1.100
```

## Anwendungsprofile

`ufw app list` — Listet die verfügbaren Anwendungsprofile auf.

```bash
sudo ufw app list
```

`ufw allow '<app>'` — Erlaubt den Verkehr für ein Anwendungsprofil.

```bash
sudo ufw allow 'Nginx Full'
```

`ufw app info '<app>'` — Zeigt die Details eines Anwendungsprofils an.

```bash
sudo ufw app info 'OpenSSH'
```

`ufw delete allow '<app>'` — Entfernt eine Profil-Regel.

```bash
sudo ufw delete allow 'Nginx HTTP'
```

## Regeln löschen & ändern

`ufw delete allow <port>` — Löscht eine Regel anhand ihrer Spezifikation.

```bash
sudo ufw delete allow 8080
```

`ufw delete <number>` — Löscht eine Regel anhand ihrer Nummer (aus `status numbered`).

```bash
sudo ufw delete 3
```

`ufw insert <number> allow from <ip>` — Fügt eine Regel an einer bestimmten Position ein.

```bash
sudo ufw insert 1 allow from 10.0.0.1
```

`ufw reset` — Setzt alle Regeln auf die Standardwerte zurück (deaktiviert die Firewall).

```bash
sudo ufw reset
```

> **Achtung:** `ufw reset` löscht sämtliche Regeln und schaltet die Firewall ab. Auf einem entfernten Server vorher sicherstellen, dass der SSH-Zugang nicht von einer gleich gelöschten Regel abhängt.

## Rate-Limiting & Standard-Policies

`ufw limit <port>/tcp` — Begrenzt die Verbindungsrate (6 in 30 Sekunden, danach Sperre).

```bash
sudo ufw limit 22/tcp
```

`ufw default deny incoming` — Setzt die Default-Policy auf „eingehenden Verkehr verweigern".

```bash
sudo ufw default deny incoming
```

`ufw default allow outgoing` — Setzt die Default-Policy auf „ausgehenden Verkehr erlauben".

```bash
sudo ufw default allow outgoing
```

`ufw default deny routed` — Setzt die Default-Policy für weitergeleiteten (gerouteten) Verkehr.

```bash
sudo ufw default deny routed
```

## Logging & gängige Muster

`ufw logging on` — Aktiviert das Firewall-Logging.

```bash
sudo ufw logging on
```

`ufw logging <level>` — Setzt das Log-Level (off, low, medium, high, full).

```bash
sudo ufw logging medium
```

`ufw allow out <port>/tcp` — Erlaubt ausgehenden Verkehr auf einem Port.

```bash
sudo ufw allow out 587/tcp
```

`ufw reject <port>` — Weist Verbindungen ab (sendet ICMP-unreachable), statt sie still zu verwerfen.

```bash
sudo ufw reject 23
```

`ufw allow proto tcp from <ip> to any port 22,80,443` — Erlaubt mehrere Ports von einer bestimmten IP.

```bash
sudo ufw allow proto tcp from 10.0.0.5 to any port 22,80,443
```

<!-- PROSE:outro -->
## Fazit

ufw nimmt dir die Komplexität von iptables und nftables ab, ohne dir die Kontrolle zu nehmen: Für die meisten Server reichen eine restriktive Default-Policy, eine Handvoll `allow`-Regeln und ein `limit` auf dem SSH-Port. Denke immer zuerst an die SSH-Regel, bevor du die Firewall aktivierst oder zurücksetzt – sonst sperrst du dich aus. Wer feinere Regeln braucht, kombiniert ufw mit Werkzeugen wie fail2ban oder greift direkt auf die zugrunde liegenden Netfilter-Regeln zurück.

## Weiterführende Links

- [UFW – Ubuntu-Community-Dokumentation](https://help.ubuntu.com/community/UFW) – ausführliche Anleitung (englisch)
- [ufw(8) – Manpage](https://manpages.ubuntu.com/manpages/noble/en/man8/ufw.8.html) – alle Optionen im Überblick (englisch)
- [Uncomplicated Firewall – Wikipedia](https://de.wikipedia.org/wiki/Uncomplicated_Firewall) – Hintergrund und Einordnung
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [age](https://www.jpkc.com/db/cheatsheets/security/age/) – moderne, einfache Dateiverschlüsselung
- [clamav](https://www.jpkc.com/db/cheatsheets/security/clamav/) – Open-Source-Virenscanner für Linux
- [fail2ban](https://www.jpkc.com/db/cheatsheets/security/fail2ban/) – sperrt IPs nach fehlgeschlagenen Login-Versuchen

