Ignorer les liens de navigation | |
Quitter l'aperu | |
Administration d'Oracle Solaris 11.1 : Services de sécurité Oracle Solaris 11.1 Information Library (Français) |
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. Service d'analyse antivirus (tâches)
5. Contrôle de l'accès aux périphériques (tâches)
6. Vérification de l'intégrité des fichiers à l'aide de BART (tâches)
7. Contrôle de l'accès aux fichiers (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. Attributs de sécurité dans Oracle Solaris (référence)
Partie IV Services cryptographiques
11. Structure cryptographique (présentation)
12. Structure cryptographique (tâches)
13. Structure de gestion des clés
Partie V Services d'authentification et communication sécurisée
14. Utilisation de modules d'authentification enfichables
15. Utilisation de Secure Shell
Secure Shell dans l'entreprise
Secure Shell et le projet OpenSSH
Configuration de Secure Shell (tâches)
Configuration de Secure Shell (liste des tâches)
Configuration de l'authentification basée sur l'hôte pour Secure Shell
Configuration du transfert de port dans Secure Shell
Création d'exceptions d'utilisateur et d'hôte aux valeurs par défaut de Secure Shell
Création d'un répertoire isolé pour les fichiers sftp
Utilisation de Secure Shell (tâches)
Utilisation de Secure Shell (liste des 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
Administration à distance de ZFS à l'aide de Secure Shell
Utilisation du transfert de port dans Secure Shell
Copie de fichiers avec Secure Shell
Configuration des connexions Secure Shell par défaut sur les hôtes situés en dehors d'un pare-feu
17. Utilisation de l'authentification simple et de la couche de sécurité
18. Authentification des services réseau (tâches)
19. Introduction au service Kerberos
20. Planification du service Kerberos
21. Configuration du service Kerberos (tâches)
22. Messages d'erreur et dépannage de Kerberos
23. Administration des principaux et des stratégies Kerberos (tâches)
24. Utilisation des applications Kerberos (tâches)
25. Service Kerberos (référence)
Partie VII Audit dans Oracle Solaris
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).
La liste des tâches suivante présente les procédures d'utilisation de Secure Shell.
|
Les utilisateurs doivent générer une paire de clés publiques ou privées lorsque leur site met en oeuvre 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
A 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).
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 et votre identifiant de connexion.
myLocalHost% ssh myRemoteHost -l username
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: Wed Sep 7 09:07:49 2011 from myLocalHost Oracle Corporation SunOS 5.11 September 2011 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%
Exemple 15-2 Affichage d'une interface graphique distante dans Secure Shell
Dans cet exemple, jdoe est l'utilisateur initial sur les deux systèmes et se voit donc affecter le profil de droits Software Installation (installation de logiciels). jdoe souhaite utiliser l'interface graphique du gestionnaire de packages sur le système distant. La valeur par défaut du mot-clé X11Forwarding est toujours yes et le package xauth est installé sur le système distant.
% ssh -l jdoe -X myRemoteHost jdoe@myRemoteHost's password: <Type password> Last login: Wed Sep 7 09:07:49 2011 from myLocalHost Oracle Corporation SunOS 5.11 September 2011 myRemoteHost% packagemanager &
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.
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 -l jdoe
Vous n'êtes pas invité à saisir une phrase de passe.
Exemple 15-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. A 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)
Par défaut, le rôle root ne peut se connecter à distance à l'aide de Secure Shell. Auparavant, root utilisait Secure Shell pour des tâches importantes, telles que l'envoi de données de pool ZFS sur un stockage situé sur un système distant. Dans cette procédure, le rôle root crée un utilisateur qui peut agir en tant qu'administrateur ZFS distant.
Avant de commencer
Vous devez prendre le rôle root. Pour plus d'informations, reportez-vous à la section Utilisation de vos droits d'administration.
Par exemple, créez l'utilisateur zfsroot et fournissez un mot de passe.
source # useradd -c "Remote ZFS Administrator" -u 1201 -d /home/zfsroot zfsroot source # passwd zfsroot Enter password: Retype password: #
dest # useradd -c "Remote ZFS Administrator" -u 1201 -d /home/zfsroot zfsroot dest # passwd zfsroot ...
L'utilisateur zfsroot doit être défini de manière identique sur les deux systèmes.
La paire de clé est créée sur le système source. Ensuite, la clé publique est copiée sur l'utilisateur zfsroot sur le système de destination.
# ssh-keygen -t rsa -P "" -f ~/id_migrate Generating public/private rsa key pair. Your identification has been saved in /root/id_migrate. Your public key has been saved in /root/id_migrate.pub. The key fingerprint is: 3c:7f:40:ef:ec:63:95:b9:23:a2:72:d5:ea:d1:61:f0 root@source
# scp ~/id_migrate.pub zfsroot@dest: The authenticity of host 'dest (10.134.76.126)' can't be established. RSA key fingerprint is 44:37:ab:4e:b7:2f:2f:b8:5f:98:9d:e9:ed:6d:46:80. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'dest,10.134.76.126' (RSA) to the list of known hosts. Password: id_migrate.pub 100% |*****************************| 399 00:00
source # usermod -P +'ZFS File System Management' -S files zfsroot dest # usermod -P +'ZFS File System Management' -S files zfsroot
dest # profiles zfsroot zfsroot: ZFS File System Management Basic Solaris User All
root@dest # su - zfsroot Oracle Corporation SunOS 5.11 11.1 May 2012 zfsroot@dest $ mkdir -m 700 .ssh zfsroot@dest $ cat id_migrate.pub >> .ssh/authorized_keys
root@source# ssh -l zfsroot -i ~/id_migrate dest \ pfexec /usr/sbin/zfs snapshot zones@test root@source# ssh -l zfsroot -i ~/id_migrate dest \ pfexec /usr/sbin/zfs destroy zones@test
root@source# zfs snapshot -r rpool/zones@migrate-all root@source# zfs send -rc rpool/zones@migrate-all | \ ssh -l zfsroot -i ~/id_migrate dest pfexec /usr/sbin/zfs recv -F zones
root@dest# usermod -P -'ZFS File System Management' zfsroot root@dest# su - zfsroot zfsroot@dest# cp .ssh/authorized_keys .ssh/authorized_keys.bak zfsroot@dest# grep -v root@source .ssh/authorized_keys.bak> .ssh/authorized_keys
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 15-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 pour le serveur IMAP, comme dans localhost:9143.
Il ne faut pas confondre localhost avec myLocalHost. myLocalHost est un nom d'hôte hypothétique. localhost est un mot-clé qui identifie votre système local.
Exemple 15-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. La commande scp invite à s'authentifier. Pour plus d'informations, reportez-vous à la page de manuel scp(1).
Vous pouvez également utiliser le programme de transfert de fichiers sécurisé sftp. Pour plus d'informations, reportez-vous à la page de manuel sftp(1). Pour un exemple, reportez-vous à l'Exemple 15-6.
Remarque - Le service d'audit permet d'auditer les transactions sftp via la classe d'audit ft. Pour scp, le service d'audit peut auditer l'accès et la sortie pour la session ssh.
Spécifiez 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 15-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 15-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 15-7 Connexion à des hôtes en dehors du pare-feu à partir de la ligne de commande Secure Shell
La section Configuration des connexions Secure Shell par défaut sur les hôtes situés en dehors d'un pare-feu explique comment spécifier 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