diff options
author | Benedict Reuschling <bcr@FreeBSD.org> | 2010-02-26 12:13:07 +0000 |
---|---|---|
committer | Benedict Reuschling <bcr@FreeBSD.org> | 2010-02-26 12:13:07 +0000 |
commit | 09f6212b20d99d98d9617860eafce009ffc3382f (patch) | |
tree | f8e838909d5bbbb3ba4b9104937c3a59d0e234f0 /de_DE.ISO8859-1 | |
parent | 822ee24f898b274bb073e06cf5a008c4b85a6daa (diff) | |
download | doc-09f6212b20d99d98d9617860eafce009ffc3382f.tar.gz doc-09f6212b20d99d98d9617860eafce009ffc3382f.zip |
MFde: Update the german documentation set.
Thanks to the tireless efforts of Frank Boerner, we were able to
resync many parts of the documentation with the latest version.
articles/version-guide/article.sgml 1.13 -> 1.15 [1]
books/developers-handbook/l10n/chapter.sgml 1.10 -> 1.13 [1]
books/developers-handbook/policies/chapter.sgml 1.33 -> 1.34 [1]
books/developers-handbook/x86/chapter.sgml 1.17 -> 1.18 [1]
books/handbook/disks/chapter.sgml 1.292 -> 1.293 [1]
books/handbook/eresources/chapter.sgml 1.199 -> 1.200
books/handbook/firewalls/chapter.sgml 1.83 -> 1.92 [1]
books/handbook/l10n/chapter.sgml 1.131 -> 1.132 [1]
books/handbook/linuxemu/chapter.sgml 1.139 -> 1.140 [1]
books/handbook/mirrors/chapter.sgml 1.474 -> 1.476 [1]
books/handbook/security/chapter.sgml 1.320 -> 1.336 [1]
books/handbook/virtualization/chapter.sgml 1.22 -> 1.23 [1]
books/porters-handbook/book.sgml 1.1015 -> 1.1016 [1]
share/sgml/mailing-lists.ent 1.68 -> 1.69
[1] Contributed by: Frank Boerner
Obtained from: The FreeBSD German Documentation Project
Notes
Notes:
svn path=/head/; revision=35405
Diffstat (limited to 'de_DE.ISO8859-1')
13 files changed, 993 insertions, 1143 deletions
diff --git a/de_DE.ISO8859-1/articles/version-guide/article.sgml b/de_DE.ISO8859-1/articles/version-guide/article.sgml index dd901b98e7..8875d1a39a 100644 --- a/de_DE.ISO8859-1/articles/version-guide/article.sgml +++ b/de_DE.ISO8859-1/articles/version-guide/article.sgml @@ -2,8 +2,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/articles/version-guide/article.sgml,v 1.5 2009/01/10 12:39:50 jkois Exp $ - basiert auf: 1.13 + $FreeBSDde: de-docproj/articles/version-guide/article.sgml,v 1.7 2010/02/22 17:13:51 fboerner Exp $ + basiert auf: 1.15 --> <!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ @@ -309,11 +309,6 @@ geplante Änderungen wird es für Anwender, Entwickler von externen Programmen sowie &os;-Entwickler einfacher werden, eigene Planungen zu erstellen.</para> - - <para>Diese Überlegungen, und nicht die Anpassung an die - Hauptversionsnummern anderer Betriebssysteme, sind die - Hauptmotivation für die Änderung des - Entwicklungszyklusses.</para> </sect1> <sect1 id="future-goals"> diff --git a/de_DE.ISO8859-1/books/developers-handbook/l10n/chapter.sgml b/de_DE.ISO8859-1/books/developers-handbook/l10n/chapter.sgml index fc24547ef9..1112f515b8 100644 --- a/de_DE.ISO8859-1/books/developers-handbook/l10n/chapter.sgml +++ b/de_DE.ISO8859-1/books/developers-handbook/l10n/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/developers-handbook/l10n/chapter.sgml,v 1.9 2007/09/28 16:25:36 jkois Exp $ - basiert auf: 1.10 + $FreeBSDde: de-docproj/books/developers-handbook/l10n/chapter.sgml,v 1.12 2010/02/18 20:27:20 fboerner Exp $ + basiert auf: 1.13 --> <chapter id="l10n"> @@ -85,20 +85,305 @@ Behandlung von Unicode-Zeichen. Bitte nutzen Sie diese für I18N-Konformität.</para> - <para>Auf älteren FreeBSD-Versionen erzeugt Perl - möglicherweise Warnmeldungen wegen nicht installierter - Unterstützung für Unicode-Zeichen auf Ihrem System. - Sie können hierfür die Umgebungsvariable - <envar>LD_PRELOAD</envar> in ihrer Shell auf - <filename>/usr/lib/libxpg4.so</filename> setzen.</para> + </sect2> + </sect1> + + <sect1 id="posix-nls"> + <sect1info> + <authorgroup> + <author> + <firstname>Gábor</firstname> + <surname>Kövesdán</surname> + <contrib>Beigetragen von </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Lokalisierte Nachrichten mit POSIX.1 Native Language + Support (NLS)</title> + + <para>Über die Basisfunktionen von I18N hinaus, wie das Bereitstellen + von verschiedenen Eingabecodierungen oder die diversen nationalen + Konventionen, zum Beispiel die verschiedenen Dezimalpunkte, ist es + auf einem höheren Level von I18N möglich, die Ausgabe + von Programmen zu lokalisieren. Ein Weg dies zu tun besteht in der + Nutzung der POSIX.1 NLS-Funktionen von &os;.</para> + + <sect2 id="nls-catalogs"> + <title>Organisation von lokalisierten Mitteilungen in Katalog + Dateien</title> + + <para>POSIX.1 NLS basiert auf Katalogdateien, welche die lokalisierten + Mitteilungen in der entsprechenden Codierung enthalten. Die + Mitteilungen sind in Sets organisiert und jede Mitteilung ist + durch eine eindeutige Zahl in dem jeweilgen Set identifiziert. + Die Katalogdateien werden nach der Lokale, von den jeweiligen + lokalisierten Mitteilungen, die sie enthalten, gefolgt von der + <literal>.msg</literal> Endung benannt. Zum Beispiel werden die + ungarischen Mitteilungen für das ISO8859-2 Encoding in + einer Datei mit dem Dateinamen <filename>hu_HU.ISO8859-2</filename> + gespeichert.</para> + + <para>Diese Katalogdateien sind normale Textdateien, welche die + nummerierten Mitteilungen enthalten. Es ist möglich + Kommentare in die Dateien zu schreiben, indem Sie ein + <literal>$</literal>-Zeichen an den Anfang der Zeile setzen. + Das Setzen von Grenzen wird ebenfalls durch spezielle Kommentare + möglich wobei das Schlüsselwort <literal>set</literal> + direkt nach dem <literal>$</literal>-Zeichen folgen muss. Dem + Schlüsselwort <literal>set</literal> folgt dann die Set-Nummer. + Ein Beispiel:</para> + + <programlisting>$set 1</programlisting> + + <para>Der aktuelle Mitteilungseintrag startet mit der + Mitteilungsnummer gefolgt von der lokalisierten Nachricht. Die + bekannten Modifikatoren von &man.printf.3; werden akzeptiert:</para> + + <programlisting>15 "File not found: %s\n"</programlisting> + + <para>Die Katalogdateien müssen in binärer Form vorliegen, + bevor sie von einem Programm benutzt werden können. Dies wird + mit dem &man.gencat.1; Tool durchgeführt. Das erste Argument + ist der Dateiname des kompilierten Katalogs und die weiteren + Argumente sind die Eingabekataloge. Die lokalisierten + Mitteilungen können auf mehrere Katalogdateien aufgeteilt + sein. Danach werden dann alle auf einmal mit dem &man.gencat.1; + Tool kompiliert.</para> + + </sect2> + + <sect2 id="nls-using"> + <title>Nutzung der Katalogdateien im Quellcode</title> + + <para> Das Benutzen der Katalogdateien ist einfach. Um die + relevante Funktion zu nutzen, muss <filename + class="headerfile">nl_types.h</filename> in die Quelldatei + eingefügt werden. Bevor ein Katalog benutzt werden + kann, muss er mit &man.catopen.3; geöffnet werden. + Die Funktion hat 2 Argumente. Der erste Parameter ist der + Name des installierten und kompilierten Katalogs. Normalerweise + wird der Name des Programmes, zum Beispiel + <application>grep</application>, genutzt. Dieser Name wird + zum Suchen der kompilierten Katalogdatei benutzt. Der Aufruf + von &man.catopen.3; sucht nach dieser Datei in <filename + class="directory">/usr/share/nls/<replaceable>locale</replaceable>/<replaceable>catname</replaceable></filename> + und in <filename + class="directory">/usr/local/share/nls/<replaceable>locale</replaceable>/<replaceable>catname</replaceable></filename>, + wobei <literal>locale</literal> die gesetzte Lokale und + <literal>catname</literal> der Katalogname ist. Der zweite + Parameter ist eine Konstante, die zwei Werte haben kann:</para> + + <itemizedlist> + <listitem> + + <para><literal>NL_CAT_LOCALE</literal>, hat die Bedeutung, + dass die benutzte Katalogdatei auf + <envar>LC_MESSAGES</envar> basiert.</para> + + </listitem> + + <listitem> + + <para><literal>0</literal>, hat die Bedeutung, dass + <envar>LANG</envar> benutzt wird, um die Katalogdatei + zu öffnen. + </para> + + </listitem> + </itemizedlist> + + <para>Der &man.catopen.3; Aufruf gibt einen Katalogidentifizierer + vom Type <literal>nl_catd</literal> zurück. Sehen Sie in der + Manualpage nach, um eine Liste mit möglichen Fehlercodes + zu erhalten.</para> + + <para>Nach dem Öffnen eines Katalogs, kann &man.catgets.3; + benutzt werden, um Mitteilungen zu erhalten. Der erste + Parameter ist der Katalogidentifizierer, der von + &man.catopen.3; zurück gegeben wurde, das zweite ist die + Nummer des Sets, das dritte die Nummer der Mitteilung und das + vierte ist eine Fallbackmitteilung, die angezeigt wird, + falls die gewünschte Mitteilung in der Katalogdatei + nicht verfügbar ist.</para> + + <para>Nach der Nutzung der Katalogdatei, muss sie mit dem + Kommando &man.catclose.3;, geschlossen werden. Es besitzt + ein Argument, die Katalog ID.</para> + + </sect2> + + <sect2 id="nls-example"> + <title>Ein Beispiel aus der Praxis</title> + + <para>Das folgende Beispiel zeigt einen einfachen Weg wie man + NLS-Kataloge flexibel nutzen kann.</para> + + <para>Die nachfolgenden Zeilen müssen in eine allgemeine + Headerdatei, die in allen Quelldateien vorhanden ist, die + lokalisierte Mitteilungen benutzen, eingefügt werden:</para> + + <programlisting> +#ifdef WITHOUT_NLS +#define getstr(n) nlsstr[n] +#else +#include <nl_types.h> + +extern nl_catd catalog; +#define getstr(n) catgets(catalog, 1, n, nlsstr[n]) +#endif + +extern char *nlsstr[]; + </programlisting> + + <para>Als nächstes fügen Sie die folgenden Zeilen + in den globalen Deklarationsteil der Hauptquelldatei ein:</para> + + <programlisting> +#ifndef WITHOUT_NLS +#include <nl_types.h> +nl_catd catalog; +#endif - <para>In <literal>sh</literal>-basierten Shells:</para> +/* +* Default messages to use when NLS is disabled or no catalog +* is found. +*/ +char *nlsstr[] = { + "", +/* 1*/ "some random message", +/* 2*/ "some other message" +}; + </programlisting> + + <para>Als nächstes kommt der Code der den Katalog + öffnet, liest und schließt:</para> + + <programlisting> +#ifndef WITHOUT_NLS + catalog = catopen("myapp", NL_CAT_LOCALE); +#endif - <programlisting><envar>LD_PRELOAD=/usr/lib/libxpg4.so</envar></programlisting> +... - <para>In <literal>C</literal>-basierten Shells:</para> +printf(getstr(1)); - <programlisting><envar>setenv LD_PRELOAD /usr/lib/libxpg4.so</envar></programlisting> - </sect2> - </sect1> +... + +#ifndef WITHOUT_NLS + catclose(catalog); +#endif + </programlisting> + + <sect3> + <title>Reduzierung von zu lokalisierenden Zeichenketten</title> + + <para>Es gibt einen guten Weg, Zeichenketten die lokalisert + werden müssen, durch den Einsatz von + <application>libc</application>-Fehlermeldungen zu reduzieren. + Dadurch vermeidet man Duplikate und erstellt gleiche Meldungen + für häufige Fehlermeldungen, die bei vielen + Programmen auftreten können.</para> + + <para>Als erstes ist hier ein Beispiel, dass keine + <application>libc</application>-Fehlermeldungen benutzt:</para> + + <programlisting> +#include <err.h> +... +if (!S_ISDIR(st.st_mode)) + err(1, "argument is not a directory"); + </programlisting> + + <para>Dies kann so abgeändert werden, dass eine + Fehlermeldung durch Auslesen der Variabel <varname>errno</varname> + ausgegeben wird. Die Fehlermeldung wird entspechend dem Beispiel + ausgegeben:</para> + + <programlisting> +#include <err.h> +#include <errno.h> +... +if (!S_ISDIR(st.st_mode)) { + errno = ENOTDIR; + err(1, NULL); +} + </programlisting> + + <para>In diesem Beispiel wurde die benutzerdefinierte + Zeichenkette entfernt. Übersetzer haben weniger Arbeit, + wenn sie ein Programm lokalisieren und die Benutzer sehen die + übliche <quote>"Not a directory"</quote> + Fehlermeldung, wenn dieser Fehler auftritt. Diese Meldung wird + ihnen wahrscheinlich vertraut erscheinen. Bitte beachten Sie, + dass es notwendig ist, + <filename class="headerfile">errno.h</filename> + hinzuzufügen um einen direkten Zugriff auf + <varname>errno</varname> zu haben.</para> + + <para>Es lohnt sich darauf hinzuweisen, dass es Fälle gibt, + in denen <varname>errno</varname> automatisch aufgerufen wird, + so dass es nicht notwendig ist, es explizit zu tun:</para> + + <programlisting> +#include <err.h> +... +if ((p = malloc(size)) == NULL) + err(1, NULL); + </programlisting> + </sect3> + </sect2> + + <sect2 id="nls-mk"> + <title>Benutzung von <filename>bsd.nls.mk</filename></title> + + <para>Das Benutzen von Katalogdateien setzt einige sich + wiederholende Schritte, wie das kompilieren und installieren + der Kataloge, voraus. Um diese Schritte zu vereinfachen, + stellt <filename>bsd.nls.mk</filename> einige Makros zur + Verfügung. Es ist nicht notwendig + <filename>bsd.nls.mk</filename> explizit hinein zu kopieren, + es wird automatisch aus den allgemeinen Makefiles wie + <filename>bsd.prog.mk</filename> oder + <filename>bsd.lib.mk</filename> gezogen.</para> + + <para>Normalerweise reicht es, <makevar>NLSNAME</makevar> zu + definieren, die den Namen des Kataloges als erstes + Argument von &man.catopen.3; enthalten sollte und die + Katalogdateien in <makevar>NLS</makevar> ohne ihre Endung + <literal>.msg</literal> auflistet. Hier ist ein Beispiel, das + es ermöglicht, NLS mit dem obigen Code zu deaktivieren. + Die <makevar>WITHOUT_NLS</makevar> Variable von &man.make.1; + muss so definiert werden, dass das Programm ohne + NLS-Unterstützung gebaut wird.</para> + + <programlisting> +.if !defined(WITHOUT_NLS) +NLS= es_ES.ISO8859-1 +NLS+= hu_HU.ISO8859-2 +NLS+= pt_BR.ISO8859-1 +.else +CFLAGS+= -DWITHOUT_NLS +.endif + </programlisting> + + <para>Normalerweise werden die Katalogdateien in dem + <filename class="directory">nls</filename>-Unterverzeichnis + abgelegt. Dies ist der Standard von + <filename>bsd.nls.mk</filename>. Es ist möglich, mit der + <makevar>NLSSRCDIR</makevar>-Variablen von &man.make.1; diese zu + überschreiben. Der Standardname der vorkompilierten + Katalogdateien folgt den Namenskonventionen, wie oben beschrieben. + Er kann durch die <makevar>NLSNAME</makevar>-Variablen + überschrieben werden. Es gibt noch weitere Optionen, um + eine Feinabstimmung zur Verarbeitung der Katalogdateien + zu erreichen. Da sie nicht notwendig sind, werden sie hier + nicht weiter beschrieben. Weitere Informationen über + <filename>bsd.nls.mk</filename> finden Sie in der Datei selbst. + Der Text ist kurz und leicht zu verstehen.</para> + + </sect2> + + </sect1> + </chapter> diff --git a/de_DE.ISO8859-1/books/developers-handbook/x86/chapter.sgml b/de_DE.ISO8859-1/books/developers-handbook/x86/chapter.sgml index 27aa36e960..929e597054 100644 --- a/de_DE.ISO8859-1/books/developers-handbook/x86/chapter.sgml +++ b/de_DE.ISO8859-1/books/developers-handbook/x86/chapter.sgml @@ -17,8 +17,8 @@ content so it should stay. $FreeBSD$ - $FreeBSDde: de-docproj/books/developers-handbook/x86/chapter.sgml,v 1.21 2009/08/05 19:06:29 bcr Exp $ - basiert auf: 1.17 + $FreeBSDde: de-docproj/books/developers-handbook/x86/chapter.sgml,v 1.22 2010/02/18 20:29:39 fboerner Exp $ + basiert auf: 1.18 --> <chapter id="x86"> @@ -246,7 +246,7 @@ open: die ausführbare Datei kennzeichnen:</para> <screen>&prompt.user; - <userinput>brandelf -f Linux + <userinput>brandelf -t Linux <replaceable>filename</replaceable></userinput></screen> </sect2> diff --git a/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml b/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml index dfc9938112..5d7b8f7dcd 100644 --- a/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/disks/chapter.sgml,v 1.164 2009/09/24 18:50:15 bcr Exp $ - basiert auf: 1.292 + $FreeBSDde: de-docproj/books/handbook/disks/chapter.sgml,v 1.166 2010/01/27 20:30:52 fboerner Exp $ + basiert auf: 1.293 --> <chapter id="disks"> @@ -1743,6 +1743,46 @@ cd0: Attempt to query device size failed: NOT READY, Medium not present - tray c Schreibgeschwindigkeit vorgeben möchten, verwenden Sie den Parameter <option>-speed=</option>. Weiteres erfahren Sie in der Hilfeseite &man.growisofs.1;.</para> + + <note> + <para>Um grössere Dateien als 4.38GB in ihre Sammlung + aufzunehmen, ist es notwendig ein UDF/ISO-9660 Hybrid-Dateisystem + zu erstellen. Dieses Dateisystem muss mit zusätzlichen + Parametern <option>-udf -iso-level 3</option> bei &man.mkisofs.8; + und allen relevanten Programmen (z.B. &man.growisofs.1;) erzeugt + werden. Dies ist nur notwendig wenn Sie ein ISO-Image erstellen + oder direkt auf eine DVD schreiben wollen. DVDs, die in dieser + Weise hergestellt worden sind, müssen als UDF-Dateisystem + mit &man.mount.udf.8; eingehangen werden. Sie sind nur auf + Betriebssystemen, die UDF unterstützen brauchbar, ansonsten + sieht es so aus, als ob sie kaputte Dateien enthalten würden. + </para> + + <para>Um so eine ISO Datei zu bauen, geben Sie den folgenden + Befehl ein:</para> + +<screen>&prompt.user; <userinput>mkisofs -R -J -udf -iso-level 3 -o <replaceable>imagefile.iso</replaceable> <replaceable>/path/to/data</replaceable></userinput></screen> + + <para>Um Daten direkt auf eine DVD zu brennen, geben Sie den + folgenden Befehl ein:</para> + +<screen>&prompt.root; <userinput>growisofs -dvd-compat -udf -iso-level 3 -Z <replaceable>/dev/cd0</replaceable> -J -R <replaceable>/path/to/data</replaceable></userinput></screen> + + <para>Wenn Sie ein ISO-Image haben das bereits grosse Dateien + enthält, sind keine weiteren zusätzlichen Optionen für + &man.growisofs.1; notwendig, um das Image auf die DVD zu + brennen.</para> + + <para>Beachten Sie noch, dass Sie die aktuelle Version von + <filename role="package">sysutils/cdrtools</filename> haben (welche + &man.mkisofs.8; enthält), da die älteren Versionen nicht + den Support für grosse Dateien enthalten. Wenn Sie Probleme + haben sollten, können Sie auch das Entwicklerpaket + von <filename role="package">sysutils/cdrtools-devel</filename> + einsetzen und lesen Sie die &man.mkisofs.8; Manualpage.</para> + + </note> + </sect2> <indexterm> diff --git a/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml b/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml index b21021ba30..d4bc2de6e7 100644 --- a/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/eresources/chapter.sgml,v 1.87 2009/06/08 20:25:34 bcr Exp $ - basiert auf: 1.199 + $FreeBSDde: de-docproj/books/handbook/eresources/chapter.sgml,v 1.88 2010/02/05 16:22:06 bcr Exp $ + basiert auf: 1.200 --> <appendix id="eresources"> @@ -763,6 +763,13 @@ </row> <row> + <entry>&a.svn-src-stable-8.name;</entry> + <entry><filename>/usr/src</filename></entry> + <entry>Änderungen im <filename>stable/8</filename> + Zweig des src Subversion Repository</entry> + </row> + + <row> <entry>&a.svn-src-stable-other.name;</entry> <entry><filename>/usr/src</filename></entry> <entry>Änderungen an älteren diff --git a/de_DE.ISO8859-1/books/handbook/firewalls/chapter.sgml b/de_DE.ISO8859-1/books/handbook/firewalls/chapter.sgml index 8c9ae6aee4..4e98394ebd 100644 --- a/de_DE.ISO8859-1/books/handbook/firewalls/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/firewalls/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/firewalls/chapter.sgml,v 1.16 2009/09/22 19:38:31 bcr Exp $ - basiert auf: 1.83 + $FreeBSDde: de-docproj/books/handbook/firewalls/chapter.sgml,v 1.24 2010/02/18 19:11:10 fboerner Exp $ + basiert auf: 1.92 --> <chapter id="firewalls"> @@ -141,15 +141,24 @@ das genaue Gegenteil. Sie lässt Datenverkehr nur dann durch, wenn er einer der definierten Regeln entspricht.</para> - <para>Einschließende Firewalls sind tendentiell sicherer als - ausschließende Firewalls, da sie das Risiko, dass - unerwünschter Datenverkehr die Firewall passiert, signifikant + <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> + + <note> + <para>Wenn nicht anders vermerkt, verwenden alle Konfigurationen + und Beispielregelsets dieses Kapitels inclusive Firewalls.</para> + </note> <para>Die Sicherheit einer Firewall kann durch den Einsatz einer <quote>zustandsabhängigen Firewall</quote> (<foreignphrase>stateful firewall</foreignphrase>) weiter - erhöht werden. Eine zustandsabhängige Firewall + 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 @@ -159,7 +168,7 @@ 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 Fireall einzurichten.</para> + Bedürfnisse optimale Firewall einzurichten.</para> </sect1> <sect1 id="firewalls-apps"> @@ -178,8 +187,8 @@ in enger Verbindung mit <acronym>IPFW</acronym>, während <acronym>ALTQ</acronym> gemeinsam mit <acronym>PF</acronym> eingesetzt wird. - Traffic Shaping für <acronym>IPFILTER</acronym> ist derzeit - mit <acronym>IPFILTER</acronym> für NAT sowie Filterung und + 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. @@ -204,7 +213,7 @@ <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</acronym>/IP zu verstehen. + 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 @@ -256,24 +265,31 @@ Sie unter <ulink url="http://pf4freebsd.love2party.net/"></ulink>.</para> <sect2> - <title>Verwendung des PF-Kernelmoduls</title> - - <para>Seit der Veröffentlichung von &os; 5.3 ist PF als ein - separates, zur Laufzeit ladbares Modul enthalten. Das System lädt - das PF-Kernelmodul automatisch, wenn die &man.rc.conf.5;-Anweisung - <literal>pf_enable="YES"</literal> verwendet wird. Allerdings wird - das <acronym>PF</acronym>-Modul nicht geladen, wenn das System keine - Konfigurationsdatei mit einem Regelwerk finden kann. Der Standardpfad - ist <filename>/etc/pf.conf</filename>. Wenn ihr - <acronym>PF</acronym>-Regelwerk irgendwo anders abgelegt ist, tragen - Sie <literal>pf_rules="<replaceable>/path/pf.rules</replaceable>"</literal> - in ihre <filename>/etc/rc.conf</filename> ein, um den Pfad zu der - Konfigurationsdatei anzugeben.</para> + <title>Verwendung der PF-Kernelmodule</title> + + <para>Um die PF Kernel Module zu laden, fügen Sie folgende + Zeile in ihre <filename>/etc/rc.conf</filename> ein:</para> + + <programlisting>pf_enable="YES"</programlisting> + + <para>Danach starten Sie das Startup Script um die Module + zu laden:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/pf start</userinput></screen> + + <para>Das PF Modul wird nicht geladen, falls es die Ruleset + Konfigurationsdatei nicht findet. Standardmässig befindet + sich diese Datei in <filename>/etc/pf.conf</filename>. Falls das + PF Ruleset sich an einem anderen Platz befindet, können Sie das + durch Hinzufügen einer Zeile ähnlich der folgenden, in + ihrer <filename>/etc/rc.conf</filename> ändern:</para> + + <programlisting>pf_rules="<replaceable>/path/to/pf.conf</replaceable>"</programlisting> <note> <para>Seit &os; 7.0 ist die Beispiel-<filename>pf.conf</filename> - aus dem Verzeichnis <filename role="directory">/etc</filename> nach - <filename role="directory">/usr/share/examples/pf/</filename> + aus dem Verzeichnis <filename class="directory">/etc</filename> nach + <filename class="directory">/usr/share/examples/pf/</filename> gewandert. Bei &os; Versionen vor 7.0 existiert standardmässig eine Datei <filename>/etc/pf.conf</filename>.</para> </note> @@ -282,12 +298,23 @@ Kommandozeile geladen werden:</para> <screen>&prompt.root; <userinput>kldload pf.ko</userinput></screen> + + <para>Protokollierungsfunktionen für PF werden durch das Modul + <literal>pflog.ko</literal> zur Verfügung gestellt und + können durch folgenden Eintrag in der + <filename>/etc/rc.conf</filename> aktiviert werden:</para> + + <programlisting>pflog_enable="YES"</programlisting> + + <para>Danach starten Sie das Startup Script, um das Modul + zu laden:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/pflog start</userinput></screen> + + <para>Falls Sie noch weitere Features für + <acronym>PF</acronym> benötigen, müssen Sie diese in den + Kernel einbauen.</para> - <para>Das Kernelmodul wurde mit aktiviertem &man.pflog.4; erstellt, - welches Unterstützung für Protokollierung liefert. Falls Sie - andere Eigenschaften von <acronym>PF</acronym> benötigen, - müssen Sie <acronym>PF</acronym>-Unterstützung mit in den - Kernel kompilieren.</para> </sect2> <sect2> @@ -320,8 +347,8 @@ Änderungen der <acronym>PF</acronym>-Zustandstabelle offenlegt. Es kann mit &man.carp.4; kombiniert werden, um ausfallsichere Firewalls mit <acronym>PF</acronym> zu realisieren. Weitere - Informationen zu <acronym>CARP</acronym> erhalten Sie in <link - linkend="carp">Kapitel 29</link> des Handbuchs.</para> + Informationen zu <acronym>CARP</acronym> erhalten Sie in + <xref linkend="carp"> des Handbuchs.</para> <para>Die Kernelkonfigurationsoptionen von <acronym>PF</acronym> befinden sich in <filename>/usr/src/sys/conf/NOTES</filename> und sind im @@ -380,41 +407,27 @@ pflog_flags="" # zusätzliche Parameter für den Start <acronym>PF</acronym>-Regelwerks lesen Sie bitte die <ulink url="http://www.openbsd.org/faq/pf/">PF FAQ</ulink>.</para> - <warning> - <para>Beim Lesen der <ulink - url="http://www.openbsd.org/faq/pf/">PF FAQ</ulink> wollten Sie - darauf achten, dass verschiedene Versionen von &os; auch - unterschiedliche Versionen von PF enthalten:</para> - - <itemizedlist> - <listitem> - <para>&os; 5.<replaceable>X</replaceable> - - <acronym>PF</acronym>-Version von OpenBSD 3.5</para> - </listitem> - - <listitem> - <para>&os; 6.<replaceable>X</replaceable> - - <acronym>PF</acronym>-Version von OpenBSD 3.7</para> - </listitem> - - <listitem> - <para>&os; 7.<replaceable>X</replaceable> - - <acronym>PF</acronym>-Version von OpenBSD 4.1</para> - </listitem> - </itemizedlist> - </warning> + <warning> + <para>Beim Lesen der <ulink + url="http://www.openbsd.org/faq/pf/">PF FAQ</ulink> wollten Sie + darauf achten, dass verschiedene Versionen von &os; auch + unterschiedliche Versionen von PF enthalten. Das aktuelle + &os; 7.<replaceable>X</replaceable> und neuere Versionen + benutzen die selbe Version von <acronym>PF</acronym> wie + OpenBSD 4.1.</para> + </warning> - <para>Die &a.pf; ist eine erste Anlaufstelle für - Fragen zur Konfiguration und dem Einsatz der <acronym>PF</acronym> - Firewall. Vergessen Sie nicht, vorher die Mailinglistenarchive zu - durchsuchen, bevor Sie dort eine Frage stellen!</para> + <para>Die &a.pf; ist eine erste Anlaufstelle für + Fragen zur Konfiguration und dem Einsatz der <acronym>PF</acronym> + Firewall. Vergessen Sie nicht, vorher die Mailinglistenarchive zu + durchsuchen, bevor Sie dort eine Frage stellen!</para> </sect2> <sect2> <title>Arbeiten mit PF</title> <para>Benutzen Sie &man.pfctl.8;, um <acronym>PF</acronym> zu steuern. - Unten finden sie ein paar nützliche Befehle (lesen Sie auch die + Unten finden Sie ein paar nützliche Befehle (lesen Sie auch die Manualpage zu &man.pfctl.8;, um alle verfügbaren Optionen nachzuschlagen):</para> @@ -487,36 +500,36 @@ options ALTQ_NOPCC # Wird von SMP benötigt</programlisting> <acronym>ALTQ</acronym>-Framework.</para> <para><literal>options ALTQ_CBQ</literal> aktiviert das - <foreignphrase>Class Based Queuing</foreignphrase> + <emphasis>Class Based Queuing</emphasis> (<acronym>CBQ</acronym>). <acronym>CBQ</acronym> erlaubt es, die Bandbreite einer Verbindung in verschiedene Klassen oder Warteschlangen zu unterteilen, um die Priorität von Datenpaketen basierend auf Filterregeln zu ändern.</para> - <para><literal>options ALTQ_RED</literal> aktiviert - <foreignphrase>Random Early Detection</foreignphrase> - (<acronym>RED</acronym>). <acronym>RED</acronym> wird - zur Vermeidung einer Netzwerkverstopfung verwendet. Dazu - ermittelt <acronym>RED</acronym> die Größe der - Warteschlange und vergleicht diesen Wert mit den minimalen - und maximalen Grenzwerten der Warteschlange. Ist die - Warteschlange größer als das erlaubte Maximum, - werden alle neuen Pakete verworfen. Getreu seinem Namen - verwirft <acronym>RED</acronym> Pakete unterschiedlicher + <para><literal>options ALTQ_RED</literal> aktiviert + <emphasis>Random Early Detection</emphasis> + (<acronym>RED</acronym>). <acronym>RED</acronym> wird + zur Vermeidung einer Netzwerkverstopfung verwendet. Dazu + ermittelt <acronym>RED</acronym> die Größe der + Warteschlange und vergleicht diesen Wert mit den minimalen + und maximalen Grenzwerten der Warteschlange. Ist die + Warteschlange größer als das erlaubte Maximum, + werden alle neuen Pakete verworfen. Getreu seinem Namen + verwirft <acronym>RED</acronym> Pakete unterschiedlicher Verbindungen nach dem Zufallsprinzip.</para> <para><literal>options ALTQ_RIO</literal> aktiviert - <foreignphrase>Random Early Detection In and - Out</foreignphrase>.</para> + <emphasis>Random Early Detection In and + Out</emphasis>.</para> <para><literal>options ALTQ_HFSC</literal> aktiviert den - <foreignphrase>Hierarchical Fair Service Curve</foreignphrase> + <emphasis>Hierarchical Fair Service Curve</emphasis> -Paketplaner. Weitere Informationen zu <acronym>HFSC</acronym> finden Sie unter <ulink url="http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html"></ulink>.</para> <para><literal>options ALTQ_PRIQ</literal> aktiviert - <foreignphrase>Priority Queuing</foreignphrase> + <emphasis>Priority Queuing</emphasis> (<acronym>PRIQ</acronym>). <acronym>PRIQ</acronym> lässt Verkehr einer Warteschlange mit höherer Priorität zuerst durch.</para> diff --git a/de_DE.ISO8859-1/books/handbook/l10n/chapter.sgml b/de_DE.ISO8859-1/books/handbook/l10n/chapter.sgml index 3c347f5d61..f1a1d6478f 100644 --- a/de_DE.ISO8859-1/books/handbook/l10n/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/l10n/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/l10n/chapter.sgml,v 1.64 2010/01/08 22:30:13 bcr Exp $ - basiert auf: 1.131 + $FreeBSDde: de-docproj/books/handbook/l10n/chapter.sgml,v 1.65 2010/02/25 19:00:38 fboerner Exp $ + basiert auf: 1.132 --> <chapter id="l10n"> @@ -366,7 +366,7 @@ me:\ müssen in <filename>/etc/login.conf</filename> vorgenommen werden:</para> - <programlisting><replaceable>Sprache</replaceable>:<replaceable>Beschreibung</replaceable>:\ + <programlisting><replaceable>Sprache</replaceable>|<replaceable>Account-Typ-Beschreibung</replaceable>:\ :charset=<replaceable>MIME_Zeichensatz</replaceable>:\ :lang=<replaceable>Locale</replaceable>:\ :tc=default:</programlisting> @@ -374,7 +374,7 @@ me:\ <para>Die für Latin-1 erforderlichen Einträge sehen wie folgt aus:</para> - <programlisting>german:German Users Accounts:\ + <programlisting>german|German Users Accounts:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default:</programlisting> diff --git a/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml b/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml index 441f66b24f..174a9a4a9d 100644 --- a/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/linuxemu/chapter.sgml,v 1.89 2009/09/15 18:52:49 bcr Exp $ - basiert auf: 1.139 + $FreeBSDde: de-docproj/books/handbook/linuxemu/chapter.sgml,v 1.90 2010/02/05 16:30:28 bcr Exp $ + basiert auf: 1.140 --> <chapter id="linuxemu"> @@ -364,7 +364,7 @@ Abort</screen> <para>Damit der FreeBSD-Kernel eine Linux-ELF-Datei von einer FreeBSD-ELF-Datei unterscheiden kann, gibt es das Werkzeug - &man.brandelf.1;:</para> + &man.brandelf.1;.</para> <screen>&prompt.user; <userinput>brandelf -t Linux my-linux-elf-binary</userinput></screen> diff --git a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml index 1713d5b6fc..53b9a869d6 100644 --- a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/mirrors/chapter.sgml,v 1.160 2009/12/28 23:17:51 bcr Exp $ - basiert auf: 1.474 + $FreeBSDde: de-docproj/books/handbook/mirrors/chapter.sgml,v 1.162 2010/02/19 19:20:24 fboerner Exp $ + basiert auf: 1.476 --> <appendix id="mirrors"> @@ -2511,6 +2511,16 @@ doc/zh_*</screen> &os; 7-STABLE bekannt.</para> </listitem> </varlistentry> + + <varlistentry> + <term>RELENG_7_3</term> + + <listitem> + <para>Der Zweig, auf dem sicherheitsrelevante oder kritische + Fehlerbehebungen für &os; 7.3 + durchgeführt werden.</para> + </listitem> + </varlistentry> <varlistentry> <term>RELENG_7_2</term> @@ -2814,6 +2824,14 @@ doc/zh_*</screen> <para>&os; 8.0</para> </listitem> </varlistentry> + + <varlistentry> + <term>RELENG_7_3_0_RELEASE</term> + + <listitem> + <para>&os; 7.3</para> + </listitem> + </varlistentry> <varlistentry> <term>RELENG_7_2_0_RELEASE</term> diff --git a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml index 78aee98636..a21d11195e 100644 --- a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/security/chapter.sgml,v 1.157 2008/03/26 14:26:57 jkois Exp $ - basiert auf: 1.320 + $FreeBSDde: de-docproj/books/handbook/security/chapter.sgml,v 1.174 2010/02/25 17:56:54 fboerner Exp $ + basiert auf: 1.336 --> <chapter id="security"> @@ -47,7 +47,7 @@ Integrität und die Sicherheit Ihrer Systeme und Netzwerke zu gewährleisten.</para> - <para>Nach dem Sie dieses Kapitel durchgearbeitet haben, werden + <para>Nachdem Sie dieses Kapitel durchgearbeitet haben, werden Sie:</para> <itemizedlist> @@ -361,7 +361,7 @@ Anmeldungen als <username>root</username> verboten sind. Für <application>SSH</application> editieren Sie <filename>/etc/ssh/sshd_config</filename> und überprüfen, - dass <literal>PermitRootLogin</literal> auf <literal>NO</literal> + dass <literal>PermitRootLogin</literal> auf <literal>no</literal> gesetzt ist. Beachten Sie jede Zugriffsmethode – Dienste wie FTP werden oft vergessen. Nur an der Systemkonsole sollte ein direktes Anmelden als <username>root</username> möglich @@ -550,8 +550,10 @@ <username>root</username>-Zugriff führen können, sind die auf dem System installierten SUID- und SGID-Programme. Die meisten dieser Programme wie <application>rlogin</application> stehen - in <filename>/bin</filename>, <filename>/sbin</filename>, - <filename>/usr/bin</filename>, oder <filename>/usr/sbin</filename>. + in <filename class="directory">/bin</filename>, + <filename class="directory">/sbin</filename>, + <filename class="directory">/usr/bin</filename>, oder + <filename class="directory">/usr/sbin</filename>. Obwohl nichts 100% sicher ist, können Sie davon ausgehen, dass die SUID- und SGID-Programme des Basissystems ausreichend sicher sind. Allerdings werden ab und an in diesen Programmen @@ -646,30 +648,83 @@ Modulen in den Kernel: &man.kldload.8;. Ein unternehmungslustiger Angreifer kann dies benutzen, um sein eigenes <devicename>bpf</devicename> oder ein anderes zum Abhören - geeignetes Gerät in den laufenden Kernel einzubringen. Um diese - Probleme zu vermeiden, müssen Sie den Kernel auf einer - höheren Sicherheitsstufe, mindestens <literal>1</literal>, - laufen lassen. Die Sicherheitsstufe wird durch die Variable - <varname>kern.securelevel</varname>, die mit <command>sysctl</command> - gesetzt werden kann, angegeben. Nachdem Sie die Sicherheitsstufe - auf <literal>1</literal> gesetzt haben, sind schreibende Zugriffe - auf rohe Geräte verboten und die speziellen - <command>chflags</command> Optionen, wie <literal>schg</literal> - werden erzwungen. Sie müssen sicherstellen, dass die - <literal>schg</literal> Option auf allen kritischen Programmen, - Verzeichnissen und Skripten, die bis zum Setzen der Option laufen, - aktiviert ist. Das mag übertrieben sein da eine Migration - des Systems erschwert wird, wenn Sie auf einer höheren - Sicherheitsstufe arbeiten. Sie können einen Kompromiss - erreichen, indem Sie das System auf einer erhöhten - Sicherheitsstufe laufen lassen, aber die <literal>schg</literal> - Option nicht für jede Datei und jedes Verzeichnis auf der Welt - setzen. Eine andere Möglichkeit besteht darin, - <filename>/</filename> und <filename>/usr</filename> einfach - schreibgeschützt einzuhängen. Bedenken Sie aber, dass - Sie das Aufdecken eines Einbruchs vielleicht verhindern, wenn - Sie zu drastische Maßnahmen zum Schutz Ihres Systems - verwenden.</para> + geeignetes Gerät in den laufenden Kernel einzubringen. Um + dieses Problem zu vermeiden, müssen Sie den Kernel auf + einem höheren Sicherheitslevel laufen lassen, mindestens + auf securelevel 1.</para> + + <para>Das Securelevel des Kernels kann auf verschiedene Wege + gesetzt werden. Der einfachste Weg ist das erhöhen des + Securelevel des laufenden Kernels durch ein + <command>sysctl</command> der <varname>kern.securelevel</varname> + Kernel Variablen:</para> + + <screen>&prompt.root; <userinput>sysctl kern.securelevel=<replaceable>1</replaceable></userinput></screen> + + <para>Standardmässig bootet der &os; Kernel mit einem + Securelevel von -1. Der Securelevel wird solange bei -1 bleiben, + bis er entweder durch den Administrator oder von &man.init.8; + durch einen Eintrag im Startup Script verändert wird. Der + Securelevel kann während des Systemstarts durch das Setzen + der Variable <varname>kern_securelevel_enable</varname> auf + <literal>YES</literal> und der Wert der Variable + <varname>kern_securelevel</varname> auf den gewünschten + Securelevel in der <filename>/etc/rc.conf</filename> + erhöht werden.</para> + + <para>Der Standard Securelevel von einem &os;-System direkt nach + dem Start ist -1. Dies wird <quote>insecure mode</quote> genannt, + da zum Beispiel unverändeliche Dateiflags abgeschaltet werden + könnten, von allen Geräten gelesen und auf alle geschrieben + werden kann.</para> + + <para>Sobald der Securelevel auf den Wert 1 oder höher gesetzt + ist, werden die append-only und die unveränderlichen Dateien + geschützt, die Flags können nicht abgeschaltet werden + und der Zugriff auf raw Devices ist verboten. Höhere Levels + verbieten mehr Aktionen. Für einen vollständige Liste + aller Securelevels, lesen Sie bitte die &man.security.7; + Manual Seite (oder die Manual Seite von &man.init.8; für + ältere Releases als &os; 7.0).</para> + + <note> + <para>Das Erhöhen des Securelevels auf 1 oder höher + kann einige Probleme mit X11 verursachen (Zugriff auf + <filename>/dev/io</filename> wird geblockt), ebenso die Installation + von &os; aus den Quellen (der <maketarget>installworld</maketarget> + Teil muss zeitweilig die append-only und die + unveränderlichen Flags einiger Dateien zurücksetzen), + und auch noch in einigen anderen Fällen. Manchmal kann es, + wie bei X11, durch das sehr frühe Starten von &man.xdm.1; + im Boot Prozess möglich sein, dies zu umgehen, wenn der + Securelevel noch niedrig genug ist. + Workarounds wie dieser sind nicht f¨r alle Securelevels + und für alle Einschränkungen, die sie schaffen, + möglich. Ein bisschen Vorausplanung ist eine gute + Idee. Das Verständnis für die Beschränkungen, + die durch jedes Securelevel verursacht werden, ist wichtig, da sie + die einfache Benutzung des Systems verschlechtern. Es vereinfacht + auch die Wahl einer Standardeinstellung und schützt vor + Überraschungen.</para> + </note> + + <para>Wenn das Securelevel des Kernel auf einen Wert von 1 oder + höher gesetzt ist, kann es sinnvoll sein das + <literal>schg</literal> Flag auf kritische Startdateien, + Verzeichnisse und Scripte (z.B. alles was läuft bis zu + dem Punkt auf dem das Securelevel gesetzt ist) zu setzen. Dies + könnte etwas ü,bertrieben sein, und auch das Upgrade + des Systems ist sehr viel schwerer, wenn es auf einem hohen + Securelevel läuft. Ein strengerer Kompromiss ist es, das + System auf einem höheren Securelevel laufen zu lassen, aber + keine <literal>schg</literal> Flags für alle Systemdateien + und Verzeichnisse zu setzen. Eine andere Möglichkeit ist es, + einfach die Verzeichnisse <filename class="directory">/</filename> und + <filename class="directory">/usr</filename> read-only zu mounten. + Es sei darauf hingewiesen, dass Sie nicht vor lauter Überlegen + das Wichtigste, nämlich die Entdeckung eines Eindringens, + vergessen.</para> + </sect2> <sect2 id="security-integrity"> @@ -679,8 +734,9 @@ nur so weit schützen, wie es die Benutzbarkeit des Systems nicht einschränkt. Wenn Sie zum Beispiel mit <command>chflags</command> die Option <literal>schg</literal> - auf die meisten Dateien in <filename>/</filename> und - <filename>/usr</filename> setzen, kann das Ihre Arbeit mehr behindern + auf die meisten Dateien in <filename class="directory">/</filename> und + <filename class="directory">/usr</filename> setzen, kann das Ihre + Arbeit mehr behindern als nützen. Die Maßnahme schützt zwar die Dateien, schließt aber auch eine Möglichkeit, Veränderungen zu entdecken, aus. Die letzte Schicht des @@ -706,7 +762,7 @@ für das besonders geschützte System exportieren, oder Sie können der besonders geschützten Maschine <application>SSH</application> auf die anderen Maschinen erlauben, - indem Sie <application>SSH</application> Schlüsselpaare + indem Sie <application>SSH</application>-Schlüsselpaare installieren. Mit Ausnahme des verursachten Netzwerkverkehrs ist die NFS-Methode die am wenigsten sichtbare. Sie erlaubt es Ihnen, nahezu unentdeckt die Dateisysteme der Clients zu beobachten. Wenn @@ -725,7 +781,8 @@ verwenden, können Sie dazu einfache Systemwerkzeuge wie &man.find.1; und &man.md5.1; benutzen. Am besten berechnen Sie einmal am Tag MD5-Prüfsummen der Dateien, Konfigurationsdateien - in <filename>/etc</filename> und <filename>/usr/local/etc</filename> + in <filename class="directory">/etc</filename> und + <filename class="directory">/usr/local/etc</filename> sollten öfter überprüft werden. Wenn Unstimmigkeiten zwischen den auf der besonders geschützten Maschine gehaltenen MD5-Prüfsummen und den ermittelten Prüfsummen festgestellt @@ -733,7 +790,8 @@ der den Unstimmigkeiten dann nachgehen sollte. Ein gutes Skript überprüft das System auch auf verdächtige SUID-Programme sowie gelöschte oder neue Dateien in - <filename>/</filename> und <filename>/usr</filename>.</para> + <filename class="directory">/</filename> und + <filename class="directory">/usr</filename>.</para> <para>Wenn Sie <application>SSH</application> anstelle von NFS benutzen, wird das Erstellen der Skripten schwieriger. Sie müssen @@ -741,7 +799,7 @@ <command>scp</command> auf den Client kopieren. Damit machen Sie die Überprüfung für einen Angreifer sichtbar. Außerdem kann der SSH-Client auf dem - Zielsystem schon kompromittiert sein. Zusammenfassend, kann der + Zielsystem schon kompromittiert sein. Zusammenfassend kann der Einsatz von <application>SSH</application> nötig sein, wenn Sie über ungesicherte Verbindungen arbeiten, aber der Umgang mit dieser Methode ist auch sehr viel schwieriger.</para> @@ -1138,7 +1196,7 @@ <para>In der Voreinstellung unterstützt &os; OPIE (<foreignphrase>One-time Passwords in - Everything</foreignphrase>, das in der Regel MD5-Hash-Funktionen + Everything</foreignphrase>), das in der Regel MD5-Hash-Funktionen einsetzt.</para> <para>Im Folgenden werden drei verschiedene @@ -1447,7 +1505,7 @@ Enter secret pass phrase: <userinput><secret password></userinput> und Beispiele für deren Konfiguration vorgestellt.</para> <para>Die <acronym>TCP</acronym>-Wrapper erweitern die - Steuerungsmöglichkeiten, die <command>inetd</command> + Steuerungsmöglichkeiten, die <application>inetd</application> über die Dienste unter seiner Kontrolle hat. Beispielsweise können Verbindungen protokolliert, Nachrichten zurückgesandt oder nur interne Verbindungen @@ -1464,7 +1522,7 @@ Enter secret pass phrase: <userinput><secret password></userinput> <acronym>TCP</acronym>-Wrapper sind eine weitere Sicherheitsschicht zum Schutz eines Systems.</para> - <para>Da die Wrapper die Funktion von <command>inetd</command> + <para>Da die Wrapper die Funktion von <application>inetd</application> erweitern, wird im Folgenden vorausgesetzt, dass Sie den Abschnitt über die <link linkend="network-inetd">inetd-Konfiguration</link> @@ -1480,65 +1538,64 @@ Enter secret pass phrase: <userinput><secret password></userinput> <sect2> <title>TCP-Wrapper einrichten</title> - <para>Um die <acronym>TCP</acronym>-Wrapper unter &os; - zu benutzen, muss nur der <command>inetd</command> - aus <filename>rc.conf</filename> mit den voreingestellten - Optionen <option>-Ww</option> gestartet werden. - Die Konfigurationsdatei <filename>/etc/hosts.allow</filename> - darf keine Fehler enthalten; falls doch, werden die - Fehler mit &man.syslogd.8; protokolliert.</para> + <para>Um die <acronym>TCP</acronym>-Wrapper unter &os; + zu benutzen, muss nur der <application>inetd</application> + aus <filename>rc.conf</filename> mit den voreingestellten + Optionen <option>-Ww</option> gestartet werden. + Die Konfigurationsdatei <filename>/etc/hosts.allow</filename> + darf keine Fehler enthalten; falls doch, werden die + Fehler mit &man.syslogd.8; protokolliert.</para> <note> - <para>Im Gegensatz zu anderen Implementationen der - <acronym>TCP</acronym>-Wrapper wird vom Gebrauch - der Datei <filename>hosts.deny</filename> abgeraten. - Die Konfiguration sollte sich vollständig in der - Datei <filename>/etc/hosts.allow</filename> befinden.</para> + <para>Im Gegensatz zu anderen Implementationen der + <acronym>TCP</acronym>-Wrapper wird vom Gebrauch + der Datei <filename>hosts.deny</filename> abgeraten. + Die Konfiguration sollte sich vollständig in der + Datei <filename>/etc/hosts.allow</filename> befinden.</para> </note> - <para>In der einfachsten Konfiguration werden Dienste - abhängig vom Inhalt der Datei - <filename>/etc/hosts.allow</filename> erlaubt oder - gesperrt. Unter &os; wird in der Voreinstellung - jeder von <command>inetd</command> gestartete Dienst - erlaubt. Sehen wir uns zunächst die Grundkonfiguration - an.</para> - - <para>Eine Konfigurationszeile ist wie folgt aufgebaut: - <literal>Dienst : Adresse : Aktion</literal>. - <literal>Dienst</literal> ist der von <command>inetd</command> - gestartete Dienst (auch Daemon genannt). Die - <literal>Adresse</literal> kann ein gültiger - Rechnername, eine <acronym>IP</acronym>-Adresse oder - eine IPv6-Adresse in Klammern - (<literal>[</literal> <literal>]</literal>) sein. - Der Wert <literal>allow</literal> im Feld - <literal>Aktion</literal> erlaubt Zugriffe, der Wert - <literal>deny</literal> verbietet Zugriffe. - Die Zeilen in <filename>hosts.allow</filename> - werden für jede Verbindung der Reihe nach - abgearbeitet. Trifft eine Zeile auf eine Verbindung - zu, wird die entsprechende Aktion ausgeführt - und die Abarbeitung ist beendet.</para> - - <para>Es gibt noch weitere Konfigurationsoptionen, die - gleich erläutert werden. Das bisher Gesagte - reicht, um eine einfache Regel aufzustellen. Wenn - Sie einkommende <acronym>POP</acronym>3-Verbindungen - für den Dienst - <filename role="package">mail/qpopper</filename> - erlauben wollen, erweitern Sie - <filename>hosts.allow</filename> um die nachstehende - Zeile:</para> + <para>In der einfachsten Konfiguration werden Dienste + abhängig vom Inhalt der Datei + <filename>/etc/hosts.allow</filename> erlaubt oder + gesperrt. Unter &os; wird in der Voreinstellung + jeder von <application>inetd</application> gestartete Dienst + erlaubt. Sehen wir uns zunächst die Grundkonfiguration + an.</para> + + <para>Eine Konfigurationszeile ist wie folgt aufgebaut: + <literal>Dienst : Adresse : Aktion</literal>. + <literal>Dienst</literal> ist der von <application>inetd</application> + gestartete Dienst (auch Daemon genannt). Die + <literal>Adresse</literal> kann ein gültiger + Rechnername, eine <acronym>IP</acronym>-Adresse oder + eine IPv6-Adresse in Klammern + (<literal>[</literal> <literal>]</literal>) sein. + Der Wert <literal>allow</literal> im Feld + <literal>Aktion</literal> erlaubt Zugriffe, der Wert + <literal>deny</literal> verbietet Zugriffe. + Die Zeilen in <filename>hosts.allow</filename> + werden für jede Verbindung der Reihe nach + abgearbeitet. Trifft eine Zeile auf eine Verbindung + zu, wird die entsprechende Aktion ausgeführt + und die Abarbeitung ist beendet.</para> + + <para>Es gibt noch weitere Konfigurationsoptionen, die + gleich erläutert werden. Das bisher Gesagte + reicht, um eine einfache Regel aufzustellen. Wenn + Sie einkommende <acronym>POP</acronym>3-Verbindungen + für den Dienst + <filename role="package">mail/qpopper</filename> + erlauben wollen, erweitern Sie + <filename>hosts.allow</filename> um die nachstehende Zeile:</para> <programlisting># This line is required for POP3 connections: qpopper : ALL : allow</programlisting> - <para>Nachdem Sie die Zeile hinzugefügt haben, muss der - <command>inetd</command> neu gestartet werden. Sie - können dazu das Kommando &man.kill.1; verwenden - oder <command>/etc/rc.d/inetd restart</command> - ausführen.</para> + <para>Nachdem Sie die Zeile hinzugefügt haben, muss der + <application>inetd</application> neu gestartet werden. Sie + können dazu das Kommando &man.kill.1; verwenden + oder <command>/etc/rc.d/inetd restart</command> + ausführen.</para> </sect2> <sect2> @@ -1596,7 +1653,7 @@ ALL : ALL \ <para>Um einem Denial-of-Service-Angriff zu entgehen, benutzen Sie die Option <option>spawn</option>. - Wie die Option <option>twist</option> verbietet + Wie die Option <option>twist</option> verbietet die Option <option>spawn</option> die Verbindung und führt externe Kommandos aus. Allerdings sendet die Option <option>spawn</option> der Gegenstelle @@ -1618,7 +1675,7 @@ ALL : .example.com \ und den Dienst, der angesprochen wurde.</para> <para>In der Konfigurationsdatei wurde beispielsweise - das Metazeichen %a verwendet. Es gibt weitere + das Metazeichen <literal>%a</literal> verwendet. Es gibt weitere Metazeichen, die in der Hilfeseite &man.hosts.access.5; beschrieben werden.</para> </sect3> @@ -1627,20 +1684,20 @@ ALL : .example.com \ <title>Wildcards</title> <para>Bisher verwendeten die Beispiele immer die - Wildcard <literal>ALL</literal>. Die Wildcard + Wildcard <literal>ALL</literal>. Es gibt andere Wildcards, + welche die Funktionalität ein bisschen erweitern. Die Wildcard <literal>ALL</literal> passt beispielsweise auf jeden Dienst, jede Domain oder jede <acronym>IP</acronym>-Adresse. Eine andere Wildcard ist <literal>PARANOID</literal>. Sie passt - auf jeden Rechner dessen <acronym>IP</acronym>-Adresse + auf jeden Rechner, dessen <acronym>IP</acronym>-Adresse möglicherweise gefälscht ist. Dies ist dann der Fall, wenn der Verbindungsaufbau von einer <acronym>IP</acronym>-Adresse erfolgt, die nicht - zu dem übermittelten Rechnernamen passt. - Für solche Fälle werden mit der - Wildcard <literal>PARANOID</literal> Aktionen - festgelegt, beispielsweise:</para> - + zu dem übermittelten Rechnernamen passt. Das folgende + Beispiel sollte das ganze etwas klarer werden lassen: + </para> + <programlisting># Block possibly spoofed requests to sendmail: sendmail : PARANOID : deny</programlisting> @@ -1654,14 +1711,15 @@ sendmail : PARANOID : deny</programlisting> kann einen Dienst unbrauchbar machen, wenn der Client oder der Server eine fehlerhafte <acronym>DNS</acronym>-Konfiguration besitzt. - Setzen Sie die Wildcard bitte umsichtig ein.</para> + Seien Sie daher besonders vorsichtig, wenn Sie diese Wildcard + in Ihre Konfiguration aufnehmen wollen.</para> </caution> <para>Weiteres über Wildcards und deren Funktion lesen Sie bitte in der Hilfeseite &man.hosts.access.5; nach.</para> - <para>In der Voreinstellung sind alle Dienste erlaubt. + <para> Damit die gezeigten Beispiele funktionieren, müssen Sie die erste Konfigurationszeile in der Datei <filename>hosts.allow</filename> auskommentieren.</para> @@ -1735,8 +1793,8 @@ sendmail : PARANOID : deny</programlisting> <para>Die folgenden Schritte werden nur auf dem Kerberos-Server durchgeführt. Stellen Sie bitte vorher sicher, dass keine alten Kerberos-Datenbanken mehr vorhanden sind. Im - Verzeichnis <filename>/etc/kerberosIV</filename> sollten sich nur - die folgenden Dateien befinden:</para> + Verzeichnis <filename class="directory">/etc/kerberosIV</filename> + sollten sich nur die folgenden Dateien befinden:</para> <screen>&prompt.root; <userinput>cd /etc/kerberosIV</userinput> &prompt.root; <userinput>ls</userinput> @@ -1906,7 +1964,7 @@ Edit O.K. die Dienste definieren, aus der Datenbank mit <command>ext_srvtab</command> extrahieren. Die erstelle Datei muss auf einem <emphasis>sicheren Weg</emphasis> in das - Verzeichnis <filename>/etc</filename> jedes Clients + Verzeichnis <filename class="directory">/etc</filename> jedes Clients kopiert werden. Die Datei muss auf jedem Server und auf jedem Client vorhanden sein und ist unabdingbar für Kerberos.</para> @@ -1930,7 +1988,8 @@ Generating 'grunt-new-srvtab'....</screen> <para>Wenn die Datei für ein Client-System bestimmt ist und das Netzwerk nicht sicher ist, kopieren Sie die Datei auf ein bewegliches Medium und transportieren sie physikalisch. Kopieren Sie die Datei - auf den Client in das Verzeichnis <filename>/etc</filename>. + auf den Client in das Verzeichnis + <filename class="directory">/etc</filename>. Benennen Sie die Datei in <filename>srvtab</filename> um und setzen Sie schließlich noch die Berechtigungen auf 600:</para> @@ -1981,7 +2040,8 @@ Edit O.K. Wenn Sie <filename>/etc/rc.conf</filename> richtig angepasst haben, passiert das automatisch, wenn Sie booten. Dieser Schritt ist nur auf dem Kerberos-Server notwendig, die Clients bekommen alles - was sie brauchen aus dem <filename>/etc/kerberosIV</filename> + was sie brauchen aus dem + <filename class="directory">/etc/kerberosIV</filename> Verzeichnis.</para> <screen>&prompt.root; <userinput>kerberos &</userinput> @@ -2440,7 +2500,7 @@ Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG</screen> <para>Dieses Ticket kann, nachdem Sie Ihre Arbeit beendet haben, zurückgezogen werden:</para> - <screen>&prompt.user; <userinput>k5destroy</userinput></screen> + <screen>&prompt.user; <userinput>kdestroy</userinput></screen> </sect2> <sect2> @@ -2818,7 +2878,8 @@ jdoe@example.org</screen> (<ulink url="http://web.mit.edu/Kerberos/www/"></ulink>) des <acronym>MIT</acronym>s. Achten Sie besonders auf den Suchpfad für Anwendungen. Der <acronym>MIT</acronym>-Port - wird standardmäßig in <filename>/usr/local/</filename> + wird standardmäßig in + <filename class="directory">/usr/local/</filename> installiert. Wenn die Umgebungsvariable <envar>PATH</envar> zuerst die Systemverzeichnisse enthält, werden die Systemprogramme anstelle der <acronym>MIT</acronym>-Programme @@ -2849,7 +2910,7 @@ kadmind5_server_enable="YES"</programlisting> <para>Diese Zeilen sind notwendig, weil die Anwendungen von <acronym>MIT</acronym>-Kerberos Binärdateien unterhalb von <filename - role="directory">/usr/local</filename> installieren.</para> + class="directory">/usr/local</filename> installieren.</para> </sect2> <sect2> @@ -2884,7 +2945,7 @@ kadmind5_server_enable="YES"</programlisting> <para>In Mehrbenutzer-Umgebungen ist <application>Kerberos</application> unsicherer als in Einbenutzer-Umgebungen, da die Tickets im für alle - lesbaren Verzeichnis <filename>/tmp</filename> + lesbaren Verzeichnis <filename class="directory">/tmp</filename> gespeichert werden. Wenn ein Rechner von mehreren Benutzern verwendet wird, ist es möglich, dass Tickets gestohlen werden.</para> @@ -3184,15 +3245,14 @@ define(`confSERVER_CERT',`/etc/certs/new.crt')dnl define(`confSERVER_KEY',`/etc/certs/myca.key')dnl define(`confTLS_SRV_OPTIONS', `V')dnl</programlisting> - <para>Im Verzeichnis - <filename class="directory">/etc/certs</filename> - befindet sich der Schlüssel und das Zertifikat. - Bauen Sie danach im Verzeichnis - <filename class="directory">/etc/mail</filename> - mit dem Kommando <command>make install</command> - die <filename>.cf</filename>-Datei und starten - Sie anschließend <application>sendmail</application> - mit <command>make restart</command> neu.</para> + <para>Im Verzeichnis <filename class="directory">/etc/certs</filename> + befindet sich der Schlüssel und das Zertifikat. Bauen Sie danach + im Verzeichnis <filename class="directory">/etc/mail</filename> + mit dem Kommando <command>make + <maketarget>install</maketarget></command> die + <filename>.cf</filename>-Datei und starten Sie anschließend + <application>sendmail</application> mit <command>make + <maketarget>restart</maketarget></command> neu.</para> <para>Wenn alles gut ging, erscheinen keine Fehlermeldungen in der Datei <filename>/var/log/maillog</filename> und @@ -3270,53 +3330,17 @@ Connection closed by foreign host.</screen> <title>IPsec Grundlagen</title> - <para>Dieser Abschnitt zeigt Ihnen, wie Sie IPsec einrichten - und damit &os;-Systeme und µsoft.windows; 2000/XP Systeme - sicher miteinander verbinden. Um IPsec einzurichten, - sollten Sie einen neuen Kernel erzeugen können (siehe + <para>Dieser Abschnitt zeigt Ihnen, wie Sie IPsec einrichten. Um IPsec + einzurichten, sollten Sie einen neuen Kernel bauen können (siehe <xref linkend="kernelconfig">).</para> <para>IPsec ist ein Protokoll, das auf dem Internet-Protokoll (IP) aufbaut. Mit IPsec können mehrere Systeme geschützt miteinander kommunizieren. Das in - &os; realisierte IPsec-Protokoll baut auf der - <ulink url="http://www.kame.net/">KAME-Implementierung</ulink> + &os; realisierte IPsec-Protokoll baut auf der <ulink + url="http://www.kame.net/">KAME-Implementierung</ulink> auf und unterstützt sowohl IPv4 als auch IPv6.</para> - <note> - <para>&os enthält eine von Hardware - beschleunigte Variante des IPsec-Protokolls. Diese - Variante wurde von OpenBSD übernommen und wird - <quote>Fast-IPsec</quote> genannt. Das - &man.crypto.4;-Subsystem arbeitet mit Kryptographie-Hardware - zusammen, die IPsec beschleunigt. Das Subsystem - ist neu und bietet noch nicht alle Funktionen, die - KAME-IPsec bietet. Wenn Sie die Hardware-Beschleunigung - nutzen wollen, fügen Sie folgende Zeile der - Kernelkonfiguration hinzu:</para> - - <indexterm> - <primary>Kerneloption</primary> - <secondary>FAST_IPSEC</secondary> - </indexterm> - - <screen>options FAST_IPSEC # new IPsec (cannot define w/ IPSEC)</screen> - - <para>Momentan können Sie <quote>Fast-IPsec</quote> - nicht zusammen mit KAME-IPsec benutzen. Weiteres zu - <quote>Fast-IPsec</quote> erfahren Sie in der - Hilfeseite &man.fast.ipsec.4;.</para> - </note> - - <note> - <para>Damit Firewalls den Status von &man.gif.4;-Tunneln - überwachen können, müssen Sie die Option - <option>IPSEC_FILTERGIF</option> in Ihrer - Kernelkonfiguration aktivieren:</para> - - <screen>options IPSEC_FILTERGIF #filter ipsec packets from a tunnel</screen> - </note> - <indexterm> <primary>IPsec</primary> <secondary>ESP</secondary> @@ -3339,7 +3363,7 @@ Connection closed by foreign host.</screen> <listitem> <para>Der <emphasis>Authentication Header (AH)</emphasis> - enthät eine kryptographische Prüsumme, + enthät 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 @@ -3380,13 +3404,8 @@ Connection closed by foreign host.</screen> <secondary>IPSEC</secondary> </indexterm> - <indexterm> - <primary>Kerneloption</primary> - <secondary>IPSEC_ESP</secondary> - </indexterm> - <screen>options IPSEC #IP security -options IPSEC_ESP #IP security (crypto; define w/ IPSEC)</screen> +device crypto</screen> <indexterm> <primary>Kerneloption</primary> @@ -3412,7 +3431,9 @@ options IPSEC_ESP #IP security (crypto; define w/ IPSEC)</screen> </sect2> <sect2> - <title>VPN zwischen zwei Netzen über das Internet</title> + <title>Das Szenario: Zwei Netzwerke, ein Heim- und ein + Firmennetzwerk. Beide sind mit dem Internet verbunden und + verhalten sich dank <acronym>VPN</acronym> wie ein Netzwerk.</title> <indexterm> <primary>VPN</primary> @@ -3431,7 +3452,7 @@ options IPSEC_ESP #IP security (crypto; define w/ IPSEC)</screen> </listitem> <listitem> - <para>Beide Netzwerke sind über einen &os;-Gateway + <para>Beide Netzwerke sind über ein &os;-Gateway mit dem Internet verbunden.</para> </listitem> @@ -3443,857 +3464,307 @@ options IPSEC_ESP #IP security (crypto; define w/ IPSEC)</screen> <listitem> <para>Die intern verwendeten IP-Adressen können private oder öffentliche Adressen sein. - Der Gateway kann, wenn nötig, IP-Adressen mit - NAT umschreiben.</para> - </listitem> - - <listitem> - <para>Die IP-Adressen der internen Netzwerke - <emphasis>dürfen nicht überlappen</emphasis>. - Mit NAT ließe sich diese Anforderung zwar umgehen, doch - wäre die Konfiguration und Pflege des resultierenden - Netzwerks zu aufwändig.</para> + Sie dürfen sich nicht überlappen; zum Beispiel: + nicht beide sollten <hostid role="ipaddr">192.168.1.x</hostid> + benutzen.</para> </listitem> </itemizedlist> + </sect2> - <para>Wenn die zu verbindenden Netzwerke intern dieselben - IP-Adressen benutzen (beispielsweise - <hostid role="ipaddr">192.168.1.x</hostid>), müssen - einem der Netzwerke neue IP-Adressen zugewiesen werden.</para> - - <para>Die Netzwerktopologie sieht wie folgt aus:</para> - - <mediaobject> - <imageobject> - <imagedata fileref="security/ipsec-network" align="center"> - </imageobject> - - <textobject> -<literallayout class="monospaced">Netzwerk #1 [ Interne Rechner ] Privates Netz, 192.168.1.2-254 - [ Win9x/NT/2K ] - [ UNIX ] - | - | - .---[fxp1]---. Private IP, 192.168.1.1 - | FreeBSD | - `---[fxp0]---' Öffentliche IP, A.B.C.D - | - | - -=-=- Internet -=-=- - | - | - .---[fxp0]---. Öffentliche IP, W.X.Y.Z - | FreeBSD | - `---[fxp1]---' Private IP, 192.168.2.1 - | - | -Netzwerk #2 [ Interne Rechner ] - [ Win9x/NT/2K ] Privates Netz, 192.168.2.2-254 - [ UNIX ]</literallayout> - </textobject> - </mediaobject> - - <para>Beachten Sie die beiden öffentlichen IP-Adressen. - Im Folgenden werden sie durch Buchstaben (als Platzhalter) - gekennzeichnet. Setzen Sie hierfür Ihre eigenen - öffentlichen IP-Adressen ein. Beide Gateways - besitzen die interne Adresse - <hostid role="ipaddr">x.x.x.1</hostid> und beide - Netzwerke besitzen unterschiedliche private IP-Adressen: - <hostid role="ipaddr">192.168.1.x</hostid> und - <hostid role="ipaddr">192.168.2.x</hostid>. Die Default-Route - aller internen Systeme ist jeweils die Gateway-Maschine - (<hostid role="ipaddr">x.x.x.1</hostid>).</para> - - <para>Aus der Sicht der Systeme sollen jetzt beide - Netzwerke wie über einen Router, der in diesem - Fall etwas langsamer ist, verbunden werden.</para> - - <para>Auf dem Rechner <hostid role="ipaddr">192.168.1.20</hostid> - soll also beispielsweise der folgende Befehl funktionieren:</para> - - <programlisting>ping 192.168.2.34</programlisting> - - <para>&windows;-Systeme sollen die Systeme auf dem anderen - Netzwerk erkennen und Shares sollen funktionieren. Alles - soll genauso wie in lokalen Netzwerken funktionieren.</para> - - <para>Zusätzlich soll die Kommunikation zwischen beiden - Netzwerken noch verschlüsselt werden.</para> - - <para>Das VPN wird in mehreren Schritten aufgebaut:</para> - - <orderedlist> - <listitem> - <para>Zuerst wird eine virtuelle Verbindung zwischen - beiden Netzwerken über das Internet eingerichtet. - Die virtuelle Verbindung können Sie mit Werkzeugen - wie &man.ping.8; prüfen.</para> - </listitem> - - <listitem> - <para>Danach wird eine Sicherheitsrichtlinie - (<foreignphrase>Security-Policy</foreignphrase>) festgelegt, - die automatisch den Datenverkehr zwischen beiden - Netzwerken verschlüsselt und entschlüsselt. - Mit Werkzeugen wie &man.tcpdump.1; können Sie - überprüfen, dass die Daten tatsächlich - verschlüsselt werden.</para> - </listitem> + <sect2> + <sect2info> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + <affiliation> + <address><email>trhodes@FreeBSD.org</email></address> + </affiliation> + <contrib>Geschrieben von </contrib> + </author> + </authorgroup> + </sect2info> - <listitem> - <para>Wenn sich &windows;-Systeme im VPN gegenseitig - erkennen sollen, so sind noch weitere - Konfigurationsschritte notwendig, die aber nicht - in diesem Abschnitt beschrieben werden.</para> - </listitem> - </orderedlist> + <title>Konfiguration von IPsec in &os;</title> + + <para>Als erstes muss <filename + role="package">security/ipsec-tools</filename> aus + der Ports-Sammlung installiert werden. Dieses Softwarepaket + Dritter enthält einige Anwendungen, die ihnen bei der + Konfiguration von IPsec helfen.</para> + + <para>Als nächstes müssen zwei &man.gif.4;-Pseudogeräte + angelegt werden, um die Pakete zu tunneln und dafür zu sorgen, + dass beide Netzwerke richtig miteinander kommunizieren können. + Geben Sie als Benutzer <username>root</username> die folgenden Befehle + ein: Austausch der <replaceable>internen</replaceable> und + <replaceable>externen</replaceable> Werte durch die realen internen + und externen Gateways:</para> + + <screen>&prompt.root; <userinput>ifconfig gif0 create</userinput></screen> + <screen>&prompt.root; <userinput>ifconfig gif0 <replaceable>internal1 internal2</replaceable></userinput></screen> + <screen>&prompt.root; <userinput>ifconfig gif0 tunnel <replaceable>external1 external2</replaceable></userinput></screen> + + <para>Beispiel: Die öffentliche <acronym>IP</acronym>-Adresse + des Firmennetzwerkes <acronym>(LAN)</acronym> ist: + <hostid role="ipaddr">172.16.5.4</hostid> mit einer internen + <acronym>IP</acronym>-Adresse von + <hostid role="ipaddr">10.246.38.1</hostid>. Das Heimnetzwerk + <acronym>(LAN)</acronym> hat die öffentliche + <acronym>IP</acronym>-Adresse + <hostid role="ipaddr">192.168.1.12</hostid> mit der internen + privaten <acronym>IP</acronym>-Adresse + <hostid role="ipaddr">10.0.0.5</hostid>.</para> + + <para>Dies mag verwirrend erscheinen, schauen Sie sich deshalb + das folgende Beispiel aus dem &man.ifconfig.8;-Befehl an:</para> + + <programlisting>Gateway 1: + +gif0: flags=8051 mtu 1280 +tunnel inet 172.16.5.4 --> 192.168.1.12 +inet6 fe80::2e0:81ff:fe02:5881%gif0 prefixlen 64 scopeid 0x6 +inet 10.246.38.1 --> 10.0.0.5 netmask 0xffffff00 + +Gateway 2: + +gif0: flags=8051 mtu 1280 +tunnel inet 192.168.1.12 --> 172.16.5.4 +inet 10.0.0.5 --> 10.246.38.1 netmask 0xffffff00 +inet6 fe80::250:bfff:fe3a:c1f%gif0 prefixlen 64 scopeid 0x4</programlisting> + + <para>Wenn Sie fertig sind, sollten beide privaten + <acronym>IP</acronym>s mit dem &man.ping.8; Befehl, wie die folgende + Darstellung zeigt, erreichbar sein:</para> + + <programlisting>priv-net# ping 10.0.0.5 +PING 10.0.0.5 (10.0.0.5): 56 data bytes +64 bytes from 10.0.0.5: icmp_seq=0 ttl=64 time=42.786 ms +64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=19.255 ms +64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=20.440 ms +64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=21.036 ms +--- 10.0.0.5 ping statistics --- +4 packets transmitted, 4 packets received, 0% packet loss +round-trip min/avg/max/stddev = 19.255/25.879/42.786/9.782 ms + +corp-net# ping 10.246.38.1 +PING 10.246.38.1 (10.246.38.1): 56 data bytes +64 bytes from 10.246.38.1: icmp_seq=0 ttl=64 time=28.106 ms +64 bytes from 10.246.38.1: icmp_seq=1 ttl=64 time=42.917 ms +64 bytes from 10.246.38.1: icmp_seq=2 ttl=64 time=127.525 ms +64 bytes from 10.246.38.1: icmp_seq=3 ttl=64 time=119.896 ms +64 bytes from 10.246.38.1: icmp_seq=4 ttl=64 time=154.524 ms +--- 10.246.38.1 ping statistics --- +5 packets transmitted, 5 packets received, 0% packet loss +round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 ms</programlisting> + + <para>Wie erwartet, können nun beiden Seiten + <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> + + <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>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> + + <para>Ab jetzt sollten die Rechner von den Gateways sowie von den + Rechnern hinter den Gateways erreichbar sein. Dies wird an dem + folgendem Beispiel deutlich:</para> + + <programlisting>corp-net# ping 10.0.0.8 +PING 10.0.0.8 (10.0.0.8): 56 data bytes +64 bytes from 10.0.0.8: icmp_seq=0 ttl=63 time=92.391 ms +64 bytes from 10.0.0.8: icmp_seq=1 ttl=63 time=21.870 ms +64 bytes from 10.0.0.8: icmp_seq=2 ttl=63 time=198.022 ms +64 bytes from 10.0.0.8: icmp_seq=3 ttl=63 time=22.241 ms +64 bytes from 10.0.0.8: icmp_seq=4 ttl=63 time=174.705 ms +--- 10.0.0.8 ping statistics --- +5 packets transmitted, 5 packets received, 0% packet loss +round-trip min/avg/max/stddev = 21.870/101.846/198.022/74.001 ms + +priv-net# ping 10.246.38.107 +PING 10.246.38.1 (10.246.38.107): 56 data bytes +64 bytes from 10.246.38.107: icmp_seq=0 ttl=64 time=53.491 ms +64 bytes from 10.246.38.107: icmp_seq=1 ttl=64 time=23.395 ms +64 bytes from 10.246.38.107: icmp_seq=2 ttl=64 time=23.865 ms +64 bytes from 10.246.38.107: icmp_seq=3 ttl=64 time=21.145 ms +64 bytes from 10.246.38.107: icmp_seq=4 ttl=64 time=36.708 ms +--- 10.246.38.107 ping statistics --- +5 packets transmitted, 5 packets received, 0% packet loss +round-trip min/avg/max/stddev = 21.145/31.721/53.491/12.179 ms</programlisting> + + <para>Das Konfigurieren der Tunnel ist der einfache Teil. Die + Konfiguration einer sicheren Verbindung geht sehr viel mehr in + die Tiefe. Die folgende Konfiguration benutzt pre-shared + (<acronym>PSK</acronym>) <acronym>RSA</acronym>-Schlüssel. + Abgesehen von den <acronym>IP</acronym>-Adressen, sind beide + <filename>/usr/local/etc/racoon/racoon.conf</filename> identisch + und sehen ähnlich aus wie:</para> + + <programlisting>path pre_shared_key "/usr/local/etc/racoon/psk.txt"; #location of pre-shared key file +log debug; #log verbosity setting: set to 'notify' when testing and debugging is complete + +padding # options are not to be changed +{ + maximum_length 20; + randomize off; + strict_check off; + exclusive_tail off; +} + +timer # timing options. change as needed +{ + counter 5; + interval 20 sec; + persend 1; +# natt_keepalive 15 sec; + phase1 30 sec; + phase2 15 sec; +} + +listen # address [port] that racoon will listening on +{ + isakmp 172.16.5.4 [500]; + isakmp_natt 172.16.5.4 [4500]; +} + +remote 192.168.1.12 [500] +{ + exchange_mode main,aggressive; + doi ipsec_doi; + situation identity_only; + my_identifier address 172.16.5.4; + peers_identifier address 192.168.1.12; + lifetime time 8 hour; + passive off; + proposal_check obey; +# nat_traversal off; + generate_policy off; + + proposal { + encryption_algorithm blowfish; + hash_algorithm md5; + authentication_method pre_shared_key; + lifetime time 30 sec; + dh_group 1; + } +} + +sainfo (address 10.246.38.0/24 any address 10.0.0.0/24 any) # address $network/$netmask $type address $network/$netmask $type ( $type being any or esp) +{ # $network must be the two internal networks you are joining. + pfs_group 1; + lifetime time 36000 sec; + encryption_algorithm blowfish,3des,des; + authentication_algorithm hmac_md5,hmac_sha1; + compression_algorithm deflate; +}</programlisting> + + <para>Die Erklärung einer jeden verfügbaren Option würde + den Rahmen dieses Textes sprengen. Es gibt sehr viele + relevante Informationen in der + <application>racoon</application>-Konfigurationsanleitung.</para> + + <para>Die <acronym>SPD</acronym>-Methoden müssn noch konfiguriert + werden so dass, &os; und <application>racoon</application> in der + Lage sind den Netzwerkverkehr zwischen den Hosts zu ver- + und entschlüsseln.</para> + + <para>Dies wird durch ein einfaches Shellscript ähnlich wie das + folgende, das auf dem Firmennetzwerk-Gateway liegt, + ausgeführt. Diese Datei wird während der + Systeminitialisierung ausgeführt und sollte unter + <filename>/usr/local/etc/racoon/setkey.conf</filename> + abgespeichert werden.</para> + +<programlisting>flush; +spdflush; + +# To the home network +spdadd 10.246.38.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/172.16.5.4-192.168.1.12/use; +spdadd 10.0.0.0/24 10.246.38.0/24 any -P in ipsec esp/tunnel/192.168.1.12-172.16.5.4/use;</programlisting> + + <para>Einmal abgespeichert, kann <application>racoon</application> + durch das folgende Kommando auf beiden Gateways gestartet + werden:</para> - <sect3> - <title>Schritt 1: Die virtuelle Verbindung einrichten</title> - - <para>Nehmen wir an, sie wollten von der Gateway-Maschine - im Netzwerk #1 (öffentliche IP-Adresse - <hostid role="ipaddr">A.B.C.D</hostid>, private IP-Adresse - <hostid role="ipaddr">192.168.1.1</hostid>) das Kommando - <command>ping 192.168.2.1</command> absetzen. - <hostid role="ipaddr">192.168.2.1</hostid> ist die private - IP-Adresse des Systems <hostid role="ipaddr">W.X.Y.Z</hostid> - im Netzwerk #2. Welche Voraussetzungen müssen - erfüllt sein, damit der Befehl funktioniert?</para> - - <orderedlist> - <listitem> - <para>Die Gateway-Maschine muss das System - <hostid role="ipaddr">192.168.2.1</hostid> erreichen - können. Das heißt, eine Route zu diesem - System muss existieren.</para> - </listitem> - - <listitem> - <para>Private IP-Adressen, wie der Bereich - <hostid role="ipaddr">192.168.x</hostid>, sollten im - Internet nicht verwendet werden. Jedes Paket zu - <hostid role="ipaddr">192.168.2.1</hostid> muss daher - in ein anderes Paket gepackt werden, das von - <hostid role="ipaddr">A.B.C.D</hostid> kommt und - zu <hostid role="ipaddr">W.X.Y.Z</hostid> geschickt - wird. Das erneute Verpacken der Pakete wird als - <firstterm>Kapselung</firstterm> bezeichnet.</para> - </listitem> - - <listitem> - <para>Wenn das Paket <hostid role="ipaddr">W.X.Y.Z</hostid> - erreicht, muss es dort ausgepackt und an - <hostid role="ipaddr">192.168.2.1</hostid> ausgeliefert - werden.</para> - </listitem> - </orderedlist> - - <para>Sie können sich diese Prozedur so vorstellen, - dass ein Tunnel zwischen beiden Netzwerken existiert. - Die beiden Tunnel-Enden besitzen die IP-Adressen - <hostid role="ipaddr">A.B.C.D</hostid> und - <hostid role="ipaddr">W.X.Y.Z</hostid>. Der Tunnel - muss zudem Verkehr zwischen den privaten IP-Adressen - erlauben und transportiert so Daten zwischen privaten - IP-Adressen über das Internet.</para> - - <para>Unter &os; wird der Tunnel mit - <devicename>gif</devicename>-Geräten (<foreignphrase>generic - interface</foreignphrase>) erstellt. Auf jedem Gateway - muss das <devicename>gif</devicename>-Gerät mit - vier IP-Adressen eingerichtet werden: Zwei öffentliche - IP-Adressen und zwei private IP-Adressen.</para> - - <para>Die <devicename>gif</devicename>-Geräte werden vom - Kernel bereitgestellt und müssen in der - Kernelkonfigurationsdatei auf beiden Maschinen angegeben - werden:</para> + <screen>&prompt.root; <userinput>/usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log</userinput></screen> + + <para>Die Ausgabe sollte so ähnlich aussehen:</para> + + <programlisting>corp-net# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf +Foreground mode. +2006-01-30 01:35:47: INFO: begin Identity Protection mode. +2006-01-30 01:35:48: INFO: received Vendor ID: KAME/racoon +2006-01-30 01:35:55: INFO: received Vendor ID: KAME/racoon +2006-01-30 01:36:04: INFO: ISAKMP-SA established 172.16.5.4[500]-192.168.1.12[500] spi:623b9b3bd2492452:7deab82d54ff704a +2006-01-30 01:36:05: INFO: initiate new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0] +2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=28496098(0x1b2d0e2) +2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=47784998(0x2d92426) +2006-01-30 01:36:13: INFO: respond new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0] +2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=124397467(0x76a279b) +2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=175852902(0xa7b4d66)</programlisting> + + <para>Um sicherzustellen, dass der Tunnel richtig funktioniert, + wechseln Sie auf eine andere Konsole und benutzen Sie + &man.tcpdump.1; mit dem folgenden Befehl, um sich den + Netzwerkverkehr anzusehen. Tauschen Sie <literal>em0</literal> + durch die richtige Netzwerkkarte aus.</para> + + <screen>&prompt.root; <userinput>tcpdump -i em0 host <replaceable>172.16.5.4 and dst 192.168.1.12</replaceable></userinput></screen> + + <para>Die Ausgabe der Konsole sollte dem hier ähneln. Wenn + nicht, gibt es ein Problem und ein Debuggen der ausgegebenen + Daten ist notwendig.</para> + + <programlisting>01:47:32.021683 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xa) +01:47:33.022442 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xb) +01:47:34.024218 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xc)</programlisting> + + <para>An diesem Punkt sollten beide Netzwerke verfügbar sein und + den Anschein haben, dass sie zum selben Netzwerk gehören. + Meistens sind beide Netzwerke durch eine Firewall geschützt. + Um den Netzwerkverkehr zwischen den beiden Netzwerken zu erlauben, + ist es notwendig Regeln zu erstellen. Für die &man.ipfw.8; + Firewall fügen Sie folgende Zeilen in ihre + Firewall-Konfigurationsdatei ein:</para> + + <programlisting>ipfw add 00201 allow log esp from any to any +ipfw add 00202 allow log ah from any to any +ipfw add 00203 allow log ipencap from any to any +ipfw add 00204 allow log udp from any 500 to any</programlisting> - <programlisting>device gif</programlisting> - - <para>Wie gewöhnlich müssen Sie danach einen - neuen Kernel erstellen, installieren und das System - neu starten.</para> - - <para>Der Tunnel wird in zwei Schritten aufgebaut. Mit - &man.ifconfig.8; werden zuerst die öffentlichen - IP-Adressen konfiguriert. Anschließend werden - die privaten IP-Adressen mit &man.ifconfig.8; eingerichtet.</para> - - <para>Auf der Gateway-Maschine im Netzwerk #1 bauen - Sie den Tunnel mit den folgenden Kommandos auf:</para> - - <screen>&prompt.root; <userinput>ifconfig <replaceable>gif0</replaceable> create</userinput> -&prompt.root; <userinput>ifconfig <replaceable>gif0</replaceable> tunnel <replaceable>A.B.C.D</replaceable> <replaceable>W.X.Y.Z</replaceable></userinput> -&prompt.root; <userinput>ifconfig <replaceable>gif0</replaceable> inet <replaceable>192.168.1.1</replaceable> <replaceable>192.168.2.1</replaceable> netmask <replaceable>0xffffffff</replaceable></userinput> - </screen> - - <para>Auf dem anderen Gateway benutzen Sie dieselben Kommandos, - allerdings mit vertauschten IP-Adressen:</para> - - <screen>&prompt.root; <userinput>ifconfig <replaceable>gif0</replaceable> create</userinput> -&prompt.root; <userinput>ifconfig <replaceable>gif0</replaceable> tunnel <replaceable>W.X.Y.Z</replaceable> <replaceable>A.B.C.D</replaceable></userinput> -&prompt.root; <userinput>ifconfig <replaceable>gif0</replaceable> inet <replaceable>192.168.2.1</replaceable> <replaceable>192.168.1.1</replaceable> netmask <replaceable>0xffffffff</replaceable></userinput> - </screen> - - <para>Die Konfiguration können Sie anschließend mit - dem folgenden Kommando überprüfen:</para> - - <programlisting>ifconfig gif0</programlisting> - - <para>Auf dem Gateway in Netzwerk #1 sollten Sie - beispielsweise die nachstehende Ausgabe erhalten:</para> - - <screen>&prompt.root; <userinput>ifconfig gif0</userinput> -gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280 - tunnel inet A.B.C.D --> W.X.Y.Z - inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff - </screen> - - <para>Wie Sie sehen, ist ein Tunnel zwischen den IP-Adressen - <hostid role="ipaddr">A.B.C.D</hostid> und - <hostid role="ipaddr">W.X.Y.Z</hostid> aufgebaut worden, - der Verkehr zwischen den Adressen - <hostid role="ipaddr">192.168.1.1</hostid> und - <hostid role="ipaddr">192.168.2.1</hostid> zulässt.</para> - - <para>Gleichzeitig wurde ein Eintrag in der Routing-Tabelle - erstellt, den Sie sich mit <command>netstat -rn</command> - ansehen können. Auf der Gateway-Maschine in Netzwerk #1 - sieht das so aus:</para> - - <screen>&prompt.root; <userinput>netstat -rn</userinput> -Routing tables - -Internet: -Destination Gateway Flags Refs Use Netif Expire -... -192.168.2.1 192.168.1.1 UH 0 0 gif0 -...</screen> - - <para>Die Route ist eine Host-Route, wie in der Spalte - <quote>Flags</quote> angegeben. Das heißt - die beiden Gateways wissen wie sie einander erreichen, - sie kennen allerdings nicht das Netzwerk auf der - anderen Seite. Dieses Problem werden wir gleich - angehen.</para> - - <para>Wahrscheinlich ist auf beiden Gateways eine Firewall - eingerichtet. Für den VPN-Verkehr muss die Firewall - umgegangen werden. Sie können generell den Verkehr - zwischen beiden Netzwerken erlauben oder Regeln erstellen, - die beide Tunnel-Enden des VPNs voreinander schützen.</para> - - <para>Der Test des VPNs wird erheblich leichter, wenn Sie - jeden Verkehr zwischen den Tunnel-Enden in der Firewall - erlauben. Wenn Sie auf der Gateway-Maschine &man.ipfw.8; - einsetzen, erlaubt die folgende Regel jeden Verkehr - zwischen den Tunnel-Enden, ohne die anderen Regeln zu - beeinflussen:</para> - - <programlisting>ipfw add 1 allow ip from any to any via gif0</programlisting> - - <para>Diese Regel muss offensichtlich auf beiden Gateway-Maschinen - existieren.</para> - - <para>Damit sollten Sie das Kommando <command>ping</command> - jetzt absetzen können. Auf dem System - <hostid role="ipaddr">192.168.1.1</hostid> sollte der - nachstehende Befehl Antworten erhalten:</para> - - <programlisting>ping 192.168.2.1</programlisting> - - <para>Denselben Test können Sie auch auf der anderen - Gateway-Maschine ausführen.</para> - - <para>Allerdings können Sie noch nicht die anderen - internen Maschinen auf den Netzwerken erreichen. Die Ursache - ist das Routing – die Gateway kennen sich zwar - gegenseitig, wissen aber noch nichts von den Netzwerken - hinter dem anderen Gateway.</para> - - <para>Um die Netzwerke bekannt zu geben, muss auf jeder - Gateway-Maschine noch eine statische Route hinzugefügt - werden. Auf der ersten Gateway-Maschine setzen Sie dazu - das folgende Kommando ab:</para> - - <programlisting>route add 192.168.2.0 192.168.2.1 netmask 0xffffff00</programlisting> - - <para>Dies entspricht der Anweisung: <quote>Um Rechner - auf dem Netz <hostid role="ipaddr">192.168.2.0</hostid> - zu erreichen, schicke die Pakete zum System - <hostid role="ipaddr">192.168.2.1</hostid></quote>. Auf - dem anderen Gateway muss das analoge Kommando (mit den - IP-Adressen <hostid role="ipaddr">192.168.1.x</hostid>) - abgesetzt werden.</para> - - <para>Damit ist jetzt der IP-Verkehr zwischen beiden - Netzwerken möglich.</para> - - <para>Zwei Drittel des VPNs zwischen beiden Netzen - ist nun eingerichtet. Es ist <quote>virtuell</quote> und - es ist ein <quote>Netzwerk</quote>. Es ist allerdings - noch nicht <quote>privat</quote>. Dies können Sie - mit &man.ping.8; und &man.tcpdump.1; überprüfen. - Setzen Sie auf dem ersten Gateway den folgenden Befehl ab:</para> - - <programlisting>tcpdump dst host 192.168.2.1</programlisting> - - <para>Starten Sie dann, ebenfalls auf dem ersten Gateway, den - folgenden Befehl:</para> - - <programlisting>ping 192.168.2.1</programlisting> - - <para>Sie werden die nachstehende Ausgabe erhalten:</para> - - <programlisting>16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request -16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply -16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request -16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply -16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request -16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo reply</programlisting> - - <para>Die ICMP-Nachrichten werden unverschlüsselt - übertragen. Mit der Option <option>-s</option> - von &man.tcpdump.1; können Sie sich weitere Daten - der Pakete anzeigen lassen.</para> - - <para>Die Daten sollen aber automatisch verschlüsselt - werden. Wie das geht, wird im nächsten Abschnitt - erläutert.</para> - - <itemizedlist> - <title>Zusammenfassung</title> - <listitem> - <para>Fügen Sie in beiden Kerneln die Zeile - <quote>device gif</quote> ein und bauen Sie die Kernel - neu.</para> - </listitem> - - <listitem> - <para>Fügen Sie auf dem Gateway in Netzwerk #1 - folgende Zeilen in <filename>/etc/rc.conf</filename> - ein:</para> - - <programlisting>gif_interfaces="gif0" -gifconfig_gif0="A.B.C.D W.X.Y.Z" -ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff" -static_routes="vpn" -route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"</programlisting> - - <para>Setzen Sie dabei die richtigen IP-Adressen für - die Platzhalter ein.</para> - </listitem> - - <listitem> - <para>Fügen Sie auf beiden Gateways die nachstehende - Regel in das Firewall-Skript (zum Beispiel - <filename>/etc/rc.firewall</filename>) ein:</para> - - <programlisting>ipfw add 1 allow ip from any to any via gif0</programlisting> - </listitem> - - <listitem> - <para>Nehmen Sie in <filename>/etc/rc.conf</filename> auf dem - Gateway #2 analoge Änderungen, die IP-Adressen - müssen vertauscht werden, vor.</para> - </listitem> - </itemizedlist> - </sect3> + <note> + <para>Die Regelnummern müssen eventuell, je nach ihrer + Hostkonfiguration, angepasst werden.</para> + </note> - <sect3> - <title>Schritt 2: Die Verbindung mit IPsec schützen</title> - - <para>Um die Verbindung zu schützen, verwenden wir IPsec. - IPsec bietet einen Mechanismus, mit dem sich zwei - Systeme auf einen Schlüssel einigen können. - Mit diesem Schlüssel wird dann der Datenverkehr zwischen - beiden Systemen verschlüsselt.</para> - - <para>Es gibt hierbei zwei Sachen die konfiguriert werden - müssen:</para> - - <orderedlist> - <listitem> - <para>Die <firstterm>Security-Association</firstterm> bestimmt, - mit welchen Methoden der Verkehr zwischen beiden Systemen - verschlüsselt wird.</para> - </listitem> - - <listitem> - <para>Die <firstterm>Security-Policy</firstterm> bestimmt, - was verschlüsselt wird. Es soll ja nicht der - gesamte Datenverkehr nach außen verschlüsselt - werden, sondern nur der Teil des Verkehrs, der zum - VPN gehört.</para> - </listitem> - </orderedlist> - - <para>Die Security-Association wie auch die Security-Policy - werden vom Kernel verwaltet und können von Anwendungen - verändert werden. Dazu müssen allerdings zuerst - IPsec und das Encapsulated-Security-Payload (ESP) Protokoll - in die Kernelkonfigurationsdatei eingetragen werden:</para> - - <indexterm> - <primary>Kerneloption</primary> - <secondary>IPSEC</secondary> - </indexterm> - - <programlisting>options IPSEC -options IPSEC_ESP</programlisting> - - <para>Wie üblich, müssen Sie danach den Kernel - übersetzen, installieren und das System neu starten. - Die Kernel müssen auf beiden Gateway-Maschinen - neu erstellt werden.</para> - - <indexterm> - <primary>IKE</primary> - </indexterm> - - <para>Sie können die Security-Association auf zwei - Arten konfigurieren: Manuell, dann müssen Sie - den Verschlüsselungsalgorithmus, die Schlüssel - und alles Weitere selbst konfigurieren. Oder automatisch, - mithilfe eines Dæmons, der das Internet-Key-Exchange - Protokoll (IKE) beherrscht.</para> - - <para>Im Allgemeinen wird die letzte Variante bevorzugt. - Sie ist auch wesentlich leichter einzurichten.</para> - - <indexterm> - <primary>IPsec</primary> - <secondary>Security-Policy</secondary> - </indexterm> - - <indexterm> - <primary><command>setkey</command></primary> - </indexterm> - - <para>Mit &man.setkey.8; können Sie Security-Policies - editieren und anzeigen. Die Beziehung von - <command>setkey</command> und der Tabelle der - Security-Policies im Kernel entspricht - dem Verhältnis von &man.route.8; und der Routing-Tabelle. - Die momentanen Security-Associations lassen sich ebenfalls - mit <command>setkey</command> anzeigen; - <command>setkey</command> verhält sich in diesem Fall - wie <command>netstat -r</command>, um die Analogie - fortzuführen.</para> - - <para>Sie haben die Wahl zwischen mehreren Programmen, - wenn Sie Security-Associations mit &os; verwalten - wollen. Im Folgenden wird <application>racoon</application> - beschrieben, das Sie über den Port <filename - role="package">security/ipsec-tools</filename> - installieren können.</para> - - <indexterm> - <primary>racoon</primary> - </indexterm> - - <para>Auf beiden Gateway-Maschinen muss - <application>racoon</application> laufen. - Konfiguriert wird jeweils die IP-Adresse der Gegenstelle - sowie der geheime Schlüssel. Dabei muss auf beiden - Gateway-Maschinen der gleiche Schlüssel verwendet - werden.</para> - - <para>Die beiden raccon-Daemonen prüfen mithilfe des - geheimen Schlüssels gegenseitig ihre Identität. - Anschließend generieren Sie einen neuen geheimen - Schlüssel, mit dem dann der Datenverkehr im VPN - verschlüsselt wird. Dieser Schlüssel wird - von Zeit zu Zeit geändert. Ein Angreifer, - der einen der Schlüssel geknackt hat – das ist - schon ziemlich unwahrscheinlich – kann somit nicht - viel mit diesem Schlüssel anfangen, da schon wieder ein - anderer Schlüssel verwendet wird.</para> - - <para>Die Konfiguration von racoon befindet sich in - <filename>${PREFIX}/etc/racoon</filename>. In der - dort befindlichen Konfigurationsdatei sollten Sie nicht - allzu viele Änderungen vornehmen müssen. - Sie müssen allerdings den so genannten - <quote>Pre-Shared-Key</quote> (den vorher ausgetauschten - Schlüssel) ändern.</para> - - <para>In der Voreinstellung befindet sich dieser Schlüssel - in der Datei <filename>${PREFIX}/etc/racoon/psk.txt</filename>. - Dieser Schlüssel wird <emphasis>nicht</emphasis> zum - Verschlüsseln des Datenverkehrs verwendet. Er dient - lediglich der Authentifizierung der beiden racoon-Daemonen.</para> - - <para>Für jeden entfernten Kommunikationspartner enthält - <filename>psk.txt</filename> eine Zeile. Damit besteht die - Datei <filename>psk.txt</filename> in unserem Beispiel - aus einer Zeile (wir verwenden einen entfernten - Kommunikationspartner).</para> - - <para>Auf dem Gateway #1 sieht diese Zeile wie - folgt aus:</para> - - <programlisting>W.X.Y.Z geheim</programlisting> - - <para>Die Zeile besteht aus der öffentlichen IP-Adresse - der Gegenstelle, Leerzeichen und dem geheimen Schlüssel. - Sie sollten natürlich nicht <literal>geheim</literal> - verwenden. Für den geheimen Schlüssel gelten - dieselben Regeln wie für Passwörter.</para> - - <para>Auf dem anderen Gateway sieht die Zeile - folgendermaßen aus:</para> - - <programlisting>A.B.C.D geheim</programlisting> - - <para>Die Zeile besteht aus der öffentlichen IP-Adresse - der Gegenstelle, Leerzeichen und dem geheimen Schlüssel. - Die Zugriffsrechte von <filename>psk.txt</filename> müssen - auf <literal>0600</literal> (Lese- und Schreibzugriff nur - für <username>root</username>) gesetzt sein, bevor - racoon gestartet wird.</para> - - <para>Auf beiden Gateway-Maschinen muss racoon laufen. Sie - brauchen ebenfalls Firewall-Regeln, die IKE-Verkehr - erlauben. IKE verwendet UDP, um Nachrichten zum - ISAKMP-Port (Internet Security Association Key Management Protocol) - zu schicken. Die Regeln sollten früh in der - Regelkette auftauchen:</para> - - <programlisting>ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp -ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp</programlisting> - - <para>Wenn racoon läuft, können Sie versuchen, - mit <command>ping</command> von einem Gateway-Rechner aus - den anderen Gateway zu erreichen. Die Verbindung wird zwar immer - noch nicht verschlüsselt, aber racoon wird die - Security-Association zwischen beiden Systemen einrichten. - Dies kann eine Weile dauern, und Sie bemerken vielleicht - eine kleine Verzögerung, bevor die Antworten von - der Gegenstelle kommen.</para> - - <para>Die Security-Association können Sie sich auf einem - der beiden Gateway-Systeme mit &man.setkey.8; ansehen:</para> - - <programlisting>setkey -D</programlisting> - - <para>Damit ist die erste Hälfte der Arbeit getan. - Jetzt muss noch die Security-Policy konfiguriert werden.</para> - - <para>Damit wir eine sinnvolle Security-Policy erstellen - können, fassen wir das bisher geleistete zusammen. - Die Diskussion gilt für beide Enden des Tunnels.</para> - - <para>Jedes gesendete IP-Paket enthält im Header - Informationen über das Paket selbst. Im Header - befinden sich die IP-Adressen des Senders und des - Empfängers. Wie wir bereits wissen, dürfen - private IP-Adressen, wie - <hostid role="ipaddr">192.168.x.y</hostid> nicht auf - das Internet gelangen. Pakete zu privaten IP-Adressen - müssen zuerst in einem anderen Paket gekapselt - werden. In diesem Paket werden die privaten IP-Adressen - durch öffentliche IP-Adressen ersetzt.</para> - - <para>Das ausgehende Paket hat beispielsweise wie folgt - ausgesehen:</para> - - <mediaobject> - <imageobject> - <imagedata fileref="security/ipsec-out-pkt" align="center"> - </imageobject> - - <textobject> - <literallayout class="monospaced"> - .----------------------. - | Src: 192.168.1.1 | - | Dst: 192.168.2.1 | - | <other header info> | - +----------------------+ - | <packet data> | - `----------------------'</literallayout> - </textobject> - </mediaobject> - - <para>Es wird in ein anderes Paket umgepackt (gekapselt) - und sieht danach wie folgt aus:</para> - - <mediaobject> - <imageobject> - <imagedata fileref="security/ipsec-encap-pkt" align="center"> - </imageobject> - - <textobject> - <literallayout class="monospaced"> - .--------------------------. - | Src: A.B.C.D | - | Dst: W.X.Y.Z | - | <other header info> | - +--------------------------+ - | .----------------------. | - | | Src: 192.168.1.1 | | - | | Dst: 192.168.2.1 | | - | | <other header info> | | - | +----------------------+ | - | | <packet data> | | - | `----------------------' | - `--------------------------'</literallayout> - </textobject> - </mediaobject> - - <para>Die Kapselung wird vom <devicename>gif</devicename>-Gerät - vorgenommen. Das neue Paket enthält im Header eine - öffentliche IP-Adresse und der Datenteil des Pakets - enthält das ursprüngliche Paket.</para> - - <para>Natürlich soll der gesamte Datenverkehr des VPNs - verschlüsselt werden. Dies kann man wie folgt - ausdrücken:</para> - - <para> - <quote>Wenn ein Paket von <hostid role="ipaddr">A.B.C.D</hostid> - zu <hostid role="ipaddr">W.X.Y.Z</hostid> geschickt wird, - verschlüssele es entsprechend der - Security-Association.</quote> - </para> - - <para> - <quote>Wenn ein Paket von <hostid role="ipaddr">W.X.Y.Z</hostid> - kommt und für <hostid role="ipaddr">A.B.C.D</hostid> - bestimmt ist, entschlüssele es entsprechend der - Security-Association.</quote> - </para> - - <para>Das ist fast richtig. Mit diesen Regeln würde - der ganze Verkehr von und zu <hostid role="ipaddr">W.X.Y.Z</hostid> - verschlüsselt, auch wenn er nicht zum VPN gehört. - Die richtige Formulierung lautet:</para> - - <para> - <quote>Wenn ein Paket, das ein gekapseltes Paket enthält, - von <hostid role="ipaddr">A.B.C.D</hostid> zu - <hostid role="ipaddr">W.X.Y.Z</hostid> geschickt wird, - verschlüssele es entsprechend der - Security-Association.</quote> - </para> - - <para> - <quote>Wenn ein Paket, das ein gekapseltes Paket enthält, - von <hostid role="ipaddr">W.X.Y.Z</hostid> kommt und für - <hostid role="ipaddr">A.B.C.D</hostid> bestimmt ist, - entschlüssele es entsprechend der - Security-Association.</quote> - </para> - - <para>Dies ist eine zwar subtile aber eine - notwendige Änderung.</para> - - <para>Die Security-Policy können Sie mit &man.setkey.8; - erstellen. &man.setkey.8; besitzt eine Konfigurations-Syntax - zur Erstellung der Security-Policy. Sie können die - Konfiguration über die Standardeingabe oder in einer - Datei, die Sie mit der Option <option>-f</option> angeben, - erstellen.</para> - - <para>Gateway #1 (öffentliche IP-Adresse: - <hostid role="ipaddr">A.B.C.D</hostid>) muss - folgendermaßen konfiguriert werden, um alle - ausgehenden Pakete an <hostid role="ipaddr">W.X.Y.Z</hostid> - zu verschlüsseln:</para> - - <programlisting>spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;</programlisting> - - <para>Speichern Sie dieses Kommando in einer Datei, beispielsweise - <filename>/etc/ipsec.conf</filename> ab. Rufen Sie - anschließend das nachstehende Kommando auf:</para> - - <screen>&prompt.root; <userinput>setkey -f /etc/ipsec.conf</userinput></screen> - - <para><option>spdadd</option> weist &man.setkey.8; an, - der Security-Policy-Datenbank eine Regel hinzuzufügen. - Der Rest der Zeile gibt an, auf welche Pakete diese - Regel zutrifft. <hostid role="ipaddr">A.B.C.D/32</hostid> - und <hostid role="ipaddr">W.X.Y.Z/32</hostid> sind - die IP-Adressen und Netzmasken, die Systeme angeben, - auf die diese Regel zutrifft. Im Beispiel gilt die - Regel für die beiden Gateway-Systeme. - <option>ipencap</option> zeigt an, dass die Regel nur - für Pakete gilt, die gekapselte Pakete enthalten. - <option>-P out</option> legt fest, dass die Regel nur - für ausgehende Pakete gilt.</para> - - <para><option>ipsec</option> gibt an, dass die Pakete - geschützt werden. Das benutzte Protokoll - wird durch <option>esp</option> angegeben. - <option>tunnel</option> kapselt das Paket in ein - IPsec-Paket. Die nochmalige Angabe von - <hostid role="ipaddr">A.B.C.D</hostid> und - <hostid role="ipaddr">W.X.Y.Z</hostid> gibt die - Security-Association an. Das abschließende - <option>require</option> erzwingt die Verschlüsselung - der Pakete.</para> - - <para>Diese Regel gilt nur für ausgehende Pakete. - Sie brauchen eine analoge Regel für eingehende - Pakete:</para> - - <programlisting>spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;</programlisting> - - <para>In dieser Regel wird <option>in</option> anstelle - von <option>out</option> benutzt und die IP-Adressen - sind notwendigerweise umgekehrt angegeben.</para> - - <para>Das zweite Gateway-System mit der IP-Adresse - <hostid role="ipaddr">W.X.Y.Z</hostid> braucht - entsprechende Regeln:</para> - - <programlisting>spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require; -spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;</programlisting> - - <para>Schließlich brauchen Sie auf beiden Gateway-Systemen - noch Firewall-Regeln, die ESP- und IPENCAP-Pakete in beide - Richtungen erlauben:</para> - - <programlisting>ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z -ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D -ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z -ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D</programlisting> - - <para>Da die Regeln symmetrisch sind, können sie auf - beiden Systemen verwendet werden.</para> - - <para>Damit sehen ausgehende Pakete wie folgt aus:</para> - - <mediaobject> - <imageobject> - <imagedata fileref="security/ipsec-crypt-pkt" align="center"> - </imageobject> - - <textobject> - <literallayout class="monospaced"> - .------------------------------. --------------------------. - | Src: A.B.C.D | | - | Dst: W.X.Y.Z | | - | < weitere Header > | | Encrypted - +------------------------------+ | packet. - | .--------------------------. | -------------. | contents - | | Src: A.B.C.D | | | | are - | | Dst: W.X.Y.Z | | | | completely - | | < weitere Header > | | | |- secure - | +--------------------------+ | | Encap'd | from third - | | .----------------------. | | -. | packet | party - | | | Src: 192.168.1.1 | | | | Original |- with real | snooping - | | | Dst: 192.168.2.1 | | | | packet, | IP addr | - | | | < weitere Header > | | | |- private | | - | | +----------------------+ | | | IP addr | | - | | | <Paket-Daten> | | | | | | - | | `----------------------' | | -' | | - | `--------------------------' | -------------' | - `------------------------------' --------------------------' - </literallayout> - </textobject> - </mediaobject> - - <para>Am anderen Ende des VPNs werden die Pakete zuerst - entsprechend der von racoon ausgehandelten Security-Association - entschlüsselt. Das <devicename>gif</devicename>-Interface - entfernt dann die zweite Schicht, damit das ursprüngliche - Paket zum Vorschein kommt. Dieses kann dann in das interne - Netzwerk transportiert werden.</para> - - <para>Dass die Pakete wirklich verschlüsselt werden, - können Sie wieder mit &man.ping.8; überprüfen. - Melden Sie sich auf dem Gateway - <hostid role="ipaddr">A.B.C.D</hostid> an und rufen - das folgende Kommando auf:</para> - - <programlisting>tcpdump dst host 192.168.2.1</programlisting> - - <para>Auf demselben Rechner setzen Sie dann noch das - nachstehende Kommando ab:</para> - - <programlisting>ping 192.168.2.1</programlisting> - - <para>Dieses Mal wird die Ausgabe wie folgt aussehen:</para> - - <programlisting>XXX tcpdump output</programlisting> - - <para>Jetzt zeigt &man.tcpdump.1; ESP-Pakete an. Auch wenn - Sie diese mit der Option <option>-s</option> untersuchen, - werden Sie wegen der Verschlüsselung nur - unverständliche Zeichen sehen.</para> - - <para>Herzlichen Glückwunsch. Sie haben soeben ein - VPN zwischen zwei entfernten Netzen eingerichtet.</para> - - <itemizedlist> - <title>Zusammenfassung</title> - <listitem> - <para>IPsec muss in beiden Kernelkonfigurationsdateien - enthalten sein:</para> - - <programlisting>options IPSEC -options IPSEC_ESP</programlisting> - </listitem> - - <listitem> - <para>Installieren Sie den Port <filename - role="package">security/ipsec-tools</filename>. Tragen Sie - auf beiden Rechnern in - <filename>${PREFIX}/etc/racoon/psk.txt</filename> jeweils - die IP-Adresse des entfernten Gateways und den geheimen - Schlüssel ein. Setzen Sie die Zugriffsrechte der - Datei auf <literal>0600</literal>.</para> - </listitem> - - <listitem> - <para>Fügen Sie auf jedem Rechner die folgenden - Zeilen zu <filename>/etc/rc.conf</filename> hinzu:</para> - - <programlisting>ipsec_enable="YES" -ipsec_file="/etc/ipsec.conf"</programlisting> - </listitem> - - <listitem> - <para>Erstellen Sie auf jedem Rechner die Datei - <filename>/etc/ipsec.conf</filename> mit den nötigen - <option>spadd</option>-Zeilen. Auf dem Gateway #1 - hat die Datei folgenden Inhalt:</para> - - <programlisting>spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec - esp/tunnel/A.B.C.D-W.X.Y.Z/require; -spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec - esp/tunnel/W.X.Y.Z-A.B.C.D/require;</programlisting> - - <para>Auf dem Gateway #2 sieht die Datei so aus:</para> - - <programlisting>spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec - esp/tunnel/W.X.Y.Z-A.B.C.D/require; -spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec - esp/tunnel/A.B.C.D-W.X.Y.Z/require;</programlisting> - </listitem> - - <listitem> - <para>Fügen Sie auf beiden Rechnern Firewall-Regeln - hinzu, die IKE-, ESP- und IPENCAP-Verkehr erlauben:</para> - - <programlisting>ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp -ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp -ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z -ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D -ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z -ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D</programlisting> - </listitem> - </itemizedlist> - - <para>Das VPN wurde in zwei Schritten eingerichtet. Maschinen - auf beiden Netzen können miteinander kommunizieren - und der Datenverkehr zwischen beiden Netzen wird automatisch - verschlüsselt.</para> - </sect3> + <para>Für Benutzer der &man.pf.4;- oder &man.ipf.8;-Firewall + sollte folgendes funktionieren:</para> + + <programlisting>pass in quick proto esp from any to any +pass in quick proto ah from any to any +pass in quick proto ipencap from any to any +pass in quick proto udp from any port = 500 to any port = 500 +pass in quick on gif0 from any to any +pass out quick proto esp from any to any +pass out quick proto ah from any to any +pass out quick proto ipencap from any to any +pass out quick proto udp from any port = 500 to any port = 500 +pass out quick on gif0 from any to any</programlisting> + + <para>Zum Ende, um dem Computer den Start vom + <acronym>VPN</acronym> während der Systeminitialisierung + zu erlauben, fügen Sie folgende Zeilen in ihre + <filename>/etc/rc.conf</filename>: ein</para> + + <programlisting>ipsec_enable="YES" +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> </sect2> </sect1> @@ -4458,7 +3929,7 @@ COPYRIGHT 100% |*****************************| 4735 Konfigurationsdateien des <application>OpenSSH</application>-Dæmons und des Clients finden sich in dem Verzeichnis - <filename>/etc/ssh</filename>.</para> + <filename class="directory">/etc/ssh</filename>.</para> <para>Die Client-Konfiguration befindet sich in <filename>ssh_config</filename>, die des Servers befindet sich in @@ -4639,7 +4110,7 @@ Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa) <term><option>user@foo.example.com</option></term> <listitem> - <para>Gibt den entfernten SSH server an.</para> + <para>Gibt den entfernten SSH-Server an.</para> </listitem> </varlistentry> </variablelist> @@ -4884,10 +4355,11 @@ drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2 drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3 drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting> - <para>Die Verzeichnisse <filename>directory1</filename>, - <filename>directory2</filename> und <filename>directory3</filename> + <para>Die Verzeichnisse <filename class="directory">directory1</filename>, + <filename class="directory">directory2</filename> und + <filename class="directory">directory3</filename> sind durch Zugriffskontrolllisten geschützt, das Verzeichnis - <filename>public_html</filename> nicht.</para> + <filename class="directory">public_html</filename> nicht.</para> <sect2> <title>Zugriffskontrolllisten benutzen</title> @@ -4961,7 +4433,7 @@ drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting> enthaltene Programm <application>Portaudit</application> wurde gezielt dafür entwickelt.</para> - <para>Der Port <filename role="port">security/portaudit</filename> + <para>Der Port <filename role="package">ports-mgmt/portaudit</filename> fragt dazu eine Datenbank, die vom &os; Security Team sowie den Ports-Entwicklern aktualisiert und gewartet wird, auf bekannte Sicherheitsprobleme ab.</para> @@ -4982,7 +4454,7 @@ drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting> ist keine weitere Konfiguration nötig.</para> <para>Nach der Installation kann ein Administrator die unter - <filename role="directory">/var/db/portaudit</filename> lokal + <filename class="directory">/var/db/portaudit</filename> lokal gespeicherte Datenbank aktualisieren und sich danach durch folgenden Befehl über mögliche Sicherheitslücken der von ihm installierten Softwarepakete informieren:</para> @@ -5252,7 +4724,7 @@ VII. References<co id="co-ref"></programlisting> zu kontrollieren, welche Befehle ein Anwender eingibt.</para> <para>Diese Fähigkeiten haben sowohl Vor- als auch Nachteile. - Positiv ist, dass man ein Einbruchsversuch bis an den Anfang + Positiv ist, dass man einen Einbruchsversuch bis an den Anfang zurückverfolgen kann. Von Nachteil ist allerdings, dass durch diesen Prozess Unmengen an Protokolldateien erzeugt werden, die auch dementsprechenden Plattenplatz benötigen. diff --git a/de_DE.ISO8859-1/books/handbook/virtualization/chapter.sgml b/de_DE.ISO8859-1/books/handbook/virtualization/chapter.sgml index 789d2934cc..3d69a1a0c1 100644 --- a/de_DE.ISO8859-1/books/handbook/virtualization/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/virtualization/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/virtualization/chapter.sgml,v 1.11 2009/11/17 21:57:58 bcr Exp $ - basiert auf: 1.22 + $FreeBSDde: de-docproj/books/handbook/virtualization/chapter.sgml,v 1.12 2010/02/06 14:08:58 fboerner Exp $ + basiert auf: 1.23 --> <chapter id="virtualization"> @@ -1078,10 +1078,10 @@ xenbr1 8000.feffffffffff no vif0.1 <title>&virtualbox; installieren</title> <para><application>&virtualbox;</application> steht als &os;-Port in - <filename role="package">emulators/virtualbox</filename> bereit und + <filename role="package">emulators/virtualbox-ose</filename> bereit und kann über den folgenden Befehl installiert werden:</para> - <screen>&prompt.root; <userinput>cd /usr/ports/emulators/virtualbox</userinput> + <screen>&prompt.root; <userinput>cd /usr/ports/emulators/virtualbox-ose</userinput> &prompt.root; <userinput>make install clean</userinput></screen> <para>Eine nützliche Option im Konfigurationsdialog ist die @@ -1109,10 +1109,18 @@ xenbr1 8000.feffffffffff no vif0.1 <programlisting>vboxdrv_load="YES"</programlisting> - <para><application>&virtualbox;</application> benötigt auch das + <para>Ältere Versionen als 3.1.2 von + <application>&virtualbox;</application> benötigen auch das eingehängte <filename - class="directory">proc</filename>-Dateisystem:</para> - + class="directory">proc</filename>-Dateisystem. Dies wird in + aktuellen Versionen nicht mehr benötigt, da dort die + Funktionen von der &man.sysctl.3; Bibliothek bereitgestellt + werden.</para> + + <para>Wenn Sie eine ältere Version aus den Ports benutzen, befolgen + Sie die unten stehenden Anweisungen und stellen Sie sicher, dass + <filename class="directory">proc</filename> eingehangen ist.</para> + <screen>&prompt.root; <userinput>mount -t procfs proc /proc</userinput></screen> <para>Um auch diese Einstellung nach einem Neustart zu erhalten, wird die diff --git a/de_DE.ISO8859-1/books/porters-handbook/book.sgml b/de_DE.ISO8859-1/books/porters-handbook/book.sgml index 3dcea7150b..d0ae8a4cb0 100644 --- a/de_DE.ISO8859-1/books/porters-handbook/book.sgml +++ b/de_DE.ISO8859-1/books/porters-handbook/book.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/porters-handbook/book.sgml,v 1.164 2009/11/26 17:27:25 jkois Exp $ - basiert auf: 1.1015 + $FreeBSDde: de-docproj/books/porters-handbook/book.sgml,v 1.165 2010/01/24 17:02:20 fboerner Exp $ + basiert auf: 1.1016 --> <!DOCTYPE BOOK PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ @@ -13747,6 +13747,12 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 </row> <row> + <entry>702103</entry> + <entry>06. Juni 2009</entry> + <entry>7.2-STABLE nach dem Einfließen von PmcTools.</entry> + </row> + + <row> <entry>800000</entry> <entry>11. Oktober 2007</entry> <entry>8.0-CURRENT. Nach der Trennung in "wide und diff --git a/de_DE.ISO8859-1/share/sgml/mailing-lists.ent b/de_DE.ISO8859-1/share/sgml/mailing-lists.ent index 3dd022940f..fc05aeb3a8 100644 --- a/de_DE.ISO8859-1/share/sgml/mailing-lists.ent +++ b/de_DE.ISO8859-1/share/sgml/mailing-lists.ent @@ -1,9 +1,9 @@ <!-- Namen der FreeBSD Mailinglisten und verwandter Software - $FreeBSDde: de-docproj/share/sgml/mailing-lists.ent,v 1.36 2009/05/05 19:09:21 bcr Exp $ + $FreeBSDde: de-docproj/share/sgml/mailing-lists.ent,v 1.37 2010/02/05 16:19:40 bcr Exp $ $FreeBSD$ - basiert auf: 1.68 + basiert auf: 1.69 --> <!ENTITY a.mailman.listinfo "http://lists.FreeBSD.org/mailman/listinfo"> @@ -535,6 +535,12 @@ messages for only the 7-stable src tree</ulink>"> <!ENTITY a.svn-src-stable-7.name "<ulink url='&a.svn-src-stable-7.url;'>svn-src-stable-7</ulink>"> + +<!ENTITY a.svn-src-stable-8.url "&a.mailman.listinfo;/svn-src-stable-8"> +<!ENTITY a.svn-src-stable-8 "<ulink url='&a.svn-src-stable-8.url;'>SVN commit + messages for only the 8-stable src tree</ulink>"> +<!ENTITY a.svn-src-stable-8.name "<ulink url='&a.svn-src-stable-8.url;'>svn-src + stable-8</ulink>"> <!ENTITY a.svn-src-stable-other.url "&a.mailman.listinfo;/svn-src-stable-other"> <!ENTITY a.svn-src-stable-other "<ulink url='&a.svn-src-stable-other.url;'>SVN |