diff options
Diffstat (limited to 'de_DE.ISO8859-1/books/handbook/security/chapter.sgml')
-rw-r--r-- | de_DE.ISO8859-1/books/handbook/security/chapter.sgml | 506 |
1 files changed, 467 insertions, 39 deletions
diff --git a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml index 16e0662065..25f3f6d803 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.105 2004/08/29 12:13:48 mheinen Exp $ - basiert auf: 1.215 + $FreeBSDde: de-docproj/books/handbook/security/chapter.sgml,v 1.111 2004/09/24 00:23:28 mheinen Exp $ + basiert auf: 1.225 --> <chapter id="security"> @@ -68,6 +68,11 @@ </listitem> <listitem> + <para><acronym>TCP</acronym>-Wrapper für + <command>inetd</command> einrichten können.</para> + </listitem> + + <listitem> <para>Wissen, wie Sie <application>KerberosIV</application> vor 5.0-Release einrichten.</para> </listitem> @@ -95,11 +100,6 @@ </listitem> <listitem> - <para>Wie sie mithilfe des TrustedBSD-<acronym>MAC</acronym>-Frameworks - Zugrifsskontrollen konfigurieren.</para> - </listitem> - - <listitem> <para>Mit &os;-Sicherheitshinweisen umgehen können.</para> </listitem> </itemizedlist> @@ -1569,6 +1569,253 @@ permit port ttyd0</programlisting> </sect2> </sect1> + <sect1 id="tcpwrappers"> + <sect1info> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + <contrib>Beigetragen von </contrib> + </author> + </authorgroup> + </sect1info> + + <indexterm> + <primary>TCP-Wrapper</primary> + </indexterm> + + <title>TCP-Wrapper</title> + + <para>Wahrscheinlich hat jeder, der &man.inetd.8; kennt, + schon mal von den TCP-Wrappern gehört. Die + wenigsten erkennen den vollen Nutzen der TCP-Wrapper + in einer Netzumgebung. Es scheint, dass die meisten + Leute Netzverbindungen mit einer Firewall absichern + wollen. Auch wenn eine Firewall ein mächtiges + Instrument ist, gibt es Sachen, die eine Firewall + nicht kann. Eine Firewall kann beispielsweise keine + Nachricht an den Verbindungsursprung senden. Genau + das und mehr können aber die + <acronym>TCP</acronym>-Wrapper. Im Folgenden werden + die Funktionen der <acronym>TCP</acronym>-Wrapper + und Beispiele für deren Konfiguration vorgestellt.</para> + + <para>Die <acronym>TCP</acronym>-Wrapper erweitern die + Steuerungsmöglichkeiten, die <command>inetd</command> + über die Dienste unter seiner Kontrolle hat. + Beispielsweise können Verbindungen protokolliert, + Nachrichten zurückgesandt oder nur interne Verbindungen + angenommen werden. Die <acronym>TCP</acronym>-Wrapper + bieten nicht nur eine weitere Sicherheitsschicht, die + teilweise auch von Firewalls geboten wird, sie bieten + darüber hinaus Funktionen zur Steuerung von + Verbindungen, die eine Firewall nicht bietet.</para> + + <para>Die erweiterten Funktionen der + <acronym>TCP</acronym>-Wrapper sind kein Firewall-Ersatz. + Sie sollten zusammen mit einer Firewall und anderen + Sicherheitsvorkehrungen eingesetzt werden. Die + <acronym>TCP</acronym>-Wrapper sind eine weitere + Sicherheitsschicht zum Schutz eines Systems.</para> + + <para>Da die Wrapper die Funktion von <command>inetd</command> + erweitern, wird im Folgenden vorausgesetzt, dass Sie den + Abschnitt über die + <link linkend="network-inetd">inetd-Konfiguration</link> + schon gelesen haben.</para> + + <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> + + <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> + </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> + + <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> + </sect2> + + <sect2> + <title>Erweiterte Konfiguration der TCP-Wrapper</title> + + <para>Die <acronym>TCP</acronym>-Wrapper besitzen + weitere Optionen, die bestimmen, wie Verbindungen + behandelt werden. In einigen Fällen ist es + gut, wenn bestimmten Rechnern oder Diensten eine + Nachricht geschickt wird. In anderen Fällen + soll vielleicht der Verbindungsaufbau protokolliert + oder eine E-Mail an einen Administrator versandt + werden. Oder ein Dienst soll nur für das + lokale Netz bereitstehen. Dies alles ist mit so genannten + Wildcards, Metazeichen und der Ausführung externer + Programme möglich und wird in den nächsten + zwei Abschnitten erläutert.</para> + + <sect3> + <title>Externe Kommandos ausführen</title> + + <para>Stellen Sie sich vor, eine Verbindung soll + verhindert werden und gleichzeitig soll demjenigen, + der die Verbindung aufgebaut hat, eine Nachricht + geschickt werden. Auf welche Art müssen + die <acronym>TCP</acronym>-Wrapper konfiguriert werden? + Die Option <option>twist</option> führt beim + Verbindungsaufbau ein Kommando aus. In der Datei + <filename>hosts.allow</filename> ist ein Beispiel + für diese Option enthalten:</para> + + <programlisting># Alle anderen Dienste sind geschützt +ALL : ALL \ + : severity auth.info \ + : twist /bin/echo "You are not welcome to use %d from %h."</programlisting> + + <para>Für jeden Dienst, der nicht vorher in + der Datei <filename>hosts.allow</filename> konfiguriert + wurde, wird die Meldung <quote>You are not allowed to use + <literal>daemon</literal> from + <literal>hostname</literal>.</quote> zurückgegegeben. + Dies ist besonders nützlich, wenn Sie die + Gegenstelle sofort benachrichtigen wollen, nachdem + die Verbindung getrennt wurde. Beachten Sie, dass + der Text der Meldung in Anführungszeichen + (<literal>"</literal>) stehen <emphasis>muss</emphasis>, + es gibt keine Ausnahmen zu dieser Regel.</para> + + <warning> + <para>Ein so konfigurierter Server ist anfällig + für Denial-of-Service-Angriffe. Ein Angreifer + kann die gesperrten Dienste mit Verbindungsanfragen + überfluten.</para> + </warning> + + <para>Um einem Denial-of-Service-Angriff zu entgehen, + benutzen Sie die Option <option>spawn</option>. + Wie die Option <option>twist</option> verbietet + <option>spawn</option> die Verbindung und führt + externe Kommandos aus. Allerdings sendet die + Option <option>spawn</option> der Gegenstelle + keine Rückmeldung. Sehen Sie sich die + nachstehende Konfigurationsdatei an:</para> + + <programlisting># Verbindungen von example.com sind gesperrt: +ALL : .example.com \ + : spawn (/bin/echo %a from %h attempted to access %d >> \ + /var/log/connections.log) \ + : deny</programlisting> + + <para>Damit sind Verbindungen von der Domain + <hostid role="fqdn">*.example.com</hostid> gesperrt. + Jeder Verbindungsaufbau wird zudem in der Datei + <filename>/var/log/connections.log</filename> + protokolliert. Das Protokoll enthält den + Rechnernamen, die <acronym>IP</acronym>-Adresse + und den Dienst, der angesprochen wurde.</para> + + <para>In der Konfigurationsdatei wurde beispielsweise + das Metazeichen %a verwendet. Es gibt weitere + Metazeichen, die in der Hilfeseite &man.hosts.access.5; + beschrieben werden.</para> + </sect3> + + <sect3> + <title>Wildcards</title> + + <para>Bisher verwendeten die Beispiele immer die + Wildcard <literal>ALL</literal>. 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 + 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> + + <programlisting># Block possibly spoofed requests to sendmail: +sendmail : PARANOID : deny</programlisting> + + <para>In diesem Beispiel werden alle Verbindungen zu + <command>sendmail</command> verboten, die von einer + <acronym>IP</acronym>-Adresse ausgehen, die nicht zum + Rechnernamen passt.</para> + + <caution> + <para>Die Wildcard <literal>PARANOID</literal> + 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> + </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. + Damit die gezeigten Beispiele funktionieren, müssen + Sie die erste Konfigurationszeile in der Datei + <filename>hosts.allow</filename> auskommentieren.</para> + </sect3> + </sect2> + </sect1> + <sect1 id="kerberosIV"> <sect1info> <authorgroup> @@ -3862,6 +4109,16 @@ jdoe@example.org</screen> </sect1> <sect1 id="openssl"> + <sect1info> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + <contrib>Beigetragen von </contrib> + </author> + </authorgroup> + </sect1info> + <title>OpenSSL</title> <indexterm> <primary>Sicherheit</primary> @@ -3869,39 +4126,211 @@ jdoe@example.org</screen> </indexterm> <indexterm><primary>OpenSSL</primary></indexterm> - <para>Das OpenSSL-Toolkit ist seit FreeBSD 4.0 Teil des Basissystems. - <ulink url="http://www.openssl.org/">OpenSSL</ulink> stellt eine - universale Kryptographie Bibliothek sowie die Protokolle Secure - Sockets Layer v2/v3 (SSLv2/SSLv3) und Transport Layer Security v1 - (TLSv1) zur Verfügung.</para> - - <para>Einer der Algorithmen, namentlich IDEA, in OpenSSL ist durch - Patente in den USA und anderswo geschützt und daher nicht frei - verfügbar. IDEA ist Teil des Quellcodes von OpenSSL wird aber - in der Voreinstellung nicht kompiliert. Wenn Sie den Algorithmus - benutzen wollen und die Lizenzbedingungen erfüllen, können - Sie <makevar>MAKE_IDEA</makevar> in - <filename>/etc/make.conf</filename> aktivieren und das System mit - <command>make world</command> neu bauen.</para> - - <para>Der RSA-Algorithmus ist heute in den USA und anderen Ländern - frei verfügbar. Früher wurde er ebenfalls durch ein Patent - geschützt.</para> + <para>Es wird oft übersehen, dass + <application>OpenSSL</application> Teil des &os;-Basissystems + ist. <application>OpenSSL</application> bietet eine + verschlüsselte Transportschicht oberhalb der + normalen Kommunikationsschicht und kann daher zusammen + mit vielen Netzdiensten benutzt werden.</para> + + <para>Anwendungsbeispiele für <application>OpenSSL</application> + sind die verschlüsselte Authentifizierung von + E-Mail-Clients oder Web-Transaktionen wie das Bezahlen mit + einer Kreditkarte. <application>OpenSSL</application> + kann während des Baus in viele Ports, wie + <filename role="package">www/apache13-ssl</filename> und + <filename role="package">mail/sylpheed-claws</filename>, + integriert werden.</para> - <indexterm> - <primary>OpenSSL</primary> - <secondary>Installation</secondary> - </indexterm> + <note> + <para>Ist beim Aufruf von <command>make</command> die + Variable <makevar>WITH_OPENSSL_BASE</makevar> nicht + explizit auf <literal>yes</literal> gesetzt, baut + die Ports-Collection meist den Port + <filename role="package">security/openssl</filename>.</para> + </note> + + <para>Das <application>OpenSSL</application> von &os; stellt + die Protokolle Secure Sockets Layer v2/v3 (SSLv2/SSLv3) und + Transport Layer Security v1 (TLSv1) zur Verfügung. + Anwendungen können die + <application>OpenSSL</application>-Bibliotheken zum + Verschlüsseln benutzen.</para> + + <note> + <para>Mit <application>OpenSSL</application> kann der + <acronym>IDEA</acronym>-Algorithmus verwendet werden, + wegen Patenten in den USA ist der Algorithmus in der + Voreinstellung allerdings deaktiviert. Wenn Sie die + <acronym>IDEA</acronym>-Lizenz akzeptieren, können + Sie den <acronym>IDEA</acronym>-Algorithmus aktivieren, + indem Sie die Variable <makevar>MAKE_IDEA</makevar> + in <filename>make.conf</filename> setzen.</para> + </note> + + <para>Meist wird <application>OpenSSL</application> eingesetzt, + um Zertifikate für Anwendungen bereitzustellen. Die + Zertifikate stellen die Identität einer Firma oder + eines Einzelnen sicher. Wenn ein Zertifikat nicht von + einer Zertifizierungsstelle (<foreignphrase>Certificate + Authority</foreignphrase>, <acronym>CA</acronym>) + gegengezeichnet wurde, erhalten Sie normalerweise eine + Warnung. Eine Zertifizierungsstelle ist eine Firma + wie VeriSign, die Zertifikate von Personen oder Firmen + gegenzeichnet und damit die Korrektheit der Zertifikate + bestätigt. Diese Prozedur kostet Geld, ist aber + keine Voraussetzung für den Einsatz von Zertifikaten, + beruhigt aber sicherheitsbewusste Benutzer.</para> + <!-- XXX paranoid users ?? --> <sect2> - <title>Installation des Quellcodes</title> - - <para>OpenSSL ist Teil der <literal>src-crypto</literal> und - <literal>src-secure</literal> - <application>CVSup</application>-Kollektionen. Mehr Informationen - über die Erhältlichkeit und das Aktualisieren des FreeBSD - Quellcodes erhalten Sie im Abschnitt - <link linkend="mirrors">Bezugsquellen für FreeBSD</link>.</para> + <title>Zertifikate erzeugen</title> + + <indexterm> + <primary>OpenSSL</primary> + <secondary>Zertifikate erzeugen</secondary> + </indexterm> + + <para>Ein Zertifikat erzeugen Sie mit dem nachstehenden + Kommando:</para> + + <screen>&prompt.root; <userinput>openssl req -new -nodes -out req.pem -keyout cert.pem</userinput> +Generating a 1024 bit RSA private key +................++++++ +.......................................++++++ +writing new private key to 'cert.pem' +----- +You are about to be asked to enter information that will be incorporated +into your certificate request. +What you are about to enter is what is called a Distinguished Name or a DN. +There are quite a few fields but you can leave some blank +For some fields there will be a default value, +If you enter '.', the field will be left blank. +----- +Country Name (2 letter code) [AU]:<userinput><replaceable>US</replaceable></userinput> +State or Province Name (full name) [Some-State]:<userinput><replaceable>PA</replaceable></userinput> +Locality Name (eg, city) []:<userinput><replaceable>Pittsburgh</replaceable></userinput> +Organization Name (eg, company) [Internet Widgits Pty Ltd]:<userinput><replaceable>My Company</replaceable></userinput> +Organizational Unit Name (eg, section) []:<userinput><replaceable>Systems Administrator</replaceable></userinput> +Common Name (eg, YOUR name) []:<userinput><replaceable>localhost.example.org</replaceable></userinput> +Email Address []:<userinput><replaceable>trhodes@FreeBSD.org</replaceable></userinput> + +Please enter the following 'extra' attributes +to be sent with your certificate request +A challenge password []:<userinput><replaceable>SOME PASSWORD</replaceable></userinput> +An optional company name []:<userinput><replaceable>Another Name</replaceable></userinput></screen> + + <para>Beachten Sie bitte, dass die Eingabe bei + <quote>Common Name</quote> ein gültiger Domain-Name + sein muss. Eine andere Eingabe erzeugt ein unbrauchbares + Zertifikat. Das Zertifikat kann mit einer + Gültigkeitsdauer und anderen + Verschlüsselungsalgorithmen erzeugt werden. + Die Hilfeseite &man.openssl.1; beschreibt die zur + Verfügung stehenden Optionen.</para> + + <para>Das Verzeichnis, in dem Sie das Kommando abgesetzt + haben, enthält nun die Datei + <filename>cert.pem</filename>. Dies ist das Zertifikat, + dass Sie einer Zertifizierungsstelle zum Gegenzeichnen + schicken können.</para> + + <para>Wenn Sie keine Signatur einer Zertifizierungsstelle + benötigen, können Sie ein selbst-signiertes + Zertifikat erstellen. Erstellen Sie dazu zuerst einen + <acronym>CA</acronym>-Schlüssel:</para> + + <screen>&prompt.root; <userinput>openssl gendsa -des3 -out \ +<filename>myca.key</filename> 1024</userinput></screen> + + <para>Erstellen Sie mit diesem Schlüssel das + Zertifikat:</para> + + <screen>&prompt.root; <userinput>openssl req -new -x509 -days 365 -key \ +<filename>myca.key</filename> -out <filename>new.crt</filename></userinput></screen> + + <para>Zwei neue Dateien befinden sich nun im Verzeichnis: + Der Schlüssel der Zertifizierungsstelle + <filename>myca.key</filename> und das Zertifikat selbst, + <filename>new.crt</filename>. Sie sollten in einem + Verzeichnis, vorzugsweise unterhalb von + <filename class="directory">/etc</filename> abgelegt + werden, das nur von <username>root</username> lesbar + ist. Setzen Sie die Zugriffsrechte der Dateien mit + <command>chmod</command> auf <literal>0600</literal>.</para> + </sect2> + + <sect2> + <title>Beispiel für Zertifikate</title> + + <para>Was fangen Sie mit einem Zertifikat an? Sie + könnten damit beispielsweise die Verbindungen zu + <application>Sendmail</application> verschlüsseln. + Dies würde die Klartext-Authentifizierung + für Benutzer des lokalen <acronym>MTA</acronym> + überflüssig machen.</para> + + <note> + <para>Das ist nicht unbedingt die beste Lösung, + da einige <acronym>MUA</acronym>s Warnungen ausgeben, + wenn ein Zertifikat nicht lokal installiert ist. + Die Installation von Zertifikaten wird in der + Dokumentation der <acronym>MUA</acronym>s + beschrieben.</para> + </note> + + <para>Ergänzen Sie die Konfigurationsdatei von + <application>sendmail</application> (<filename>.mc</filename>) + um die nachstehenden Zeilen:</para> + + <programlisting>dnl SSL Options +define(`confCACERT_PATH',`/etc/certs')dnl +define(`confCACERT',`/etc/certs/new.crt')dnl +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 role="directory">/etc/certs</filename> + befindet sich der Schlüssel und das Zertifikat. + Bauen Sie danach im Verzeichnis + <filename role="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>Wenn alles gut ging, erscheinen keine Fehlermeldungen + in der Datei <filename>/var/log/maillog</filename> und + Sie sehen <application>sendmail</application> in der + Prozessliste.</para> + + <para>Testen Sie nun den Mailserver mit dem Kommando + &man.telnet.1;:</para> + + <screen>&prompt.root; <userinput>telnet <replaceable>example.com</replaceable> 25</userinput> +Trying 192.0.34.166... +Connected to <hostid role="fqdn">example.com</hostid>. +Escape character is '^]'. +220 <hostid role="fqdn">example.com</hostid> ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT) +<userinput>ehlo <replaceable>example.com</replaceable></userinput> +250-example.com Hello example.com [192.0.34.166], pleased to meet you +250-ENHANCEDSTATUSCODES +250-PIPELINING +250-8BITMIME +250-SIZE +250-DSN +250-ETRN +250-AUTH LOGIN PLAIN +250-STARTTLS +250-DELIVERBY +250 HELP +<userinput>quit</userinput> +221 2.0.0 <hostid role="fqdn">example.com</hostid> closing connection +Connection closed by foreign host.</screen> + + <para>Wenn in einer Zeile <literal>STARTTLS</literal> + erscheint, hat alles funktioniert.</para> </sect2> </sect1> @@ -4037,8 +4466,7 @@ options IPSEC_ESP #IP security (crypto; define w/ IPSEC)</screen> </sect2> <sect2> - <title>Szenario I: Zwei Netzwerke verbunden über - das Internet</title> + <title>VPN zwischen zwei Netzen über das Internet</title> <para>Dieses Szenario hat die folgenden Vorausetzungen:</para> |