techlogia — KI- und Web-Dienstleister Berlin
Alle Kurse
Frei lesbar – ohne Anmeldung

Linux-Firewall mit nftables

Du lernst nftables — den modernen Nachfolger von iptables, der auf 75% aller Linux-Server Standard ist. Du baust Schritt für Schritt eine produktionsreife Firewall: Tabellen und Ketten anlegen, SSH und HTTP/S erlauben, alles andere blockieren und Regeln persistent machen. 6 Aufgaben, ca. 75 Minuten.

Dauer: 75 Min.Niveau: FortgeschrittenAufgaben: 6

Produktions-Firewall mit nftables aufbauen

Was ist eine Firewall — und was ist nftables?

Eine Firewall ist ein Filter, der entscheidet, welche Netzwerk-Pakete einen Server erreichen dürfen und welche verworfen werden. Sie ist die erste Verteidigungslinie eines Servers: Ohne Firewall ist jeder offene Dienst direkt aus dem Internet angreifbar.

nftables ist das moderne Firewall-Framework des Linux-Kernels. Es ersetzt das ältere iptables und ist heute auf den meisten Linux-Servern Standard. Du beschreibst damit in einer klaren Syntax, welcher Verkehr erlaubt ist — alles andere wird blockiert.

Die drei Bausteine von nftables

  • Tabelle (table): der oberste Container für deine Regeln. Die Familie legt fest, wofür sie gilt — inet deckt IPv4 und IPv6 gemeinsam ab.
  • Kette (chain): hängt an einem Hook, einem festen Punkt im Paket-Weg des Kernels. Die input-Kette bearbeitet alle eingehenden Pakete. Jede Kette hat eine Policy (Grundregel): policy drop heißt „verwirf alles, was keine Regel ausdrücklich erlaubt" — das sichere Prinzip Default-Deny.
  • Regel (rule): eine einzelne Erlaubnis in einer Kette, z. B. „TCP-Port 22 (SSH) zulassen".

Dein Ziel in dieser Lektion

Du baust Schritt für Schritt eine produktionsreife Firewall auf: eine inet-Tabelle mit einer input-Kette (Default drop), die nur das Nötigste erlaubt — SSH (Port 22), HTTP (80), HTTPS (443), bereits bestehende Verbindungen und den lokalen Loopback. Zum Schluss machst du die Regeln neustart-fest. Die VM startet ohne aktive Firewall-Regeln.

Aufgaben

  1. 1. inet-Tabelle anlegen

    Begriff: Tabelle. Die Tabelle ist der oberste Container in nftables — sie nimmt gleich deine Ketten und Regeln auf. Die Familie bestimmt, für welche Protokolle sie gilt: inet steht für IPv4 und IPv6 zusammen, du pflegst deine Regeln also nur einmal.

    Lege eine Tabelle namens filter in der Familie inet an:

    nft add table inet filter

    Kontrolle: nft list tables zeigt alle Tabellen — table inet filter muss dabei sein.

  2. 2. Input-Kette mit Drop-Policy

    Begriff: Kette & Policy. Eine Kette (chain) hängt an einem Hook — einem festen Punkt im Paket-Weg des Kernels. Der Hook input fängt alle eingehenden Pakete ab. Die Policy ist das Standard-Verhalten, wenn keine Regel passt: policy drop = alles verwerfen (Default-Deny). Das ist sicherer als accept, weil du danach gezielt nur erlaubst, was du brauchst.

    Erstelle in der Tabelle inet filter eine input-Kette mit Drop-Policy:

    nft 'add chain inet filter input { type filter hook input priority 0; policy drop; }'

    ⚠️ Wichtig: Sobald policy drop aktiv ist, blockiert die Firewall auch deine eigene SSH-Verbindung — bis du in den nächsten Schritten SSH ausdrücklich erlaubst. Auf dieser Übungs-VM ist das ungefährlich (der Plattform-Prüfer hat einen eigenen Zugang).

    Kontrolle: nft list chain inet filter input muss policy drop zeigen.

  3. 3. Bestehende Verbindungen erlauben

    Begriff: Connection-Tracking. Der Kernel merkt sich den Zustand jeder Verbindung. ct state established,related trifft Pakete, die zu einer bereits aufgebauten Verbindung gehören (oder unmittelbar dazu, z. B. ein FTP-Datenkanal).

    Warum als erste Regel? Ohne sie würde die drop-Policy auch die Antwortpakete deiner eigenen ausgehenden Verbindungen verwerfen (z. B. die Antwort eines apt update). Diese Regel lässt genau diese erlaubten Rückflüsse zu — und gehört deshalb ganz nach oben.

    nft add rule inet filter input ct state established,related accept

    Kontrolle: nft list chain inet filter input enthält ct state established.

  4. 4. SSH, HTTP und HTTPS freischalten

    Begriff: Port & dport. Ein Port ist die „Tür" zu einem bestimmten Dienst auf dem Server. dport (destination port) ist der Ziel-Port des eingehenden Pakets. Du erlaubst gezielt die Dienste, die von außen erreichbar sein sollen:

    • 22 = SSH (Fernzugriff / Administration)
    • 80 = HTTP (Webseite unverschlüsselt, u. a. für die Let's-Encrypt-Prüfung)
    • 443 = HTTPS (verschlüsselte Webseite)

    Füge drei Regeln hinzu — eine pro Port:

    nft add rule inet filter input tcp dport 22 accept
    nft add rule inet filter input tcp dport 80 accept
    nft add rule inet filter input tcp dport 443 accept

    Kontrolle: nft list chain inet filter input zeigt dport 22, dport 80 und dport 443 jeweils mit accept.

  5. 5. Loopback-Interface erlauben

    Begriff: Loopback (lo). Das Loopback-Interface lo ist die interne Netzwerk-Schnittstelle des Servers zu sich selbst (Adresse 127.0.0.1). Viele lokale Dienste — Datenbanken, Caches, Mail — kommunizieren ausschließlich über lo. Blockiert die drop-Policy auch Loopback, brechen diese internen Verbindungen — ein häufiger, schwer zu findender Fehler.

    Erlaube allen Verkehr, der über das Interface lo hereinkommt:

    nft add rule inet filter input iifname lo accept

    iifname = input interface name, also die Schnittstelle, über die das Paket ankam.

    Kontrolle: nft list chain inet filter input enthält eine lo-Regel mit accept.

  6. 6. Regeln persistent machen

    Problem: nftables-Regeln leben nur im Arbeitsspeicher (Kernel). Nach einem Neustart wären sie weg — der Server stünde ohne Firewall da. Du musst sie deshalb persistent machen, in zwei Schritten:

    1. Regeln in eine Datei exportieren: /etc/nftables.conf ist die Standard-Datei, die nftables beim Start einliest.
    2. Den Dienst aktivieren: systemctl enable nftables sorgt dafür, dass nftables beim Booten automatisch startet und /etc/nftables.conf lädt.
    nft list ruleset > /etc/nftables.conf
    systemctl enable nftables

    Kontrolle: /etc/nftables.conf enthält table inet filter, und systemctl is-enabled nftables meldet enabled.

Jetzt selbst üben

Lesen ist gut – selbst machen ist besser. Starte diesen Kurs an einer echten Linux-VM, direkt im Browser. Ein kostenloses Konto genügt.

Kostenlos starten

Lab-Inhalte unter CC BY 4.0 – frei nutzbar mit Namensnennung (© TechLogia).

Linux-Firewall mit nftables