Update to r44630:

Prep work for IPsec chapter.
Add additional definitions to intro. Still need to define SA and SAD.
Still need to setup test environment to verify tech setup.
This section does not yet mention setkey.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D6746
This commit is contained in:
Bjoern Heidotting 2016-06-07 22:04:52 +00:00
parent 2d512aa0ae
commit f2060d27db
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48901

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/security/chapter.xml,v 1.178 2012/04/30 17:07:41 bcr Exp $
basiert auf: r44604
basiert auf: r44630
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="security">
<info><title>Sicherheit</title>
@ -72,8 +72,8 @@
</listitem>
<listitem>
<para>Wissen, wie Sie IPsec konfigurieren und ein
<acronym>VPN</acronym> einrichten.</para>
<para>Wissen, wie Sie <acronym>IPsec</acronym> konfigurieren
und ein <acronym>VPN</acronym> einrichten.</para>
</listitem>
<listitem>
@ -2157,75 +2157,100 @@ Connection closed by foreign host.</screen>
</sect1>
<sect1 xml:id="ipsec">
<info><title><acronym>VPN</acronym> mit IPsec</title>
<info>
<title><acronym>VPN</acronym> mit
<acronym>IPsec</acronym></title>
<authorgroup>
<author><personname><firstname>Nik</firstname><surname>Clayton</surname></personname><affiliation>
<author>
<personname>
<firstname>Nik</firstname>
<surname>Clayton</surname>
</personname>
<affiliation>
<address><email>nik@FreeBSD.org</email></address>
</affiliation><contrib>Geschrieben von </contrib></author>
</affiliation>
<contrib>Geschrieben von </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<personname>
<firstname>Hiten M.</firstname>
<surname>Pandya</surname>
</personname>
<affiliation>
<address><email>hmp@FreeBSD.org</email></address>
</affiliation>
<contrib>Geschrieben von </contrib>
</author>
</authorgroup>
</info>
<indexterm>
<primary>IPsec</primary>
<primary><acronym>IPsec</acronym></primary>
</indexterm>
<sect2>
<info><title>IPsec Grundlagen</title>
<authorgroup>
<author><personname><firstname>Hiten M.</firstname><surname>Pandya</surname></personname><affiliation>
<address><email>hmp@FreeBSD.org</email></address>
</affiliation><contrib>Geschrieben von </contrib></author>
</authorgroup>
</info>
<para>Dieser Abschnitt beschreibt die Einrichtung von IPsec. Um
IPsec einzurichten, sollten Sie einen neuen Kernel bauen können (siehe
<xref linkend="kernelconfig"/>).</para>
<para><emphasis>IPsec</emphasis> ist ein Protokoll, das auf dem
Internet-Protokoll (<acronym>IP</acronym>) aufbaut. Mit IPsec
können mehrere Systeme geschützt miteinander kommunizieren. Das in
&os; realisierte IPsec-Protokoll baut auf der <link xlink:href="http://www.kame.net/">KAME-Implementierung</link>
auf und unterstützt sowohl IPv4 als auch IPv6.</para>
<para><foreignphrase>Internet Protocol Security</foreignphrase>
(<acronym>IPsec</acronym>) ist ein Satz von Protokollen, die auf
dem Internet-Protokoll (<acronym>IP</acronym>) aufbauen. Durch
Authentifizierung und Verschlüsselung jedes einzelnen
<acronym>IP</acronym>-Pakets, können mehrere Systeme geschützt
miteinander kommunizieren. &os;s <acronym>IPSsec</acronym>
Netzwerk-Stack basiert auf der <link
xlink:href="http://www.kame.net">http://www.kame.net</link>
Implementierung und unterstützt sowohl <acronym>IPv4</acronym>
als auch <acronym>IPv6</acronym>.</para>
<indexterm>
<primary>IPsec</primary>
<primary><acronym>IPsec</acronym></primary>
<secondary>ESP</secondary>
</indexterm>
<indexterm>
<primary>IPsec</primary>
<primary><acronym>IPsec</acronym></primary>
<secondary>AH</secondary>
</indexterm>
<para>IPsec besteht wiederum aus zwei Protokollen:</para>
<para><acronym>IPsec</acronym> besteht aus den folgenden
Protokollen:</para>
<itemizedlist>
<listitem>
<para><emphasis>Encapsulated Security Payload
(<acronym>ESP</acronym>)</emphasis> verschlüsselt
IP-Pakete mit einem symmetrischen Verfahren wie Blowfish
oder 3DES. Damit werden die Pakete vor Manipulationen
Dritter geschützt.</para>
(<acronym>ESP</acronym>)</emphasis>: dieses Protokoll verschlüsselt
<acronym>IP</acronym>-Pakete mit einem symmetrischen
Verfahren wie Blowfish oder <acronym>3DES</acronym>.
Damit werden die Pakete vor Manipulationen Dritter
geschützt.</para>
</listitem>
<listitem>
<para>Der <emphasis>Authentication Header
(<acronym>AH</acronym>)</emphasis> enthält eine
<para><emphasis>Authentication Header
(<acronym>AH</acronym>)</emphasis>: dieses Protokoll enthält eine
kryptographische Prüfsumme, die sicher stellt, dass ein
IP-Paket nicht verändert wurde. Der Authentication-Header
folgt nach dem normalen IP-Header und erlaubt dem Empfänger
eines IP-Paketes, dessen Integrität zu
<acronym>IP</acronym>-Paket nicht verändert wurde. Der
Authentication-Header folgt nach dem normalen
<acronym>IP</acronym>-Header und erlaubt dem Empfänger
eines <acronym>IP</acronym>-Paketes, dessen Integrität zu
prüfen.</para>
</listitem>
<listitem>
<para><emphasis>IP Payload Compression Protocol
(<acronym>IPComp</acronym>)</emphasis>: dieses
Protokoll versucht durch Komprimierung der
<acronym>IP</acronym>-Nutzdaten die Menge der gesendeten
Daten zu reduzieren und somit die Kommunikationsleistung
zu verbessern.</para>
</listitem>
</itemizedlist>
<para><acronym>ESP</acronym> und <acronym>AH</acronym>
können, je nach Situation, zusammen oder einzeln
verwendet werden.</para>
<para>Diese Protokolle können, je nach Situation, zusammen oder
einzeln verwendet werden.</para>
<indexterm>
<primary>VPN</primary>
<primary><acronym>VPN</acronym></primary>
</indexterm>
<indexterm>
@ -2233,20 +2258,23 @@ Connection closed by foreign host.</screen>
<see>VPN</see>
</indexterm>
<para>IPsec kann in zwei Modi betrieben werden: Der
<para><acronym>IPsec</acronym> unterstützt zwei Modi: Der
<firstterm>Transport-Modus</firstterm> verschlüsselt
die Daten zwischen zwei Systemen. Der
<firstterm>Tunnel-Modus</firstterm> verbindet zwei
Subnetze miteinander. Durch einen Tunnel können
dann beispielsweise verschlüsselte Daten übertragen
dann verschlüsselte Daten übertragen
werden. Ein Tunnel wird auch als
<foreignphrase>Virtual-Private-Network</foreignphrase>
(<acronym>VPN</acronym>) bezeichnet. Detaillierte
Informationen über das IPsec-Subsystem von &os; finden Sie in
&man.ipsec.4;.</para>
Informationen über das <acronym>IPsec</acronym>-Subsystem von
&os; finden Sie in &man.ipsec.4;.</para>
<para>Die folgenden Optionen in der Kernelkonfiguration
aktivieren IPsec:</para>
<para>Um die Unterstützung für <acronym>IPsec</acronym> im
Kernel zu aktivieren, fügen Sie folgenden Optionen in die
Kernelkonfigurationsdatei ein und erstellen Sie einen neuen
Kernel, wie in <link linkend="kernelconfig"/>
beschrieben.</para>
<indexterm>
<primary>Kerneloption</primary>
@ -2261,35 +2289,26 @@ device crypto</screen>
<secondary>IPSEC_DEBUG</secondary>
</indexterm>
<para>Wenn Sie zur Fehlersuche im IPsec-Subsystem
<para>Wenn Sie zur Fehlersuche im <acronym>IPsec</acronym>-Subsystem
Unterstützung wünschen, sollten Sie die
folgende Option ebenfalls aktivieren:</para>
<screen>options IPSEC_DEBUG #debug for IP security</screen>
</sect2>
<sect2>
<title>VPN zwischen einem Heim- und Firmennetzwerk
einrichten</title>
<indexterm>
<primary>VPN</primary>
<secondary>einrichten</secondary>
</indexterm>
<para>Der Rest dieses Kapitels beschreibt die Einrichtung eines
<acronym>IPsec</acronym>-<acronym>VPN</acronym> zwischen einem
Heimnetzwerk und einem Firmennetzwerk. Für das folgende
Beispiel gilt:</para>
<!--
<para>Es gibt keinen Standard, der festlegt, was ein
Virtual-Private-Network ist. VPNs können mit
verschiedenen Techniken, die jeweils eigene Vor- und
Nachteile besitzen, implementiert werden.
Dieser Abschnitt stellt Möglichkeiten vor, um ein VPN
für das folgende Szenario aufzubauen:</para>
-->
<itemizedlist>
<listitem>
<para>Es müssen mindestens zwei Netzwerke vorhanden sein,
welche intern IP benutzen.</para>
</listitem>
<listitem>
<para>Beide Netzwerke sind über ein &os;-Gateway
mit dem Internet verbunden.</para>
@ -2297,21 +2316,36 @@ device crypto</screen>
<listitem>
<para>Der Gateway jedes Netzwerks besitzt mindestens
eine öffentliche IP-Adresse.</para>
eine externe <acronym>IP</acronym>-Adresse. In diesem
Beispiel ist die externe <acronym>IP</acronym>-Adresse des
Firmennetzwerks (<acronym>LAN</acronym>) <systemitem
class="ipaddress">172.16.5.4</systemitem> und das
Heimnetzwerk (<acronym>LAN</acronym>) hat die externe
<acronym>IP</acronym>-Adresse <systemitem
class="ipaddress">192.168.1.12</systemitem>.</para>
</listitem>
<listitem>
<para>Die intern verwendeten IP-Adressen können
private oder öffentliche Adressen sein.
Sie dürfen sich jedoch nicht überlappen. Zum Beispiel
<para>Die intern verwendeten <acronym>IP</acronym>-Adressen
können private oder öffentliche Adressen sein.
Sie dürfen sich jedoch nicht überschneiden. Zum Beispiel
sollten nicht beide Netze <systemitem
class="ipaddress">192.168.1.x</systemitem>
benutzen.</para>
benutzen. In diesem Beispiel ist die interne
<acronym>IP</acronym>-Adresse des Firmennetzwerks
(<acronym>LAN</acronym>) <systemitem
class="ipaddress">10.246.38.1</systemitem> und das
Heimnetzwerk (<acronym>LAN</acronym>) hat die interne
<acronym>IP</acronym>-Adresse <systemitem
class="ipaddress">10.0.0.5</systemitem>.</para>
</listitem>
</itemizedlist>
<sect3>
<info><title>Konfiguration von IPsec in &os;</title>
<sect2>
<info>
<title>Konfiguration eines <acronym>VPN</acronym> unter
&os;</title>
<authorgroup>
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><affiliation>
<address><email>trhodes@FreeBSD.org</email></address>
@ -2335,35 +2369,22 @@ device crypto</screen>
und externen <acronym>IP</acronym>-Adressen der Gateways
ersetzen müssen:</para>
<screen>&prompt.root; <userinput>ifconfig gif0 create</userinput></screen>
<screen>&prompt.root; <userinput>ifconfig gif0 <replaceable>intern1 intern2</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>ifconfig gif0 tunnel <replaceable>extern1 extern2</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>ifconfig gif0 create</userinput>
&prompt.root; <userinput>ifconfig gif0 <replaceable>intern1 intern2</replaceable></userinput>
&prompt.root; <userinput>ifconfig gif0 tunnel <replaceable>extern1 extern2</replaceable></userinput></screen>
<para>In diesem Beispiel ist die externe
<acronym>IP</acronym>-Adresse des Firmennetzwerkes
(<acronym>LAN</acronym>) <systemitem
class="ipaddress">172.16.5.4</systemitem> und die interne
<acronym>IP</acronym>-Adresse ist <systemitem
class="ipaddress">10.246.38.1</systemitem>. Das
Heimnetzwerk (<acronym>LAN</acronym>) hat die externe
<acronym>IP</acronym>-Adresse <systemitem
class="ipaddress">192.168.1.12</systemitem> mit der internen
privaten <acronym>IP</acronym>-Adresse <systemitem
class="ipaddress">10.0.0.5</systemitem>.</para>
<para>Überprüfen Sie mit <command>ifconfig</command> die
Konfiguration auf beiden Gateways. Hier folgt die Ausgabe
von Gateway 1:</para>
<para>Wenn dies verwirrend erscheint, schauen Sie sich die
folgende Ausgabe von &man.ifconfig.8;an:</para>
<programlisting>Gateway 1:
gif0: flags=8051 mtu 1280
<programlisting>gif0: flags=8051 mtu 1280
tunnel inet 172.16.5.4 --&gt; 192.168.1.12
inet6 fe80::2e0:81ff:fe02:5881%gif0 prefixlen 64 scopeid 0x6
inet 10.246.38.1 --&gt; 10.0.0.5 netmask 0xffffff00
inet 10.246.38.1 --&gt; 10.0.0.5 netmask 0xffffff00</programlisting>
Gateway 2:
<para>Hier folgt die Ausgabe von Gateway 2:</para>
gif0: flags=8051 mtu 1280
<programlisting>gif0: flags=8051 mtu 1280
tunnel inet 192.168.1.12 --&gt; 172.16.5.4
inet 10.0.0.5 --&gt; 10.246.38.1 netmask 0xffffff00
inet6 fe80::250:bfff:fe3a:c1f%gif0 prefixlen 64 scopeid 0x4</programlisting>
@ -2396,14 +2417,14 @@ round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 ms</programlisting>
<acronym>ICMP</acronym>-Pakete von ihren privaten Adressen
senden und empfangen. Als nächstes müssen beide
Gateways so konfiguriert werden, dass sie die Pakete des anderen
Netzwerkes richtig routen. Mit dem folgenden Befehl
erreicht man das Ziel:</para>
Netzwerkes richtig routen. Dazu werden folgende Befehle
verwendet:</para>
<screen>&prompt.root; <userinput>corp-net# route add <replaceable>10.0.0.0 10.0.0.5 255.255.255.0</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>corp-net# route add net <replaceable>10.0.0.0: gateway 10.0.0.5</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>corp-net# route add <replaceable>10.0.0.0 10.0.0.5 255.255.255.0</replaceable></userinput>
&prompt.root; <userinput>corp-net# route add net <replaceable>10.0.0.0: gateway 10.0.0.5</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>priv-net# route add <replaceable>10.246.38.0 10.246.38.1 255.255.255.0</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>priv-net# route add host <replaceable>10.246.38.0: gateway 10.246.38.1</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>priv-net# route add <replaceable>10.246.38.0 10.246.38.1 255.255.255.0</replaceable></userinput>
&prompt.root; <userinput>priv-net# route add host <replaceable>10.246.38.0: gateway 10.246.38.1</replaceable></userinput></screen>
<para>Ab jetzt sollten die Rechner von den Gateways sowie von
den Rechnern hinter den Gateways erreichbar sein. Dies können
@ -2600,7 +2621,6 @@ pass out quick on gif0 from any to any</programlisting>
ipsec_program="/usr/local/sbin/setkey"
ipsec_file="/usr/local/etc/racoon/setkey.conf" # allows setting up spd policies on boot
racoon_enable="yes"</programlisting>
</sect3>
</sect2>
</sect1>