Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Firewall-Regeln: drop, reject und Reihenfolge

Nach dieser Lektion: Ich kann eine Firewall-Regel schreiben und sagen, was die Gegenseite sieht.

Lektion, 55 Min.12 BefehleNAT-Gateway-Lab: Masquerading und Portweiterleitung mit nftables im Browser

Die Stille, die einen Nachmittag kostete

Eine Firewall-Regel entscheidet, was mit einem Paket geschieht: durchlassen, still wegwerfen oder mit einer Antwort abweisen. Diese Wahl bestimmt, was die Gegenseite sieht und wie schnell ein Fehler gefunden wird.

Eine Entwicklerin erreicht einen Testserver nicht. Die Seite hängt. Sie wartet, versucht es noch einmal und ruft das Netzwerkteam an.

Eine Ablehnung hätte ihr in einer Sekunde gesagt, dass der Server läuft. Die Stille sagte ihr nichts.

Am Ende dieser Lektion

Notiz

Ich kann eine Firewall-Regel schreiben und sagen, was die Gegenseite sieht.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
FirewallRegeln, die entscheiden, welche Pakete passieren dürfen
Ketteeine Liste von Regeln, der Reihe nach gelesen
Policywas mit einem Paket geschieht, das keine Regel trifft
Dropein Paket ohne jede Antwort wegwerfen
Rejectein Paket abweisen und es dem Absender sagen
Hookdie Stelle auf dem Weg eines Pakets, an der eine Kette gelesen wirdinput

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Kette ist eine Liste mit einer Policy

Eine Firewall hält ihre Regeln in einer Kette. Ein Paket wird von oben mit den Regeln verglichen. Die erste Regel, die trifft, entscheidet, und die übrigen werden nicht gelesen.

Trifft keine Regel, entscheidet die Policy. Die Kette des Gateways hat hier die Policy drop: Sie lässt nur durch, was eine Regel erlaubt.

Die forward-Kette des Gateways lesen

Befehl
sudo ip netns exec gw nft list chain inet filter forward

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Beispiel: diese Kette Zeile für Zeile lesen

ZeileIn einfachen Worten
hook forward ... policy dropDurchlaufende Pakete ansehen und wegwerfen, was keine Regel erlaubt
ct state established,related acceptAntworten auf schon offene Verbindungen durchlassen
iifname "to-lan" acceptAlles durchlassen, was vom Kabel des LANs kommt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Regel wirft einen Port weg

Jetzt schreiben Sie selbst eine Regel, auf dem LAN-Rechner und nicht auf dem Gateway. Sie kommt in eine eigene Tabelle namens uebung, und nichts wird gespeichert.

Zuerst eine Tabelle, dann eine Kette am Hook input, der die Pakete sieht, die an diesem Rechner ankommen, und dann eine Regel.

Eine Tabelle auf dem LAN-Rechner anlegen

Befehl
sudo ip netns exec lan nft add table inet uebung

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Kette am Hook input hinzufügen

Befehl
sudo ip netns exec lan nft add chain inet uebung waechter '{ type filter hook input priority 0 ; policy accept ; }'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Regel hinzufügen, die Port 8081 wegwirft

Befehl
sudo ip netns exec lan nft add rule inet uebung waechter tcp dport 8081 drop

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Port 80 erfragen, den keine Regel trifft

Befehl
sudo ip netns exec gw curl --noproxy '*' -sS -m 3 -o /dev/null -w '%{http_code}\n' http://10.0.0.2/

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Port 8081 erfragen, den die Regel wegwirft

Befehl
sudo ip netns exec gw curl --noproxy '*' -sS -m 3 http://10.0.0.2:8081/

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Reject sagt laut Nein

Ein drop gibt keine Antwort, darum wartet der Absender, bis er aufgibt. Ein reject schickt sofort eine Ablehnung zurück, darum weiß der Absender es im Nu.

Drop ist nach außen leiser. Reject ist freundlicher zu Ihren eigenen Kollegen, die den Fehler schneller finden.

Die Kette leeren

Befehl
sudo ip netns exec lan nft flush chain inet uebung waechter

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Regel hinzufügen, die Port 8081 abweist

Befehl
sudo ip netns exec lan nft add rule inet uebung waechter tcp dport 8081 reject with tcp reset

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Noch einmal an Port 8081 klopfen

Befehl
sudo ip netns exec gw nc -zv -w 2 10.0.0.2 8081

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, ein gesperrter Port zeige immer Connection refused. Das tut er nur, wenn die Firewall mit reject abweist. Bei einem drop sieht der Absender ein Timeout, und ein Timeout sieht aus wie ein ausgeschalteter Rechner.

Die erste Regel, die trifft, gewinnt

Regeln werden von oben gelesen. Eine Regel, die mit add kommt, steht ganz unten. Eine Regel mit insert steht ganz oben.

Jetzt lassen Sie einen Rechner, das Gateway auf 10.0.0.1, zum Port 8081 durch, während alle anderen abgewiesen bleiben.

Eine accept-Regel über das reject setzen

Befehl
sudo ip netns exec lan nft insert rule inet uebung waechter ip saddr 10.0.0.1 tcp dport 8081 accept

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Port 8081 vom Gateway aus erneut erfragen

Befehl
sudo ip netns exec gw curl --noproxy '*' -sS -m 3 http://10.0.0.2:8081/

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Übungstabelle löschen

Befehl
sudo ip netns exec lan nft delete table inet uebung

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Zum Weitermachen: Treffer zählen

Legen Sie Tabelle und Kette noch einmal an. Fügen Sie die Regel tcp dport 8081 counter reject with tcp reset hinzu und klopfen Sie mit nc dreimal an Port 8081.

Listen Sie die Tabelle mit sudo ip netns exec lan nft list table inet uebung. Was sagt der Zähler, und warum wollte ein Netzwerkteam einen? Löschen Sie danach die Tabelle.