[LINUX] Iptables aus der Dokumentation gelernt

Ich war frustriert, als ich mehrmals versucht habe, iptables zu verstehen. Ich verstehe die Worte nicht immer.

――Was ist ein Tisch? ――Was ist eine Kette? ――Was ist ein Ziel?

Es gibt viele Erklärungen im Internet, aber ich konnte nichts dagegen tun. Dieses Mal möchte ich die Dokumentation zu iptables ernsthaft lesen und verstehen.

25.12.2019 Nachtrag Während ich Informationen sammelte, um iptables zu verstehen, fand ich eine großartige Referenz-Übersetzungsseite für Japanisch. Wir empfehlen, dass Sie sich für genaues Wissen auf Folgendes beziehen. Iptables Tutorial Japanische Übersetzung Eine Übersicht über Tabellen und Ketten finden Sie in Kapitel 6. Ich denke.

Gliederung

  1. Lesen Sie zuerst die iptable-Handbücher DSPRIPTION, TAGETS, TABLES, um das Grundwissen zu erlernen und zu organisieren.
  2. Lesen Sie danach @ suins "Aufdecken der stärksten iptables in meiner Geschichte".
$ man iptables

Das Folgende ist ein Auszug aus dem Handbuch zu iptables 1.6.1.

DESCRIPTION

Sie können Folgendes sehen, indem Sie die SEQ lesen.

Iptables and ip6tables are used to set up, maintain, and inspect the tables of IPv4 and IPv6 packet filter rules in the Linux kernel. Several different tables may be defined. Each table contains a number of built-in chains and may also contain user-defined chains.

