10.2. Configuration d'OpenSSH

10.2.1. Fichiers de configuration

Il y a deux groupes de fichiers de configuration : pour les programmes clients (c-a-d ssh, scp, et sftp), et pour les serveurs (le démon sshd).
Les informations de configuration de SSH à l'échelle du système sont stockées dans le répertoire /etc/ssh/ comme décrit dans Tableau 10.1, « Fichiers de configuration du système dans son ensemble ». Les informations de configuration spécifiques à l'utilisateur SSH sont stockées dans ~/.ssh/ dans le répertoire d'accueil de l'utilisateur, comme décrit dans Tableau 10.2, « Fichiers de configuration spécifiques à l'utilisateur ».

Tableau 10.1. Fichiers de configuration du système dans son ensemble

FichierDescription
/etc/ssh/moduliContient les groupes Diffie-Hellman utilisés pour l'échange de clés Diffie-Hellman, ce qui est essentiel pour la création d'une couche de transport sécurisé. Lorsque les clés sont échangées au début d'une session SSH, une valeur partagée, secrète est alors créée ne pouvant être déterminée par l'une des parties seule. Cette valeur est ensuite utilisée pour fournir une authentification de l'hôte.
/etc/ssh/ssh_configLe fichier de configuration du client SSH par défaut. Notez qu'il sera remplacé par ~/.ssh/config si ce fichier existe.
/etc/ssh/sshd_configLe fichier de configuration du démon sshd.
/etc/ssh/ssh_host_ecdsa_keyLa clé ECDSA privée utilisée par le démon sshd.
/etc/ssh/ssh_host_ecdsa_key.pubLa clé ECDSA publique utilisée par le démon sshd.
/etc/ssh/ssh_host_keyLa clé privée RSA utilisée par le démon sshd pour la version 1 du protocole SSH.
/etc/ssh/ssh_host_key.pubLa clé publique RSA utilisée par le démon sshd pour la version 1 du protocole SSH.
/etc/ssh/ssh_host_rsa_keyLa clé privée RSA utilisée par le démon sshd pour la version 2 du protocole SSH.
/etc/ssh/ssh_host_rsa_key.pubLa clé publique RSA utilisée par le démon sshd pour la version 2 du protocole SSH.
/etc/pam.d/sshdLe fichier de configuration AM du démon sshd.
/etc/sysconfig/sshdFichier de configuration du service sshd.

Tableau 10.2. Fichiers de configuration spécifiques à l'utilisateur

FichierDescription
~/.ssh/authorized_keysContient une liste des clés publiques autorisées pour les serveurs. Quand le client se connecte à un serveur, le serveur authentifie le client en vérifiant sa clé publique stockée dans ce fichier.
~/.ssh/id_ecdsaContient la clé privée ECDSA de l'utilisateur
~/.ssh/id_ecdsa.pubLe clé publique de l'utilisateur.
~/.ssh/id_rsaLa clé privée RSA utilisée par ssh pour la version 2 du protocole SSH.
~/.ssh/id_rsa.pubLa clé publique RSA utilisée par ssh pour la version 2 du protocole SSH.
~/.ssh/identityLa clé privée RSA utilisée par ssh pour la version 1 du protocole SSH.
~/.ssh/identity.pubLa clé publique RSA utilisée par ssh pour la version 1 du protocole SSH.
~/.ssh/known_hostsContient les clés hôtes des serveurs SSH auquels l'utilisateur a accès. Ce fichier est important pour s'assurer que le client SSH est connecté au bon serveur SSH.
Pour obtenir des informations sur les différentes directives qui peuvent être utilisées par les fichiers de configuration SSH, voir les pages man ssh_config(5) et sshd_config(5).

10.2.2. Démarrage d'un serveur OpenSSH

