Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Ausführliche grafische Erklärung des Prinzips von iptables unter Linux

Ausführliche grafische Erklärung des Prinzips von iptables unter Linux

黄舟
黄舟Original
2017-07-26 16:00:092555Durchsuche

, Netfilter und iptables


(1) Netfilter ist ein von Rusty Russell vorgeschlagenes Linux 2.4-Kernel-Firewall-Framework, das sowohl prägnant als auch flexibel ist und Sicherheit implementieren kann Richtlinien Viele Funktionen in der Anwendung, wie Paketfilterung, Paketverarbeitung, Adressmaskierung, transparenter Proxy, dynamische Netzwerkadressübersetzung (NAT) und Filterung basierend auf Benutzer- und Media Access Control (MAC)-Adressen und zustandsbasierter Paketfilterung Ratenbegrenzung usw. Diese Regeln von Iptables/Netfilter lassen sich dank hervorragender Designideen flexibel zu einer Vielzahl von Funktionen kombinieren, die alle Aspekte abdecken.

Netfilter ist ein Paketverarbeitungsmodul innerhalb der Kernschicht des Linux-Betriebssystems. Es hat die folgenden Funktionen:

  • Network Address Translate (Netzwerkadressenübersetzung)

  • Änderung des Inhalts von Datenpaketen

  • Paketfilter-Firewall

  (2) Datenpakete werden in der formuliert Netfilter-Plattform Fünf Mount-Punkte (Hook Point, wir können ihn als Callback-Funktionspunkt verstehen. Wenn das Datenpaket diese Orte erreicht, wird unsere Funktion aktiv aufgerufen, was uns die Möglichkeit gibt, ihre Richtung und ihren Inhalt zu ändern, wenn das Datenpaket weitergeleitet wird ), diese 5 Mountpunkte sind PRE_ROUTING, INPUT, OUTPUT, FORWARD, POST_ROUTING.

(3) Die von Netfilter festgelegten Regeln werden im Kernelspeicher gespeichert, und iptables ist eine Anwendung auf Anwendungsebene, die Netfilter übergibt. Die freigegebene Schnittstelle ist Wird zum Ändern der im Kernelspeicher gespeicherten XXtables (Netfilter-Konfigurationstabelle) verwendet. Diese XXtables bestehen aus Tabelle tables, Kette chains und Regel rules ist für die Änderung dieser Regeldatei auf Anwendungsebene verantwortlich. Eine ähnliche Anwendung ist firewalld.

 


2. Vier Tabellen mit Filter-, Nat-, Mangle- und anderen Regeln


(1) Tabelle verfügt über Filter-, Nat-, Mangle- und andere Regeltabellen;

 Filtertabelle

  Wird hauptsächlich zum Filtern von Datenpaketen und zur Entscheidung, ob sie entsprechend freigegeben werden sollen, verwendet an bestimmte Regeln des Datenpakets (z. B. DROP, ACCEPT, REJECT, LOG). Das der Filtertabelle entsprechende Kernelmodul ist iptable_filter, das drei Regelketten enthält:

    • INPUT Kette: INPUT ist für Pakete, deren Ziel ist lokal

    • FORWARDKette: FORWARD filtert alle

    • , die nicht lokal generiert werden und das Ziel nicht lokal (also lokal) ist Maschine ist nur für die Weiterleitung verantwortlich)
    • OUTPUTKette: OUTPUT wird verwendet, um alle lokal generierten Pakete zu filtern

  Nat-Tabelle

  wird hauptsächlich zum Ändern der IP-Adresse, der Portnummer und anderer Informationen des Datenpakets (Netzwerkadressübersetzung, wie SNAT) verwendet , DNAT, MASQUERADE, REDIRECT). Pakete, die zu einem Fluss gehören (Daten können aufgrund von Paketgrößenbeschränkungen in mehrere Pakete aufgeteilt werden), durchlaufen diese Tabelle nur einmal. Wenn das erste Paket NAT oder maskiert sein darf, werden die verbleibenden Pakete automatisch demselben Vorgang unterzogen, d. h. die verbleibenden Pakete passieren diese Tabelle nicht. Das der Tabelle entsprechende Kernelmodul ist iptable_nat, das drei Ketten enthält:

    • Kette: wird verwendet, um den Zweck des Pakets zu ändern, wenn es erreicht gerade die Firewall PREROUTINGKette:

      Ändern Sie die Quelladresse des Pakets, kurz bevor es die Firewall verlässt
    • OUTPUT 

      Mangle-Tabelle
    • Wird hauptsächlich verwendet, um TOS (Type Of Service, Diensttyp) und TTL (Time To Live, Lebenszyklus) des Datenpakets zu ändern und die Markierung für das Datenpaket festzulegen, um Qos zu implementieren ( Quality Of Service, Quality of Service) Anpassung und Richtlinien Routing und andere POSTROUTING Anwendungen werden nicht häufig verwendet, da sie entsprechende Unterstützung durch Routing-Geräte erfordern. Enthält fünf Regelketten: PREROUTING, POSTROUTING, INPUT, OUTPUT, FORWARD.

    •  
