IPTABLES in der Linux-Kernel 2.6+

Einführung

Dieses Dokument soll einen kurzen Überblick über iptables, die Konzepte beteiligt sind, und die Art und Weise, in der diese Begriffe in dieser Firewall Generator implementiert werden.

IPTables ersetzt IPChains als Firewall der Wahl in der Linux-Kernel 2.4.

IPChains ist ein Staatenlose Firewall. Er prüft jedes Paket als separate Einheit und jedes Paket muss daher eine Regel zugeordnet.

IPTables ist ein Stateful Firewall. Es verfolgt den Zustand einer Verbindung während ihrer Lebensdauer. Daher kann jedes Paket mit einem Staat zugeordnet werden. Entweder es wird versucht, eine neue Verbindung, es ist Teil einer aufgebauten Verbindung oder in Verbindung mit einer Verbindung, oder das Paket in einem ungültigen Zustand. Ein Staatenloser Firewall zu umgehen, ist eine erlaubte Protokoll erkennen. Ein orientierte Firewall, durch Vergleich feststellt, dass das Paket nicht Teil einer laufenden Sitzung und kann konfiguriert werden, um Zutritt zu dem Paket zu verhindern. Eine Stateful-Firewall ist daher sicherer als ein Staatenloser Firewall. Da viele der Regeln über den Zustand des Pakets verlassen, eine Stateful Firewall erfordert in der Regel weniger Regeln als ein Staatenloser Firewall. Dies reduziert die Wahrscheinlichkeit menschlicher Fehler auch.

Eine Firewall iptables

besteht aus mehreren Tabellen, die jeweils mit einer Standardrichtlinie und eingebaute Ketten von Regeln. Weitere Regelketten können optional in jeder Tabelle erstellt werden. Verschiedene Tabellen und Ketten werden nach der Quelle und dem Ziel des Pakets durchquert. Ein Paket, das über eine Netzwerkschnittstelle mit dem System empfangen wird, geht durch eine Abfolge von Schritten, bevor es lokal behandelt wird oder zu einem anderen Host weitergeleitet.

Tabelle Beschreibungen

filter Tabelle

Die filter tabelle ist die Standard-Tabelle für jede Regel. Es ist, wo der Großteil der Arbeit in einer iptables-Firewall auftritt. Vermeiden Sie das Filtern in einem anderen Tisch, wie es nicht funktioniert. Es hat drei häufigsten verwendeten eingebauten Ketten. Diese Ketten sind INPUT, OUTPUT und FORWARD. Pakete für den Host bestimmt durchqueren die INPUT-Kette. Pakete, die durch den Host zu einem anderen System zu senden queren die OUTPUT-Kette. Durch den Host, die für einen anderen Host bestimmt sind, werden empfangene Pakete durchqueren die FORWARD-Kette.

nat Tabelle

Die Network Address Translation oder nat-Tabelle wird verwendet, um die Quelle oder das Ziel-Feld in Paketen zu übersetzen. Ein System mit einer statischen IP sollte Source Network Address Translation (SNAT) verwenden, da es weniger Systemressourcen verwendet. Allerdings unterstützt auch iptables-Hosts mit einer dynamischen Verbindung zum Internet mit einem Maskerade-Funktion. Masquerade verwendet die aktuelle Adresse auf der nterface für Adressübersetzung.

mangle Tabelle

The mangle table is used to alter certain fields in the headers of IP packets. It can be used to change the Time to Live or TTL, change the Type of Service or TOS field, or mark packets for later filtering.

Packet-Pfad

Weitergeleitete Pakete

Ein Paket, das für einen anderen Host bestimmt wird, wird als ein Paket weitergeleitet. Es geht zuerst durch die PREROUTING-Kette in der mangle-Tabelle. Er durchquert dann den PREROUTING-Kette in der Tabelle nat. Dies ist, wo dnat Regeln angewendet werden. Das Paket durchläuft dann die FORWARD-Kette in der Filtertabelle. Dies ist die einzige Kette, wo Filterregeln sollten auf das Paket angewendet werden. Das Paket wird dann an der POSTROUTING-Kette in der Tabelle nat. In dieser Kette sind SNAT und Masquerading Regeln angewendet. Das Paket wird dann die ausgehende Schnittstelle.

Received Packets

