From owner-svn-doc-all@freebsd.org Mon Jul 11 12:26:53 2016 Return-Path: Delivered-To: svn-doc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 45074B913ED; Mon, 11 Jul 2016 12:26:53 +0000 (UTC) (envelope-from bhd@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D00BE11F3; Mon, 11 Jul 2016 12:26:52 +0000 (UTC) (envelope-from bhd@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u6BCQq1f080611; Mon, 11 Jul 2016 12:26:52 GMT (envelope-from bhd@FreeBSD.org) Received: (from bhd@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u6BCQqqd080610; Mon, 11 Jul 2016 12:26:52 GMT (envelope-from bhd@FreeBSD.org) Message-Id: <201607111226.u6BCQqqd080610@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bhd set sender to bhd@FreeBSD.org using -f From: Bjoern Heidotting Date: Mon, 11 Jul 2016 12:26:52 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r49087 - head/de_DE.ISO8859-1/books/handbook/firewalls X-SVN-Group: doc-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-doc-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire doc trees \(except for " user" , " projects" , and " translations" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2016 12:26:53 -0000 Author: bhd Date: Mon Jul 11 12:26:51 2016 New Revision: 49087 URL: https://svnweb.freebsd.org/changeset/doc/49087 Log: Update of the firewall chapter part 3/4 -> IPFW Reviewed by: bcr Differential Revision: https://reviews.freebsd.org/D7084 Modified: head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Modified: head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml ============================================================================== --- head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Mon Jul 11 11:05:57 2016 (r49086) +++ head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Mon Jul 11 12:26:51 2016 (r49087) @@ -3293,376 +3293,180 @@ pass in quick on rl0 proto tcp from any IPFW - firewall + Firewall IPFW - Die IPFIREWALL - (IPFW) ist eine vom &os; Project - gesponserte Software-Firewall. Sie wurde und wird - freiwillig von Mitgliedern des &os; Projects geschrieben und - gewartet. Mit zustandslosen Regeln und einer Grammatik für - Regeln implementiert sie eine sogenannte Einfache - Zustandsgesteuerte Logik. - - Die Standardinstallation von IPFW enthält - einen beispielhaften Regelsatz - (/etc/rc.firewall und - /etc/rc.firewall6). Dieser ist eher - einfach gehalten; es ist nicht zu erwarten, dass dieser - ohne Modifikationen angewandt werden kann. Dieses Beispiel - nutzt keine zustandsorientierte Filterung, von der allerdings - die meisten Installationen profitieren sollten. Deshalb wird sich - dieser Abschnitt auch nicht auf diese Beispiele stützen. - - Die zustandslose IPFW Regel-Syntax ist durch ihre technisch - ausgefeilten Selektions-Fähigkeiten, die über das - Niveau der gebrächlichen Firewall-Installationsprogramme - weit hinausgehen, sehr mächtig. IPFW richtet sich an - professionelle oder technisch versierte Nutzer mit - weitergehenden Anforderungen an die Paket-Auswahl. Um die - Ausdrucksstärke der IPFW zu nutzen, ist sehr detailliertes - Wissen über die Art und Weise, wie verschiedene Protokolle ihre - jeweilige Paket-Header-Information erzeugen und nutzen, - erforderlich. Im Rahmen dieses Abschnitts ist es nicht möglich, - auf alle diese Punkte detailliert einzugehen. - - IPFW besteht aus sieben Komponenten: Hauptbestandteil ist der - Kernel Firewall Filter, ein Regel-Prozessor mit integrierter - Paket-Buchführung. Außerdem enthalten - ist eine Komponente zur Protokollierung der Aktivitäten der - Firewall (also ein Logfunktion). Weiters besteht die IPFW aus einer - Regel zum Umleiten des Datenverkehrs (divert), die - auch Network Address Translation (NAT) - unterstützt. Die restlichen Bestandteile dienen verschiedenen - fortgeschrittenen Zwecken. Der - Traffic Shaper &man.dummynet.4; - gestattet es beispielsweise, den Datenverkehr zu lenken, während - die fwd-Regel zum Weiterleiten von Datenpaketen - dient. Komplettiert wird IPFW durch Funktionen zum - Überbrücken von Netzwerkgrenzen - (Bridge-Funktion) sowie - ipstealth, das es gestattet, - bridging-Funktionen durchzuführen, ohne dabei das TTL-Feld im - IP-Paket zu erhöhen. IPFW unterstützt IPv4 und IPv6. + IPFW ist eine + Stateful-Firewall + für &os;, die sowohl IPv4 als auch + IPv6 unterstützt. Die Firewall setzt sich + aus mehreren Komponenten zusammen: dem Kernel Firewall + Filter-Prozessor mit integriertem Paket-Accounting, + Protokollfunktionen, NAT, dem + &man.dummynet.4; Traffic-Shaper, + sowie Weiterleitungs-, Bridge- und ipstealth-Funktionen. + + &os; enthält mit /etc/rc.firewall ein + Beispielregelwerk, welches mehrere Firewall-Typen für + gebräuchliche Szenarien definiert und unerfahrene Anwender + dabei unterstützen soll, ein geeignetes Regelwerk zu erstellen. + IPFW besitzt eine leistungsstarke + Syntax, mit der erfahrene Benutzer ihre eigenen Regeln + anfertigen können, um den Sicherheitsanforderungen der + jeweiligen Umgebung gerecht zu werden. + + Diser Abschnitt beschreibt, wie + IPFW aktiviert wird und bietet einen + Überblick über die Regelsyntax. Zudem werden mehrere Regelsätze + für gebräuchliche Konfigurationsszenarien vorgestellt. - IPFW aktivieren + <application>IPFW</application> aktivieren - IPFW - + IPFW aktivieren - IPFW ist in der &os;-Installation standardmäßig - als ein zur Laufzeit ladbares Kernelmodul enthalten, das - vom System automatisch geladen wird, wenn in der Datei - rc.conf die Option - firewall_enable="YES" gesetzt wird. Es ist - daher nicht notwendig, IPFW statisch in den Kernel zu - kompilieren. - - Während des Systemstart wird bei gesetzter Option - firewall_enable="YES" (in der Datei - rc.conf) folgende Nachricht ausgegeben: - - ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabled - - Das Kernelmodul hat eine Protokollierungsfunktion. Um - diese zu aktivieren und einen Schwellwert für die - Protokollierung zu definieren, ist es erforderlich, folgende - Ausdrücke der /etc/sysctl.conf - hinzuzufügen: - - net.inet.ip.fw.verbose=1 -net.inet.ip.fw.verbose_limit=5 - - - - Kerneloptionen + Das &os; Basissystem enthält für + IPFW ein ladbares Kernelmodul, was + bedeutet, dass kein angepasster Kernel benötigt wird, um + IPFW zu benutzen. Kerneloptionen - IPFIREWALL Kerneloptionen - IPFIREWALL_VERBOSE Kerneloptionen - IPFIREWALL_VERBOSE_LIMIT - IPFW - + IPFW Kerneloptionen - Es ist für die Aktivierung von IPFW nicht zwingend - erforderlich, die folgenden Optionen in den Kernel zu - kompilieren. Es wird hier lediglich als - Hintergrundinformation aufgeführt. - - options IPFIREWALL - - Diese Option aktiviert IPFW als Bestandteil des - Kernels. - - options IPFIREWALL_VERBOSE - - Diese Option aktiviert die Funktion, alle Pakete, die durch - IPFW verarbeitet werden und bei denen das Schlüsselwort - log gesetzt ist, zu protokollieren. - - options IPFIREWALL_VERBOSE_LIMIT=5 - - Diese Option limitiert die Anzahl der durch &man.syslogd.8; - protokollierten Pakete auf das angegebene Maximum. Sie wird - in feindlichen Umgebungen verwandt, in denen die - Protokollierung der Firewall-Aktivität erwünscht - ist. Dadurch wird ein möglicher Denial-of-Service-Angriff - durch Überflutung von &man.syslogd.8; verhindert. - - - Kerneloptionen - - IPFIREWALL_DEFAULT_TO_ACCEPT - - - options IPFIREWALL_DEFAULT_TO_ACCEPT - - Diese Option erlaubt allen Paketen, die Firewall zu passieren. - Diese Einstellung kann beispielsweise bei der ersten Konfiguration - der Firewall hilfreich sein. - - - Kerneloptionen - - IPDIVERT - - - options IPDIVERT - - Dies aktiviert die Nutzung der - NAT-Funktionalität. - - - Die Firewall wird alle eingehenden oder ausgehenden - Pakete blockieren, wenn entweder die Kernel-Option - IPFIREWALL_DEFAULT_TO_ACCEPT fehlt oder - aber keine Regel, die die betreffenden Verbindungen explizit - gestattet, existiert. Dies enstpricht im Wesentlichen der - Einstellung default to deny - - - - - Optionen in <filename>/etc/rc.conf</filename> - - Der Eintrag + Wenn Sie eine statische Unterstützung für + IPFW in den Kernel kompilieren + wollen, lesen Sie . Folgende + Optionen können in der Kernelkonfigurationsdatei verwendet + werden: + + options IPFIREWALL # enables IPFW +options IPFIREWALL_VERBOSE # enables logging for rules with log keyword +options IPFIREWALL_VERBOSE_LIMIT=5 # limits number of logged packets per-entry +options IPFIREWALL_DEFAULT_TO_ACCEPT # sets default policy to pass what is not explicitly denied +options IPDIVERT # enables NAT + + Um IPFW beim Systemstart zu + aktivieren, fügen Sie folgende Zeile in + /etc/rc.conf ein: firewall_enable="YES" - aktiviert die Firewall während des Systemstarts. - - Die Auswahl einer für &os; verfügbaren Firewall - erfolgt durch einen entsprechenden Eintrag in der Datei - /etc/rc.firewall, durch den der Firewalltyp - festgelegt wird. + Wenn Sie einen der von &os; zur Verfügung gestellten + Firewall-Profile benutzen möchten, fügen Sie eine weitere + Zeile hinzu, in der Sie das Profil bestimmen: firewall_type="open" - Konkret sind folgende Einträge erlaubt: + Folgende Profile stehen zur Verfügung: - open — gestattet jeglichen - Datenverkehr + open: gestattet jeglichen + Datenverkehr. - client — schützt nur die - jeweilige Maschine (Client/Mandant) + client: schützt lediglich diesen + Rechner. - simple — schützt das - gesamte Netzwerk + simple: schützt das gesamte + Netzwerk. - closed — unterbindet - jeglichen IP-Datenverkehr mit Ausnahme des Verkehrs - über die Loopback-Schnittstelle. + closed: blockiert den gesamten + IP-Datenverkehr, mit Ausnahme des + Verkehrs über die Loopback-Schnittstelle. - UNKNOWN — deaktiviert das - Laden von Firewallregeln + workstation: schützt lediglich + diesen Rechner und verwendet zustandsorientierte + Regeln. - filename - — absoluter Pfad zu einer Datei, in der die - Firewallregeln definiert sind + UNKNOWN: deaktiviert das Laden von + Firewallregeln. - - - Angepasste Regeln für &man.ipfw.8; können auf zwei - verschiedene Arten geladen werden. Einerseits kann man durch die - Variable firewall_type den absoluten Pfad - der Datei angeben, welche die Firewallregeln - (ohne weitere Optionen) für &man.ipfw.8; enthält. Ein - einfaches Beispiel für einen Regelsatz, der jeglichen - eingehenden und ausgehenden Datenverkehr blockiert, könnte - beispielsweise so aussehen: - - add deny in add deny out - - Andererseits ist es möglich, den Wert der - firewall_type-Variable mit dem absoluten - Pfad einer Datei zu belegen, die (als ausführbares Skript) - die &man.ipfw.8;-Kommandos enthält, die beim Booten - ausgeführt werden sollen. Ein gültiges Skript (das die - gleiche Funktion hat wie die Zeile im letzten Beispiel) könnte - beispielsweise so aussehen: - #!/bin/sh - -ipfw -q flush + + filename: + absoluter Pfad zu einer Datei, in der die Firewallregeln + definiert sind. + + -ipfw add deny in -ipfw add deny out + Wenn Sie firewall_type auf + client oder simple + setzen, müssen Sie die voreingestellten Regeln in + /etc/rc.firewall anpassen, damit sie + der Konfiguration des Systems entsprechen. + + Beachten Sie, dass das Profil filename + verwendet wird, um ein benutzerdefiniertes Regelwerk zu + laden. + + Eine alternative Möglichkeit, um ein benutzerdefiniertes + Regelwerk zu laden, bietet die Variable + firewall_script. Setzen Sie die Variable + auf den absoluten Pfad eines + ausführbaren Skripts, welches die Befehle + für IPFW enthält. Die Beispiele in + diesem Abschnitt gehen davon aus, dass + firewall_script auf + /etc/ipfw.rules gesetzt ist. - - Wenn die Variable firewall_type - entweder auf client oder - simple gesetzt ist, sollten die - Standardregeln in der Datei - /etc/rc.firewall geprüft und an die - Konfiguration der gegebenen Maschine angepasst werden. Beachten - Sie dabei bitte, dass die Beispiele dieses Kapitels davon - ausgehen, dass das firewall_script auf - /etc/ipfw.rules gesetzt ist. - + firewall_script="/etc/ipfw.rules" - Das Logging wird durch folgenden Eintrag aktiviert: + Die Protokollierung wird mit diesem Eintrag + aktiviert: firewall_logging="YES" - - Die Variable firewall_logging definiert - lediglich die sysctl-Variable als - net.inet.ip.fw.verbose = 1 (lesen Sie dazu - bitte auch den Abschnitt - des Handbuchs). Es gibt keine - rc.conf-Variable, mit der man - Protokollierungsschwellen setzen könnte. Dies kann - lediglich über &man.sysctl.8; geschehen, wobei Sie in - der Datei /etc/sysctl.conf nur - Werte > 1 angeben sollten: - - net.inet.ip.fw.verbose_limit=5 - - - Sollte Ihre Maschinen als Gateway fungieren (also mittels - &man.natd.8; Network Address - Translation (NAT) - durchführen), finden Sie weitere Optionen in - /etc/rc.conf. - - - - Der Befehl IPFW - - ipfw - - Mit &man.ipfw.8; ist es möglich, im laufenden Betrieb - einzelne Regeln hinzuzufügen oder zu entfernen. Problematisch - ist allerdings, dass diese Änderungen verloren gehen, wenn - das System neu gestartet wird. Daher ist es empfehlenswert, - eigene Regeln in einer Datei zu definieren und diese zu laden, um - die Regeln der Firewall im laufenden Betrieb anzupassen. - - &man.ipfw.8; ist jedoch hilfreich, um die Regeln der laufenden - Firewall in der Konsole auszugeben. IPFW erzeugt dynamisch einen - Zähler, der jedes Paket, auf das eine Regel zutrifft, - zählt. Dadurch wird es möglich, die Funktion einer - Regel zu überprüfen. - - Eine sequentielle Liste aller Regeln erhalten Sie mit: - - &prompt.root; ipfw list - - Eine Liste aller Regeln inklusive des letzten Treffers - erhalten Sie durch den folgenden Befehl: - - &prompt.root; ipfw -t list - - Um eine Liste aller Regeln inklusive der Anzahl der Pakete, die - von einer Regel gefiltert wurden, zu erhalten, geben Sie - den folgenden Befehl ein: - - &prompt.root; ipfw -a list - - Eine Liste, die zusätzlich allen dynamischen Regeln - enthält, erhalten Sie mit: - - &prompt.root; ipfw -d list - - Um diese Liste um alle abgelaufenen Regeln zu - erweitern, ädern Sie diesen Befehl wie folgt ab: - - &prompt.root; ipfw -d -e list - - Alle Zähler auf Null zurücksetzen: - - &prompt.root; ipfw zero - - Es ist auch möglich, einen spezifischen Zähler - auszuwählen und zurückzusetzen: + Es existiert keine Variable für + /etc/rc.conf, um die Protokollierung zu + begrenzen. Um die Anzahl der Protokoll-Nachrichten pro + Verbindungsversuch zu begrenzen, legen Sie die Anzahl der + Einträge in /etc/sysctl.conf fest: + + net.inet.ip.fw.verbose_limit=5 + + Nachdem Sie die Änderungen gespeichert haben, können Sie + die Firewall starten. Um auch die Anzahl der + Protokoll-Nachrichten zu konfigurieren, setzen Sie mit + sysctl den gewünschten Wert: - &prompt.root; ipfw zero NUM + &prompt.root; service firewall start +&prompt.root; sysctl net.inet.ip.fw.verbose_limit=5 - IPFW-Regeln - - Ein Regelwerk ist eine Menge von IPFW-Regeln, die in - Abhängigkeit von bestimmten Paketeigenschaften Pakete - entweder passieren lassen oder abweisen. Der - zustandshafte bidirektionale Transfer von Paketen zwischen - Rechnern wird als Sitzung bezeichnet. Das Regelwerk der Firewall - verarbeitet sowohl ankommende Pakete (aus dem öffentlichen - Internet) als auch Pakete, deren Ursprung in einer Antwort des - Systems auf empfangene Pakete liegt. Jeder - TCP/IP-Dienst (wie telnet, www, mail) ist - durch sein Protokoll und durch den priveligierten - (eingehenden) Port definiert. An einen spezifischen Dienst - adressierte Pakete kommen von einer Quelladresse und einem - unprivilegierten (high order) Port. Sie adressieren den - spezifischen Port des Dienstes an der Zieladresse. Alle weiter - oben aufgeführten Parameter (also Ports und Adressen) - können als Selektionskriterium zur Erzeugung von Regeln - genutzt werden, die ein Passieren der Firewall für oder - ein Blockieren von Diensten bewirken. - - - IPFW - - rule processing order - - - + <application>IPFW</application> Regel-Syntax Wenn ein Paket die Firewall betritt, also von der Firewall geprüft und verarbeitet wird, wird die @@ -3673,1099 +3477,907 @@ ipfw add deny out das Aktionsfeld der Regel ausgeführt und die Prüfung des Pakets beendet, nachfolgende Regeln werden also nicht mehr geprüft. Diese Suchmethode wird als erster - Treffer gewinnt bezeichnet. Falls keine Regel auf + Treffer gewinnt bezeichnet. Falls keine Regel auf das betreffende Paket zutrifft, wird die obligatorische - IPFW-Rückfallregel (also Regel 65535) angewendet und das - Paket wird ohne Rückantwort verworfen. - - - Die Prüfung der Regeln wird nach Treffern von mit - count, skipto und - tee parametrisierten Regeln ungeachtet - des erster Treffer gewinnt-Prinzips weiter - fortgeführt. - - - Die Anweisungen basieren auf der Nutzung von Regeln - mit den zustandsgesteuerten Optionen keep, - state, limit, - in und out. Diese - bilden die Basis für die Spezifikation von - Firewallregeln. - - - Bei der Arbeit mit Firewallregeln ist Vorsicht geboten. - Es ist sehr einfach, sich selbst auszuschließen. - - - - Syntax der Firewallregeln - - - IPFW - - rule syntax - - - Mit der in diesem Abschnitt dargestellten Syntax der - Regeln kann ein Standardregelsatz für eine - einschließende Firewall erstellt - werden. Für eine vollständige Beschreibung der - Regelsyntax lesen Sie bitte die Manualpage &man.ipfw.8; - - Regelausdrücke werden von links nach - rechts ausgewertet. Schlüsselwörter - werden in fetter Schrift dargestellt. Manche - Schlüsselworte beinhalten Unteroptionen, die wiederum - selbst aus Schlüsselworten samt Optionen bestehen - können. - - Kommentare sind mit einen führenden Doppelkreuz - (#) ausgezeichnet. Sie können am - Ende einer Regel oder in einzelnen, separaten Zeilen stehen. - Leerzeilen werden ignoriert. - - CMD RULE_NUMBER ACTION LOGGING SELECTION - STATEFUL - - - CMD - - Jede neue Regel benötigt das Präfix - add, um die Regel der internen - Tabelle hinzuzfügen. - - - - RULE_NUMBER - - Zu jeder Regel gehört eine Regelnummer zwischen 1 - und 65535. - - - - ACTION - - Eine Regel kann mit einer der vier folgenden Aktionen - verbunden sein, die ausgeführt werden, wenn ein Paket - den Selektionskriterien der Regel entspricht. - - allow | accept | pass | permit - - Alle diese Aktionen bewirken das Gleiche: Pakete, die - den Selektionskriterien der Regel entsprechen, verlassen den - Regelprüfungsabschnitt der Firewall und die - Regelprüfung wird beendet. - - check-state - - Diese Aktion prüft das Paket gegen die Regeln aus - den dynamischen Regeltabellen. Trifft ein - Selektionskriterium zu, wird die zur dynamischen Regel - gehörende Aktion ausgeführt. Anderenfalls wird - gegen die nächste Regel geprüft. Die - check-state-Regel selbst hat kein - Selektionskriterium. Sollte eine - check-state-Regel im Regelwerk fehlen, - wird gegen die erste keep-state- oder - limit-Regel in den dynamischen Regeln - geprüft. - - deny | drop - - Beide Schlüsselworte bewirken dieselbe Aktion: - Ein Paket, dass die Selektionskriterien der Regel - erfüllt, wird verworfen und die Regelprüfung - wird beendet. - - - - Protokollierung - - log oder - logamount - - Erfüllt ein Paket die Selektionskriterien mit dem - Schlüsselwort log, wird dies von - &man.syslogd.8; mit der Annotation SECURITY protokolliert. - Dies erfolgt allerdings nur, wenn die Anzahl der - protokollierten Pakete der betreffenden Regel die im - logamount-Parameter definierte - Schwelle nicht übersteigt. Ist der Parameter - logamount nicht definiert, wird diese - Grenze aus der sysctl-Variable - net.inet.ip.fw.verbose_limit ermittelt. - Ist einer dieser beiden Werte auf Null - gesetzt, wird unbegrenzt protokolliert. Wurde hingegen - ein definierter Schwellenwert erreicht, wird die - Protokollierung deaktiviert. Um sie zu reaktivieren, - können Sie entweder den Protokoll- oder den - Paketzähler rücksetzen (und zwar über den - Befehl ipfw reset log). - - - Die Protokollierung findet statt, nachdem alle - Paketselektionskriterien geprüft und bevor die - daraus folgende, endgültige Aktion - (accept oder deny) - auf das Paket ausgeführt wird. Die Entscheidung, - welche Regel protokolliert werden soll, bleibt Ihnen - überlassen. - - - - - Selektion - - Die in diesem Abschnitt beschriebenen - Schlüsselwörter beschreiben die Attribute eines - Pakets, durch die bestimmt wird, ob eine Regel auf ein - Paket zutrifft. Die folgenden Attribute dienen der - Bestimmung des Protokolls und müssen in der angegebenen - Reihenfolge verwendet werden. - - udp | tcp | icmp - - Weitere in /etc/protocols - angegebene Protokolle werden ebenfalls erkannt und - können daher verwendet werden, um das Protokoll zu - definieren, gegen das Pakete geprüft werden. Die - Angabe des Protokolls ist verpflichtend. - - from src to dst - - Die Schlüsselwörter from - und to beziehen sich auf IP-Adressen und - definieren sowohl Ursprungs- als auch Zieladresse einer - Datenverbindung. Firewallregeln müssen Parameter - für den Ursprung und das Ziel - enthalten. Das Schlüsselwort any - steht für beliebige IP-Adressen. Bei - me handelt es sich um ein spezielles - Schlüsselwort, das alle IP-Adressen beschreibt, die - einer bestimmten Netzwerkschnittstelle Ihres Systems - (auf dem die Firewall läuft) zugeordnet sind. - Beispiele hierfür sind - from me to any, - from any to me, - from 0.0.0.0/0 to any , - from any to 0.0.0.0/0, - from 0.0.0.0 to any, - from any to 0.0.0.0 oder - from me to 0.0.0.0. IP-Adressen werden - entweder in CIDR-Notation - oder durch Punkte getrennt mit Suffixen - (192.168.2.101/24) für - die Netzmaske oder als einzelne numerische, durch Punkte - getrennte Adressen - (192.168.2.101) angegeben. - Die dafür notwendigen Berechnungen erleichtert der - Port net-mgmt/ipcalc. - Weiterführende Informationen finden sich auf - http://jodies.de/ipcalc. - - port number - - Bei der Verarbeitung von Protokollen wie - TCP oder UDP, die - Portnummern verwenden, muss die Portnummer des - betreffenden Dienstes angegeben werden. Anstelle der - Portnummer kann auch der in der Datei - /etc/services definierte Name des - Dienstes angegeben werden. - - in | out - - Diese Schlüsselwörter beziehen sich auf die - Richtung des Datenverkehrs. Jede Regel - muss eines dieser beiden - Schlüsselwörter enthalten. - - via IF - - Eine Regel mit dem Schlüsselwort - via IF betrifft nur Pakete, die über - die angegebene Schnittstellte geroutet werden (ersetzen Sie - IF durch den Namen Ihrer - Netzwerkschnittstelle). Die Angabe des - Schlüsselwortes via bewirkt, dass - die Netzwerkschnittstelle in die Regelprüfung - aufgenommen wird. - - setup - - Dieses obligatorische Schlüsselwort bezeichnet - die Anforderung des Sitzungsstarts für - TCP-Pakete. - - keep-state - - Dieses obligatorische Schlüsselwort bewirkt, - dass die Firewall eine dynamische Regel erzeugt, die - bidirektionalen Datenverkehr zwischen Ursprungs- und - Zieladresse sowie Ursprungs- und Zielport prüft, - der das gleiche Protokoll verwendet. - - limit {src-addr | src-port | dst-addr | - dst-port} - - Wird das Schlüsselwort limit - verwendet, sind nur N durch diese - Regel definierte Verbindungen erlaubt. Es können - dabei ein oder mehrere Ursprungs- und Zieladressen sowie - ein oder mehrere Ports angegeben werden. Die - Schlüsselwörter limit - und keep-state können nicht in - derselben Regel verwendet werden. Die Option - limit bewirkt dieselbe Zustandsteuerung - wie die Option keep-state, erweitert - diese jedoch um eigene Regeln. - - - - - Optionen für zustandsgesteuerte Regeln - - - IPFW - - stateful filtering - - - - - Eine zustandsgesteuerte Filterung behandelt Datenverkehr - als einen bidirektionalen Austausch von Datenpaketen (die eine - sogenannte Konversation innerhalb einer Sitzung darstellen). - Sie ist in der Lage, zu bestimmen, ob die Konversation von - originärem Sender und Empfänger gültigen - Prozeduren des bidirektionalen Pakettausches entspricht. - Pakete, die dem Muster von Konversationen in Sitzungen nicht - folgen, werden automatisch als Betrüger - abgelehnt. - - Die check-state-Option wird verwendet, - wo genau innerhalb des IPFW-Regelwerks die Prüfung - dynamischer Regeln stattfinden soll. Erfüllt ein - Datenpaket die Selektionskriterien der Regel, verlässt - das Paket die Firewall. Gleichzeitig wird eine neue - dynamische Regel erzeugt, die für das nächste Paket - der bidirektionalen Konversation in der Sitzung vorgesehen - ist. Falls ein Paket die (dyanmische) Regel nicht erfüllt, - wird es gegen die nächste Regel im Regelwerk - geprüft. - - Dynamische Regeln sind für einem sogenannten - SYN-flood-Angriff anfällig, - bei dem eine riesige Anzahl schwebender - dynamischer Regelprüfungungsinstanzen erzeugt wird. Um - einem solchen Angriff zu begegnen, wurde in &os; die neue - Option limit geschaffen. Diese Option - begrenzt die Anzahl der gleichzeitig möglichen - Sitzungen und/oder Konversationen. Es handelt sich dabei um - einen Zähler, der die Anzahl von Instanzen dynamischer - Regelprüfungen in Abhängigkeit von einer eindeutigen - Urspungs- und Quelladresskombination zählt. - Übersteigt der Zähler den durch - limit definierten Schwellenwert, wird - das Paket verworfen. - - - - Protokollierung von Firewall-Nachrichten - - - IPFW - - logging - - - Die Vorteile einer Protokollierung sind offensichtlich. - Sie ermöglicht nach Aktivierung von Regeln zu - untersuchen, welche Pakete verworfen wurden, von wo diese - stammen und für welche Systeme sie bestimmt waren. Diese - Informationen sind sehr nützlich bei der Erkennung - eventueller Angriffe sowie bei deren Abwehr. - - IPFW protokolliert nur jene Regeln, für die ein - Administrator dies explizit aktiviert. Ein Aktivieren - der Protolllfunktion führt also nicht dazu, dass - automatisch alle Regeln protokolliert werden. Vielmehr - entscheidet der Administrator der Firewall, welche Regeln - protokolliert werden sollen. Dazu wird die Option - log für diese Regeln aktiviert. Im - Regelfall werden nur deny-Regeln - protokolliert, beispielsweise die deny-Regel - für eintreffende ICMP-Nachrichten. - Üblicherweise wird die ipfw default deny - everything-Regel doppelt angelegt. Einmal mit und - einmal ohne aktivierte Option log. Dadurch - erhält man eine Auflistung aller Pakete, auf die keine - Regel zutraf. - - Protokollierung ist allerdings ein zweischneidiges - Schwert, bei mangelnder Vorsicht wird man mit einer enormen - Flut von Protokollierungsdaten förmlich - überschwemmt und belastet - zusätzlich die Festplatte des Systems durch rasch - wachsende Protokolldateien. DoS-Angriffe, die auf diese - Art und Weise Festplatten an die Kapazitätsgrenze treiben, - gehören zu den ältesten Angriffen überhaupt. - Außerdem werden Protokollnachrichten nicht nur an - &man.syslogd.8; geschickt, sondern auch auf einem - root-Terminal angezeigt. - - Die Kerneloption - IPFIREWALL_VERBOSE_LIMIT=5 begrenzt die - Anzahl gleicher Nachrichten an &man.syslogd.8; für - eine gegebene Regel auf fünf Nachrichten. Ist diese - Option im Kernel aktiviert, wird nach Erreichen der - festgelegten Anzahl die Protokollierung einer (sich - unmittelbar hintereinander wiederholenden) Nachricht auf den - angegebenen Schwellenwert begrenzt, da beispielsweise die - Speicherung von 200 gleichen Protokollnachrichten durch - &man.syslogd.8; sinnlos ist. Daher werden durch diesen - nur füf derartige Nachrichten protokolliert. Alle - weiteren derartigen Nachrichten werden nur gezählt und - deren Gesamtzahl wird schließlich von &man.syslogd.8; - durch folgenden Ausdruck ausgegeben: - - last message repeated 45 times - - Alle protokollierten Nachrichten für Datenpakete - werden in der Voreinstellung in die Datei - /var/log/security (die in der Datei - /etc/syslog.conf definiert wird), - geschrieben. - + IPFW-Rückfallregel mit der Nummer + 65535 angewendet und das Paket wird ohne Rückantwort + verworfen. Wenn das Paket jedoch einer Regel mit dem + Schlüsselwort count, + skipto oder tee + entspricht, wird die Prüfung des Pakets weiter + fortgeführt. Weitere Details darüber, wie diese + Schlüsselwörter die Regelverarbeitung beeinflussen, finden Sie + in &man.ipfw.8;. - - Skripte zur Regeldefinition erstellen - - Die meisten fortgeschrittenen IPFW-Nutzer erzeugen eine - Datei, die die Regeln für die Firewall enthält, - um diese als Skript ausführen zu können. - Der Hauptvorteil einer derartigen Konfiguration ist es, dass - dadurch mehrere Regeln gleichzeitig geändert und - (re-)aktiviert werden können, ohne dass dazu das System - neu gestartet werden muss. Dies ist auch beim Testen von - Regeländerungen sehr hilfreich. Weil es sich bei der - Datei, in der die Regeln gespeichert sind, um ein Skript - handelt, ist es auch möglich, häufig verwendete - Werte/Befehle durch Aliase zu ersetzen und diese so in mehreren - Regeln zu nutzen. Diese Funktion wird im folgenden Beispiel - näher vorgestellt. - - Die Syntax des folgenden Skripts entspricht der Syntax von - &man.sh.1;, &man.csh.1; sowie &man.tcsh.1;. Felder, die - symbolisch substituiert werden, haben das Präfix - $ (das Dollarzeichen). Symbolische Felder haben dieses - $-Praefix nicht. Der Wert, mit dem das symbolische - Feld belegt wird, muss in - doppelten Anführungszeichen - eingeschlossen sein. - - Beginnen Sie Ihre Regeldatei wie folgt: - - ############### start of example ipfw rules script ############# -# -ipfw -q -f flush # Delete all rules -# Set defaults -oif="tun0" # out interface -odns="192.0.2.11" # ISP's DNS server IP address -cmd="ipfw -q add " # build rule prefix -ks="keep-state" # just too lazy to key this each time -$cmd 00500 check-state -$cmd 00502 deny all from any to any frag -$cmd 00501 deny tcp from any to any established -$cmd 00600 allow tcp from any to any 80 out via $oif setup $ks -$cmd 00610 allow tcp from any to $odns 53 out via $oif setup $ks -$cmd 00611 allow udp from any to $odns 53 out via $oif $ks -################### End of example ipfw rules script ############ - - Die Regeln in diesem Beispiel sind nicht wichtig. Wichtig - ist es, zu zeigen, wie die symbolische Substitution innerhalb - der Regeln verwendet wird. - - Wurde dieses Beispiel in der Datei - /etc/ipfw.rules gespeichert, so können - alle Regeln durch die Ausführung des folgenden Befehls - neu geladen werden: - - &prompt.root; sh /etc/ipfw.rules + + IPFW + Regel-Syntax + - Statt /etc/ipfw.rules können Sie - auch einen beliebigen anderen Namen und/oder Speicherort - verwenden. + Bei der Erstellung der + IPFW-Regeln müssen die + Schlüsselwörter in der folgenden Reihenfolge geschrieben + werden. Einige Schlüsselwörter müssen zwingend angegeben + werden, während andere optional sind. Die Wörter in + Großbuchstaben repräsentieren Variablen und die Wörter in + Kleinbuchstaben müssen den Variablen vorangestellt + werden. Das Zeichen # wird benutzt, um + einen Kommentar einzuleiten und kann am Ende einer Regel oder + in einer eigenen Zeile stehen. Leerzeilen werden + ignoriert. + + CMD RULE_NUMBER set SET_NUMBER ACTION log + LOG_AMOUNT PROTO from SRC SRC_PORT to DST DST_PORT + OPTIONS + + Dieser Abschnitt bietet einen Überblick über diese + Schlüsselwörter und deren Optionen. Es ist keine vollständige + Liste aller verfügbaren Optionen. Eine vollständige + Beschreibung der Regel-Syntax, die Sie verwenden können um + IPFW-Regeln zu erstellen, finden + Sie in &man.ipfw.8;. + + + + CMD + + Jede Regel muss mit ipfw add + beginnen. + + - Alternativ könnten Sie die einzelnen Befehle dieses - Skripts auch manuell starten: + + RULE_NUMBER + + Jede Regel gehört zu einer Nummer zwischen + 1 und 65534. Die + Nummer wird verwendet, um die Reihenfolge der + Regelverarbeitung zu kennzeichnen. Es ist möglich, dass + mehrere Regeln dieselbe Nummer haben. In diesem Fall + werden sie entsprechend der Reihenfolge angewendet, in + der sie aufgenommen wurden. + + - &prompt.root; ipfw -q -f flush -&prompt.root; ipfw -q add check-state -&prompt.root; ipfw -q add deny all from any to any frag -&prompt.root; ipfw -q add deny tcp from any to any established -&prompt.root; ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state -&prompt.root; ipfw -q add allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state -&prompt.root; ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-state - + + SET_NUMBER + + Jede Regel ist einer Set-Nummer + zwischen 0 und 31 + zugeordnet. Sets können einzeln aktiviert oder + deaktiviert werden. Dies macht es möglich, eine Reihe + von Regeln schnell hinzuzufügen oder zu löschen. Wenn + SET_NUMBER nicht angegeben ist, wird + die Regel zu Set 0 + hinzugefügt. + + - - Zustandsgesteuertes Regelwerk + *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***