Rohtabelle

  Es handelt sich um eine neue Tabelle, die seit Version 1.2.9 zu iptables hinzugefügt wurde. Sie wird hauptsächlich verwendet, um festzustellen, ob das Datenpaket wird der Status der Mechanismusverarbeitung verfolgt. Beim Abgleich von Datenpaketen haben die Regeln der Rohtabelle Vorrang vor anderen Tabellen. Enthält zwei Regelketten – OUTPUT, PREROUTING

(2) 4 verschiedene Status von Datenpaketen und 4 Arten von verfolgten Verbindungen in iptables:

    • NEW: Das Paket möchte eine Verbindung herstellen (die Verbindung wiederherstellen oder umleiten)

    • RELATED: Das Paket ist eine neue Verbindung durch eine bereits bestehende Verbindung hergestellt. Beispiel: Die FTP-Datenübertragungsverbindung ist die Verbindung, die sich auf die Steuerverbindung bezieht. --icmp-type 0 (Ping-Antwort) steht im Zusammenhang mit --icmp-type 8 (Ping-Anfrage).

    • ESTABLISHED: Solange eine Antwort gesendet und empfangen wird, ändert sich eine Datenverbindung von NEU in ESTABLISHED, und dieser Status stimmt weiterhin mit nachfolgenden Daten überein Pakete dieser Verbindung.

    • INVALID: Das Datenpaket kann nicht identifiziert werden, zu welcher Verbindung es gehört oder hat keinen Status, wie z. B. Speicherüberlauf, und es wird eine ICMP-Fehlermeldung empfangen Ich weiß im Allgemeinen nicht, zu welcher Verbindung sie gehört. Alle Daten in diesem Zustand sollten gelöscht werden.


3. Fünf Ketten und Regeln von INPUT, FORWARD und anderen Regeln


(1) Bei der Verarbeitung verschiedener Datenpakete stellt iptables gemäß unterschiedlichen Interventionszeitpunkten der Firewall-Regeln fünf Standardregelketten bereit. Verstehen Sie diese Ketten aus der Perspektive der Anwendungszeit:

    • INPUTKette: Die Regeln in dieser Kette werden angewendet, wenn ein Paket (eingehend) für die native Adresse der Firewall empfangen wird.

    • OUTPUTKette: Wenn die Firewall ausgehende Pakete sendet (outbound) , werden die Regeln in dieser Kette angewendet.

    • FORWARDKette: Nach Erhalt muss es an gesendet werden andere durch die Firewall Wenn Pakete an eine Adresse weitergeleitet (weitergeleitet) werden, gelten die Regeln in dieser Kette.

    • PREROUTINGKette: Bevor Sie das Datenpaket weiterleiten, wenden Sie die Regeln an in dieser Kette, wie DNAT.

    • POSTROUTINGKette: Nach dem Weiterleiten des Pakets Regeln anwenden Kette wie SNAT.

(2) Unter diesen werden die INPUT- und OUTPUT-Ketten häufiger in der „Host-Firewall“ verwendet „Das heißt, es zielt hauptsächlich auf die Sicherheitskontrolle von Daten ab, die in den Server selbst ein- und ausgehen. Die Ketten FORWARD, PREROUTING und POSTROUTING werden häufiger in „Netzwerk-Firewalls“ verwendet, insbesondere wenn der Firewall-Server als verwendet wird Tor.


4. Linux-Paketrouting-Prinzipien


(1) Verstehen Sie die Architektur und Funktionen von Netfilter und Iptables und lernen Sie, das Netfilter-Verhalten zu steuern Struktur der Xtables-Tabelle. Welche Rolle spielt diese Xtables-Tabelle bei der Paketweiterleitung des Kernel-Protokollstapels?

