Date: Mon, 11 Jul 2016 12:26:52 +0000 (UTC) From: Bjoern Heidotting <bhd@FreeBSD.org> 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 Message-ID: <201607111226.u6BCQqqd080610@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 <title>IPFW</title> <indexterm> - <primary>firewall</primary> + <primary>Firewall</primary> <secondary>IPFW</secondary> </indexterm> - <para>Die <emphasis>IPFIREWALL</emphasis> - (<acronym>IPFW</acronym>) 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 <quote>Einfache - Zustandsgesteuerte Logik</quote>.</para> - - <para>Die Standardinstallation von IPFW enthält - einen beispielhaften Regelsatz - (<filename>/etc/rc.firewall</filename> und - <filename>/etc/rc.firewall6</filename>). 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.</para> - - <para>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.</para> - - <para>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 (<literal>divert</literal>), die - auch Network Address Translation (<acronym>NAT</acronym>) - unterstützt. Die restlichen Bestandteile dienen verschiedenen - fortgeschrittenen Zwecken. Der - <foreignphrase>Traffic Shaper</foreignphrase> &man.dummynet.4; - gestattet es beispielsweise, den Datenverkehr zu lenken, während - die <literal>fwd</literal>-Regel zum Weiterleiten von Datenpaketen - dient. Komplettiert wird IPFW durch Funktionen zum - Überbrücken von Netzwerkgrenzen - (<foreignphrase>Bridge</foreignphrase>-Funktion) sowie - <foreignphrase>ipstealth</foreignphrase>, das es gestattet, - bridging-Funktionen durchzuführen, ohne dabei das TTL-Feld im - IP-Paket zu erhöhen. IPFW unterstützt IPv4 und IPv6.</para> + <para><application>IPFW</application> ist eine + <foreignphrase>Stateful-Firewall</foreignphrase> + für &os;, die sowohl <acronym>IPv4</acronym> als auch + <acronym>IPv6</acronym> unterstützt. Die Firewall setzt sich + aus mehreren Komponenten zusammen: dem Kernel Firewall + Filter-Prozessor mit integriertem Paket-Accounting, + Protokollfunktionen, <acronym>NAT</acronym>, dem + &man.dummynet.4; <foreignphrase>Traffic-Shaper</foreignphrase>, + sowie Weiterleitungs-, Bridge- und ipstealth-Funktionen.</para> + + <para>&os; enthält mit <filename>/etc/rc.firewall</filename> ein + Beispielregelwerk, welches mehrere Firewall-Typen für + gebräuchliche Szenarien definiert und unerfahrene Anwender + dabei unterstützen soll, ein geeignetes Regelwerk zu erstellen. + <application>IPFW</application> besitzt eine leistungsstarke + Syntax, mit der erfahrene Benutzer ihre eigenen Regeln + anfertigen können, um den Sicherheitsanforderungen der + jeweiligen Umgebung gerecht zu werden.</para> + + <para>Diser Abschnitt beschreibt, wie + <application>IPFW</application> aktiviert wird und bietet einen + Überblick über die Regelsyntax. Zudem werden mehrere Regelsätze + für gebräuchliche Konfigurationsszenarien vorgestellt.</para> <sect2 xml:id="firewalls-ipfw-enable"> - <title>IPFW aktivieren</title> + <title><application>IPFW</application> aktivieren</title> <indexterm> - <primary>IPFW</primary> - + <primary><application>IPFW</application></primary> <secondary>aktivieren</secondary> </indexterm> - <para>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 - <filename>rc.conf</filename> die Option - <varname>firewall_enable="YES"</varname> gesetzt wird. Es ist - daher nicht notwendig, IPFW statisch in den Kernel zu - kompilieren.</para> - - <para>Während des Systemstart wird bei gesetzter Option - <varname>firewall_enable="YES"</varname> (in der Datei - <filename>rc.conf</filename>) folgende Nachricht ausgegeben:</para> - - <screen>ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabled</screen> - - <para>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 <filename>/etc/sysctl.conf</filename> - hinzuzufügen:</para> - - <programlisting>net.inet.ip.fw.verbose=1 -net.inet.ip.fw.verbose_limit=5</programlisting> - </sect2> - - <sect2 xml:id="firewalls-ipfw-kernel"> - <title>Kerneloptionen</title> + <para>Das &os; Basissystem enthält für + <application>IPFW</application> ein ladbares Kernelmodul, was + bedeutet, dass kein angepasster Kernel benötigt wird, um + <application>IPFW</application> zu benutzen.</para> <indexterm> <primary>Kerneloptionen</primary> - <secondary>IPFIREWALL</secondary> </indexterm> <indexterm> <primary>Kerneloptionen</primary> - <secondary>IPFIREWALL_VERBOSE</secondary> </indexterm> <indexterm> <primary>Kerneloptionen</primary> - <secondary>IPFIREWALL_VERBOSE_LIMIT</secondary> </indexterm> <indexterm> - <primary>IPFW</primary> - + <primary><application>IPFW</application></primary> <secondary>Kerneloptionen</secondary> </indexterm> - <para>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.</para> - - <programlisting>options IPFIREWALL</programlisting> - - <para>Diese Option aktiviert IPFW als Bestandteil des - Kernels.</para> - - <programlisting>options IPFIREWALL_VERBOSE</programlisting> - - <para>Diese Option aktiviert die Funktion, alle Pakete, die durch - IPFW verarbeitet werden und bei denen das Schlüsselwort - <literal>log</literal> gesetzt ist, zu protokollieren.</para> - - <programlisting>options IPFIREWALL_VERBOSE_LIMIT=5</programlisting> - - <para>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.</para> - - <indexterm> - <primary>Kerneloptionen</primary> - - <secondary>IPFIREWALL_DEFAULT_TO_ACCEPT</secondary> - </indexterm> - - <programlisting>options IPFIREWALL_DEFAULT_TO_ACCEPT</programlisting> - - <para>Diese Option erlaubt allen Paketen, die Firewall zu passieren. - Diese Einstellung kann beispielsweise bei der ersten Konfiguration - der Firewall hilfreich sein.</para> - - <indexterm> - <primary>Kerneloptionen</primary> - - <secondary>IPDIVERT</secondary> - </indexterm> - - <programlisting>options IPDIVERT</programlisting> - - <para>Dies aktiviert die Nutzung der - <acronym>NAT</acronym>-Funktionalität.</para> - - <note> - <para>Die Firewall wird alle eingehenden oder ausgehenden - Pakete blockieren, wenn entweder die Kernel-Option - <literal>IPFIREWALL_DEFAULT_TO_ACCEPT</literal> fehlt oder - aber keine Regel, die die betreffenden Verbindungen explizit - gestattet, existiert. Dies enstpricht im Wesentlichen der - Einstellung <quote>default to deny</quote></para> - </note> - </sect2> - - <sect2 xml:id="firewalls-ipfw-rc"> - <title>Optionen in <filename>/etc/rc.conf</filename></title> - - <para>Der Eintrag</para> + <para>Wenn Sie eine statische Unterstützung für + <application>IPFW</application> in den Kernel kompilieren + wollen, lesen Sie <xref linkend="kernelconfig"/>. Folgende + Optionen können in der Kernelkonfigurationsdatei verwendet + werden:</para> + + <programlisting>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</programlisting> + + <para>Um <application>IPFW</application> beim Systemstart zu + aktivieren, fügen Sie folgende Zeile in + <filename>/etc/rc.conf</filename> ein:</para> <programlisting>firewall_enable="YES"</programlisting> - <para>aktiviert die Firewall während des Systemstarts.</para> - - <para>Die Auswahl einer für &os; verfügbaren Firewall - erfolgt durch einen entsprechenden Eintrag in der Datei - <filename>/etc/rc.firewall</filename>, durch den der Firewalltyp - festgelegt wird.</para> + <para>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:</para> <programlisting>firewall_type="open"</programlisting> - <para>Konkret sind folgende Einträge erlaubt:</para> + <para>Folgende Profile stehen zur Verfügung:</para> <itemizedlist> <listitem> - <para><literal>open</literal> — gestattet jeglichen - Datenverkehr</para> + <para><literal>open</literal>: gestattet jeglichen + Datenverkehr.</para> </listitem> <listitem> - <para><literal>client</literal> — schützt nur die - jeweilige Maschine (Client/Mandant)</para> + <para><literal>client</literal>: schützt lediglich diesen + Rechner.</para> </listitem> <listitem> - <para><literal>simple</literal> — schützt das - gesamte Netzwerk</para> + <para><literal>simple</literal>: schützt das gesamte + Netzwerk.</para> </listitem> <listitem> - <para><literal>closed</literal> — unterbindet - jeglichen IP-Datenverkehr mit Ausnahme des Verkehrs - über die Loopback-Schnittstelle.</para> + <para><literal>closed</literal>: blockiert den gesamten + <acronym>IP</acronym>-Datenverkehr, mit Ausnahme des + Verkehrs über die Loopback-Schnittstelle.</para> </listitem> <listitem> - <para><literal>UNKNOWN</literal> — deaktiviert das - Laden von Firewallregeln</para> + <para><literal>workstation</literal>: schützt lediglich + diesen Rechner und verwendet zustandsorientierte + Regeln.</para> </listitem> <listitem> - <para><filename>filename</filename> - — absoluter Pfad zu einer Datei, in der die - Firewallregeln definiert sind</para> + <para><literal>UNKNOWN</literal>: deaktiviert das Laden von + Firewallregeln.</para> </listitem> - </itemizedlist> - - <para>Angepasste Regeln für &man.ipfw.8; können auf zwei - verschiedene Arten geladen werden. Einerseits kann man durch die - Variable <varname>firewall_type</varname> den absoluten Pfad - der Datei angeben, welche die <emphasis>Firewallregeln</emphasis> - (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:</para> - - <programlisting>add deny in add deny out</programlisting> - - <para>Andererseits ist es möglich, den Wert der - <varname>firewall_type</varname>-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:</para> - <programlisting>#!/bin/sh - -ipfw -q flush + <listitem> + <para><filename><replaceable>filename</replaceable></filename>: + absoluter Pfad zu einer Datei, in der die Firewallregeln + definiert sind.</para> + </listitem> + </itemizedlist> -ipfw add deny in -ipfw add deny out</programlisting> + <para>Wenn Sie <literal>firewall_type</literal> auf + <literal>client</literal> oder <literal>simple</literal> + setzen, müssen Sie die voreingestellten Regeln in + <filename>/etc/rc.firewall</filename> anpassen, damit sie + der Konfiguration des Systems entsprechen.</para> + + <para>Beachten Sie, dass das Profil <literal>filename</literal> + verwendet wird, um ein benutzerdefiniertes Regelwerk zu + laden.</para> + + <para>Eine alternative Möglichkeit, um ein benutzerdefiniertes + Regelwerk zu laden, bietet die Variable + <literal>firewall_script</literal>. Setzen Sie die Variable + auf den absoluten Pfad eines + <emphasis>ausführbaren Skripts</emphasis>, welches die Befehle + für <application>IPFW</application> enthält. Die Beispiele in + diesem Abschnitt gehen davon aus, dass + <literal>firewall_script</literal> auf + <filename>/etc/ipfw.rules</filename> gesetzt ist.</para> - <note> - <para>Wenn die Variable <varname>firewall_type</varname> - entweder auf <literal>client</literal> oder - <literal>simple</literal> gesetzt ist, sollten die - Standardregeln in der Datei - <filename>/etc/rc.firewall</filename> geprüft und an die - Konfiguration der gegebenen Maschine angepasst werden. Beachten - Sie dabei bitte, dass die Beispiele dieses Kapitels davon - ausgehen, dass das <varname>firewall_script</varname> auf - <filename>/etc/ipfw.rules</filename> gesetzt ist.</para> - </note> + <programlisting>firewall_script="/etc/ipfw.rules"</programlisting> - <para>Das Logging wird durch folgenden Eintrag aktiviert:</para> + <para>Die Protokollierung wird mit diesem Eintrag + aktiviert:</para> <programlisting>firewall_logging="YES"</programlisting> - <warning> - <para>Die Variable <varname>firewall_logging</varname> definiert - lediglich die sysctl-Variable als - <varname>net.inet.ip.fw.verbose = 1</varname> (lesen Sie dazu - bitte auch den Abschnitt <xref linkend="firewalls-ipfw-enable"/> - des Handbuchs). Es gibt keine - <filename>rc.conf</filename>-Variable, mit der man - Protokollierungsschwellen setzen könnte. Dies kann - lediglich über &man.sysctl.8; geschehen, wobei Sie in - der Datei <filename>/etc/sysctl.conf</filename> nur - Werte > 1 angeben sollten:</para> - - <programlisting>net.inet.ip.fw.verbose_limit=5</programlisting> - </warning> - - <para>Sollte Ihre Maschinen als Gateway fungieren (also mittels - &man.natd.8; <foreignphrase>Network Address - Translation</foreignphrase> (<acronym>NAT</acronym>) - durchführen), finden Sie weitere Optionen in - <filename>/etc/rc.conf</filename>.</para> - </sect2> - - <sect2 xml:id="firewalls-ipfw-cmd"> - <title>Der Befehl IPFW</title> - - <indexterm><primary><command>ipfw</command></primary></indexterm> - - <para>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.</para> - - <para>&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.</para> - - <para>Eine sequentielle Liste aller Regeln erhalten Sie mit:</para> - - <screen>&prompt.root; <userinput>ipfw list</userinput></screen> - - <para>Eine Liste aller Regeln inklusive des letzten Treffers - erhalten Sie durch den folgenden Befehl:</para> - - <screen>&prompt.root; <userinput>ipfw -t list</userinput></screen> - - <para>Um eine Liste aller Regeln inklusive der Anzahl der Pakete, die - von einer Regel gefiltert wurden, zu erhalten, geben Sie - den folgenden Befehl ein:</para> - - <screen>&prompt.root; <userinput>ipfw -a list</userinput></screen> - - <para>Eine Liste, die zusätzlich allen dynamischen Regeln - enthält, erhalten Sie mit:</para> - - <screen>&prompt.root; <userinput>ipfw -d list</userinput></screen> - - <para>Um diese Liste um alle <quote>abgelaufenen</quote> Regeln zu - erweitern, ädern Sie diesen Befehl wie folgt ab:</para> - - <screen>&prompt.root; <userinput>ipfw -d -e list</userinput></screen> - - <para>Alle Zähler auf Null zurücksetzen:</para> - - <screen>&prompt.root; <userinput>ipfw zero</userinput></screen> - - <para>Es ist auch möglich, einen spezifischen Zähler - auszuwählen und zurückzusetzen:</para> + <para>Es existiert keine Variable für + <filename>/etc/rc.conf</filename>, um die Protokollierung zu + begrenzen. Um die Anzahl der Protokoll-Nachrichten pro + Verbindungsversuch zu begrenzen, legen Sie die Anzahl der + Einträge in <filename>/etc/sysctl.conf</filename> fest:</para> + + <programlisting>net.inet.ip.fw.verbose_limit=5</programlisting> + + <para>Nachdem Sie die Änderungen gespeichert haben, können Sie + die Firewall starten. Um auch die Anzahl der + Protokoll-Nachrichten zu konfigurieren, setzen Sie mit + <command>sysctl</command> den gewünschten Wert:</para> - <screen>&prompt.root; <userinput>ipfw zero NUM</userinput></screen> + <screen>&prompt.root; <userinput>service firewall start</userinput> +&prompt.root; <userinput>sysctl net.inet.ip.fw.verbose_limit=<replaceable>5</replaceable></userinput></screen> </sect2> <sect2 xml:id="firewalls-ipfw-rules"> - <title>IPFW-Regeln</title> - - <para>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 - <acronym>TCP/IP</acronym>-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.</para> - - <indexterm> - <primary>IPFW</primary> - - <secondary>rule processing order</secondary> - </indexterm> - - <!-- Needs rewording to include note below --> + <title><application>IPFW</application> Regel-Syntax</title> <para>Wenn ein Paket die Firewall <quote>betritt</quote>, also von der Firewall geprüft und verarbeitet wird, wird die @@ -3673,1099 +3477,907 @@ ipfw add deny out</programlisting> 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 <quote>erster - Treffer gewinnt</quote> bezeichnet. Falls keine Regel auf + Treffer gewinnt</quote> 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.</para> - - <note> - <para>Die Prüfung der Regeln wird nach Treffern von mit - <literal>count</literal>, <literal>skipto</literal> und - <literal>tee</literal> parametrisierten Regeln ungeachtet - des <quote>erster Treffer gewinnt</quote>-Prinzips weiter - fortgeführt.</para> - </note> - - <para>Die Anweisungen basieren auf der Nutzung von Regeln - mit den zustandsgesteuerten Optionen <literal>keep</literal>, - <literal>state</literal>, <literal>limit</literal>, - <literal>in</literal> und <literal>out</literal>. Diese - bilden die Basis für die Spezifikation von - Firewallregeln.</para> - - <warning> - <para>Bei der Arbeit mit Firewallregeln ist Vorsicht geboten. - Es ist sehr einfach, sich selbst auszuschließen.</para> - </warning> - - <sect3 xml:id="firewalls-ipfw-rules-syntax"> - <title>Syntax der Firewallregeln</title> - - <indexterm> - <primary>IPFW</primary> - - <secondary>rule syntax</secondary> - </indexterm> - - <para>Mit der in diesem Abschnitt dargestellten Syntax der - Regeln kann ein Standardregelsatz für eine - <quote>einschließende</quote> Firewall erstellt - werden. Für eine vollständige Beschreibung der - Regelsyntax lesen Sie bitte die Manualpage &man.ipfw.8;</para> - - <para>Regelausdrücke werden <quote>von links nach - rechts</quote> 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.</para> - - <para>Kommentare sind mit einen führenden Doppelkreuz - (<literal>#</literal>) ausgezeichnet. Sie können am - Ende einer Regel oder in einzelnen, separaten Zeilen stehen. - Leerzeilen werden ignoriert.</para> - - <para><replaceable>CMD RULE_NUMBER ACTION LOGGING SELECTION - STATEFUL</replaceable></para> - - <sect4> - <title>CMD</title> - - <para>Jede neue Regel benötigt das Präfix - <literal>add</literal>, um die Regel der internen - Tabelle hinzuzfügen.</para> - </sect4> - - <sect4> - <title>RULE_NUMBER</title> - - <para>Zu jeder Regel gehört eine Regelnummer zwischen 1 - und 65535.</para> - </sect4> - - <sect4> - <title>ACTION</title> - - <para>Eine Regel kann mit einer der vier folgenden Aktionen - verbunden sein, die ausgeführt werden, wenn ein Paket - den Selektionskriterien der Regel entspricht.</para> - - <para><parameter>allow | accept | pass | permit</parameter></para> - - <para>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.</para> - - <para><parameter>check-state</parameter></para> - - <para>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 - <literal>check-state</literal>-Regel selbst hat kein - Selektionskriterium. Sollte eine - <literal>check-state</literal>-Regel im Regelwerk fehlen, - wird gegen die erste <literal>keep-state</literal>- oder - <literal>limit</literal>-Regel in den dynamischen Regeln - geprüft.</para> - - <para><parameter>deny | drop</parameter></para> - - <para>Beide Schlüsselworte bewirken dieselbe Aktion: - Ein Paket, dass die Selektionskriterien der Regel - erfüllt, wird verworfen und die Regelprüfung - wird beendet.</para> - </sect4> - - <sect4> - <title>Protokollierung</title> - - <para><parameter>log</parameter> oder - <parameter>logamount</parameter></para> - - <para>Erfüllt ein Paket die Selektionskriterien mit dem - Schlüsselwort <literal>log</literal>, 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 - <literal>logamount</literal>-Parameter definierte - Schwelle nicht übersteigt. Ist der Parameter - <literal>logamount</literal> nicht definiert, wird diese - Grenze aus der <command>sysctl</command>-Variable - <varname>net.inet.ip.fw.verbose_limit</varname> ermittelt. - Ist einer dieser beiden Werte auf <quote>Null</quote> - 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 <command>ipfw reset log</command>).</para> - - <note> - <para>Die Protokollierung findet statt, nachdem alle - Paketselektionskriterien geprüft und bevor die - daraus folgende, endgültige Aktion - (<literal>accept</literal> oder <literal>deny</literal>) - auf das Paket ausgeführt wird. Die Entscheidung, - welche Regel protokolliert werden soll, bleibt Ihnen - überlassen.</para> - </note> - </sect4> - - <sect4> - <title>Selektion</title> - - <para>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.</para> - - <para><parameter>udp | tcp | icmp</parameter></para> - - <para>Weitere in <filename>/etc/protocols</filename> - 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.</para> - - <para><parameter>from src to dst</parameter></para> - - <para>Die Schlüsselwörter <literal>from</literal> - und <literal>to</literal> beziehen sich auf IP-Adressen und - definieren sowohl Ursprungs- als auch Zieladresse einer - Datenverbindung. Firewallregeln müssen Parameter - für den Ursprung <emphasis>und</emphasis> das Ziel - enthalten. Das Schlüsselwort <literal>any</literal> - steht für beliebige IP-Adressen. Bei - <literal>me</literal> 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 - <literal>from me to any</literal>, - <literal>from any to me</literal>, - <literal>from 0.0.0.0/0 to any </literal>, - <literal>from any to 0.0.0.0/0</literal>, - <literal>from 0.0.0.0 to any</literal>, - <literal>from any to 0.0.0.0</literal> oder - <literal>from me to 0.0.0.0</literal>. IP-Adressen werden - entweder in <acronym>CIDR</acronym>-Notation - oder durch Punkte getrennt mit Suffixen - (<systemitem class="ipaddress">192.168.2.101/24</systemitem>) für - die Netzmaske oder als einzelne numerische, durch Punkte - getrennte Adressen - (<systemitem class="ipaddress">192.168.2.101</systemitem>) angegeben. - Die dafür notwendigen Berechnungen erleichtert der - Port <package>net-mgmt/ipcalc</package>. - Weiterführende Informationen finden sich auf - <uri xlink:href="http://jodies.de/ipcalc">http://jodies.de/ipcalc</uri>.</para> - - <para><parameter>port number</parameter></para> - - <para>Bei der Verarbeitung von Protokollen wie - <acronym>TCP</acronym> oder <acronym>UDP</acronym>, die - Portnummern verwenden, muss die Portnummer des - betreffenden Dienstes angegeben werden. Anstelle der - Portnummer kann auch der in der Datei - <filename>/etc/services</filename> definierte Name des - Dienstes angegeben werden.</para> - - <para><parameter>in | out</parameter></para> - - <para>Diese Schlüsselwörter beziehen sich auf die - Richtung des Datenverkehrs. Jede Regel - <emphasis>muss</emphasis> eines dieser beiden - Schlüsselwörter enthalten.</para> - - <para><parameter>via IF</parameter></para> - - <para>Eine Regel mit dem Schlüsselwort - <literal>via IF</literal> betrifft nur Pakete, die über - die angegebene Schnittstellte geroutet werden (ersetzen Sie - <literal>IF</literal> durch den Namen Ihrer - Netzwerkschnittstelle). Die Angabe des - Schlüsselwortes <literal>via</literal> bewirkt, dass - die Netzwerkschnittstelle in die Regelprüfung - aufgenommen wird.</para> - - <para><parameter>setup</parameter></para> - - <para>Dieses obligatorische Schlüsselwort bezeichnet - die Anforderung des Sitzungsstarts für - <acronym>TCP</acronym>-Pakete.</para> - - <para><parameter>keep-state</parameter></para> - - <para>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.</para> - - <para><parameter>limit {src-addr | src-port | dst-addr | - dst-port}</parameter></para> - - <para>Wird das Schlüsselwort <literal>limit</literal> - verwendet, sind nur <literal>N</literal> 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 <literal>limit</literal> - und <literal>keep-state</literal> können nicht in - derselben Regel verwendet werden. Die Option - <literal>limit</literal> bewirkt dieselbe Zustandsteuerung - wie die Option <literal>keep-state</literal>, erweitert - diese jedoch um eigene Regeln.</para> - </sect4> - </sect3> - - <sect3> - <title>Optionen für zustandsgesteuerte Regeln</title> - - <indexterm> - <primary>IPFW</primary> - - <secondary>stateful filtering</secondary> - </indexterm> - - <!-- XXX: duplicated --> - - <para>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 <quote>Betrüger</quote> - abgelehnt.</para> - - <para>Die <literal>check-state</literal>-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.</para> - - <para>Dynamische Regeln sind für einem sogenannten - <foreignphrase>SYN-flood</foreignphrase>-Angriff anfällig, - bei dem eine riesige Anzahl <quote>schwebender</quote> - dynamischer Regelprüfungungsinstanzen erzeugt wird. Um - einem solchen Angriff zu begegnen, wurde in &os; die neue - Option <literal>limit</literal> 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 - <literal>limit</literal> definierten Schwellenwert, wird - das Paket verworfen.</para> - </sect3> - - <sect3> - <title>Protokollierung von Firewall-Nachrichten</title> - - <indexterm> - <primary>IPFW</primary> - - <secondary>logging</secondary> - </indexterm> - - <para>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.</para> - - <para>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 - <literal>log</literal> für diese Regeln aktiviert. Im - Regelfall werden nur <literal>deny</literal>-Regeln - protokolliert, beispielsweise die <literal>deny</literal>-Regel - für eintreffende <acronym>ICMP</acronym>-Nachrichten. - Üblicherweise wird die <quote>ipfw default deny - everything</quote>-Regel doppelt angelegt. Einmal mit und - einmal ohne aktivierte Option <literal>log</literal>. Dadurch - erhält man eine Auflistung aller Pakete, auf die keine - Regel zutraf.</para> - - <para>Protokollierung ist allerdings ein zweischneidiges - Schwert, bei mangelnder Vorsicht wird man mit einer enormen - Flut von Protokollierungsdaten förmlich - <emphasis>überschwemmt</emphasis> 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.</para> - - <para>Die Kerneloption - <varname>IPFIREWALL_VERBOSE_LIMIT=5</varname> 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:</para> - - <programlisting>last message repeated 45 times</programlisting> - - <para>Alle protokollierten Nachrichten für Datenpakete - werden in der Voreinstellung in die Datei - <filename>/var/log/security</filename> (die in der Datei - <filename>/etc/syslog.conf</filename> definiert wird), - geschrieben.</para> - </sect3> + <application>IPFW</application>-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 <literal>count</literal>, + <literal>skipto</literal> oder <literal>tee</literal> + 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;.</para> - <sect3 xml:id="Firewalls-ipfw-rules-script"> - <title>Skripte zur Regeldefinition erstellen</title> - - <para>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.</para> - - <para>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 - <quote>doppelten Anführungszeichen</quote> - eingeschlossen sein.</para> - - <para>Beginnen Sie Ihre Regeldatei wie folgt:</para> - - <programlisting>############### 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 ############</programlisting> - - <para>Die Regeln in diesem Beispiel sind nicht wichtig. Wichtig - ist es, zu zeigen, wie die symbolische Substitution innerhalb - der Regeln verwendet wird.</para> - - <para>Wurde dieses Beispiel in der Datei - <filename>/etc/ipfw.rules</filename> gespeichert, so können - alle Regeln durch die Ausführung des folgenden Befehls - neu geladen werden:</para> - - <screen>&prompt.root; <userinput>sh /etc/ipfw.rules</userinput></screen> + <indexterm> + <primary><application>IPFW</application></primary> + <secondary>Regel-Syntax</secondary> + </indexterm> - <para>Statt <filename>/etc/ipfw.rules</filename> können Sie - auch einen beliebigen anderen Namen und/oder Speicherort - verwenden.</para> + <para>Bei der Erstellung der + <application>IPFW</application>-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 <literal>#</literal> wird benutzt, um + einen Kommentar einzuleiten und kann am Ende einer Regel oder + in einer eigenen Zeile stehen. Leerzeilen werden + ignoriert.</para> + + <para><replaceable>CMD RULE_NUMBER set SET_NUMBER ACTION log + LOG_AMOUNT PROTO from SRC SRC_PORT to DST DST_PORT + OPTIONS</replaceable></para> + + <para>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 + <application>IPFW</application>-Regeln zu erstellen, finden + Sie in &man.ipfw.8;.</para> + + <variablelist> + <varlistentry> + <term>CMD</term> + <listitem> + <para>Jede Regel muss mit <parameter>ipfw add</parameter> + beginnen.</para> + </listitem> + </varlistentry> - <para>Alternativ könnten Sie die einzelnen Befehle dieses - Skripts auch manuell starten:</para> + <varlistentry> + <term>RULE_NUMBER</term> + <listitem> + <para>Jede Regel gehört zu einer Nummer zwischen + <literal>1</literal> und <literal>65534</literal>. 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.</para> + </listitem> + </varlistentry> - <screen>&prompt.root; <userinput>ipfw -q -f flush</userinput> -&prompt.root; <userinput>ipfw -q add check-state</userinput> -&prompt.root; <userinput>ipfw -q add deny all from any to any frag</userinput> -&prompt.root; <userinput>ipfw -q add deny tcp from any to any established</userinput> -&prompt.root; <userinput>ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state</userinput> -&prompt.root; <userinput>ipfw -q add allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state</userinput> -&prompt.root; <userinput>ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-state</userinput></screen> - </sect3> + <varlistentry> + <term>SET_NUMBER</term> + <listitem> + <para>Jede Regel ist einer <emphasis>Set</emphasis>-Nummer + zwischen <literal>0</literal> und <literal>31</literal> + 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 + <literal>SET_NUMBER</literal> nicht angegeben ist, wird + die Regel zu Set <literal>0</literal> + hinzugefügt.</para> + </listitem> + </varlistentry> - <sect3> - <title>Zustandsgesteuertes Regelwerk</title> + <varlistentry> *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201607111226.u6BCQqqd080610>