Pour pouvoir exécuter un serveur OpenSSH, vous devez avoir le paquet openssh-server installé. Pour obtenir plus d'informations sur la façon d'installer des nouveaux paquets, voir Section 8.2.4, « Installation de paquets ».
Pour démarrer le démon sshd dans la session actuelle, veuillez saisir ce qui suit dans l'invite de shell en tant qu'utilisateur root :
~]# systemctl start sshd.service
Pour stopper le démon sshd dans la session actuelle, veuillez saisir ce qui suit dans l'invite de shell en tant qu'utilisateur root :
~]# systemctl stop sshd.service
Si vous souhaitez que le démon démarre automatiquement, saisir en tant qu'utilisateur root:
~]# systemctl enable sshd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.
Le démon sshd dépend de l’unité cible network.target, ce qui suffit pour les interfaces réseau configuré statique et pour les options par défaut ListenAddress 0.0.0.0. Pour spécifier des adresses différentes dans la directive ListenAddress et utiliser une configuration de réseau dynamique plus lente, ajouter la dépendance sur l’unité cible de network-online.target dans le fichier d'unité de sshd.service. Pour ce faire, créez le fichier /etc/systemd/system/sshd.service.d/local.conf avec les options suivantes :
  [Unit]
  Wants=network-online.target
  After=network-online.target
Ensuite, charger à nouveau la configuration du gestionnaire systemd par la commande suivante :
~]# systemctl daemon-reload
Pour obtenir davantage d'informations sur la manière de gérer les services système sur Red Hat Enterprise Linux 7, veuillez consulter le Chapitre 9, Gérer les services avec systemd.
Notez que si vous réinstallez le système, un nouvel ensemble de clés d'identification sera créé. Ainsi, les clients qui étaient connectés au système avec les outils d'OpenSSH avant la réinstallation verront le message suivant s'afficher :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
Pour éviter cela, vous pouvez sauvegarder les fichiers qui conviennent à partir du répertoire /etc/ssh/. Voir Tableau 10.1, « Fichiers de configuration du système dans son ensemble » pour une liste complète, et restaurez les fichiers à chaque fois que vous réinstallez le système.

10.2.3. Utilisation nécessaire de SSH pour les connexions à distance

Pour que SSH soit vraiment efficace, les protocoles de connexions non sécurisées sont à proscrire. Sinon, un mot de passe d'utilisateur peut-être protégé par SSH pour une seule session, et ne sera capturé que plus tard avec Telnet. Certains services à désactiver sont telnet, rsh, rlogin et vsftpd.
Pour obtenir davantage d'informations sur la manière de configurer le service vsftpd, voir Section 14.2, « FTP ». Pour savoir comment gérer les services système, consulter Chapitre 9, Gérer les services avec systemd.

10.2.4. Authentification basée clés

Pour améliorer encore davantage la sécurité système, créer des paires de clés SSH et puis exécuter l'authentification basée clés en désactivant l'authentification de mot de passe. Pour ce faire, ouvrez le fichier /etc/ssh/sshd_config dans un éditeur de texte comme vi ou nano et modifiez l'option PasswordAuthentication comme suit :
PasswordAuthentication no
Si vous travaillez sur un système différent de celui de la nouvelle installation par défaut, vérifiez que PubkeyAuthentication no n'ait pas été défini. Si connecté à distance, ne pas utiliser l'accès console ou out-of-band, il est conseillé de tester le processus de journalisation basé clé avant de désactiver l'authentification de mot de passe.
Pour pouvoir utiliser ssh, scp, ou sftp pour se connecter au serveur à partir d'une machine client, créer une paire de clé d'autorisation en suivant les étapes suivantes. Notez que les clés doivent être créées séparemment pour chaque utilisateur.
Red Hat Enterprise Linux 7 utilise SSH Protocol 2 et les clés RSA par défaut (voir Section 10.1.3, « Versions de protocole » pour plus d'informations).

Important

Si vous complétez les étapes en tant qu'utilisateur root, seul root pourra utiliser les clés.

Note

Si vous réinstallez votre système et que vous souhaitez garder des paires de clés générées auparavant, sauvegarder le répertoire ~/.ssh/. Après avoir réinstallé, recopiez-le sur votre répertoire personnel. Ce processus peut être fait pour tous les utilisateurs sur votre système, y compris l'utilisateur root.

10.2.4.1. Création de paires de clés

Suivez les étapes indiquées ci-dessous afin de créer une paire de clés DSA pour la version 2 du protocole SSH.
  1. La mise à jour d'un paquet est semblable à son installation. Saisir la commande suivante à l'invite du shell :
    ~]$ ssh-keygen -t rsa
    Création de la paire de clés publique/privée.
    Saisir le fichier dans lequel sauvegarder la clé (/home/USER/.ssh/id_rsa):
  2. Appuyer sur la touche Entrée pour confirmer le chemin d'accès par défaut , ~/.ssh/id_rsa, pour la clé nouvellement créée.
  3. Saisissez une phrase de passe, et confirmez-là en la saisissant à nouveau quand on vous le demande. Pour des raisons de sécurité, évitez d'utiliser le même mot de passe que celui que vous aurez utilisé quand vous vous êtes connecté à votre compte.
    Après cela, vous verrez un message semblable à celui-ci :
    Your identification has been saved in /home/USER/.ssh/id_rsa.
    Your public key has been saved in /home/USER/.ssh/id_rsa.pub.
    The key fingerprint is:
    e7:97:c7:e2:0e:f9:0e:fc:c4:d7:cb:e5:31:11:92:14 USER@penguin.example.com
    The key's randomart image is:
    +--[ RSA 2048]----+
    |             E.  |
    |            . .  |
    |             o . |
    |              . .|
    |        S .    . |
    |         + o o ..|
    |          * * +oo|
    |           O +..=|
    |           o*  o.|
    +-----------------+
  4. Par défaut, les permissions du répertoire ~/.ssh/ sont définies à rwx------ ou 700 exprimées en notation octale. Ceci est pour s'assurer que l'utilisateur USER puisse voir les contenus. Si cela est nécessaire, on peut le confirmer par la commande suivante :
    ~]$ ls -ld ~/.ssh
    drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/
  5. Pour copier une clé publique dans une machine distante, lancer la commande dans le format suivant :
     ssh-copy-id user@hostname
    Cela aura pour effet de copier la clé publique ~/.ssh/id*.pub qui a été modifiée le plus récemment si elle n'a pas encore été installée. Sinon, indiquer le nom du fichier de clés publiques comme suit :
    ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname
    Cela aura pour effet de copier le contenu de ~/.ssh/id_rsa.pub dans le fichier ~/.ssh/authorized_keys de la machine sur laquelle vous souhaitez vous connecter. Si le fichier existe déjà, les clés y seront ajoutées.
Suivez les étapes indiquées ci-dessous afin de créer une paire de clés ECDSA pour la version 2 du protocole SSH :
  1. Pour créer une paire de clés ECDSA, saisir la commande suivante à l'invite du shell :
    ~]$ ssh-keygen -t ecdsa
    Créer une paire de clés publique/privée ecdsa.
    Saisir le fichier dans lequel vous souhaitez sauvegarder la clé (/home/USER/.ssh/id_ecdsa):
  2. Appuyer sur la touche Entrée pour confirmer le chemin d'accès par défaut , ~/.ssh/id_ecdsa, pour la clé nouvellement créée.
  3. Saisissez une phrase de passe, et confirmez-là en la saisissant à nouveau quand on vous le demande. Pour des raisons de sécurité, évitez d'utiliser le même mot de passe que celui que vous aurez utilisé quand vous vous êtes connecté à votre compte.
    Après cela, vous verrez un message semblable à celui-ci :
    Votre identification a été sauvegardée dans /home/USER/.ssh/id_ecdsa.
    Votre clé publique a été sauvegardée dans /home/USER/.ssh/id_ecdsa.pub.
    L'empreinte de la clé est :
    fd:1d:ca:10:52:96:21:43:7e:bd:4c:fc:5b:35:6b:63 USER@penguin.example.com
    L'image randomart de la clé est :
    +--[ECDSA  256]---+
    |       .+ +o     |
    |       . =.o     |
    |        o o +  ..|
    |         + + o  +|
    |        S o o oE.|
    |           + oo+.|
    |            + o  |
    |                 |
    |                 |
    +-----------------+
  4. Par défaut, les permissions du répertoire ~/.ssh/ sont définies à rwx------ ou 700 exprimées en notation octale. Ceci est pour s'assurer que l'utilisateur USER puisse voir les contenus. Si cela est nécessaire, on peut le confirmer par la commande suivante :
    ~]$ ls -ld ~/.ssh
                  ~]$ ls -ld ~/.ssh/
    drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/
  5. Pour copier une clé publique dans une machine distante, lancer la commande sous le format suivant :
     ssh-copy-id USER@hostname
    Cela aura pour effet de copier la clé publique ~/.ssh/id*.pub qui a été modifiée le plus récemment si elle n'a pas encore été installée. Sinon, indiquer le nom du fichier de clés publiques comme suit :
    ssh-copy-id -i ~/.ssh/id_ecdsa.pub USER@hostname
    Cela aura pour effet de copier le contenu de ~/.ssh/id_ecdsa.pub dans le fichier ~/.ssh/authorized_keys de la machine sur laquelle vous souhaitez vous connecter. Si le fichier existe déjà, les clés y seront ajoutées.