Each chain is a list of rules which can match a set of packets. Each rule specifies what to do with a packet that matches. This is called a `target', which may be a jump to a user-defined chain in the same table.

Zusammenfassung

  1. ** Tabelle ** bezieht sich auf die Paketfiltertabelle, die im Linux-Kernel vorhanden ist Es gibt mehrere Tabellen, und jede Tabelle enthält eine Kette
  2. ** Chain ** ist eine Liste von Regeln zum Abgleichen von Paketen
  3. Was macht das ** Ziel ** mit den übereinstimmenden Paketen?

TARGETS

Sie können Folgendes herausfinden, indem Sie ZIELE lesen.

A firewall rule specifies criteria for a packet and a target. If the packet does not match, the next rule in the chain is examined; if it does match, then the next rule is specified by the value of the target, which can be the name of a user-defined chain, one of the targets described in iptables-extensions(8), or one of the special values ACCEPT, DROP or RETURN.

ACCEPT means to let the packet through. DROP means to drop the packet on the floor. RETURN means stop traversing this chain and resume at the next rule in the previous (calling) chain. If the end of a built-in chain is reached or a rule in a built-in chain with target RETURN is matched, the target specified by the chain policy determines the fate of the packet.

--ACCEPT übergibt das Paket

Zusammenfassung

TABLES

Sie können Folgendes sehen, indem Sie TABELLEN lesen.

--Was ist in mehreren vorhandenen Tabellen enthalten? --Was ist die integrierte Kette in der Filtertabelle?

There are currently five independent tables (which tables are present at any time depends on the kernel configuration options and which modules are present). The tables are as follows

Hier werden nur die Filtertabelle und die Nat-Tabelle übersetzt.

filter: This is the default table (if no -t option is passed). It contains the built-in chains INPUT (for packets destined to local sockets), FORWARD (for packets being routed through the box), and OUTPUT (for locally-generated packets).

nat: This table is consulted when a packet that creates a new connection is encountered. It consists of four built-ins: PREROUTING (for altering packets as soon as they come in), INPUT (for altering packets destined for local sockets), OUTPUT (for altering locally-generated packets before routing), and POSTROUTING (for altering packets as they are about to go out). IPv6 NAT support is available since kernel 3.7.

Abbildung der Filtertabelle

Lassen Sie uns ein Diagramm des bisherigen Verständnisses erstellen.

Screenshot from 2019-12-24 11-16-04.png

Lesen Sie "Enthüllung der stärksten iptables in meiner Geschichte"

Ich werde einen Auszug mit dem Wissen lesen, das ich bisher gewonnen habe.

Politische Entscheidung

 iptables -P INPUT DROP # Alle DROP. Es ist eine gute Idee, alle Löcher zu schließen, bevor Sie die erforderlichen Anschlüsse öffnen.
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD DROP

-P, --policy chain target

Ich habe eine Richtlinie für die integrierte Kette festgelegt. Es bestimmt die endgültige Behandlung, wenn das Paket nicht mit der Regelliste der Kette übereinstimmt.

Wenn das Paket, auf das die Ketten INPUT und FORWARD abzielen (die darin enthaltene Regelliste), keiner der Regeln entspricht, spricht man von DROP.

Legen Sie zuerst diese Richtlinie fest und entscheiden Sie dann, welche Pakete zulässig sind, indem Sie eine Regel mit einem ACCEPT-Ziel hinzufügen. Ich denke, dies ist der Grund, warum es eine weiße Liste genannt wird.

Vertrauenswürdige Hosts zulassen

#lo steht für local loopback und zeigt auf seinen eigenen Host
iptables -A INPUT -i lo -j ACCEPT # SELF -> SELF

-A, --append chain rule-specification -i, --in-interface name -j, --jump target

Ich füge der INPUT-Kette eine Regel hinzu. Es stimmt mit dem Paket überein, das zu lo und ACCEPT kam.

Gegenmaßnahmen gegen Angriffe: Stealth-Scan

iptables -N STEALTH_SCAN # "STEALTH_SCAN"Bilden Sie eine Kette mit dem Namen
iptables -A STEALTH_SCAN -j LOG --log-prefix "stealth_scan_attack: "
iptables -A STEALTH_SCAN -j DROP

-N, --new-chain chain

Eine benutzerdefinierte Kette mit dem Namen STEALTH_SCAN wird erstellt, und die Regeln für das Springen zu LOG und DROP werden dieser Kette hinzugefügt.

Das LOG-Ziel wird nach der Verarbeitung nicht beendet, sondern verarbeitet die folgende Regel:

This is a "non-terminating target", i.e. rule traversal continues at the next rule.

Die obigen Einstellungen registrieren eine Regel zum Hinterlassen eines Protokolls und eine Regel zum Verwerfen eines Pakets in der STELALTH_SCAN-Kette. Wenn Sie zu dieser Kette springen, wird sie in der richtigen Reihenfolge angemeldet und das Paket wird verworfen.

Die Einstellungen für das Springen zu dieser Kette sind wie folgt.

#Pakete, die wie Stealth-Scans aussehen"STEALTH_SCAN"Springe zur Kette
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j STEALTH_SCAN
...#Die Fortsetzung wird weggelassen

INPUT wurde eine Regel hinzugefügt, die Paketen entspricht, bei denen es sich anscheinend um Stealth-Scans handelt, und die zur Kette STELALTH_SCAN springen.

-j Obwohl AKZEPTIEREN usw. ein Sprung ist, schien es zunächst seltsam, Durch die Behandlung von ACCEPT, DROP und RETURN als spezielle Ketten ist das Gefühl der Fremdheit verschwunden.

Zusammenfassung

An dieser Stelle können Sie die Gliederung lesen. Wenn Sie die Option zum Abgleichen von Paketen kennenlernen, können Sie "Aufdecken der stärksten iptables in meinem Verlauf" verstehen.

"Die stärksten Iptables in meiner Geschichte verfügbar machen" dient jedoch nur zum Registrieren von Regeln in der INPUT-Kette Ich verstehe FORWARD und OUTPUT nicht. Nächstes Mal möchte ich hier etwas mehr graben. ← Ich habe folgendes geschrieben.

25.12.2019 Nachtrag Während ich Informationen sammelte, um iptables zu verstehen, fand ich eine großartige Referenz-Übersetzungsseite für Japanisch. Wir empfehlen, dass Sie sich für genaues Wissen auf Folgendes beziehen. Iptables Tutorial Japanische Übersetzung Eine Übersicht über Tabellen und Ketten finden Sie in Kapitel 6. Ich denke.

Ich hoffe, dieser Artikel hat Ihnen beim Verständnis geholfen. ** "Gefällt mir" Danke. **: zwinker:

Recommended Posts

Iptables aus der Dokumentation gelernt
Deep Python hat von DEAP gelernt
Programmierung aus Büchern gelernt 9. Mai
Programmierung aus Büchern gelernt 11. Mai