diff --git a/IT_Abteilung/Security/UFW.md b/IT_Abteilung/Security/UFW.md new file mode 100644 index 0000000..10c46db --- /dev/null +++ b/IT_Abteilung/Security/UFW.md @@ -0,0 +1,818 @@ +--- +title: UFW server firewall Profice +description: +published: true +date: 2026-02-24T08:54:57.458Z +tags: +editor: markdown +dateCreated: 2026-02-24T08:54:57.458Z +--- + +# UFW Firewall – Vollständige Server-Dokumentation + +> **Systemumgebung:** Debian-basierter Server (Debian 12 / Ubuntu 22.04+) +> **Firewall:** UFW (Uncomplicated Firewall) – Frontend für iptables/nftables +> **Einsatz:** Netzwerk-Absicherung, Portfilterung, Zugriffskontrolle für alle Server-Dienste + +--- + +## Inhaltsverzeichnis + +1. [Überblick und Funktionsweise](#1-überblick-und-funktionsweise) +2. [Installation und Ersteinrichtung](#2-installation-und-ersteinrichtung) +3. [Grundlegende Regelverwaltung](#3-grundlegende-regelverwaltung) +4. [Erweiterte Regeln](#4-erweiterte-regeln) +5. [Anwendungsprofile](#5-anwendungsprofile) +6. [Regeln für unsere Server-Dienste](#6-regeln-für-unsere-server-dienste) +7. [Rate Limiting – Verbindungsbegrenzung](#7-rate-limiting--verbindungsbegrenzung) +8. [Logging und Überwachung](#8-logging-und-überwachung) +9. [IPv6-Konfiguration](#9-ipv6-konfiguration) +10. [Erweiterte Konfiguration (ufw-Dateien)](#10-erweiterte-konfiguration-ufw-dateien) +11. [Port-Weiterleitung und NAT](#11-port-weiterleitung-und-nat) +12. [Docker und UFW](#12-docker-und-ufw) +13. [Fehlerbehebung](#13-fehlerbehebung) +14. [Best Practices und Sicherheitshärtung](#14-best-practices-und-sicherheitshärtung) +15. [Schnellreferenz – Befehle auf einen Blick](#15-schnellreferenz--befehle-auf-einen-blick) + +--- + +## 1. Überblick und Funktionsweise + +### Was ist UFW? + +UFW (Uncomplicated Firewall) ist ein benutzerfreundliches Frontend für den Linux-Paketfilter `iptables` (bzw. `nftables` auf neueren Systemen). Es vereinfacht die Verwaltung von Firewall-Regeln erheblich, ohne auf die Flexibilität von iptables zu verzichten. + +### Warum eine Firewall? + +Ein Server ohne Firewall ist wie ein Haus mit offenen Türen. Jeder Dienst, der auf einem Port lauscht, ist aus dem gesamten Internet erreichbar – auch Dienste, die nur lokal benötigt werden. + +| Ohne Firewall | Mit UFW | +|---|---| +| Alle Ports offen | Nur erlaubte Ports offen | +| PostgreSQL (5432) aus dem Internet erreichbar | PostgreSQL nur lokal erreichbar | +| Jeder Dienst ist ein Angriffsziel | Angriffsfläche minimiert | +| Kein Schutz vor Port-Scans | Port-Scans sehen nur erlaubte Dienste | + +### Wie funktioniert UFW? + +```plantuml +@startuml + +skinparam shadowing false +skinparam roundCorner 10 + +actor "Internet\n(Anfragen)" as inet + +package "Debian Server" { + + [UFW Firewall\n(Paketfilter)] as ufw + + package "Erlaubt" { + [Port 22 – SSH] as ssh + [Port 80 – HTTP] as http + [Port 443 – HTTPS] as https + } + + package "Blockiert" { + [Port 5432 – PostgreSQL] as pg + [Port 3000 – Gitea intern] as gitea + [Port 8080 – Vaultwarden intern] as vw + } +} + +inet --> ufw +ufw --> ssh : Durchgelassen +ufw --> http : Durchgelassen +ufw --> https : Durchgelassen +ufw -[hidden]-> pg +ufw -[hidden]-> gitea +ufw -[hidden]-> vw + +@enduml +``` + +**Prinzip:** UFW prüft jedes eingehende und ausgehende Netzwerkpaket anhand der definierten Regeln. Pakete, die keiner Regel entsprechen, werden gemäß der Standardrichtlinie (Default Policy) behandelt – in der Regel verworfen. + +### Regelverarbeitung + +UFW verarbeitet Regeln in der Reihenfolge ihrer Erstellung (von oben nach unten). Die erste zutreffende Regel entscheidet: + +1. Paket kommt an → UFW prüft Regel 1 +2. Trifft Regel 1 zu? → Aktion ausführen (allow/deny), fertig +3. Trifft nicht zu? → Nächste Regel prüfen +4. Keine Regel trifft zu → Default Policy anwenden (deny) + +### Begriffe + +| Begriff | Beschreibung | +|---|---| +| **Eingehend (incoming)** | Pakete, die von außen zum Server kommen | +| **Ausgehend (outgoing)** | Pakete, die vom Server nach außen gehen | +| **Allow** | Verbindung erlauben | +| **Deny** | Verbindung still verwerfen (kein Feedback) | +| **Reject** | Verbindung ablehnen (mit Fehlermeldung) | +| **Limit** | Verbindung erlauben, aber Rate begrenzen | +| **Default Policy** | Standardverhalten für nicht-geregelte Pakete | + +--- + +## 2. Installation und Ersteinrichtung + +### 2.1 UFW installieren + +```bash +sudo apt update +sudo apt install -y ufw +``` + +### 2.2 Aktuellen Status prüfen + +```bash +sudo ufw status +# Ausgabe: Status: inactive +``` + +### 2.3 Standardrichtlinien setzen (Default Policies) + +Bevor die Firewall aktiviert wird, müssen die Standardrichtlinien festgelegt werden: + +```bash +# Eingehend: ALLES blockieren (Standard) +sudo ufw default deny incoming + +# Ausgehend: ALLES erlauben (Standard) +sudo ufw default allow outgoing +``` + +> **Erklärung:** Mit diesen Einstellungen wird jeder eingehende Verkehr blockiert, es sei denn, eine explizite Regel erlaubt ihn. Ausgehender Verkehr (Updates, DNS, E-Mail-Versand) bleibt erlaubt. + +### 2.4 SSH erlauben (KRITISCH – vor dem Aktivieren!) + +```bash +# SSH MUSS erlaubt werden, bevor UFW aktiviert wird! +# Sonst sperrt man sich vom Server aus. +sudo ufw allow ssh +``` + +Falls SSH auf einem anderen Port läuft: + +```bash +sudo ufw allow 2222/tcp +``` + +### 2.5 UFW aktivieren + +```bash +sudo ufw enable +``` + +Ausgabe: + +``` +Command may disrupt existing ssh connections. Proceed with operation (y|n)? y +Firewall is active and enabled on system startup +``` + +> **Warnung:** UFW NUR aktivieren, nachdem SSH erlaubt wurde. Bei einer Remote-Verbindung (SSH) ohne SSH-Regel ist der Server nicht mehr erreichbar. In diesem Fall hilft nur noch physischer Zugang oder eine Konsole (KVM/IPMI). + +### 2.6 Status nach Aktivierung prüfen + +```bash +sudo ufw status verbose +``` + +Erwartete Ausgabe: + +``` +Status: active +Logging: on (low) +Default: deny (incoming), allow (outgoing), disabled (routed) +New profiles: skip + +To Action From +-- ------ ---- +22/tcp ALLOW IN Anywhere +22/tcp (v6) ALLOW IN Anywhere (v6) +``` + +### 2.7 UFW beim Systemstart + +UFW startet nach der Aktivierung automatisch beim Booten. Dies wird über den Dienst gesteuert: + +```bash +# Status prüfen +sudo systemctl status ufw + +# Autostart prüfen +sudo systemctl is-enabled ufw +# Ausgabe: enabled +``` + +--- + +## 3. Grundlegende Regelverwaltung + +### 3.1 Port erlauben + +```bash +# Einzelnen Port erlauben (TCP und UDP) +sudo ufw allow 80 + +# Nur TCP +sudo ufw allow 80/tcp + +# Nur UDP +sudo ufw allow 53/udp + +# Port-Bereich erlauben +sudo ufw allow 6000:6010/tcp +``` + +### 3.2 Port blockieren + +```bash +# Port blockieren (still, ohne Antwort) +sudo ufw deny 3306 + +# Port ablehnen (mit ICMP-Fehlermeldung) +sudo ufw reject 3306 +``` + +| Aktion | Verhalten | Empfehlung | +|---|---|---| +| `deny` | Paket wird still verworfen, Absender erhält keine Antwort | **Empfohlen** – gibt Angreifern keine Information | +| `reject` | Paket wird abgelehnt, Absender erhält eine Fehlermeldung | Nur für interne Netzwerke – hilft beim Debugging | + +### 3.3 Dienste nach Name erlauben + +UFW kennt viele Dienstnamen aus `/etc/services`: + +```bash +sudo ufw allow ssh # Port 22 +sudo ufw allow http # Port 80 +sudo ufw allow https # Port 443 +sudo ufw allow 'DNS' # Port 53 +``` + +Verfügbare Dienstnamen anzeigen: + +```bash +less /etc/services +``` + +### 3.4 Regeln anzeigen + +```bash +# Kompakte Ansicht +sudo ufw status + +# Ausführliche Ansicht +sudo ufw status verbose + +# Mit Regelnummern (wichtig zum Löschen) +sudo ufw status numbered +``` + +Beispielausgabe mit Nummern: + +``` +Status: active + + To Action From + -- ------ ---- +[ 1] 22/tcp ALLOW IN Anywhere +[ 2] 80/tcp ALLOW IN Anywhere +[ 3] 443/tcp ALLOW IN Anywhere +[ 4] 22/tcp (v6) ALLOW IN Anywhere (v6) +[ 5] 80/tcp (v6) ALLOW IN Anywhere (v6) +[ 6] 443/tcp (v6) ALLOW IN Anywhere (v6) +``` + +### 3.5 Regeln löschen + +```bash +# Methode 1: Nach Regelnummer löschen (empfohlen) +sudo ufw status numbered +sudo ufw delete 3 + +# Methode 2: Regel exakt wiederholen mit 'delete' +sudo ufw delete allow 80/tcp +sudo ufw delete deny 3306 +``` + +> **Hinweis:** Beim Löschen nach Nummer verschieben sich die Nummern. Immer von der höchsten Nummer nach unten löschen, oder nach jeder Löschung erneut `ufw status numbered` ausführen. + +### 3.6 Regeln einfügen (an bestimmter Position) + +```bash +# Regel an Position 1 einfügen (wird als erstes geprüft) +sudo ufw insert 1 deny from 203.0.113.50 + +# Regel an Position 3 einfügen +sudo ufw insert 3 allow from 192.168.1.0/24 to any port 5432 +``` + +### 3.7 UFW zurücksetzen + +```bash +# Alle Regeln löschen und UFW deaktivieren +sudo ufw reset + +# Danach: Standardrichtlinien neu setzen, Regeln neu erstellen, aktivieren +``` + +### 3.8 UFW deaktivieren (temporär) + +```bash +# Firewall deaktivieren (Regeln bleiben gespeichert) +sudo ufw disable + +# Wieder aktivieren +sudo ufw enable +``` + +--- + +## 4. Erweiterte Regeln + +### 4.1 Regeln nach IP-Adresse + +```bash +# Bestimmte IP erlauben (alle Ports) +sudo ufw allow from 192.168.1.100 + +# Bestimmte IP auf bestimmtem Port erlauben +sudo ufw allow from 192.168.1.100 to any port 22 + +# Ganzes Subnetz erlauben +sudo ufw allow from 192.168.1.0/24 + +# Subnetz auf bestimmtem Port erlauben +sudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcp + +# Bestimmte IP blockieren +sudo ufw deny from 203.0.113.50 + +# Bestimmte IP komplett sperren (an erster Position!) +sudo ufw insert 1 deny from 203.0.113.50 +``` + +### 4.2 Regeln nach Netzwerk-Interface + +```bash +# Nur auf einem bestimmten Interface erlauben +sudo ufw allow in on eth0 to any port 80 + +# Nur auf dem Loopback-Interface erlauben +sudo ufw allow in on lo + +# Auf einem internen Interface erlauben +sudo ufw allow in on eth1 from 10.0.0.0/8 to any port 5432 +``` + +### 4.3 Regeln nach Zieladresse + +```bash +# Nur an eine bestimmte Server-IP erlauben +sudo ufw allow from 192.168.1.0/24 to 192.168.1.100 port 443 proto tcp +``` + +### 4.4 Ausgehende Regeln + +Standardmäßig ist der ausgehende Verkehr erlaubt. Falls eine strengere Kontrolle gewünscht ist: + +```bash +# Ausgehend: Standardmäßig blockieren +sudo ufw default deny outgoing + +# Dann gezielt erlauben: +sudo ufw allow out 53 # DNS +sudo ufw allow out 80/tcp # HTTP (Updates) +sudo ufw allow out 443/tcp # HTTPS (Updates) +sudo ufw allow out 587/tcp # SMTP (E-Mail-Versand) +sudo ufw allow out 123/udp # NTP (Zeitsynchronisation) +sudo ufw allow out 22/tcp # SSH ausgehend +``` + +> **Hinweis:** Ausgehenden Verkehr zu blockieren erhöht die Sicherheit, erfordert aber eine sorgfältige Planung aller benötigten Dienste. Für die meisten Server ist `default allow outgoing` ausreichend. + +### 4.5 Regelbeispiele: Kombiniert + +```bash +# PostgreSQL nur aus dem internen Netz auf Interface eth1 +sudo ufw allow in on eth1 from 192.168.1.0/24 to any port 5432 proto tcp + +# Webserver nur über HTTPS, HTTP nur für Redirect +sudo ufw allow 443/tcp +sudo ufw allow 80/tcp + +# E-Mail-Server nur von bestimmten IPs +sudo ufw allow from 10.0.0.5 to any port 25 proto tcp +sudo ufw allow from 10.0.0.6 to any port 25 proto tcp +``` + +--- + +## 5. Anwendungsprofile + +### 5.1 Was sind Anwendungsprofile? + +UFW kann Regeln für bekannte Anwendungen als Profile verwalten. Profile definieren Ports und Protokolle in einer benannten Konfiguration. + +### 5.2 Verfügbare Profile anzeigen + +```bash +sudo ufw app list +``` + +Typische Ausgabe auf einem Debian-Server: + +``` +Available applications: + Nginx Full + Nginx HTTP + Nginx HTTPS + OpenSSH +``` + +### 5.3 Profildetails anzeigen + +```bash +sudo ufw app info 'Nginx Full' +``` + +Ausgabe: + +``` +Profile: Nginx Full +Title: Web Server (Nginx, HTTP + HTTPS) +Description: Small, but very powerful and efficient web server + +Ports: + 80,443/tcp +``` + +### 5.4 Profile verwenden + +```bash +# Anwendungsprofil erlauben +sudo ufw allow 'Nginx Full' +sudo ufw allow 'Nginx HTTPS' +sudo ufw allow 'OpenSSH' + +# Anwendungsprofil blockieren +sudo ufw deny 'Nginx HTTP' + +# Anwendungsprofil-Regel löschen +sudo ufw delete allow 'Nginx Full' +``` + +### 5.5 Eigene Profile erstellen + +Profile werden als Dateien in `/etc/ufw/applications.d/` gespeichert: + +```bash +sudo nano /etc/ufw/applications.d/gitea +``` + +```ini +[Gitea] +title=Gitea Git Server +description=Selbst gehosteter Git-Server +ports=3000/tcp + +[Gitea Full] +title=Gitea Git Server (Web + SSH) +description=Gitea Webinterface und SSH-Zugang +ports=3000/tcp|22/tcp +``` + +```bash +sudo nano /etc/ufw/applications.d/vaultwarden +``` + +```ini +[Vaultwarden] +title=Vaultwarden Password Manager +description=Bitwarden-kompatibler Passwort-Server +ports=8080/tcp + +[Vaultwarden Full] +title=Vaultwarden mit WebSocket +description=Vaultwarden Webinterface und WebSocket +ports=8080/tcp|3012/tcp +``` + +```bash +# Profile aktualisieren +sudo ufw app update Gitea +sudo ufw app update Vaultwarden + +# Neue Profile prüfen +sudo ufw app list +sudo ufw app info 'Gitea' +``` + +> **Hinweis:** Anwendungsprofile sind für die Dokumentation und Klarheit nützlich, stellen aber keine zusätzliche Sicherheit dar. Sie erstellen dieselben iptables-Regeln wie manuelle Port-Regeln. + +--- + +## 6. Regeln für unsere Server-Dienste + +### 6.1 Empfohlenes Regelwerk + +Basierend auf den Diensten, die auf diesem Server laufen (SSH, Nginx als Reverse Proxy, PostgreSQL lokal, Gitea, Vaultwarden, Wiki.js, n8n), ergibt sich folgendes Regelwerk: + +```bash +# =========================================================== +# UFW-Regelwerk – Produktivserver +# =========================================================== + +# 1. Standardrichtlinien +sudo ufw default deny incoming +sudo ufw default allow outgoing + +# 2. SSH (Fernzugriff) +sudo ufw limit ssh comment 'SSH - Rate Limited' + +# 3. HTTP und HTTPS (Reverse Proxy – Nginx/Caddy) +sudo ufw allow 80/tcp comment 'HTTP - Redirect + Lets Encrypt' +sudo ufw allow 443/tcp comment 'HTTPS - Nginx Reverse Proxy' + +# 4. UFW aktivieren +sudo ufw enable +``` + +### 6.2 Was wird NICHT freigegeben + +Die folgenden Dienste laufen auf `localhost` und sind über den Reverse Proxy erreichbar. Sie benötigen **keine** UFW-Regel: + +| Dienst | Interner Port | Zugriff über | +|---|---|---| +| Gitea | `127.0.0.1:3000` | `https://git.example.de` (Nginx) | +| Vaultwarden | `127.0.0.1:8080` | `https://vault.example.de` (Nginx) | +| Vaultwarden WS | `127.0.0.1:3012` | `https://vault.example.de` (Nginx) | +| Wiki.js | `127.0.0.1:3001` | `https://wiki.example.de` (Nginx) | +| n8n | `127.0.0.1:5678` | `https://n8n.example.de` (Nginx) | +| PostgreSQL | `127.0.0.1:5432` | Nur lokal, kein externer Zugriff | + +> **Sicherheitsprinzip:** Nur der Reverse Proxy (Ports 80/443) ist aus dem Internet erreichbar. Alle internen Dienste binden auf `127.0.0.1` und sind von außen unsichtbar. + +### 6.3 Optionale Regeln + +```bash +# SSH nur aus dem internen Netzwerk (höhere Sicherheit) +sudo ufw delete allow ssh +sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp comment 'SSH - Nur internes Netz' + +# PostgreSQL aus dem internen Netzwerk (falls andere Server darauf zugreifen) +sudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcp comment 'PostgreSQL - Internes Netz' +``` + +### 6.4 Regelwerk prüfen + +```bash +sudo ufw status verbose +``` + +Erwartete Ausgabe: + +``` +Status: active +Logging: on (low) +Default: deny (incoming), allow (outgoing), disabled (routed) + +To Action From +-- ------ ---- +22/tcp LIMIT IN Anywhere +80/tcp ALLOW IN Anywhere +443/tcp ALLOW IN Anywhere +22/tcp (v6) LIMIT IN Anywhere (v6) +80/tcp (v6) ALLOW IN Anywhere (v6) +443/tcp (v6) ALLOW IN Anywhere (v6) +``` + +Drei Regeln (plus IPv6-Gegenstücke) – sauber und minimal. + +--- + +## 7. Rate Limiting – Verbindungsbegrenzung + +### 7.1 Was ist Rate Limiting? + +UFW kann die Anzahl der Verbindungsversuche pro IP-Adresse begrenzen. Wenn eine IP-Adresse innerhalb von 30 Sekunden mehr als 6 Verbindungsversuche auf einem Port unternimmt, wird sie temporär blockiert. + +### 7.2 Rate Limiting aktivieren + +```bash +# SSH mit Rate Limiting schützen +sudo ufw limit ssh + +# Oder für einen bestimmten Port +sudo ufw limit 2222/tcp +``` + +### 7.3 Rate Limiting prüfen + +```bash +sudo ufw status verbose +``` + +``` +To Action From +-- ------ ---- +22/tcp LIMIT IN Anywhere +``` + +### 7.4 Wie UFW Rate Limiting funktioniert + +Die Standardwerte sind fest eingestellt: + +| Parameter | Wert | +|---|---| +| Maximale Verbindungen | 6 innerhalb von 30 Sekunden | +| Aktion bei Überschreitung | Verbindung verwerfen (DROP) | +| Protokoll | Gilt pro Quell-IP | + +> **Hinweis:** Für feingranulares Rate Limiting (andere Schwellenwerte, andere Zeitfenster) ist Fail2Ban besser geeignet. UFW `limit` ist ein einfacher, effektiver Basisschutz. + +### 7.5 Rate Limiting vs. Fail2Ban + +| Eigenschaft | UFW `limit` | Fail2Ban | +|---|---|---| +| Konfigurierbarkeit | Fest (6/30s) | Voll konfigurierbar | +| Log-basiert | Nein (nur Pakete) | Ja (analysiert Logdateien) | +| Anwendungsebene | Nein | Ja (erkennt fehlgeschlagene Logins) | +| Sperrzeit | Bis Rate sinkt | Konfigurierbar (Minuten bis Tage) | +| Empfehlung | Basisschutz | **Ergänzend zu UFW verwenden** | + +**Empfehlung:** Beide kombinieren – UFW `limit` als erste Verteidigungslinie, Fail2Ban für anwendungsspezifischen Schutz. + +--- + +## 8. Logging und Überwachung + +### 8.1 Logging aktivieren + +```bash +# Logging-Stufe setzen +sudo ufw logging on # Standard (low) +sudo ufw logging low # Blockierte Pakete loggen +sudo ufw logging medium # + erlaubte Pakete mit Rate Limiting +sudo ufw logging high # + alle erlaubten Pakete +sudo ufw logging full # Maximales Logging (Performance-Auswirkung) + +# Logging deaktivieren +sudo ufw logging off +``` + +| Stufe | Was wird geloggt | Empfehlung | +|---|---|---| +| `off` | Nichts | Nicht empfohlen | +| `low` | Blockierte Pakete | **Empfohlen für Produktion** | +| `medium` | + Rate-Limited-Pakete | Zur Analyse | +| `high` | + Alle erlaubten Pakete | Nur temporär | +| `full` | Alles | Nur zum Debugging | + +### 8.2 Logdateien + +UFW schreibt in die System-Logdateien: + +```bash +# UFW-Logs anzeigen +sudo tail -f /var/log/ufw.log + +# Oder über journald +sudo journalctl -k | grep UFW + +# Letzte 50 blockierte Verbindungen +sudo grep "UFW BLOCK" /var/log/ufw.log | tail -50 + +# Letzte 50 erlaubte Verbindungen +sudo grep "UFW ALLOW" /var/log/ufw.log | tail -50 +``` + +### 8.3 Log-Einträge lesen + +Beispiel eines blockierten Pakets: + +``` +Feb 24 14:23:15 server kernel: [UFW BLOCK] IN=eth0 OUT= MAC=aa:bb:cc:dd:ee:ff +SRC=203.0.113.50 DST=192.168.1.100 LEN=44 TOS=0x00 PROTO=TCP SPT=54321 DPT=5432 +``` + +| Feld | Bedeutung | +|---|---| +| `UFW BLOCK` | Paket wurde blockiert | +| `IN=eth0` | Eingehendes Interface | +| `SRC=203.0.113.50` | Quell-IP-Adresse | +| `DST=192.168.1.100` | Ziel-IP-Adresse (unser Server) | +| `PROTO=TCP` | Protokoll | +| `SPT=54321` | Quell-Port | +| `DPT=5432` | Ziel-Port (hier: PostgreSQL) | + +### 8.4 Häufig blockierte Verbindungen analysieren + +```bash +# Top 20 blockierte Quell-IPs +sudo grep "UFW BLOCK" /var/log/ufw.log | \ + grep -oP "SRC=\K[0-9.]+" | sort | uniq -c | sort -rn | head -20 + +# Top 20 blockierte Ziel-Ports +sudo grep "UFW BLOCK" /var/log/ufw.log | \ + grep -oP "DPT=\K[0-9]+" | sort | uniq -c | sort -rn | head -20 + +# Blockierungen der letzten Stunde +sudo grep "UFW BLOCK" /var/log/ufw.log | \ + grep "$(date +'%b %d %H')" | wc -l +``` + +### 8.5 Logrotation + +UFW-Logs werden automatisch über logrotate verwaltet: + +```bash +# Konfiguration prüfen +cat /etc/logrotate.d/ufw +``` + +Standardmäßig werden die Logs täglich rotiert und 14 Tage aufbewahrt. + +--- + +## 9. IPv6-Konfiguration + +### 9.1 IPv6 in UFW aktivieren + +UFW unterstützt IPv6 standardmäßig. Die Einstellung ist in der UFW-Konfiguration: + +```bash +sudo nano /etc/default/ufw +``` + +```bash +# IPv6 aktivieren (Standard) +IPV6=yes +``` + +Nach Änderungen: + +```bash +sudo ufw disable && sudo ufw enable +``` + +### 9.2 IPv6-Regeln + +IPv6-Regeln werden automatisch als Gegenstück zu IPv4-Regeln erstellt: + +```bash +# Erstellt automatisch eine IPv4- UND IPv6-Regel +sudo ufw allow 443/tcp + +# Ausgabe in ufw status: +# 443/tcp ALLOW IN Anywhere +# 443/tcp (v6) ALLOW IN Anywhere (v6) +``` + +Nur IPv6 erlauben: + +```bash +# Explizite IPv6-Adresse +sudo ufw allow from 2001:db8::/32 to any port 22 + +# IPv6 Loopback +sudo ufw allow from ::1 +``` + +### 9.3 IPv6 deaktivieren (falls nicht benötigt) + +Falls der Server kein IPv6 nutzt: + +```bash +sudo nano /etc/default/ufw +``` + +```bash +IPV6=no +``` + +```bash +sudo ufw disable && sudo ufw enable +``` + +--- + +## 10. Erweiterte Konfiguration (ufw-Dateien) + +### 10.1 Konfigurationsdateien im Überblick + +| Datei | Zweck | +|---|---| +| `/etc/default/ufw` | Grundeinstellungen (IPv6, Policies, Module) | +| `/etc/ufw/before.rules` | Regeln VOR den benutzerdefinierten Regeln | +| `/etc/ufw/after.rules` | Regeln NACH den benutzerdefinierten Regeln | +| `/etc/ufw/user.rules` | Vom Benutzer erstellte Regeln (automatisch verwaltet) | +| `/etc/ufw/sysctl.conf` | Kernel-Netzwerkparameter | +| `/etc/ufw/applications.d/` | Anwendungsprofile | + +> **Wichtig:** `user.rules` und `user6.rules` werden von UFW automatisch verwaltet. Diese Dateien nicht manuell bearbeiten – Änderungen werden beim nächsten `ufw`-Be \ No newline at end of file