Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING

12.8 Beschreibung des Aufbaus der Firewall

Dieser Abschnitt beschreibt alles notwendige, was man zum Aufbau der Linux 2.2 Firewall wissen muß.

Wie Pakete über die Firewall hinweg geroutet werden.

Die Firewall beherrscht drei Arten von Regeln. Diese Regeln werden firewall chains oder auch nur chains genannt. Die drei chains sind in input, output und forward unterteilt. Wenn ein Paket eintrifft, beispielsweise der Ethernet Karte, dann benutzt der Kernel die input Regeln. Wenn das Paket diesen Filter erfolgreich passiert hat, dann wird es an die nächste Funktion übergeben, die routing genannt wird. Hier wird entschieden, aus welchem der Netzwerk- Karten das Paket austreten darf. Linux unterstützt bis zu 20 interne Ethernet- Interfaces und bis zu 4 ISDN Karten mit je 2 Kanälen (Patch erforderlich). Danach wird es aus einem der Interfaces in ein Netzwerk versendet. Bevor es das Interface passieren kann, wird es nochmals in der output chain gefiltert.

Eine chain ist eine Checkliste von rules, also Regeln. Jede Regel prüft nun das Aussehen des Headers des Paketes, und entscheidet dann, was zu tun ist. Im Gegensatz zu anderen Firewalls wird das Paket mit allen Regeln in einer chain verglichen. Am Ende der chain angelangt, entscheidet der Kernel danach, was in der chain policy steht, und führt die darin enthaltenen Befehle aus. Normalerweise wird das Paket mit reject zurückgewiesen, oder mit deny verworfen.

Dieses ASCII Diagramm zeigt auf, was mit dem Paket im Kernel passiert:

        ----------------------------------------------------------------
        |            ACCEPT/                              lo interface |
        v           REDIRECT                                           |
--> C --> S --> ______ --> D --> ~~~~~~~~ --> local? -----> _______ --> 
    h  -> a    |input |    e    {Routing }    __|____      |output |ACCEPT
    e  |  n    |Chain |    m    {Decision}   |forward|---->|Chain  |
    c  |  i    |______|    a     ~~~~~~~~    |Chain  |   ^ |_______|
    k  |  t       |        s        |  ^     |_______|   |     |    
    s  |  y       |        q        |  |         |       |     |    
    u  |  |       v        e        v  |         |       |     v    
    m  |  |     DENY/      r  Local Process      v       |   DENY/
    |  |  v    REJECT      a        |          DENY/     |  REJECT
    |  |DENY               d        |         REJECT     | 
    v  |                   e -------+---------------------
   DENY|                            |
       ------------------------------
Beschreibung der einzelnen Abschnitte:

Checksum:

Die Checksum ist eine Prüfsumme in dem IP- Header, die feststellt, ob ein Paket bei der Übertragung verändert wurde. Stimmt die Prüfsumme nicht, so wird das Paket abgelehnt.

Sanity:

Hier werden die sehr wichtigen Überprüfungen auf Pakete mit besonderen Flags im Header durchgeführt, die eventuell die korrekte Abarbeitung der Firewall-Regeln verhindern könnten. (IP- Fragmente). Falls dieser Fall eintreten sollte, wird eine Nachricht an den SYSLOGD übergeben.

input chain:

Hier werden zum ersten male die Pakete anhand von Filterregeln getestet. Pakete werden hier zurückgewiesen oder verworfen.

Demasquerade:

Hier werden maskierte Pakete, also Pakete, die von einem Host im Intranet stammen, und deren Absender in denjenigen der Firewall umgestempelt wurde, und deren Antwort nun eintrifft, korrekt zugeordnet und weitergeleitet. Dies dient dem Verdecken der internen Netzwerk - Adressen. Wenn kein Masquerading aktiviert worden ist, ist diese Routine deaktiviert.

Routing decision:

Die Zieladresse wird von der Routing Unterroutine untersucht. Hierbei entscheidet sich, an welchen output chain das Paket übergeben wird.

Local process:

Hier kann das Paket von einem Programm entgegen genommen und weiterverarbeitet werden. An dieser Stelle kann z.B. ein Proxy oder ähnliches zur weiteren Filterung der Pakete installiert werden. Danach wird das Paket an die output chain übergeben.

lo interface:

Falls Pakete eines lokalen Programms an einen anderes Programm übergeben werden müssen, dann sind diese an das Interface lo, welches das loopback Interface ist, übergeben. Für diese Interface existiert also auch eine input chain, welche Ausgaben eines Programmes wieder an den Kernel zwecks Weiterleitung übergeben kann.

local:

Wenn ein Paket nicht von einem lokalen Programm erzeugt wurde, dann wird dieses an die forward chain übergeben, ansonsten wird das Paket an die output chain direkt übergeben.

forward chain:

Diese chain muß von jedem Paket durchlaufen werden, welches von einem Interface kommend, an ein anderes weitergeleitet werden möchte.

output chain:

Hier werden nochmals alle Pakete gefiltert, bevor sie das Interface verlassen.


Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING