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
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Firewall | Regeln, die entscheiden, welche Pakete passieren dürfen | |
| Kette | eine Liste von Regeln, der Reihe nach gelesen | |
| Policy | was mit einem Paket geschieht, das keine Regel trifft | |
| Drop | ein Paket ohne jede Antwort wegwerfen | |
| Reject | ein Paket abweisen und es dem Absender sagen | |
| Hook | die Stelle auf dem Weg eines Pakets, an der eine Kette gelesen wird | input |
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
sudo ip netns exec gw nft list chain inet filter forwardHier 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
| Zeile | In einfachen Worten |
|---|---|
| hook forward ... policy drop | Durchlaufende Pakete ansehen und wegwerfen, was keine Regel erlaubt |
| ct state established,related accept | Antworten auf schon offene Verbindungen durchlassen |
| iifname "to-lan" accept | Alles 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
sudo ip netns exec lan nft add table inet uebungHier 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
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
sudo ip netns exec lan nft add rule inet uebung waechter tcp dport 8081 dropHier 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
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
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
sudo ip netns exec lan nft flush chain inet uebung waechterHier 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
sudo ip netns exec lan nft add rule inet uebung waechter tcp dport 8081 reject with tcp resetHier 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
sudo ip netns exec gw nc -zv -w 2 10.0.0.2 8081Hier 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
sudo ip netns exec lan nft insert rule inet uebung waechter ip saddr 10.0.0.1 tcp dport 8081 acceptHier 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
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
sudo ip netns exec lan nft delete table inet uebungHier 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.