Systemverwaltungshandbuch: IP Services

Kapitel 21 IP Security Architecture (Referenz)

Dieses Kapitel enthält die folgenden Referenzinformationen:

Anweisungen zur Implementierung von IPsec in Ihrem Netzwerk finden Sie in Kapitel 20Konfiguration von IPsec (Aufgaben). Eine Übersicht zu IPsec finden Sie in Kapitel 19IP Security Architecture (Übersicht).

IPsec Service Management Facility

Die Service Management Facility (SMF) stellt IPsec die folgenden Services zur Verfügung:

Weitere Informationen zur SMF finden Sie in Kapitel 18, Managing Services (Overview) in System Administration Guide: Basic Administration. Lesen Sie hierzu auch die Manpages smf(5), svcadm(1M) und svccfg(1M).

ipsecconf-Befehl

Mit dem ipsecconf-Befehl wird die IPsec-Richtlinie für einen Host konfiguriert. Wenn Sie diesen Befehl zur Konfiguration der Richtlinie ausführen, erstellt das System IPsec-Richtlinieneinträge im Kernel. Das System verwendet diese Einträge, um die Richtlinie an allen eingehenden und abgehenden IP-Datagrammen zu prüfen. Weitergeleitete Datagramme sind jedoch von den Richtlinienprüfungen, ausgenommen, die mit diesem Befehl hinzugefügt werden. Mit dem Befehl ipsecconf wird auch die Security Policy Database (SPD) konfiguriert.

Zum Aufrufen des ipsecconf-Befehls müssen Sie sich als Superuser anmelden oder eine entsprechende Rolle annehmen. Der Befehl akzeptiert Einträge, die den Datenverkehr in beide Richtungen schützen, und Einträge, die den Datenverkehr nur in eine Richtung schützen.

Richtlinieneinträge im Format lokale Adresse und remote Adresse können den Datenverkehr mit nur einem Richtlinieneintrag in beiden Richtungen schützen. Beispielsweise schützen Einträge nach dem Muster ladr host1 und radr host2 Datenverkehr in beiden Richtungen, wenn keine Richtung für den benannten Host angegeben ist. Aus diesem Grund benötigen Sie für jeden Host nur einen Richtlinieneintrag.

Richtlinieneinträge im Format Quelladresse zu Zieladresse schützen Datenverkehr nur in eine Richtung. Beispielsweise schützt ein Richtlinieneintrag nach dem Muster qadr host1 zadr host2 entweder eingehenden Datenverkehr oder abgehenden Datenverkehr, aber keinen bidirektionalen Datenverkehr. Daher müssen Sie, um Datenverkehr in beide Richtungen zu schützen, den Befehl ipsecconf in einem weiteren Eintrag übergeben, z. B. qadr host2 zadr host1.

Um sicherzustellen, dass die IPsec-Richtlinie beim Booten des Computers aktiviert wird, können Sie eine IPsec-Richtliniendatei, /etc/inet/ipsecinit.conf, erstellen. Die Datei wird beim Starten der Netzwerkservices eingelesen. Anweisungen zum Erstellen einer IPsec-Richtliniendatei finden Sie unter Schützen des Datenverkehrs mit IPsec (Übersicht der Schritte).

Ab Solaris 10 4/09 kann mit der -c-Option beim ipsecconf-Befehl die Syntax der als Argument bereitgestellten IPsec-Richtliniendaten überprüft werden.

Richtlinieneinträge, die über den ipsecconf-Befehl hinzugefügt werden, bleiben nicht über einen erneuten Bootvorgang im System erhalten. Damit die IPsec-Richtlinie beim Booten des Systems aktiv ist, müssen die entsprechenden Einträge in die Datei /etc/inet/ipsecinit.conf eingefügt werden. Aktualisieren bzw. aktivieren Sie in der aktuellen Version den policy-Service. In einer älteren Version als Solaris 10 4/09 müssen Sie das System erneut booten oder den Befehl ipsecconf verwenden. Beispiele finden Sie unter Schützen des Datenverkehrs mit IPsec (Übersicht der Schritte).

ipsecinit.conf-Datei

Um die IPsec-Sicherheitsrichtlinien beim Starten des Solaris OS (Solaris OS) aufzurufen, erstellen Sie eine Konfigurationsdatei, um IPsec mit Ihren speziellen IPsec-Richtlinieneinträgen zu initialisieren. Der Standardname für diese Datei lautet /etc/inet/ipsecinit.conf. Ausführliche Informationen zu Richtlinieneinträgen und deren Format finden Sie in der Manpage ipsecconf(1M). Nachdem die Richtlinien konfiguriert sind, können Sie den Befehl ipsecconf aufrufen, um die bestehende Konfiguration anzuzeigen oder zu ändern. Ab Solaris 10 4/09 wird die vorhandene Konfiguration durch eine Aktualisierung des policy-Service geändert.

