Systemverwaltungshandbuch: IP Services

Arbeiten mit Oracle Solaris IP Filter-Regellisten

Bei der Verwaltung Ihrer Firewall verwenden Sie Oracle Solaris IP Filter, um Regellisten anzugeben, mit denen Ihr Netzwerkverkehr gefiltert wird. Sie können die folgenden Regellistentypen erstellen:

Darüber hinaus können Sie Adresspools erstellen, um auf IP-Adressgruppen zu verweisen. Diese Pools können Sie dann später in einer Regelliste verwenden. Die Adresspools helfen Ihnen dabei, die Regelverarbeitung zu beschleunigen. Mit Adresspools lassen sich auch große Adressengruppen einfacher verwalten.

Verwenden der Paketfilter-Funktionen in Oracle Solaris IP Filter

Eine Paketfilterung wird mithilfe der Paketfilter-Regellisten eingerichtet. Zum Arbeiten mit Paketfilter-Regellisten verwenden Sie den Befehl ipf. Informationen zum Befehl ipf finden Sie in der Manpage ipf(1M).

Sie erstellen die Paketfilterregeln entweder mithilfe des Befehls ipf in einer Befehlszeile oder in einer Paketfilterung-Konfigurationsdatei. Wenn Sie die Paketfilterregeln beim Booten laden möchten, erstellen Sie eine Konfigurationsdatei namens /etc/ipf/ipf.conf und legen die Regeln in dieser Datei an. Sollen die Paketfilterregeln nicht beim Booten geladen werden, speichern Sie die Datei ipf.conf in einen beliebigen Verzeichnis und aktivieren die Paketfilterung mithilfe des Befehls ipf manuell.

Mit Oracle Solaris IP Filter können Sie zwei Paketfilter-Regellisten verwalten: die aktive Regelliste und die inaktive Regelliste. In den meisten Fällen arbeiten Sie mit der aktiven Regelliste. Über den Befehl ipf -I können Sie die Befehlsaktion auch an der inaktiven Regelliste anwenden. Die inaktive Regelliste wird erst dann von Oracle Solaris IP Filter verwendet, wenn Sie sie auswählen. In der inaktiven Regelliste können Sie Regeln speichern, ohne dass sie sich auf die aktive Paketfilterung auswirken.

Oracle Solaris IP Filter arbeitet die Regeln in der Regelliste nacheinander vom dem Anfang der Liste bis zum Ende der Liste ab. Erst dann wird ein Paket durchgelassen oder blockiert. Oracle Solaris IP Filter setzt ein Flag, mit dem festgelegt wird, ob ein Paket durchgelassen wird oder nicht. Es durchläuft die gesamte Regelliste und legt fest, ob das Paket basierend auf der letzten übereinstimmenden Regel durchgelassen oder blockiert wird.

Für diesen Prozess gibt es zwei Ausnahmen. Die erste Ausnahme ist, wenn das Paket einer Regel entspricht, die das Schlüsselwort quick enthält. Wenn eine Regel das Schlüsselwort quick enthält, wird die Aktion für diese Regel ausgeführt und keine weiteren Regeln geprüft. Die zweite Ausnahme ist, wenn ein Paket einer Regel entspricht, die das Schlüsselwort group enthält. Wenn ein Paket einer Gruppe entspricht, werden nur die Regeln geprüft, die dieser Gruppe zugeordnet sind.

Konfiguration der Paketfilterregeln

Zum Erstellen der Paketfilterregeln verwenden Sie die folgende Syntax:

Aktion [in|out] Option Schlüsselwort, Schlüsselwort...

  1. Jede Regel beginnt mit einer Aktion. Oracle Solaris IP Filter wendet die Aktion an dem Paket an, wenn das Paket der Regel entspricht. Die folgende Liste enthält die Aktionen, die am häufigsten an einem Paket angewendet werden.

    block

    Verhindert, dass ein Paket den Filter passiert.

    pass

    Gestattet einem Paket, den Filter zu passieren.

    log

    Protokolliert das Paket, legt aber nicht fest, ob das Paket blockiert wird oder passieren darf. Zum Anzeigen des Protokolls verwenden Sie den Befehl ipmon.

    Zählung

    Nimmt das Paket in die Filterstatistiken auf. Zum Anzeigen der Statistiken verwenden Sie den Befehl ipfstat.

    skip Zahl

    Sorgt dafür, dass der Filter die nächsten Zahl Filterregeln überspringt.

    auth

    Fordert, dass die Paketauthentifizierung von einem Benutzerprogramm durchgeführt wird, dass die Paketinformationen überprüft. Das Programm legt fest, ob das Paket passieren darf oder blockiert wird.

    preauth

    Fordert, dass der Filter eine vorab authentifizierte Liste prüft, um festzustellen, was mit einem Paket erfolgen soll.

  2. Nach dieser Aktion muss das nächste Wort entweder in oder out lauten. Ihre Auswahl legt fest, ob die Paketfilterregel an einem eingehenden Paket oder einem abgehenden Paket angewendet wird.

  3. Als Nächstes können Sie in einer Optionsliste auswählen. Wenn Sie mehrere Optionen verwenden, müssen sie in der hier gezeigten Reihenfolge vorliegen.

    log

    Protokolliert das Paket, wenn die Regel die letzte übereinstimmende Regel ist. Zum Anzeigen des Protokolls verwenden Sie den Befehl ipmon.

    quick

    Führt die Regel aus, in der die Option quick enthalten ist, wenn eine Paketübereinstimmung aufgetreten ist. Anschließend werden keine weiteren Regeln geprüft.

    on Schnittstellenname

    Wendet die Regel nur dann an, wenn das Paket über die angegebene Schnittstelle ein- oder abgeht.

    dup-to Schnittstellenname

    Kopiert das Paket und sendet das Duplikat über Schnittstellenname an eine optional angegebene IP-Adresse.

    to Schnittstellenname

    Verschiebt das Paket über eine abgehende Warteschlange an Schnittstellenname.

  4. Nach Angabe der Optionen können Sie unter zahlreichen Schlüsselwörtern wählen, mit denen festgestellt wird, ob das Paket der Regel entspricht. Die folgenden Schlüsselwörter müssen in der hier aufgeführten Reihenfolge verwendet werden.


    Hinweis –

    Standardmäßig darf ein Paket, das keiner Regel in der Konfigurationsdatei entspricht, über den Filter passieren.


    tos

    Filtert das Paket basierend auf dem Servicetyp-Wert, der entweder als hexadezimale oder als dezimale ganze Zahl ausgedrückt ist.

    ttl

    Vergleicht die Pakete basierend auf dem Lebensdauerwert. Der in einem Paket gespeicherte Lebensdauerwert gibt an, wie lange sich ein Paket im Netzwerk aufhalten kann, bevor es gelöscht wird.

    proto

    Entspricht einem bestimmten Protokoll. Sie können einen der Protokollnamen in der Datei /etc/protocols oder eine Dezimalzahl verwenden, mit der das Protokoll angegeben wird. Mithilfe des Schlüsselworts tcp/udp kann z. B. geprüft werden, ob es sich um ein TCP- oder um ein UDP-Paket handelt.

    from/to/all/ any

    Vergleicht eine oder alle der folgenden Angaben: IP-Quelladresse, IP-Zieladresse und Portnummer. Mit dem Schlüsselwort all werden alle Pakete von allen Quellen und an alle Ziele akzeptiert.

    with

    Vergleicht bestimmte Attribute, die dem Paket zugeordnet sind. Fügen Sie entweder das Wort not oder das Wort no vor dem Schlüsselwort ein, damit ein Paket nur dann der Regel entspricht, wenn die Option nicht vorhanden ist.

    flags

    Wird bei TCP verwendet, um basierend auf gesetzten TCP-Flags zu filtern. Weitere Informationen zu den TCP-Flags finden Sie in der Manpage ipf(4).

    icmp-type

    Filtert nach dem ICMP-Typ. Dieses Schlüsselwort wird nur dann verwendet, wenn die Option proto auf icmp gesetzt ist und nicht verwendet wird, wenn die Option flags aktiviert ist.

    keep keep-Optionen

    Legt die Informationen fest, die bei einem Paket beibehalten werden. Zu den verfügbaren keep-Optionen zählen die Optionen state und frags. Die Option state behält Informationen zur Sitzung bei und kann bei TCP-, UDP- und ICMP-Paketen angewendet werden. Die Option frags behält Informationen zu Paketfragmenten bei und wendet diese Informationen an späteren Fragmenten an. Mit den keep-Optionen können entsprechende Pakete durchgelassen werden, ohne dass sie die Zugriffskontrolllisten durchlaufen müssen.

    head Zahl

    Erstellt eine neue Gruppe mit Filterregeln, die durch die Zahl Zahl gekennzeichnet ist.

    group Zahl

    Fügt die Regel zur Gruppennummer Zahl anstatt zur Standardgruppe hinzu. Wenn keine andere Gruppe angegeben wurde, werden alle Filterregeln werden in die Gruppe 0 eingefügt.

