Teil I Übersicht über die Sicherheit
1. Sicherheitsservices (Überblick)
Teil II System-, Datei- und Gerätesicherheit
2. Verwalten von Rechnersicherheit (Übersicht)
3. Steuern des Zugriffs auf Systeme (Aufgaben)
4. Steuern des Zugriffs auf Geräte (Aufgaben)
5. Verwenden von Basic Audit Reporting Tool (Aufgaben)
6. Steuern des Zugriffs auf Dateien (Aufgaben)
7. Verwenden von Automated Security Enhancement Tool (Aufgaben)
Teil III Rollen, Berechtigungsprofile und Berechtigungen
8. Verwenden von Rollen und Berechtigungen (Übersicht)
9. Rollenbasierte Zugriffssteuerung (Aufgaben)
10. Rollenbasierte Zugriffssteuerung (Übersicht)
Teil IV Kryptografische Services
13. Oracle Solaris Cryptographic Framework (Übersicht)
14. Oracle Solaris Cryptographic Framework (Aufgaben)
15. Oracle Solaris Key Management Framework
Teil V Authentifizierungsservices und sichere Kommunikation
16. Verwenden von Authentifizierungsservices (Aufgaben)
19. Verwenden von Oracle Solaris Secure Shell (Aufgaben)
Oracle Solaris Secure Shell (Übersicht)
Oracle Solaris Secure Shell-Authentifizierung
Secure Shell in the Enterprise
Oracle Solaris Secure Shell und das OpenSSH-Projekt
Oracle Solaris Secure Shell (Übersicht der Schritte)
Konfigurieren von Oracle Solaris Secure Shell (Übersicht der Schritte)
Konfigurieren von Oracle Solaris Secure Shell (Aufgaben)
So richten Sie eine hostbasierte Authentifizierung für Secure Shell ein
So aktivieren Sie Secure Shell v1
So konfigurieren Sie die Port-Weiterleitung in Secure Shell
Verwenden von Oracle Solaris Secure Shell (Übersicht der Schritte)
Verwenden von Oracle Solaris Secure Shell (Aufgaben)
So generieren Sie ein Paar aus öffentlichem und privatem Schlüssel für Secure Shell
So ändern Sie den Passwortsatz für einen privaten Secure Shell-Schlüssel
So melden Sie sich bei einem Remote-Host mithilfe von Secure Shell an
So reduzieren Sie die Aufforderungen zur Passworteingabe in Secure Shell
So richten Sie den Befehl ssh-agent zur automatischen Ausführung in CDE ein
So verwenden Sie die Port-Weiterleitung in Secure Shell
So kopieren Sie Dateien mit Secure Shell
So richten Sie Standardverbindungen mit Hosts außerhalb einer Firewall ein
20. Oracle Solaris Secure Shell (Referenz)
21. Einführung zum Kerberos-Service
22. Planen des Kerberos-Service
23. Konfigurieren des Kerberos-Service (Aufgaben)
24. Kerberos-Fehlermeldungen und -Fehlerbehebung
25. Verwalten von Kerberos-Hauptelementen und Richtlinien (Aufgaben)
26. Verwenden von Kerberos-Anwendungen (Aufgaben)
27. Der Kerberos-Service (Referenz)
Teil VII Prüfung bei Oracle Solaris
28. Prüfung bei Oracle Solaris (Übersicht)
29. Planen der Oracle Solaris-Prüfung
30. Verwalten der Oracle Solaris-Prüfung (Aufgaben)
Secure Shell bietet sicheren Zugriff zwischen einer lokalen und einer Remote-Shell. Weitere Informationen finden Sie auf den Manpages ssh_config(4) und ssh(1).
Benutzer müssen ein Paar aus öffentlichem und privatem Schlüssel generieren, wenn an ihrem Standort eine hostbasierte Authentifizierung oder eine Authentifizierung anhand öffentlicher Benutzerschlüssel implementiert wird. Zusätzliche Optionen finden Sie auf der Manpage ssh-keygen(1).
Bevor Sie beginnen
Fragen Sie Ihren Systemadministrator, ob eine hostbasierte Authentifizierung konfiguriert wurde.
myLocalHost% ssh-keygen -t rsa Generating public/private rsa key pair. …
Dabei gilt: -t ist der Algorithmustyp, entweder rsa, dsa oder rsa1.
Standardmäßig wird der Dateiname id_rsa, in diesem Fall für einen RSA v2-Schlüssel, in Klammern eingeschlossen. Sie können die Datei auswählen, indem Sie die Eingabetaste drücken. Stattdessen können Sie auch einen alternativen Dateinamen eingeben.
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):<Press Return>
Der Dateiname des öffentlichen Schlüssels wird automatisch erstellt, indem die Zeichenfolge .pub an den Dateinamen für den privaten Schlüssel angehängt wird.
Dieser Passwortsatz wird zur Verschlüsselung des privaten Schlüssels verwendet. Von einem Nulleintrag wird dringend abgeraten. Beachten Sie, dass der Passwortsatz bei der Eingabe nicht angezeigt wird.
Enter passphrase (empty for no passphrase): <Type passphrase>
Enter same passphrase again: <Type passphrase> Your identification has been saved in /home/jdoe/.ssh/id_rsa. Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub. The key fingerprint is: 0e:fb:3d:57:71:73:bf:58:b8:eb:f3:a3:aa:df:e0:d1 jdoe@myLocalHost
Überprüfen Sie, ob der Pfad zur Schlüsseldatei korrekt ist.
% ls ~/.ssh id_rsa id_rsa.pub
Jetzt haben Sie ein Paar aus öffentlichem und privatem Schlüssel erstellt.
Jetzt können Sie sich beim Remote-Host anmelden. Details finden Sie unter So melden Sie sich bei einem Remote-Host mithilfe von Secure Shell an.
% cat /etc/ssh/ssh_host_dsa_key.pub | ssh RemoteHost \ 'cat >> ~./ssh/known_hosts && echo "Host key copied"'
Enter password: <Type password> Host key copied %
Geben Sie den Befehl in einer Zeile ohne umgekehrten Schrägstrich ein.
myLocalHost% cat $HOME/.ssh/id_rsa.pub | ssh myRemoteHost \ 'cat >> .ssh/authorized_keys && echo "Key copied"'
Sobald die Datei kopiert ist, wird die Meldung "Key copied" (Schlüssel kopiert) angezeigt.
Enter password: Type login password Key copied myLocalHost%
Anweisungen finden Sie unter So reduzieren Sie die Aufforderungen zur Passworteingabe in Secure Shell. Weitere Informationen finden Sie auf den Manpages ssh-agent(1) und ssh-add(1).
Beispiel 19-2 Einrichten eines v1 RSA-Schlüssels für einen Benutzer
In dem folgenden Beispiel kann der Benutzer Hosts aufrufen, die v1 des Secure Shell-Protokolls ausführen. Um von v1-Hosts authentifiziert zu werden, erstellt der Benutzer einen v1-Schlüssel und kopiert den öffentlichen Schlüsselteil auf den Remote-Host.
myLocalHost% ssh-keygen -t rsa1 -f /home/jdoe/.ssh/identity Generating public/private rsa key pair. … Enter passphrase (empty for no passphrase): <Type passphrase> Enter same passphrase again: <Type passphrase> Your identification has been saved in /home/jdoe/.ssh/identity. Your public key has been saved in /home/jdoe/.ssh/identity.pub. The key fingerprint is: … myLocalHost% ls ~/.ssh id_rsa id_rsa.pub identity identity.pub myLocalHost% cat $HOME/.ssh/identity.pub | ssh myRemoteHost \ 'cat >> .ssh/authorized_keys && echo "Key copied"'
Mit dem folgenden Verfahren wird der private Schlüssel nicht geändert. Das Verfahren ändert den Authentifizierungsmechanismus für den privaten Schlüssel, d. h. den Passwortsatz. Informationen finden Sie auf der Manpage ssh-keygen(1).
Führen Sie den Befehl ssh-keygen mit der Option -p aus und geben Sie an den Eingabeaufforderungen die entsprechenden Informationen ein.
myLocalHost% ssh-keygen -p Enter file which contains the private key (/home/jdoe/.ssh/id_rsa):<Press Return> Enter passphrase (empty for no passphrase): <Type passphrase> Enter same passphrase again: <Type passphrase>
Dabei gilt: -p fordert an, dass der Passwortsatz einer Datei mit einem privaten Schlüssel geändert wird.
Geben Sie den Befehl ssh ein sowie den Namen des Remote-Hosts.
myLocalHost% ssh myRemoteHost
Es wird eine Eingabeaufforderung zur Authentizität des Remote-Hosts angezeigt:
The authenticity of host 'myRemoteHost' can't be established. RSA key fingerprint in md5 is: 04:9f:bd:fc:3d:3e:d2:e7:49:fd:6e:18:4f:9c:26 Are you sure you want to continue connecting(yes/no)?
Diese Eingabeaufforderung ist bei der ersten Verbindung zu einem Remote-Host normal.
Are you sure you want to continue connecting(yes/no)? no
Der Administrator ist für die Aktualisierung der globalen Datei /etc/ssh/ssh_known_hosts zuständig. Wenn die Datei ssh_known_hosts auf dem neuesten Stand ist, wird diese Eingabeaufforderung nicht angezeigt.
Are you sure you want to continue connecting(yes/no)? yes
Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase>
jdoe@myRemoteHost's password: <Type password> Last login: Fri Jul 20 14:24:10 2001 from myLocalHost myRemoteHost%
Die gesendeten Befehle sind verschlüsselt. Alle Antworten, die Sie erhalten sind verschlüsselt.
Geben Sie zum Abschluss exit ein oder verwenden Sie die gewohnte Methode zum Schließen der Shell.
myRemoteHost% exit myRemoteHost% logout Connection to myRemoteHost closed myLocalHost%
Wenn Sie Ihren Passwortsatz und Ihr Passwort zur Verwendung von Secure Shell nicht jedes Mal eingeben möchten, können Sie den Agentendämon verwenden. Starten Sie den Dämon zu Beginn der Sitzung. Fügen Sie dem Agentendämon Ihre privaten Schlüssel hinzu, indem Sie den Befehl ssh-add eingeben. Wenn Sie verschiedene Konten auf unterschiedlichen Hosts besitzen, fügen Sie die für die Sitzung benötigten Schlüssel hinzu.
Sie können den Agentendämon bei Bedarf manuell starten, wie im folgenden Verfahren beschrieben. Sie können den Agentendämon auch automatisch zu Beginn jeder Sitzung ausführen, wie in So richten Sie den Befehl ssh-agent zur automatischen Ausführung in CDE ein beschrieben.
myLocalHost% eval `ssh-agent` Agent pid 9892
myLocalHost% pgrep ssh-agent 9892
Geben Sie den Befehl ssh-add ein.
myLocalHost% ssh-add Enter passphrase for /home/jdoe/.ssh/id_rsa: <Type passphrase> Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa) myLocalHost%
myLocalHost% ssh myRemoteHost
Sie müssen keinen Passwortsatz eingeben.
Beispiel 19-3 Verwenden von ssh-add-Optionen
In diesem Beispiel fügt jdoe dem Agentendämon zwei Schlüssel hinzu. Die Option -l wird zum Auflisten aller Schlüssel des Dämons verwendet. Am Ende der Sitzung werden mit der Option -D alle Schlüssel des Agentendämons entfernt.
myLocalHost% ssh-agent myLocalHost% ssh-add Enter passphrase for /home/jdoe/.ssh/id_rsa: <Type passphrase> Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa) myLocalHost% ssh-add /home/jdoe/.ssh/id_dsa Enter passphrase for /home/jdoe/.ssh/id_dsa: <Type passphrase> Identity added: /home/jdoe/.ssh/id_dsa(/home/jdoe/.ssh/id_dsa) myLocalHost% ssh-add -l md5 1024 0e:fb:3d:53:71:77:bf:57:b8:eb:f7:a7:aa:df:e0:d1 /home/jdoe/.ssh/id_rsa(RSA) md5 1024 c1:d3:21:5e:40:60:c5:73:d8:87:09:3a:fa:5f:32:53 /home/jdoe/.ssh/id_dsa(DSA) User conducts Oracle Solaris Secure Shell transactions
myLocalHost% ssh-add -D Identity removed: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa.pub) /home/jdoe/.ssh/id_dsa(DSA)
In CDE können Sie vermeiden, dass Sie bei jeder Verwendung von Secure Shell zur Eingabe Ihres Passwortsatzes und Passworts aufgefordert werden, indem Sie den Agentendämon ssh-agent automatisch starten. Sie können den Agentendämon über das .dtprofile-Skript starten. Informationen zum Hinzufügen Ihres Passwortsatzes und Passworts finden Sie in Beispiel 19-3.
![]() | Achtung - Wenn Sie Sun Java Desktop System (Java DS) verwenden, richten Sie den Befehl ssh-agent nicht zur automatischen Ausführung ein. Da das Beenden des ssh-agent-Prozesses durch eine CDE-Schnittstelle gesteuert wird, wird der Dämon nach dem Beenden von Java DS weiter ausgeführt. Wenn Sie den Dämon beispielsweise in einer CDE-Sitzung starten, dann zu einer Java DS-Sitzung wechseln und sich anschließend abmelden, wird der Dämon weiter ausgeführt. Die Ausführung des Dämons beansprucht Systemressourcen. Auch wenn keine Probleme in Verbindung mit der fortgesetzten Ausführung des Dämons ssh-agent bekannt sind, enthält der Dämon ein Passwort, was ein Sicherheitsrisiko bedeuten kann. |
Fügen Sie folgenden Zeilen am Ende des Skripts $HOME/.dtprofile hinzu:
if [ "$SSH_AUTH_SOCK" = "" -a -x /usr/bin/ssh-agent ]; then eval `/usr/bin/ssh-agent` fi
Fügen Sie dem Skript $HOME/.dt/sessions/sessionexit folgende Zeilen hinzu:
if [ "$SSH_AGENT_PID" != "" -a -x /usr/bin/ssh-agent ]; then /usr/bin/ssh-agent -k fi
Dieser Eintrag gewährleistet, dass keiner den Secure Shell-Agenten nach Beendigung der CDE-Sitzung verwenden kann. Da das Skript eine CDE-spezifische Schnittstelle (sessionexit) verwendet, wird der Agentendämon in einer Sun Java Desktop System-Sitzung mit diesem Verfahren nicht beendet.
Sie können angeben, dass ein lokaler Port an einen Remote-Host weitergeleitet wird. Tatsächlich wird ein Socket zugewiesen, das auf Anfragen vom Port auf der lokalen Seite wartet. Die Verbindung von diesem Port wird über einen sicheren Kanal zum Remote-Host eingerichtet. Beispielsweise können Sie Port 143 angeben, um an einem entfernten Standort E-Mails über IMAP4 zu erhalten. Ähnlich kann ein Port auf der Remote-Seite angegeben werden.
Bevor Sie beginnen
Zur Weiterleitung von Ports muss der Administrator die Port-Weiterleitung auf dem Secure Shell-Remote-Server aktiviert haben. Weitere Informationen finden Sie unter So konfigurieren Sie die Port-Weiterleitung in Secure Shell.
Geben Sie den lokalen Port an, der auf Mitteilungen vom Remote-Port wartet. Geben Sie außerdem den Remote-Host und den Remote-Port an, von denen die Mitteilung weiterleitet wird.
myLocalHost% ssh -L localPort:remoteHost:remotePort
Geben Sie den Remote-Port an, der auf Mitteilungen wartet. Geben Sie außerdem den lokalen Host und den lokalen Port an, von denen die Mitteilung weiterleitet wird.
myLocalHost% ssh -R remotePort:localhost:localPort
Beispiel 19-4 Verwenden der lokalen Port-Weiterleitung für den Empfang von E-Mails
Das folgende Beispiel zeigt, wie Sie die lokale Port-Weiterleitung verwenden, um Mails von einem Remote-Server sicher empfangen zu können.
myLocalHost% ssh -L 9143:myRemoteHost:143 myRemoteHost
Mit diesem Befehl werden Verbindungen von Port 9143 auf myLocalHost an Port 143 weitergeleitet. Port 143 ist der Port für den IMAP v2-Server auf myRemoteHost. Wenn der Benutzer eine Mailanwendung startet, muss er die lokale Portnummer angeben, wie im folgenden Dialogfeld gezeigt.
Verwechseln Sie localhost in dem Dialogfeld nicht mit myLocalHost. myLocalHost ist ein hypothetischer Hostname. localhost ist ein Schlüsselwort zur Identifizierung des lokalen Systems.
Beispiel 19-5 Verwendung der Remote-Port-Weiterleitung zur Kommunikation außerhalb einer Firewall
In diesem Beispiel wird gezeigt, wie ein Benutzer in einer Unternehmensumgebung Verbindungen von einem Host in einem externen Netzwerk an einen Host innerhalb der unternehmenseigenen Firewall weiterleiten kann.
myLocalHost% ssh -R 9022:myLocalHost:22 myOutsideHost
Mit diesem Befehl werden Verbindungen von Port 9022 auf myOutsideHost an Port 22, dem sshd-Server, auf dem lokalen Host weitergeleitet.
myOutsideHost% ssh -p 9022 localhost myLocalHost%
Im folgenden Verfahren wird gezeigt, wie Sie den Befehl scp verwenden, um verschlüsselte Dateien zwischen Hosts zu kopieren. Sie können verschlüsselte Dateien zwischen einem lokalen und einem Remote-Host oder zwei Remote-Hosts kopieren. Der Befehl funktioniert ähnlich wie der Befehl rcp, mit dem Unterschied, dass der Befehl scp zur Authentifizierung auffordert. Weitere Informationen finden Sie auf der Manpage scp(1).
Sie können auch den Befehl sftp, eine sichere Form des Befehls ftp, verwenden. Weitere Informationen finden Sie auf der Manpage sftp(1). Ein Beispiel erhalten Sie unter Beispiel 19-6.
Geben Sie die Quelldatei, den Benutzernamen am Remote-Ziel und das Zielverzeichnis an.
myLocalHost% scp myfile.1 jdoe@myRemoteHost:~
Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase> myfile.1 25% |******* | 640 KB 0:20 ETA myfile.1
Nach der Eingabe des Passwortsatzes ist eine Fortschrittsanzeige zu sehen. Sie ist in der zweiten Zeile der oben stehenden Ausgabe enthalten. Die Fortschrittsanzeige enthält folgende Informationen:
Dateiname
Prozentsatz der Datei, der bisher übertragen wurde
Sternchen, die den übertragenen Prozentsatz der Datei kennzeichnen
Menge der übertragenen Daten
Geschätzte Zeit für den Empfang der gesamten Datei (ETA, Estimated Time of Arrival). Dies entspricht der verbleibenden Übertragungszeit.
Beispiel 19-6 Angeben eines Ports bei Verwendung des Befehls sftp
In diesem Beispiel möchte der Benutzer, dass der Befehl sftp einen bestimmten Port verwendet. Der Benutzer gibt den Port mithilfe der Option -o an.
% sftp -o port=2222 guest@RemoteFileServer
Mit Secure Shell können Sie eine Verbindung von einem Host innerhalb der Firewall zu einem Host außerhalb der Firewall herstellen. Dazu muss ein Proxy-Befehl für ssh entweder in einer Konfigurationsdatei oder als Option in der Befehlszeile angegeben werden. Informationen zur Befehlszeilenoption finden Sie unter Beispiel 19-7.
Im Allgemeinen können Sie Ihre ssh-Interaktionen über eine Konfigurationsdatei anpassen.
Sie können Ihre persönliche Datei in ~/.ssh/config anpassen.
Sie können auch die Einstellungen in der administrativen Konfigurationsdatei /etc/ssh/ssh_config verwenden.
Die Dateien können mit zwei Arten von Proxy-Befehlen angepasst werden. Ein Proxy-Befehl ist für HTTP-Verbindungen geeignet. Der andere Proxy-Befehl ist für SOCKS5-Verbindungen geeignet. Weitere Informationen finden Sie auf der Manpage ssh_config(4).
Fügen Sie die benötigten Zeilen mit der folgenden Syntax hinzu:
[Host outside-host] ProxyCommand proxy-command [-h proxy-server] \ [-p proxy-port] outside-host|%h outside-port|%p
Beschränkt die Proxy-Befehlsspezifikation auf Instanzen, wenn ein Remote-Hostname in der Befehlszeile angegeben wird. Mit einem Platzhalter für outside-host wird die Proxy-Befehlsspezifikation auf mehrere Hosts angewendet.
Gibt den Proxy-Befehl an.
Für den Befehl gibt es eine der folgenden zwei Möglichkeiten:
/usr/lib/ssh/ssh-http-proxy-connect für HTTP-Verbindungen
/usr/lib/ssh/ssh-socks5-proxy-connect für SOCKS5-Verbindungen
Diese Optionen geben einen Proxy-Server bzw. einen Proxy-Port an. Wenn vorhanden, überschreiben die Proxys alle Umgebungsvariablen, die Proxy-Server und Proxy-Ports angeben, wie z. B. HTTPPROXY, HTTPPROXYPORT, SOCKS5_PORT, SOCKS5_SERVER und http_proxy. Die Variable http_proxy gibt eine URL an. Wenn die Optionen nicht verwendet werden, müssen die entsprechenden Umgebungsvariablen festgelegt werden. Weitere Informationen finden Sie auf den Manpages ssh-socks5-proxy-connect(1) und ssh-http-proxy-connect(1).
Gibt den Host an, zu dem eine Verbindung hergestellt werden soll. Geben Sie den Host mithilfe des Substitutionsarguments %h in der Befehlszeile an.
Gibt den Port an, zu dem eine Verbindung hergestellt werden soll. Geben Sie den Port mithilfe des Substitutionsarguments %h in der Befehlszeile an. Durch Angabe von %h und %p ohne Verwendung der Option Host outside-host wird der Proxy-Befehl auf das Hostargument angewendet, sobald der Befehl ssh aufgerufen wird.
Geben Sie zum Beispiel Folgendes ein:
myLocalHost% ssh myOutsideHost
Dieser Befehl sucht nach einer Proxy-Befehlsspezifikation für myOutsideHost in Ihrer persönlichen Konfigurationsdatei. Wenn die Spezifikation nicht gefunden wird, sucht der Befehl in der systemweiten Konfigurationsdatei /etc/ssh/ssh_config. Der Befehl ssh wird durch den Proxy-Befehl ersetzt.
Beispiel 19-7 Erstellen einer Verbindung zu Hosts außerhalb einer Firewall über die Befehlszeile
Unter So richten Sie Standardverbindungen mit Hosts außerhalb einer Firewall ein wird erläutert, wie Sie einen Proxy-Befehl in einer Konfigurationsdatei angeben. In diesem Beispiel wird ein Proxy-Befehl in der ssh-Befehlszeile angegeben.
% ssh -o'Proxycommand=/usr/lib/ssh/ssh-http-proxy-connect \ -h myProxyServer -p 8080 myOutsideHost 22' myOutsideHost
Die Option -o des Befehls ssh ermöglicht die Eingabe eines Proxy-Befehls in der Befehlszeile. Dieser Beispielbefehl bewirkt Folgendes:
Ersetzt ssh durch den HTTP-Proxy-Befehl
Verwendet Port 8080 und myProxyServer als Proxy-Server
Verbindet Port 22 auf myOutsideHost