Beispiel einer ipsecinit.conf-Datei

Die Solaris-Software enthält ein Beispiel einer IPsec-Richtliniendatei, ipsecinit.sample. Sie können diese Datei als Vorlage verwenden, um Ihre eigene ipsecinit.conf-Datei zu erstellen. Die Datei ipsecinit.sample enthält die folgenden Beispiele:


#
# For example,
#
#	 {rport 23} ipsec {encr_algs des encr_auth_algs md5}
#
# will protect the telnet traffic originating from the host with ESP using
# DES and MD5. Also:
#
#	 {raddr 10.5.5.0/24} ipsec {auth_algs any}
#
# will protect traffic to or from the 10.5.5.0 subnet with AH 
# using any available algorithm.
#
#
# To do basic filtering, a drop rule may be used. For example:
#
#	 {lport 23 dir in} drop {}
#	 {lport 23 dir out} drop {}
# will disallow any remote system from telnetting in.
#
# If you are using IPv6, it may be useful to bypass neighbor discovery
# to allow in.iked to work properly with on-link neighbors. To do that,
# add the following lines:
#
#        {ulp ipv6-icmp type 133-137 dir both } pass { }
#
# This will allow neighbor discovery to work normally.

Sicherheitsbetrachtungen für ipsecinit.conf und ipsecconf

Seien Sie vorsichtig, wenn Sie eine Kopie der ipsecinit.conf-Datei über ein Netzwerk übertragen. Ein potentieller Angreifer kann eine über das Netzwerk eingehängte Datei lesen, wenn die Datei eingelesen wird. Angenommen, die Datei /etc/inet/ipsecinit.conf wird geöffnet oder von einem NFS eingehängten Dateisystem kopiert, kann ein potentieller Angreifer die in der Datei enthaltene Richtlinie ändern.

Stellen Sie sicher, dass Sie IPsec-Richtlinien einrichten, bevor Sie eine Kommunikation initiieren, da bestehende Verbindungen durch Hinzufügen von neuen Richtlinieneinträgen beeinflusst werden können. Entsprechend sollten Sie keine Richtlinien während der Kommunikation ändern.

Eine IPsec-Richtlinie kann insbesondere nicht für SCTP-, TCP- oder UDP-Sockets geändert werden, für die ein connect()- oder accept()-Funktionsaufruf ausgegeben wurde. Ein Socket, dessen Richtlinie nicht geändert werden kann, wird als gesperrtes Socket bezeichnet. Neue Richtlinieneinträge schützen keine Sockets, die bereits gesperrt sind. Weitere Informationen finden Sie in den Manpages connect(3SOCKET) und accept(3SOCKET).

Schützen Sie Ihr Benennungssystem. Wenn die folgenden beiden Bedingungen erfüllt sind, sind Ihre Hostnamen nicht mehr vertrauenswürdig:

Sicherheitsschwächen beruhen häufig auf dem Fehlverhalten von Tools, nicht von tatsächlichen Tools. Aus diesem Grund sollten Sie bei der Verwendung des ipsecconf-Befehls vorsichtig sein. Verwenden Sie eine Konsole oder ein anderes festverdrahtetes TTY für den sichersten Betriebsmodus.

ipsecalgs-Befehl

Das Solaris Cryptographic Framework bietet Authentifizierungs- und Verschlüsselungsalgorithmen für IPsec. Mit dem ipsecalgs -Befehl werden die Algorithmen aufgeführt, die von den einzelnen IPsec-Protokollen unterstützt werden. Die ipsecalgs-Konfiguration wird in der Datei /etc/inet/ipsecalgs gespeichert. Diese Datei muss in der Regel nicht geändert werden. Wenn Sie sie doch ändern müssen, verwenden Sie den ipsecalgs-Befehl. Diese Datei darf nicht direkt bearbeitet werden. In der aktuellen Version werden die unterstützten Algorithmen beim Booten des Systems mittels des svc:/network/ipsec/ipsecalgs:default-Service mit dem Systemkern synchronisiert.

Die gültigen IPsec-Protokolle und -Algorithmen werden von der ISAKMP-Domain of Interpretation (DOI) beschrieben, die in RFC 2407 behandelt wird. Im allgemeinen Sinn definiert eine DOI Datenformate, Netzverkehr-Austauscharten sowie Konventionen für das Benennen sicherheitsrelevanter Informationen. Bespiele für sicherheitsrelevante Informationen sind Sicherheitsrichtlinien, kryptografische Algorithmen und Kryptographiemodi.

Insbesondere definiert die ISAKMP DOI die Benennungs- und Nummerierungskonventionen für gültige IPsec-Algorithmen und deren Protokolle, PROTO_IPSEC_AH und PROTO_IPSEC_ESP. Jedem Algorithmus ist exakt ein Protokoll zugeordnet. Diese ISAKMP DOI-Definitionen sind in der /etc/inet/ipsecalgs-Datei enthalten. Der Algorithmus und die Protokollnummern werden von der Internet Assigned Numbers Authority (IANA) definiert. Mit dem Befehl ipsecalgs kann die Algorithmenliste für IPsec erweitert werden.

Weitere Informationen zu Algorithmen finden Sie in der Manpage ipsecalgs(1M) Weitere Informationen zum Solaris Cryptographic Framework finden Sie in Kapitel 13, Oracle Solaris Cryptographic Framework (Overview) in System Administration Guide: Security Services.

Sicherheitszuordnung-Datenbank für IPsec

Informationen zum Schlüsselmaterial für die IPsec-Sicherheitsservices werden in einer Sicherheitszuordnung-Datenbank (SADB) verwaltet. Sicherheitszuordnungen (SAs) schützen eingehende und abgehende Pakete. Die SADBs werden von einem Benutzerprozess, eventuell von mehreren kooperierenden Prozessen verwaltet, die Nachrichten über einen besonderen Socket senden. Diese Methode der SADBs-Verwaltung entspricht der in Manpage route(7P) beschriebenen Methode. Nur Superuser oder Benutzer, die eine entsprechende Rolle angenommen haben, können auf die Datenbank zugreifen.

Der in.iked-Daemon und der ipseckey-Befehl können die SADBs über die PF_KEY-Socket-Schnittstelle verwalten. Weitere Informationen zur Verarbeitung von Anforderungen und Nachrichten durch die SADBs finden Sie in der Manpage pf_key(7P).

Dienstprogramme zur Schlüsselerzeugung in IPsec

Das IKE-Protokoll bietet ein automatisches Schlüsselmanagement für IPv4- und IPv6-Adressen. Informationen zum Einrichten von IKE finden Sie in Kapitel 23Konfiguration von IKE (Aufgaben). Das manuelle Schlüssel-Dienstprogramm ist der Befehl ipseckey, der in der Manpage ipseckey(1M) ausführlich beschrieben wird.

Mit dem ipseckey-Befehl können Sie die Datenbank mit den Sicherheitszuordnungen (SADB) manuell auffüllen. In der Regel werden Sicherheitszuordnungen manuell erstellt, wenn IKE nicht zur Verfügung steht. Bei eindeutigen SPI-Werten können die manuelle SA-Erstellung und IKE jedoch auch parallel eingesetzt werden.

Mit dem ipseckey-Befehl können alle im System bekannten SAs aufgerufen werden – unabhängig davon, ob die Schlüssel manuell oder mit IKE hinzugefügt wurden. Ab Solaris 10 4/09 kann mit der -c-Option des ipseckey-Befehls die Syntax der als Argument bereitgestellten Schlüsseldatei überprüft werden.

IPsec-SAs, die mit dem ipseckey-Befehl hinzugefügt wurden, gehen bei einem erneuten Booten des Systems verloren. Wenn Sie in der aktuellen Version manuell hinzugefügte SAs beim Booten des Systems aktivieren möchten, fügen Sie Einträge in die Datei /etc/inet/secret/ipseckeys ein, und aktivieren Sie anschließend den svc:/network/ipsec/manual-key:default-Service. Die Verfahrensweise ist unter So erstellen Sie manuell IPsec-Sicherheitszuordnungen erläutert.

Obwohl der Befehl ipseckey nur über wenige allgemeine Optionen verfügt, unterstützt er eine umfangreiche Befehlssprache. Sie können festlegen, dass Anforderungen mittels einer programmatischen Schnittstelle zugestellt werden, die speziell für die manuelle Schlüsselerstellung gilt. Weitere Informationen finden Sie in der Manpage pf_key(7P).

Sicherheitsbetrachtungen für ipseckey

Mit dem ipseckey-Befehl können Sie als Superuser oder in einer Rolle mit dem Rechteprofil für Netzwerksicherheit bzw. Netzwerk-IPsec-Management vertrauliche kryptografische Informationen eingeben. Wenn ein potenzieller Gegner Zugriff auf diese Informationen erhält, könnte er die Sicherheit des IPsec-Datenverkehrs beeinflussen.

Berücksichtigen Sie bei der Verwaltung des Schlüsselmaterials und dem Verwenden des Befehls ipseckey sollten Sie die folgenden Punkte:

Sicherheitsschwächen beruhen häufig auf dem Fehlverhalten von Tools, nicht von tatsächlichen Tools. Aus diesem Grund sollten Sie bei der Verwendung des ipseckey-Befehls vorsichtig sein. Verwenden Sie eine Konsole oder ein anderes festverdrahtetes TTY für den sichersten Betriebsmodus.

