svn commit: r49087 - head/de_DE.ISO8859-1/books/handbook/firewalls
Bjoern Heidotting
bhd at FreeBSD.org
Mon Jul 11 12:26:53 UTC 2016
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 ***
More information about the svn-doc-head
mailing list