Voir Section 10.2.4.2, « Configurer les partages Samba  » pour obtenir des informations sur la façon d'installer votre système afin qu'il se souvienne de la phrase de passe.

Important

La clé privée est à but d'utilisation personelle uniquement, et il est important que vous ne la donniez à personne.

10.2.4.2. Configurer les partages Samba

Pour stocker votre mot de passe afin que vous n'ayiez pas à le saisir à chaque fois que vous vous connectez avec une machine distante, vous pouvez utiliser l'agent d'authentification ssh-agent. Si vous utilisez GNOME, vous pouvez la configurer pour qu'elle vous demande votre mot de passe chaque fois que vous ouvrez une session et pour qu'elle s'en souvienne tout au cours de la session. Sinon, vous pouvez stocker la phrase de passe pour une invite du shell en particulier.
Pour sauvegarder votre phrase de passe pendant votre session GNOME, suivez les étapes suivantes :
  1. Assurez-vous de bien avoir le paquet openssh-askpass installé. Sinon, voir Section 8.2.4, « Installation de paquets » pour obtenir plus d'informations sur la façon d'installer de nouveaux paquets dans Red Hat Enterprise Linux.
  2. Appuyez sur la touche Super pour entrer dans la vue d'ensemble des activités, tapez Startup Applications et appuyez sur Entrée. L'outil Startup Applications Preferences s'affiche. L'onglet contenant une liste de programmes de démarrage disponibles s'affichera par défaut. La touche Super apparait dans une variété de formes, selon le clavier et autre matériel, mais souvent en tant que touche Commande ou Windows, généralement à gauche de la barre d'espace.
    Préférences des applications au démarrage

    Figure 10.1. Préférences des applications au démarrage

  3. Cliquer sur le bouton Add à droite, et saisir /usr/bin/ssh-add dans le champ Command.
    Ajouter une nouvelle application

    Figure 10.2. Ajouter une nouvelle application

  4. Cliquer sur Add et vérifiez que la case qui se trouve à côté de l'élément qui vient d'être ajouté est sélectionnée.
    Activer l'application

    Figure 10.3. Activer l'application

  5. Déconnecter et reconnecter. Une boîte de dialogue apparaîtra pour vous demander de mettre votre phrase de passe. À partir de ce moment, vous ne devriez pas être sollicité de donner un mot de passe par les commandes ssh, scp, ou sftp.
    Saisir une phrase de passe

    Figure 10.4. Saisir une phrase de passe

Afin de sauvegarder votre phrase de passe pour une certaine invite de shell, utilisez la commande suivante :
~]$ ssh-add
Saisir la phrase de passe pour /home/USER/.ssh/id_rsa :
Notez que lorsque vous vous déconnectez, votre phrase de passe sera oubliée. Vous devez exécuter la commande chaque fois que vous vous connectez à une console virtuelle ou à une fenêtre de terminal.