Arbeitsablauf: Das Netzwerk-Port-Datenpaket wird von der zugrunde liegenden Netzwerkkarten-NIC empfangen. Nach dem Entpacken durch die Datenverbindungsschicht (Entfernen des Datenverbindungs-Frame-Headers) gelangt es (im Wesentlichen) in den TCP/IP-Protokollstapel a Der Kernel-Treiber, der Netzwerkpakete verarbeitet, und Netfilter werden im Paketverarbeitungsprozess gemischt. Der Prozess des Empfangens, Verarbeitens und Weiterleitens von Datenpaketen stellt eine endliche Zustandsvektormaschine dar. Nach dem Durchlaufen einer Reihe von Kernel-Verarbeitungsfunktionen und Netfilter-Hook-Punkten wird es schließlich von dieser Anwendung der oberen Schicht weitergeleitet oder verarbeitet.

Wie im Bild gezeigt:

Aus dem obigen Bild können wir die folgenden Regeln zusammenfassen:

    • Wenn ein Datenpaket in die Netzwerkkarte gelangt, gelangt das Datenpaket zunächst in die PREROUTING-Kette. In der PREROUTING-Kette haben wir die Möglichkeit, die DestIP (Ziel-IP) des Datenpakets zu ändern. und dann übergibt das „Routing-Modul“ des Kernels das „Datenpaket“, „Ziel-IP“ und „Routing-Tabelle im Kernel“, um zu bestimmen, ob es weitergeleitet werden muss (beachten Sie, dass die DestIP des Datenpakets zu diesem Zeitpunkt möglicherweise von uns geändert wurde). Zeit)

    • Wenn das Datenpaket den lokalen Computer betritt (dh die Ziel-IP des Datenpakets ist die Netzwerkport-IP des lokalen Computers), wird das Datenpaket empfangen Bewegen Sie sich entlang des Diagramms nach unten und erreichen Sie die INPUT-Kette. Sobald das Paket die INPUT-Kette erreicht, wird es von jedem Prozess empfangen

    • Programme, die auf dieser Maschine ausgeführt werden, können auch Datenpakete senden, die die OUTPUT-Kette durchlaufen und dann am Ausgang der POSTROTING-Kette ankommen (beachten Sie, dass Zu diesem Zeitpunkt wurde möglicherweise die SrcIP des Datenpakets von uns geändert)

    • Wenn das Datenpaket weitergeleitet werden soll (d. h. die Ziel-IP-Adresse ist nicht mehr in der aktuellen Subnetz) und der Kernel die Weiterleitung zulässt, bewegt sich das Datenpaket nach rechts, durchläuft die FORWARD-Kette und erreicht dann die POSTROUTING-Kettenausgabe (wählen Sie den Netzwerkport des aus entsprechendes Subnetz zum Senden)

 Behalten Sie beim Schreiben von iptables-Regeln immer dieses Routing-Sequenzdiagramm im Hinterkopf und konfigurieren Sie die Regeln flexibel entsprechend den verschiedenen Hook-Punkten


Fünf, iptables-Schreibregeln


Befehlsformat:

Beispiel: >

 

1 iptables -I INPUT -s 0/0 -d 192.168.42.153 -p tcp -m multiport --dports 22,80,3306 - j AKZEPTIEREN

🎜>1 iptables -t filter -I INPUT -d 192.168.42.153 -p tcp --dport 80 -j AKZEPTIEREN

 

1.[-t Tabellenname]

  <strong>1.[-t 表名]</strong>: Auf welche Tabelle diese Regel angewendet wird, Sie können Filter, NAT usw. verwenden. Wenn nicht angegeben, ist der Standardwert Filter

    • : Fügen Sie eine neue Regel zur letzten Zeile der Regelkettenliste hinzu. -A

    • : Fügen Sie eine Regel ein. Die Regeln an dieser Position werden in der Reihenfolge rückwärts verschoben, die nicht angegeben ist. Die Zahl ist 1-I

    • : Um eine Regel aus der Regelkette zu löschen, geben Sie entweder das vollständige ein Regel oder geben Sie die zu löschende Regelnummer an -D

    • : Durch Ersetzen einer Regel wird die Reihenfolge nicht geändert, und die Nummer muss angegeben werden. -R

    • : Legen Sie die Standardaktion einer Regelkette fest -P

    • : -nL, -L, zeigen Sie die an aktuelle Liste der laufenden Firewall-Regeln-n

 

2.: Geben Sie an, welche Kette der Regeltabelle vorhanden ist, z. B. INPUT, OUTPUT, FORWARD, PREROUTING usw. chain名

    • : Wird beim Einfügen, Löschen und Ersetzen von Regeln verwendet, [规则编号]Anzeigenummer--line-numbers

    • : i wird angegeben, von welcher Netzwerkkarte das Datenpaket eintritt, o gibt an, von welcher Netzwerkkarte das Datenpaket ausgegeben wird [-i|o 网卡名称]

    • : Sie können das Protokoll für die Regelanwendung angeben, einschließlich TCP, UDP und ICMP usw.[-p 协议类型]

    • : Die IP-Adresse oder Subnetzadresse des Quellhosts [-s 源IP地址]

    • : Die Quellportnummer der IP des Pakets [--sport 源端口号]

    • : Die IP-Adresse oder Subnetzadresse des Zielhosts [-d目标IP地址]

    • : Die Zielportnummer der IP des Pakets [--dport目标端口号]

 <p>3.-m<code>  <strong>3.-m</strong>

: verlängern Übereinstimmungen, diese Option wird verwendet, um weitere passende Parameter bereitzustellen, wie zum Beispiel:

    • -m state --state ESTABLISHED,RELATED

    • -m tcp --dport 22

    • -m multiport --dports 80,8080

    • -m icmp --icmp-type 8

 <code>  <strong>4.<-j 动作></strong>4.<-j action> : Aktion zum Verarbeiten von Datenpaketen, einschließlich ACCEPT, DROP, REJECT usw.


    • ACCEPT:

      Daten zulassen Das Paket wird weitergeleitet
    • DROP:

      Verwirft das Paket direkt ohne Angabe alle Antwortinformationen
    • REJECT:

      weigert sich, das Datenpaket weiterzuleiten und sendet bei Bedarf eine Antwortnachricht an die Datensendeseite.
    • SNAT:
      Quelladresskonvertierung. Nach der Eingabe der Route auf der Routing-Ebene und vor dem Verlassen des lokalen Netzwerkstapels wird die Quelladresse neu geschrieben, die Zieladresse bleibt unverändert und ein NAT-Tabelleneintrag wird auf dem lokalen Computer erstellt. Wenn die Daten zurückgegeben werden, werden die Zieladressdaten angezeigt werden gemäß der NAT-Tabelle als Daten umgeschrieben und an den Host gesendet. Lösen Sie das Problem, dass Intranetbenutzer dieselbe öffentliche Netzwerkadresse verwenden, um auf das Internet zuzugreifen. MASQUERADE

      ist eine spezielle Form von SNAT, geeignet für IP-Adressen, die sich vorübergehend ändern, wie ADSL
    • DNAT:Übersetzung der Zieladresse. Im Gegensatz zu SNAT wird die Zieladresse erneut geändert, und die Quelladresse bleibt unverändert. Bei der Rückgabe der Daten wird die Quelladresse entsprechend geändert in der NAT-Tabelle an die Zieladresse, als die Daten gleichzeitig an den Remote-Host gesendet wurden. Die tatsächliche Adresse des Backend-Servers kann ausgeblendet werden. (Danke an den Internetnutzer für den Hinweis, dass dieser Ort mit SNAT rückwärts geschrieben wurde)
      REDIRECT: Es handelt sich um eine spezielle Form von DNAT, die Netzwerkpakete an den lokalen Host weiterleitet (unabhängig von der in der IP angegebenen Zieladresse). Header), was praktisch ist. Führen Sie eine Portweiterleitung auf diesem Computer durch.

    • LOG: Protokollinformationen in der Datei /var/log/messages aufzeichnen und das Paket dann an die nächste Regel übergeben

Mit Ausnahme des letzten LOG gilt: Nachdem die ersten drei Regeln mit einem Paket übereinstimmen, wird das Paket nicht weiter abgeglichen, sodass die Reihenfolge der geschriebenen Regeln äußerst wichtig ist.

Das obige ist der detaillierte Inhalt vonAusführliche grafische Erklärung des Prinzips von iptables unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn