Revise the firewall chapter. Start with "Einführung/Konzepte".

More commits to come.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D6583
This commit is contained in:
Bjoern Heidotting 2016-05-27 16:46:54 +00:00
parent 1d950afede
commit 7718511a0a
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48858

View file

@ -37,7 +37,7 @@
<title>Einführung</title>
<para>Firewalls ermöglichen es, den ein- und ausgehenden
Netzwerkverkehr Ihres Systems zu filtern. Dazu verwendet eine
Netzwerkverkehr eines Systems zu filtern. Dazu verwendet eine
Firewall eine oder mehrere Gruppen von <quote>Regeln</quote>,
um ankommende Netzwerkpakete zu untersuchen und entweder
durchzulassen oder zu blockieren. Die Regeln einer
@ -51,54 +51,76 @@
<itemizedlist>
<listitem>
<para>Den Schutz der Anwendungen, Dienste und Rechner Ihres
<para>Den Schutz der Anwendungen, Dienste und Rechner eines
internen Netzwerks vor unerwünschtem Datenverkehr
aus dem Internet.</para>
</listitem>
<listitem>
<para>Die Beschränkung des Zugriffs von Rechnern des
internen Netzwerk auf Rechner oder Dienste des externen
internen Netzwerks auf Rechner oder Dienste des öffentlichen
Internets.</para>
</listitem>
<listitem>
<para>Den Einsatz von Network Address Translation
(<acronym>NAT</acronym>), die es Ihnen durch die Verwendung
(<acronym>NAT</acronym>), welches es durch die Verwendung
von privaten <acronym>IP</acronym>-Adressen ermöglicht,
eine einzige gemeinsame Internetverbindung für mehrere
Rechner zu nutzen (entweder über eine einzige Adresse
oder über eine Gruppe von jeweils automatisch
zugewiesenen öffentlichen
<acronym>IP</acronym>-Adressen).</para>
Rechner zu nutzen. Dies geschieht entweder über eine
einzige <acronym>IP</acronym>-Adresse oder über eine Gruppe
von jeweils automatisch zugewiesenen öffentlichen
Adressen.</para>
</listitem>
</itemizedlist>
<para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie:</para>
<para>Das Basissystem von &os; enthält drei Firewalls:
<application>PF</application>, <application>IPFW</application>
und <application>IPFILTER</application> (auch als
<application>IPF</application> bekannt). &os; enthält ebenfalls
zwei <foreignphrase>Traffic-Shaper</foreignphrase> zur Kontrolle
der Bandbreite: &man.altq.4; und &man.dummynet.4;.
<application>ALTQ</application> ist traditionell eng an
<application>PF</application> gebunden, während
<application>dummynet</application> zusammen mit
<application>IPFW</application> verwendet wird.
Gemeinsam ist allen Firewalls, dass sie Regeln einsetzen, um den
Transfer von ein- und ausgehenden Datenpaketen des Systems
zu steuern. Unterschiedlich ist aber die Art und Weise, wie
dies realisiert wird. Auch die für diese Regeln verwendete
Syntax ist unterschiedlich.</para>
<para>&os; besitzt mehrere Firewalls, um den unterschiedlichen
Anforderungen und Vorlieben von Benutzern gerecht zu werden.
Jeder Benutzer sollte selbst beurteilen, welche Firewall seinen
Bedürfnissen am besten entspricht.</para>
<para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie
wissen:</para>
<itemizedlist>
<listitem>
<para>Wissen, wie man korrekte Paketfilterregeln erstellt.</para>
<para>Wie man Paketfilterregeln erstellt.</para>
</listitem>
<listitem>
<para>Die Unterschiede zwischen den in &os; eingebauten Firewalls
kennen.</para>
<para>Was die Unterschiede zwischen den in &os; eingebauten
Firewalls sind.</para>
</listitem>
<listitem>
<para>Wissen, wie man die <application>PF</application>-Firewall
von OpenBSD konfiguriert und einsetzt.</para>
<para>Wie die <application>PF</application>-Firewall
konfiguriert und einsetzt wird.</para>
</listitem>
<listitem>
<para><application>IPFILTER</application> konfigurieren und
einsetzen können.</para>
<para>Wie die <application>IPFW</application>-Firewall
konfiguriert und einsetzt wird.</para>
</listitem>
<listitem>
<para>Wissen, wie man <application>IPFW</application> konfiguriert
und einsetzt.</para>
<para>Wie die <application>IPFILTER</application>-Firewall
konfiguriert und einsetzt wird.</para>
</listitem>
</itemizedlist>
@ -110,6 +132,16 @@
verstehen.</para>
</listitem>
</itemizedlist>
<note>
<para>Da alle Firewalls auf der Inspektion ausgewählter
Kontrollfelder in Datenpaketen basieren, muss für die
Erstellung von Firewallregeln ein grundlegendes Verständnis
von <acronym>TCP/IP</acronym> vorhanden sein. Eine gute
Einführung finden Sie in <link
xlink:href="http://www.ipprimer.com/overview.cfm">
Daryl's TCP/IP Primer</link>.</para>
</note>
</sect1>
<sect1 xml:id="firewalls-concepts">
@ -117,96 +149,147 @@
<indexterm>
<primary>firewall</primary>
<secondary>rulesets</secondary>
<secondary>Regelsatz</secondary>
</indexterm>
<para>Es gibt zwei grundlegende Arten, Regelgruppen für
Firewalls zu erstellen: <quote>einschließend</quote>
(<foreignphrase>inclusive firewall</foreignphrase>) sowie
<quote>auschließend</quote> (<foreignphrase>exclusive
Firewall</foreignphrase>). Eine auschließende Firewall
lässt jeden Datenverkehr durch, der nicht durch eine Regel
ausgeschlossen wurde. Eine einschließende Firewall macht
das genaue Gegenteil. Sie lässt Datenverkehr nur dann
durch, wenn er einer der definierten Regeln entspricht.</para>
<para>Ein Regelsatz besteht aus einer Gruppe von Regeln, die
Pakete basierend auf ihren Inhalt entweder blockieren oder
durchlassen. Der bidirektionale Austausch von Paketen zwischen
zwei Rechnern wird als Sitzung
(<foreignphrase>Session</foreignphrase>) bezeichnet. Der
Regelsatz verarbeitet sowohl ankommende Pakete aus dem
Internet, als auch die vom System erzeugten Antwortpakete.
Jeder <acronym>TCP/IP</acronym>-Dienst hat ein festgelegtes
Protokoll und einen vorgegebenen Port. Pakete für einen
bestimmten Dienst stammen von einer Quelladresse und einem
unprivilegierten Port und gehen an einen spezifischen Port
auf der Zieladresse. Alle oben genannten Parameter können als
Selektionskriterien verwendet werden, um einen Regelsatz zu
erstellen, der den Zugriff auf bestimmte Dienste gewährt oder
blockiert.</para>
<para>Eine inclusive Firewall bietet eine wesentlich bessere Kontrolle
des ausgehenden Verkehrs, macht sie zur besseren Wahl für Systeme,
die Services für das Internet anbieten. Sie kontrolliert
auch den Verkehr vom Internet zu ihrem privaten Netzwerk. Jeder Verkehr,
der keiner Regel entspricht wird geblockt und geloggt. Inclusive
Firewalls sind generell sicherer als exclusive Firewalls, da sie das
Risiko, dass unerwünschter Verkehr hindurch geht, drastisch
reduzieren.</para>
<para>Unbekannte Portnummern können Sie in
<filename>/etc/services</filename> nachschlagen.
Alternativ finden Sie die Portnummern und deren Verwendungszweck
auf <link
xlink:href="http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers">
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers</link>.</para>
<para>Die Seite <link
xlink:href="http://www.sans.org/security-resources/idfaq/oddports.php">
http://www.sans.org/security-resources/idfaq/oddports.php</link>
enthält eine Liste der Portnummern, die auch von Trojanern
benutzt werden.</para>
<para><acronym>FTP</acronym> hat zwei Modi: Aktiv und Passiv.
Unterschied liegt in der Bestimmung des Datenkanals. Der
Passiv-Modus ist sicherer, da der Datenkanal vom Client
bestimmt wird. Eine ausführliche Erklärung von
<acronym>FTP</acronym> und den verschiedenen Modi finden Sie
unter <link xlink:href="http://www.slacksite.com/other/ftp.html">
http://www.slacksite.com/other.ftp.html</link>.</para>
<para>Ein Firewall-Regelsatz kann entweder
<quote>einschließend</quote> (<foreignphrase>inclusive
firewall</foreignphrase>) oder <quote>ausschließend</quote>
(<foreignphrase>exclusive Firewall</foreignphrase>) sein. Eine
ausschließende Firewall lässt jeden Datenverkehr durch, der
nicht durch eine Regel ausgeschlossen wurde. Eine
einschließende Firewall macht das genaue Gegenteil. Sie lässt
Datenverkehr nur dann passieren, wenn dieser einer der
definierten Regeln entspricht.</para>
<para>Eine einschließende Firewall bietet eine wesentlich bessere
Kontrolle des ausgehenden Verkehrs, was sie zur besseren Wahl
für Systeme macht, welche Dienste für das Internet anbieten.
Sie kontrolliert auch den Verkehr aus dem öffentlichen Internet
zum privaten Netzwerk. Jeder Verkehr, der keiner Regel
entspricht wird geblockt und protokolliert. Einschließende
Firewalls sind generell sicherer als ausschließende Firewalls,
da sie das Risiko, dass unerwünschter Verkehr hindurch geht,
drastisch reduzieren.</para>
<note>
<para>Wenn nicht anders vermerkt, verwenden alle Konfigurationen
und Beispielregelsets dieses Kapitels inclusive Firewalls.</para>
und Regelsätze in diesem Kapitel einschließende
Firewalls.</para>
</note>
<para>Die Sicherheit einer Firewall kann durch den Einsatz einer
<quote>zustandsabhängigen Firewall</quote>
<para>Die Sicherheit kann durch den Einsatz einer
<quote>zustandsorientierten Firewall</quote>
(<foreignphrase>stateful firewall</foreignphrase>) weiter
erhöht werden. Dieser Typ einer Firewall
überwacht alle durch die Firewall gehenden offenen
Verbindungen und erlaubt nur schon bestehenden Verkehr oder
Datenverkehr, der eine neue Verbindung öffnet. Der Nachteil
einer zustandsabhängigen Firewall ist allerdings, dass sie
anfällig für Denial of Service (<acronym>DoS</acronym>)
-Attacken ist, wenn sehr schnell sehr viele neue Verbindungen
erstellt werden. Bei den meisten Firewalls können Sie eine
Kombination aus zustandsabhängigem und nicht
zustandsabhängigem Verhalten verwenden, um eine für Ihre
Bedürfnisse optimale Firewall einzurichten.</para>
</sect1>
erhöht werden. Dieser Typ Firewall überwacht alle offenen
Verbindungen und erlaubt nur Datenverkehr von bereits
bestehenden Verbindungen oder wenn eine neue Verbindung
aufgebaut wird.</para>
<sect1 xml:id="firewalls-apps">
<title>Firewallpakete</title>
<para>Eine zustandsorientierte Firewall behandelt den Verkehr
als einen bidirektionalen Austausch von Paketen während einer
Session. Wenn ein Zustand für eine passende Regel angegeben
wird, erstellt die Firewall dynamisch interne Regeln für jedes
Paket, das während dieser Session ausgetauscht wird. Die
Firewall hat ausreichend Möglichkeiten, um zu bestimmen, ob ein
Paket zu einer Session gehört. Alle Pakete, die nicht zu dieser
Session passen, werden automatisch abgelehnt.</para>
<para>Das Basissystem von &os; enthält bereits drei
Firewallpakete: <emphasis>IPFILTER</emphasis> (auch als
<acronym>IPF</acronym> bekannt), <emphasis>IPFIREWALL</emphasis>
(auch als <acronym>IPFW</acronym> bezeichnet) sowie das von OpenBSD
übernommene <emphasis>PacketFilter</emphasis> (das auch als
<acronym>PF</acronym> bezeichnet wird). Zusätzlich
verfügt &os; über zwei eingebaute Pakete für das
sogenannte <foreignphrase>traffic shaping</foreignphrase> (dabei
handelt es sich die Steuerung des Bandbreitenverbrauchs):
&man.altq.4; sowie &man.dummynet.4;. Dummynet steht traditionell
in enger Verbindung mit <acronym>IPFW</acronym>, während
<acronym>ALTQ</acronym> gemeinsam mit <acronym>PF</acronym>
eingesetzt wird. Traffic Shaping für IPFILTER ist derzeit
mit IPFILTER für NAT sowie Filterung und
mit <acronym>IPFW</acronym> und &man.dummynet.4;
<emphasis>oder</emphasis> durch die Kombination von
<acronym>PF</acronym> mit <acronym>ALTQ</acronym> möglich.
Gemeinsam ist allen Firewallpaketen (IPF, IPFW sowie PF), dass sie
Regeln einsetzen, um den Transfer von Datenpaketen auf und von
Ihrem System zu regeln. Unterschiedlich sind aber die Art und
Weise, wie dies realisiert wird. Auch die für diese Regeln
verwendete Syntax ist unterschiedlich.</para>
<para>Sobald die Session beendet ist, wird sie aus der
dynamischen Zustandstabelle entfernt.</para>
<para>&os; überlässt es dem Anwender, das Firewallsystem
zu wählen, dass seinen Anforderungen und Vorlieben am Besten
entspricht. Keines der im Basissystem enthaltenen Firewallpakete
wird dabei als <quote>das beste</quote> angesehen.</para>
<para>Eine zustandsorientierte Filterung erlaubt es, sich auf die
Sperrung bzw. Freigabe von neuen Sessions zu konzentrieren.
Wenn eine neue Session genehmigt wird, werden alle nachfolgenden
Pakete dieser Session automatisch erlaubt und betrügerische
Pakete werden automatisch abgelehnt. Wenn eine neue Session
nicht genehmigt wird, werden alle nachfolgenden Pakete dieser
Session abgelehnt. Die zustandsorientierte Filterung bietet
fortgeschrittene Fähigkeiten zur Abwehr von verschiedensten
Angriffsmethoden, die von Angreifern eingesetzt werden.</para>
<para>IPFILTER hat etwa den Vorteil, dass dessen
zustandsabhängige Regeln relativ einfach in einer
<acronym>NAT</acronym>-Umgebung implementiert werden können.
Außerdem verfügt es über einen eigenen FTP-Proxy,
der die Erstellung von sicheren Regeln für ausgehende
FTP-Verbindungen vereinfacht.</para>
<para><acronym>NAT</acronym> steht für <emphasis>Network Address
Translation</emphasis>. Die <acronym>NAT</acronym>-Funktion
ermöglicht es einem privaten <acronym>LAN</acronym> hinter einer
Firewall, sich eine einzelne vom <acronym>ISP</acronym>
zugewiesene <acronym>IP</acronym>-Adresse zu teilen, auch wenn
die Adresse dynamisch zugewiesen wird. <acronym>NAT</acronym>
ermöglicht den Internetzugriff für jeden Rechner im
<acronym>LAN</acronym>, ohne dass der <acronym>ISP</acronym> für
mehrere Internet-Konten bezahlt wird.</para>
<para>Da alle Firewalls auf der Untersuchung der Werte
ausgewählter Kontrollfelder von Datenpaketen basieren, ist es
für die Erstellung von Firewallregeln notwendig, die
Funktionsweise von <acronym>TCP/IP</acronym> zu verstehen.
Außerdem muss man dazu wissen, was die Werte der einzelnen
Kontrollfelder bedeuten und wie diese während einer
Verbindung eingesetzt werden. Eine gute Erklärung dieser
Thematik finden Sie unter <uri xlink:href="http://www.ipprimer.com/overview.cfm">http://www.ipprimer.com/overview.cfm</uri>.</para>
<para><acronym>NAT</acronym> übersetzt automatisch die private
<acronym>IP</acronym>-Adresse auf die öffentliche
<acronym>IP</acronym>-Adresse, sobald ein Paket für das
öffentliche Internet die Firewall passiert. Zusätzlich führt es
auch die Übersetzung der Anwortpakete durch.</para>
<para>Gemäß RFC 1918 sind die folgenden
<acronym>IP</acronym>-Adressbereiche für private Netzwerke
reserviert und werden nie ins öffentliche Internet
weitergeleitet. Daher sind diese Bereiche für den Einsatz
mit <acronym>NAT</acronym> geeignet:</para>
<itemizedlist>
<listitem>
<para><literal>10.0.0.0/8</literal></para>
</listitem>
<listitem>
<para><literal>172.16.0.0/12</literal></para>
</listitem>
<listitem>
<para><literal>192.168.0.0/16</literal></para>
</listitem>
</itemizedlist>
<warning>
<para>Seien Sie <emphasis>äußerst vorsichtig</emphasis> wenn Sie
mit Firewallregeln arbeiten. Durch eine falsche Konfiguration
kann der Administrator den Zugriff auf den Server verlieren.
Um auf der sicheren Seite zu sein, sollten Sie die anfängliche
Konfiguration der Firewall von der lokalen Konsole
durchführen, anstatt dass Sie dies aus der Ferne über
<application>ssh</application> tun.</para>
</warning>
</sect1>
<sect1 xml:id="firewalls-pf">
@ -534,7 +617,7 @@ options ALTQ_NOPCC # Wird von SMP ben
betreut und gesteuert werden kann. Die Regeln der Firewall werden
mit dem Programm &man.ipf.8; gesetzt oder gelöscht. Für
die Manipulation der <acronym>NAT</acronym> Regeln verwendet man
&man.ipnat.1;. Mit &man.ipfstat.8; werden Laufzeitstatistiken der
&man.ipnat.8;. Mit &man.ipfstat.8; werden Laufzeitstatistiken der
kernelseitigen Anteile von IPFILTER aufgelistet. Und mit dem
Programm &man.ipmon.8; kann man die Aktionen von IPFILTER in die
Protokolldateien des Systems speichern.</para>
@ -557,8 +640,11 @@ options ALTQ_NOPCC # Wird von SMP ben
einschließenden Regelsatz erstellen können.</para>
<para>Für eine ausführliche Erläuterung der alten Methode
zur Regelverarbeitung schauen Sie bitte auf <uri xlink:href="http://www.obfuscation.org/ipf/ipf-howto.html#TOC_1">http://www.obfuscation.org/ipf/ipf-howto.html#TOC_1</uri>
oder <uri xlink:href="http://coombs.anu.edu.au/~avalon/ip-filter.html">http://coombs.anu.edu.au/~avalon/ip-filter.html</uri>.</para>
zur Regelverarbeitung schauen Sie bitte auf <uri
xlink:href="http://www.munk.me.uk/ipf/ipf-howto.html">
http://www.munk.me.uk/ipf/ipf-howto.html</uri> oder <uri
xlink:href="http://coombs.anu.edu.au/~avalon/ip-filter.html">
http://coombs.anu.edu.au/~avalon/ip-filter.html</uri>.</para>
<para>Antworten auf häufige Fragen finden Sie unter
<uri xlink:href="http://www.phildev.net/ipf/index.html">http://www.phildev.net/ipf/index.html</uri>.</para>
@ -1714,7 +1800,7 @@ block in log first quick on dc0 proto tcp/udp from any to any port = 139
block in log first quick on dc0 proto tcp/udp from any to any port = 81
# Allow traffic in from ISP's DHCP server. This rule must contain
# the IP address of your ISP's DHCP server as it's the only
# the IP address of your ISP's DHCP server as it is the only
# authorized source to send this packet type. Only necessary for
# cable or DSL configurations. This rule is not needed for
# 'user ppp' type connection to the public Internet.
@ -1846,7 +1932,7 @@ block in log first quick on dc0 all
<para><acronym>NAT</acronym> rules are loaded by using the
<command>ipnat</command> command. Typically the
<acronym>NAT</acronym> rules are stored in
<filename>/etc/ipnat.rules</filename>. See &man.ipnat.1; for
<filename>/etc/ipnat.rules</filename>. See &man.ipnat.8; for
details.</para>
<para>When changing the <acronym>NAT</acronym> rules after