IPsec-Erweiterungen für andere Dienstprogramme

Der Befehl ifconfig verfügt über Optionen zur Verwaltung der IPsec-Richtlinie für eine Tunnelschnittstelle. Der Befehl snoop kann AH- und ESP-Header analysieren.

ifconfig-Befehl und IPsec

In den Releases Solaris 10, Solaris 10 7/05, Solaris 10 1/06 und Solaris 10 11/06: Zur Unterstützung von IPsec stehen die folgenden Sicherheitsoptionen über den Befehl ifconfig zur Verfügung. Diese Sicherheitsoptionen werden vom Befehl ipsecconf im Solaris 10 7/07-Release verarbeitet.

Sie müssen alle IPsec-Sicherheitsoptionen für einen Tunnel in einem Aufruf angeben. Angenommen, Sie verwenden zum Schützen des Verkehrs nur ESP, können Sie den Tunnel ip.tun0 einmal mit beiden Sicherheitsoptionen wie in dem folgenden Beispiel konfigurieren:


# ifconfig ip.tun0 encr_algs aes encr_auth_algs md5

Entsprechend wird ein ipsecinit.conf-Eintrag den Tunnel einmal mit beiden Sicherheitsoptionen konfigurieren. Betrachten Sie dazu das folgende Beispiel:


# WAN traffic uses ESP with AES and MD5.
   {} ipsec {encr_algs aes encr_auth_algs md5}

auth_algs-Sicherheitsoption

Diese Option aktiviert einen IPsec AH-Header mit einem bestimmten Authentifizierungsalgorithmus für einen Tunnel. Die Option auth_algs hat das folgende Format:


auth_algs authentication-algorithm

Als Algorithmus können Sie entweder eine Zahl oder einen Algorithmusnamen einschließlich dem Parameter any verwenden, so dass kein bestimmter Algorithmus bevorzugt wird. Zum Deaktivieren der Tunnelsicherheit geben Sie die folgende Option an:


auth_algs none

Zum Anzeigen einer Liste der verfügbaren Authentifizierungsalgorithmen geben Sie den Befehl ipsecalgs ein.


Hinweis –

Die Option auth_algs arbeitet nicht mit NAT-Traversal. Weitere Informationen finden Sie unter IPsec und NAT Traversal.


encr_auth_algs-Sicherheitsoption

Diese Option aktiviert einen IPsec ESP-Header mit einem bestimmten Authentifizierungsalgorithmus für einen Tunnel. Die Option encr_auth_algs hat das folgende Format:


encr_auth_algs authentication-algorithm

Als Algorithmus können Sie entweder eine Zahl oder einen Algorithmusnamen einschließlich dem Parameter any verwenden, so dass kein bestimmter Algorithmus bevorzugt wird. Wenn Sie einen ESP-Verschlüsselungsalgorithmus, aber keinen Authentifizierungsalgorithmus angeben, nimmt der Werte für den ESP-Authentifizierungsalgorithmus standardmäßig den Parameter any an.

Zum Anzeigen einer Liste der verfügbaren Authentifizierungsalgorithmen geben Sie den Befehl ipsecalgs ein.

encr_algs-Sicherheitsoption

Diese Option aktiviert einen IPsec ESP-Header mit einem bestimmten Verschlüsselungsalgorithmus für einen Tunnel. Die Option encr_algs hat das folgende Format:


encr_algs encryption-algorithm

Als Algorithmus können Sie entweder eine Zahl oder den Algorithmusnamen angeben. Zum Deaktivieren der Tunnelsicherheit geben Sie die folgende Option an:


encr_algs none

Wenn Sie einen ESP-Authentifizierungsalgorithmus, aber keinen Verschlüsselungsalgorithmus angeben, nimmt der Wert der ESP-Verschlüsselung standardmäßig den Parameter null an.

Zum Anzeigen einer Liste der verfügbaren Verschlüsselungsalgorithmen geben Sie den Befehl ipsecalgs ein.

snoop-Befehl und IPsec

Der Befehl snoop kann AH- und ESP-Header analysieren. Da ESP seine Daten verschlüsselt, sieht der Befehl snoop keine verschlüsselten Header, die durch ESP geschützt wurden. AH verschlüsselt keine Daten. Aus diesem Grund kann Datenverkehr, der durch AH geschützt wird, mit dem Befehl snoop geprüft werden. Die Befehlsoption -V zeigt, wann AH für ein Paket verwendet wird. Weitere Informationen finden Sie in der Manpage snoop(1M).

Ein Beispiel einer ausführlichen Ausgabe des Befehls snoop bei einem geschützten Paket finden Sie unter So prüfen Sie, ob Pakete mit IPsec geschützt sind.