Ignorer les liens de navigation | |
Quitter l'aperu | |
Guide d'administration système : Services de sécurité |
Partie I Présentation de la sécurité
1. Services de sécurité (présentation)
Partie II Sécurité du système, des fichiers et des périphériques
2. Gestion de la sécurité de la machine (présentation)
3. Contrôle de l'accès aux systèmes (tâches)
4. Contrôle de l'accès aux périphériques (tâches)
5. Utilisation de l'outil de génération de rapports d'audit de base (tâches)
6. Contrôle de l'accès aux fichiers (tâches)
7. Utilisation d'Automated Security Enhancement Tool (Tâches)
Partie III Rôles, profils de droits et privilèges
8. Utilisation des rôles et des privilèges (présentation)
9. Utilisation du contrôle d'accès basé sur les rôles (tâches)
10. Contrôle d'accès basé sur les rôles (référence)
Partie IV Services cryptographiques
13. Structure cryptographique Oracle Solaris (présentation)
14. Structure cryptographique Oracle Solaris (tâches)
15. Structure de gestion des clés Oracle Solaris
Partie V Services d'authentification et communication sécurisée
16. Utilisation des services d'authentification (tâches)
19. Utilisation d'Oracle Solaris Secure Shell (tâches)
Oracle Solaris Secure Shell (présentation)
Authentification Oracle Solaris Secure Shell
Secure Shell dans l'entreprise
Oracle Solaris Secure Shell et le projet OpenSSH
Oracle Solaris Secure Shell (liste des tâches)
Configuration d'Oracle Solaris Secure Shell (liste des tâches)
Configuration d'Oracle Solaris Secure Shell (tâches)
Configuration de l'authentification basée sur l'hôte pour Secure Shell
Configuration du transfert de port dans Secure Shell
Utilisation d'Oracle Solaris Secure Shell (liste des tâches)
Utilisation d'Oracle Solaris Secure Shell (tâches)
Génération d'une paire de clés publiques ou privées à utiliser avec Secure Shell
Modification de la phrase de passe pour une clé privée Secure Shell
Connexion à un hôte distant avec Secure Shell
Réduction des invites de mot de passe dans Secure Shell
Configuration de la commande ssh-agent pour qu'elle s'exécute automatiquement dans le CDE
Utilisation du transfert de port dans Secure Shell
20. Oracle Solaris Secure Shell (référence)
21. Introduction au service Kerberos
22. Planification du service Kerberos
23. Configuration du service Kerberos (tâches)
24. Messages d'erreur et dépannage de Kerberos
25. Administration des principaux et des stratégies Kerberos (tâches)
26. Utilisation des applications Kerberos (tâches)
27. Service Kerberos (référence)
Partie VII Audit Oracle Solaris
28. Audit Oracle Solaris (présentation)
29. Planification de l'audit Oracle Solaris
30. Gestion de l'audit Oracle Solaris (tâches)
Secure Shell fournit un accès sécurisé entre un shell local et un shell distant. Pour plus d'informations, reportez-vous aux pages de manuel ssh_config(4) et ssh(1).
Les utilisateurs doivent générer une paire de clés publiques ou privées lorsque leur site met en œuvre l'authentification basée sur l'hôte ou l'authentification avec clé publique de l'utilisateur. Pour plus d'options, reportez-vous à la page de manuel ssh-keygen(1).
Avant de commencer
Vérifiez auprès de votre administrateur système si l'authentification basée sur l'hôte est configurée.
myLocalHost% ssh-keygen -t rsa Generating public/private rsa key pair. …
Où -t est le type d'algorithme, rsa, dsa, ou rsa1.
Par défaut, le nom de fichier id_rsa, qui représente une clé RSA v2, s'affiche entre parenthèses. Vous pouvez sélectionner ce fichier en appuyant sur la touche Retour. Ou bien, vous pouvez taper un autre nom de fichier.
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):<Press Return>
Le nom de fichier de la clé publique est créé automatiquement par l'ajout de la chaîne .pub au nom du fichier de clés privées.
Cette phrase de passe est utilisée pour chiffrer votre clé privée. Une entrée nulle est fortement déconseillée. Notez que la phrase de passe ne s'affiche pas lorsque vous la saisissez.
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
Vérifiez que le chemin d'accès au fichier de la clé est correct.
% ls ~/.ssh id_rsa id_rsa.pub
À ce stade, vous avez créé une paire de clés publiques ou privées.
Vous pouvez maintenant vous connecter à l'hôte distant. Pour plus de détails, reportez-vous à la section Connexion à un hôte distant avec Secure Shell .
% 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 %
Saisissez la commande sur une seule ligne, sans barre oblique inverse.
myLocalHost% cat $HOME/.ssh/id_rsa.pub | ssh myRemoteHost \ 'cat >> .ssh/authorized_keys && echo "Key copied"'
Lorsque le fichier est copié, le message "Key copied" (Clé copiée) s'affiche.
Enter password: Type login password Key copied myLocalHost%
Pour connaître la procédure, reportez-vous à la section Réduction des invites de mot de passe dans Secure Shell . Pour plus d'informations, reportez-vous aux pages de manuel ssh-agent(1) et ssh-add(1).
Exemple 19-2 Définition d'une clé RSA v1 pour un utilisateur
Dans l'exemple ci-dessous, l'utilisateur peut contacter les hôtes qui exécutent la version 1 du protocole Secure Shell. Afin d'être authentifié par les hôtes v1, l'utilisateur crée une clé v1 et copie la portion de clé publique sur l'hôte distant.
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"'
La procédure suivante ne change pas la clé privée. La procédure modifie le mécanisme d'authentification pour la clé privée, la phrase de passe. Pour plus d'informations, reportez-vous à la page de manuel ssh-keygen(1).
Tapez la commande ssh-keygen avec l'option -p, et répondez aux invites.
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>
Où -p demande la modification de la phrase de passe d'un fichier de clés privées.
Tapez la commande ssh et spécifiez le nom de l'hôte distant.
myLocalHost% ssh myRemoteHost
Une invite met en doute l'authenticité de l'hôte distant :
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)?
Cette invite est normale pour les connexions initiales sur des hôtes distants.
Are you sure you want to continue connecting(yes/no)? no
L'administrateur est responsable de la mise à jour du fichier /etc/ssh/ssh_known_hosts global. Un fichier ssh_known_hosts mis à jour empêche l'affichage de cette invite.
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%
Les commandes que vous envoyez sont chiffrées. Les réponses que vous recevez sont chiffrées.
Lorsque vous avez terminé, saisissez exit ou utilisez votre méthode habituelle pour quitter votre shell.
myRemoteHost% exit myRemoteHost% logout Connection to myRemoteHost closed myLocalHost%
Si vous ne voulez pas saisir votre phrase de passe et votre mot de passe pour utiliser Secure Shell, vous pouvez utiliser le démon de l'agent. Démarrez ce démon au début de la session. Ensuite, stockez vos clés privées avec le démon de l'agent à l'aide de la commande ssh-add. Si vous avez des comptes différents sur différents hôtes, ajoutez les clés dont vous avez besoin pour la session.
Vous pouvez démarrer le démon de l'agent manuellement lorsque vous en avez besoin, comme décrit dans la procédure suivante. Ou bien, vous pouvez définir le démon de l'agent pour qu'il s'exécute automatiquement au début de chaque session comme décrit dans la section Configuration de la commande ssh-agent pour qu'elle s'exécute automatiquement dans le CDE .
myLocalHost% eval `ssh-agent` Agent pid 9892
myLocalHost% pgrep ssh-agent 9892
Saisissez la commande ssh-add.
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
Vous n'êtes pas invité à saisir une phrase de passe.
Exemple 19-3 Utilisation des options ssh-add
Dans cet exemple, jdoe ajoute deux clés pour le démon de l'agent. L'option -l sert à répertorier toutes les clés stockées dans le démon. À la fin de la session, l'option -D sert à supprimer toutes les clés du démon de l'agent.
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)
Avec le CDE, vous pouvez éviter d'avoir à fournir votre phrase de passe et votre mot de passe à chaque utilisation de Secure Shell en démarrant automatiquement un démon d'agent, ssh-agent. Vous pouvez démarrer le démon de l'agent du script .dtprofile. Pour ajouter la phrase de passe et un mot de passe au démon de l'agent, reportez-vous à l'Exemple 19-3.
Attention - Si vous utilisez Sun Java Desktop System (Java DS), ne configurez pas la commande ssh-agent pour qu'elle s'exécute automatiquement. Étant donné que l'interruption forcée du processus ssh-agent est contrôlée par une interface CDE, lorsque vous quittez le Java DS, le démon continue de s'exécuter. Par exemple, si vous lancez le démon dans une session CDE, passez à une session Java DS, puis déconnectez-vous, le démon continue de s'exécuter. Un démon en cours d'exécution utilise les ressources système. Le fait que le démon ssh-agent continue de s'exécuter ne pose pas de problème en soi, par contre, son mot de passe vous expose à un risque de sécurité. |
Ajoutez les lignes suivantes à la fin du script $HOME/.dtprofile :
if [ "$SSH_AUTH_SOCK" = "" -a -x /usr/bin/ssh-agent ]; then eval `/usr/bin/ssh-agent` fi
Ajoutez les lignes suivantes au script $HOME/.dt/sessions/sessionexit :
if [ "$SSH_AGENT_PID" != "" -a -x /usr/bin/ssh-agent ]; then /usr/bin/ssh-agent -k fi
Cette entrée garantit que personne ne peut utiliser l'agent Secure Shell après la fermeture d'une session CDE. Étant donné que le script utilise une interface spécifique à CDE, sessionexit, cette procédure n'interrompt pas le démon de l'agent dans une session Sun Java Desktop System.
Vous pouvez spécifier qu'un port local est transmis à un hôte distant. En réalité, un socket est alloué pour écouter le port côté local. La connexion sur l'hôte distant à partir de ce port est effectuée par le biais d'un canal sécurisé. Par exemple, vous pouvez spécifier un port 143 afin de recevoir votre courrier à distance avec IMAP4. De la même façon, un port peut être spécifié côté distant.
Avant de commencer
Pour utiliser le transfert de port, l'administrateur doit avoir activé le transfert de port sur le serveur Secure Shell distant. Pour plus de détails, reportez-vous à la section Configuration du transfert de port dans Secure Shell .
Spécifiez le port local à l'écoute de la communication à distance. De même, indiquez l'hôte distant et le port distant qui transfèrent la communication.
myLocalHost% ssh -L localPort:remoteHost:remotePort
Spécifiez le port distant à l'écoute de la communication à distance. De même, indiquez l'hôte local et le port local qui transfèrent la communication.
myLocalHost% ssh -R remotePort:localhost:localPort
Exemple 19-4 Utilisation du transfert de port local pour recevoir du courrier
L'exemple suivant illustre l'utilisation du transfert du port local pour recevoir du courrier en toute sécurité à partir d'un serveur distant.
myLocalHost% ssh -L 9143:myRemoteHost:143 myRemoteHost
Cette commande transmet les connexions à partir du port 9143 sur myLocalHost au port 143. Port 143 est le port du serveur IMAP v2 sur myRemoteHost. Lorsque l'utilisateur lance une application de messagerie, celui-ci doit spécifier le numéro de port local, comme indiqué dans la boîte de dialogue suivante.
Il ne faut pas confondre localhost, dans cette boîte de dialogue, avec myLocalHost. myLocalHost est un nom d'hôte hypothétique. localhost est un mot-clé qui identifie votre système local.
Exemple 19-5 Utilisation du transfert de port distant pour communiquer à l'extérieur d'un pare-feu
Cet exemple montre comment l'utilisateur, dans un environnement d'entreprise, peut transférer vers un hôte à l'intérieur d'un pare-feu d'entreprise des connexions d'un hôte sur un réseau externe.
myLocalHost% ssh -R 9022:myLocalHost:22 myOutsideHost
Cette commande transmet les connexions à partir du port 9022 sur myOutsideHost au port 22, le serveur sshd, sur l'hôte local.
myOutsideHost% ssh -p 9022 localhost myLocalHost%
La procédure suivante décrit la façon dont la commande scp copie les fichiers chiffrés entre les hôtes. Vous pouvez copier les fichiers chiffrés entre un hôte local et un hôte distant, ou entre deux hôtes distants. Cette commande fonctionne de manière similaire à la commande rcp, à l'exception près que scp invite à s'authentifier. Pour plus d'informations, reportez-vous à la page de manuel scp(1).
Vous pouvez également utiliser la commande sftp, une forme plus sécurisée de la commande ftp. Pour plus d'informations, reportez-vous à la page de manuel sftp(1). Voir l'Exemple 19-6.
Spécifier le fichier source, le nom d'utilisateur au niveau de la destination distante et le répertoire de destination.
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
Une fois que vous avez saisi la phrase de passe, un indicateur de progression s'affiche. Reportez-vous à la seconde ligne de la sortie ci-dessus. L'indicateur de progression affiche les données suivantes :
Le nom de fichier
Le pourcentage du fichier qui a été transféré
Une série d'astérisques qui indiquent le pourcentage du fichier qui a été transmis
La quantité de données transférées
L'heure d'arrivée prévue de la totalité du fichier (c'est-à-dire, le temps restant)
Exemple 19-6 Spécification d'un port à l'aide de la commande sftp
Dans cet exemple, l'utilisateur souhaite que la commande sftp utilise un port spécifique. L'utilisateur utilise l'option -o pour spécifier le port.
% sftp -o port=2222 guest@RemoteFileServer
Vous pouvez utiliser Secure Shell pour établir une connexion entre un hôte à l'intérieur d'un pare-feu et un hôte à l'extérieur du pare-feu. Cette tâche s'effectue en spécifiant une commande proxy pour ssh dans un fichier de configuration ou sous forme d'option dans la ligne de commande. Pour l'option de ligne de commande, reportez-vous à l'Exemple 19-7.
En général, vous pouvez personnaliser vos interactions ssh par le biais d'un fichier de configuration.
Vous pouvez personnaliser votre propre fichier personnel dans ~/.ssh/config.
Ou bien, vous pouvez utiliser les paramètres dans le fichier de configuration administrative, /etc/ssh/ssh_config.
Les fichiers peuvent être personnalisés avec deux types de commandes proxy. Une commande proxy sert aux connexions HTTP. L'autre commande proxy sert aux connexions SOCKS5. Pour plus d'informations, reportez-vous à la page de manuel ssh_config(4).
Utilisez la syntaxe suivante pour ajouter autant de lignes qu'il est nécessaire :
[Host outside-host] ProxyCommand proxy-command [-h proxy-server] \ [-p proxy-port] outside-host|%h outside-port|%p
Limite la spécification de la commande proxy aux instances lorsqu'un nom d'hôte distant est spécifié dans la ligne de commande. Si vous utilisez un caractère générique pour outside-host, vous appliquez la spécification de la commande proxy à un ensemble d'hôtes.
Spécifie la commande proxy.
La commande peut avoir l'une des formes suivantes :
/usr/lib/ssh/ssh-http-proxy-connect pour les connexions HTTP
/usr/lib/ssh/ssh-socks5-proxy-connect pour les connexions SOCKS5
Ces options spécifient respectivement un serveur proxy et un port proxy. Si des proxys sont présents, ils remplacent toutes les variables d'environnement qui spécifient les serveurs et ports proxy, tel que HTTPPROXY, HTTPPROXYPORT, SOCKS5_PORT, SOCKS5_SERVER et http_proxy. La variable http_proxy spécifie une adresse URL. Si ces options ne sont pas utilisées, les variables d'environnement doivent être définies. Pour plus d'informations, reportez-vous aux pages de manuel ssh-socks5-proxy-connect(1) et ssh-http-proxy-connect(1).
Désigne un hôte spécifique pour la connexion. Utilisez l'argument de substitution %h pour spécifier l'hôte sur la ligne de commande.
Désigne un port spécifique pour la connexion. Utilisez l'argument de substitution %p pour spécifier le port sur la ligne de commande. En spécifiant %h et %p sans utiliser l'option Host outside-host, la commande proxy est appliquée à l'argument de l'hôte chaque fois que la commande ssh est appelée.
Par exemple, tapez la commande suivante :
myLocalHost% ssh myOutsideHost
Cette commande recherche une spécification de commande proxy pour myOutsideHost dans votre fichier de configuration. Si la spécification est introuvable, la commande recherche dans le fichier de configuration du système, /etc/ssh/ssh_config. La commande proxy remplace la commande ssh.
Exemple 19-7 Connexion à des hôtes en dehors du pare-feu à partir de la ligne de commande
La section Définition des connexions aux hôtes en dehors du pare-feu décrit la procédure de spécification d'une commande proxy dans un fichier de configuration. Dans cet exemple, une commande proxy est spécifiée sur la ligne de commande ssh.
% ssh -o'Proxycommand=/usr/lib/ssh/ssh-http-proxy-connect \ -h myProxyServer -p 8080 myOutsideHost 22' myOutsideHost
L'option -o de la commande ssh fournit une méthode de ligne de commande pour spécifier une commande proxy. Cet exemple de commande effectue les opérations suivantes :
La commande proxy HTTP remplace ssh
Le port 8080 est utilisé et myProxyServer défini en tant que serveur proxy
La connexion a lieu sur le port 22 de myOutsideHost