Das folgende Beispiel zeigt, wie die Syntax einer Paketfilterregel beim Erstellen einer Regel auszusehen hat. Zum Blockieren von eingehenden Verkehr von der IP-Adresse 192.168.0.0/16 nehmen Sie die folgende Regel in die Regelliste auf:


block in quick from 192.168.0.0/16 to any

Informationen zur vollständigen Grammatik und Syntax beim Schreiben von Paketfilterregeln finden Sie in der Manpage ipf(4) Aufgaben im Zusammenhang mit der Paketfilterung finden Sie unter Verwalten der Paketfilter-Regellisten für Oracle Solaris IP Filter. Eine Erklärung des im Beispiel verwendeten IP-Adressenschemas (192.168.0.0/16) finden Sie in Kapitel 2Planen Ihres TCP/IP-Netzwerks (Vorgehen).

Verwenden der NAT-Funktion in Oracle Solaris IP Filter

NAT stellt Zuordnungsregeln auf, die IP-Quell- und IP-Ziel-Adressen in andere Internet- oder Intranet-Adressen übersetzen. Diese Regeln ändern die Quell- und Zieladressen eingehender oder abgehender IP-Pakete und senden die Pakete weiter. Mit NAT können Sie Datenverkehr auch von einem Port an einen anderen Port umleiten. NAT behält die Integrität eines Datenpakets während Modifikationen oder Umleitungen des Pakets bei.

Zum Arbeiten mit NAT-Regellisten verwenden Sie den Befehl ipnat. Weitere Informationen zum Befehl ipnat finden Sie in der Manpage ipnat(1M).

Sie erstellen die NAT-Regeln entweder mithilfe des Befehls ipnat in einer Befehlszeile oder in einer NAT-Konfigurationsdatei. NAT-Konfigurationsregeln werden in der Datei ipnat.conf angelegt. Wenn die NAT-Regeln beim Booten geladen werden soll, erstellen Sie eine Datei namens /etc/ipf/ipnat.conf, in der Sie die NAT-Regeln anlegen. Sollen die NAT-Regeln nicht beim Booten geladen werden, speichern Sie die Datei ipnat.conf in einem beliebigen anderen Verzeichnis und aktivieren die Paketfilterung mithilfe des Befehls ipnat manuell.

Konfiguration der NAT-Regeln

Zum Erstellen der NAT-Regeln verwenden Sie die folgende Syntax:

Befehl Schnittstellenname Parameter

  1. Jede Regel beginnt mit einem der folgenden Befehle:

    map

    Ordnet eine IP-Adresse oder ein Netzwerk einer anderen IP-Adresse oder einem Netzwerk zu. Dabei wird ein ungeregelter Round-Robin-Prozess verwendet.

    rdr

    Leitet Pakete von einer IP-Adresse und einem Portpaar an eine andere IP-Adresse und ein anderes Portpaar um.

    bimap

    Richtet eine bidirektionale NAT zwischen einer externen IP-Adresse und einer internen IP-Adresse ein.

    map-block

    Richtet eine statische Übersetzung ein, die auf den IP-Adressen basiert. Dieser Befehl basiert auf einem Algorithmus, der die Übersetzung von Adressen in einen Zielbereich erzwingt.

  2. Nach diesem Befehl muss das nächste Wort der Schnittstellenname sein, z. B. hme0.

  3. Als Nächstes können Sie unter zahlreichen Parametern wählen, mit denen die NAT-Konfiguration festgelegt wird. Zu diesen Parametern zählen:

    ipmask

    Entwirft die Netzwerkmaske.

    dstipmask

    Weist die Adresse zu, in die ipmask übersetzt wird.

    mapport

    Weist die Protokolle tcp, udp oder tcp/udp zusammen mit einem Portnummernbereich zu.

Das folgende Beispiel zeigt, wie mithilfe der Syntax für eine NAT-Regel eine NAT-Regel erstellt wird. Um ein Paket neu zu schreiben, das über das Gerät de0 an die Zieladresse 192.168.1.0/24 gesendet wird, und um die Quelladresse extern als 10.1.0.0/16 anzuzeigen, nehmen Sie die folgende Regel in die NAT-Regelliste auf:


map de0 192.168.1.0/24 -> 10.1.0.0/16

Informationen zur vollständigen Grammatik und Syntax beim Schreiben von NAT-Regeln finden Sie in der Manpage ipnat(4).

Verwenden der Adresspool-Funktion in Oracle Solaris IP Filter

Adresspools stellen eine Referenz dar, die zum Benennen einer Gruppe von Adress/Netzmasken-Paaren verwendet wird. Adresspools bieten Prozesse, mit denen die Zeit zum Finden von Entsprechungen zwischen IP-Adressen und Regeln verringert wird. Mit Adresspools lassen sich auch große Adressengruppen einfacher verwalten.

Die Konfigurationsregeln für Adresspools befinden sich in der Datei ippool.conf. Wenn die Adresspool-Regeln beim Booten geladen werden sollen, erstellen Sie eine Datei namens /etc/ipf/ippool.conf, in der Sie die Adresspool-Regeln anlegen. Sollen die Adresspool-Regeln nicht beim Booten geladen werden, speichern Sie die Datei ippool.conf in einem beliebigen anderen Verzeichnis und aktivieren die Paketfilterung mithilfe des Befehls ippool manuell.

Konfiguration von Adresspools

Zum Erstellen eines Adresspools verwenden Sie die folgende Syntax:


table role = role-name type = storage-format number = reference-number
table

Definiert die Referenz für mehrere Adressen.

role

Legt die Rolle des Pools in Oracle Solaris IP Filter fest. Derzeit ist ipf die einzige Rolle, auf die Sie verweisen können.

type

Gibt das Speicherformat für den Pool an.

number

Gibt die Referenznummer an, die von der Filterregel verwendet wird.

Um beispielsweise die Adressgruppe 10.1.1.1 und 10.1.1.2 und das Netzwerk 192.16.1.0 als Poolnummer 13 zu verweisen, nehmen Sie die folgende Regel in die Adresspool-Konfigurationsdatei auf:

table role = ipf type = tree number = 13 
{ 10.1.1.1/32, 10.1.1.2/32, 192.168.1.0/24 };

Um dann in einer Filterregel auf die Poolnummer 13 zu verweisen, erstellen Sie eine Regel ähnlich der Folgenden:


pass in from pool/13 to any

Beachten Sie, dass die Pooldatei vor der Regeldatei geladen werden muss, in der ein Verweis auf den Pool enthalten ist. Andernfalls ist der Pool, wie in der folgenden Ausgabe gezeigt, nicht definiert:


# ipfstat -io
empty list for ipfilter(out)
block in from pool/13(!) to any

Auch wenn Sie den Pools später hinzufügen, wird die Regelliste im Kernel nicht aktualisiert. Sie müssen die Regeldatei, in der auf den Pool verwiesen wird, neu laden.

Informationen zur vollständigen Grammatik und Syntax beim Schreiben von Paketfilterregeln finden Sie in der Manpage ippool(4).