Pakete, adressiert an den localhost ersten durchqueren die PREROUTING-Kette in der mangle-Tabelle. Als nächstes werden sie durch die PREROUTING-Kette passieren in der Tabelle nat. Dies ist, wo dnat Regeln angewendet werden. Nach den Regeln dnat, muss ein Routing-Entscheidung getroffen werden. Wenn das Paket wirklich für den localhost bestimmt sind, wird der INPUT-Kette in der Filtertabelle durchlaufen wird. Alle Filterung wird in dieser Kette gemacht. Pakete, die akzeptiert werden, werden dann an die lokale Prozess oder Anwendung, für die es bestimmt ist, geleitet.

Gesendete Pakete

Pakete, die auf dem lokalen Host erzeugt werden zuerst durchqueren die OUTPUT-Kette der mangle-Tabelle. Sie dann durch die OUTPUT-Kette der nat-Tabelle übergeben. Als nächstes gehen sie durch die OUTPUT-Kette von der Filtertabelle. Sobald das Paket diese Ketten bestanden, muß das System bestimmen, wo das Paket weitergeleitet werden soll. Sobald die Entscheidung getroffen ist, durchläuft das Paket die POSTROUTING-Kette in der Tabelle nat. Dies ist, wo SNAT und Masquerading Regeln angewendet werden. Das Paket wird dann durch den entsprechenden Netzwerkschnittstelle .

Firewall-Generator

Die Firewall-Skripte, die von diesem Programm erzeugt nutzen mehrere Konventionen. Filter Tischregeln sind meist auf mehrere benutzerdefinierte Regelketten aufgeteilt. Damit sollen sie die Firewall leichter zu folgen und die Anzahl der Regeln jedes einzelne Paket durchqueren müssen, zu minimieren. Bad-Pakete werden als Pakete in einem INVALID Zustand oder andere als syn-Pakete, die in einen NEW Zustand sind Pakete definiert. Pakete, die in einem ESTABLISHED oder RELATED Zustand sind, werden akzeptiert. Sie sind Teil einer laufenden Sitzung. Eingehende TCP-, UDP-und ICMP-Pakete werden an einem separaten Ketten geführt, um festzustellen, ob sie angenommen werden sollte. Standardmäßig werden sie von der internen Schnittstelle akzeptiert und von der externen Schnittstelle gesunken. TCP-Anfragen aus dem internen Netz sind für die Weiterleitung geht durch eine ausgehende Kette zu sehen, ob es abgelehnt werden sollte. Standardmäßig werden diese Anträge angenommen.

Redhat-Installationsanweisungen

  1. Stellen Sie sicher, dass ipchains wird nicht automatisch startet:

    chkconfig --level 0123456 ipchains off

    Dadurch wird sichergestellt, dass die ipchains init.d Skript wird nicht zu einem S-Datei in einer der rc-Verzeichnissen verknüpft.
  2. Stoppen ipchains wenn es läuft:

    service ipchains stop
  3. Lsmod ausführen, um zu sehen, wenn das ipchains Kernel-Modul noch geladen. Wenn es ist, rmmod verwenden, um es zu entladen.
  4. Haben das System Link Das iptables init.d-Startskript laufen in den Zuständen 2, 3 und 5:

    chkconfig --level 235 iptables on
  5. Speichern Sie dieses Skript und führen Sie es an den Regelsatz aus dieser Datei laden. Möglicherweise müssen Sie den Befehl dos2unix darauf ausführen, um Zeilenumbrüche zu entfernen.
  6. Speichern Sie den Regelsatz in /etc/sysconfig/iptables. Dies kann auf zwei Arten erfolgen:

    service iptables save
    iptables-save > /etc/sysconfig/iptables
  7. Der Regelsatz wird von der /etc/init.d/iptables-Skript beim Systemstart wieder hergestellt werden.

HINWEIS: /etc/init.d/iptables-Skript kann geändert werden, um das Skript so ausgeführt werden. Wenn Sie dies tun, speichern Sie eine Kopie, so dass Sie Ihre Änderungen nach der Aktualisierung der iptables-Paket erneut anwenden. Der Vorteil der Verwendung dieses Skript für den laufenden Betrieb der Firewall ist es gibt Ihnen mehr Kontrolle über die verwendeten Module und Regelsätze. Das oben genannte ist einfacher, jedoch.

Fenster schließen