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:
Paketfilter-Regellisten
Regellisten für Network Address Translation (NAT)
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.
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.
Zum Erstellen der Paketfilterregeln verwenden Sie die folgende Syntax:
Aktion [in|out] Option Schlüsselwort, Schlüsselwort...
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.
Verhindert, dass ein Paket den Filter passiert.
Gestattet einem Paket, den Filter zu passieren.
Protokolliert das Paket, legt aber nicht fest, ob das Paket blockiert wird oder passieren darf. Zum Anzeigen des Protokolls verwenden Sie den Befehl ipmon.
Nimmt das Paket in die Filterstatistiken auf. Zum Anzeigen der Statistiken verwenden Sie den Befehl ipfstat.
Sorgt dafür, dass der Filter die nächsten Zahl Filterregeln überspringt.
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.
Fordert, dass der Filter eine vorab authentifizierte Liste prüft, um festzustellen, was mit einem Paket erfolgen soll.
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.
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.
Protokolliert das Paket, wenn die Regel die letzte übereinstimmende Regel ist. Zum Anzeigen des Protokolls verwenden Sie den Befehl ipmon.
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.
Wendet die Regel nur dann an, wenn das Paket über die angegebene Schnittstelle ein- oder abgeht.
Kopiert das Paket und sendet das Duplikat über Schnittstellenname an eine optional angegebene IP-Adresse.
Verschiebt das Paket über eine abgehende Warteschlange an Schnittstellenname.
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.
Standardmäßig darf ein Paket, das keiner Regel in der Konfigurationsdatei entspricht, über den Filter passieren.
Filtert das Paket basierend auf dem Servicetyp-Wert, der entweder als hexadezimale oder als dezimale ganze Zahl ausgedrückt ist.
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.
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.
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.
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.
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).
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.
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.
Erstellt eine neue Gruppe mit Filterregeln, die durch die Zahl Zahl gekennzeichnet ist.
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).
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.
Zum Erstellen der NAT-Regeln verwenden Sie die folgende Syntax:
Befehl Schnittstellenname Parameter
Jede Regel beginnt mit einem der folgenden Befehle:
Ordnet eine IP-Adresse oder ein Netzwerk einer anderen IP-Adresse oder einem Netzwerk zu. Dabei wird ein ungeregelter Round-Robin-Prozess verwendet.
Leitet Pakete von einer IP-Adresse und einem Portpaar an eine andere IP-Adresse und ein anderes Portpaar um.
Richtet eine bidirektionale NAT zwischen einer externen IP-Adresse und einer internen IP-Adresse ein.
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.
Nach diesem Befehl muss das nächste Wort der Schnittstellenname sein, z. B. hme0.
Als Nächstes können Sie unter zahlreichen Parametern wählen, mit denen die NAT-Konfiguration festgelegt wird. Zu diesen Parametern zählen:
Entwirft die Netzwerkmaske.
Weist die Adresse zu, in die ipmask übersetzt wird.
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).
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.
Zum Erstellen eines Adresspools verwenden Sie die folgende Syntax:
table role = role-name type = storage-format number = reference-number |
Definiert die Referenz für mehrere Adressen.
Legt die Rolle des Pools in Oracle Solaris IP Filter fest. Derzeit ist ipf die einzige Rolle, auf die Sie verweisen können.
Gibt das Speicherformat für den Pool an.
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).