Configuration SSH sécurisé sous Linux

Quoi de mieux pour le redémarrage de YanX.eu que de reprendre le premier tuto qui eût le plus de succès auparavant. Celui concernant la configuration et la sécurisation du SSH sous Linux. Mais nous allons d’abord commencer par un peu d’histoire. Qu’est-ce que SSH ?

SSH (pour Secure SHell) est considéré comme un protocole de communication sécurisé. Il a pour vocation de remplacer d’anciens protocoles (tel que Telnet) qui n’étaient pas du tout sécurisé.

On utilise donc SSH dans le cas où nous souhaitons communiquer avec une machine distante (un serveur, un switch, un ordinateur classique, …). La communication se fait au travers d’un terminal qui nous permet de réaliser des opérations comme si nous étions physiquement sur la machine. Mais voyons à présent comment peut-on configurer cela sur un serveur Linux (Debian dans le cadre de ce tutoriel).

La première chose à faire pour disposer de SSH sur notre serveur, c’est d’installer le package « ssh« .

> # apt-get install ssh

Une fois le paquet installé, il n’y a normalement rien d’autre à faire pour pouvoir déjà bénéficier d’un accès SSH sur votre serveur. Il vous suffira d’avoir un client « PuTTy« , d’entrer l’adresse de votre serveur, vous connecter, accepter le fingerprint (une seule fois) puis vous connecter avec les identifiants de root.

Mais ce n’est pas le but de ce tutoriel. Nous allons voir comment mettre en place une sécurité à l’aide de certificats. Ceci nous permettant d’avoir un haut niveau de sécurité pour l’authentification sur le serveur. Ouvrez tout de même PuTTy et connectez-vous sur le serveur afin de configurer celui-ci. C’est plus facile ;-).

Pour pouvoir faire cela, vous aurez besoin du logiciel « PuTTyGen » (que vous pouvez trouver ICI).

Téléchargez le .exe puis démarrez-le. La seule chose à faire à présent est de générer un certificat (en effet, tous les paramètres sont déjà bien pré-réglés pour l’utilisation que nous allons en faire). Cliquez donc sur « Generate » puis faites des mouvements de souris dans le cadre blan de PuTTyGen. Une clé va alors se générer.

Une fois la clé générée, vous verrez une série de cadre apparaître contenant des chiffres et des lettres. La première chose à faire est de sauvegarder les clés privées et publiques sur votre disque dur. Pour cela, cliquez sur « Save public key » et puis « Save private key » en prenant chaque fois le soin de lui donner un nom approprié sur votre disque. NB : Si vous sauvez la clé privée, on va vous demander si vous êtes sur de sauvegarder cette clé sans « passphrase« . En fait, ce passphrase vous permet de protéger votre clé en cas de perte du fichier .ppk. Mais contraignant car vous force à utiliser un mot de passe à chaque connexion.

Ne fermez pas encore PuTTyGen, nous allons encore en avoir besoin pour copier la clé publique et la coller dans une fichier sur notre serveur.

Pour sécuriser l’accès SSH pour l’utilisateur root (par exemple), il va nous falloir créer un fichier « authorized_keys » dans son répertoire personnel. Commençons par créer un répertoire caché qui contiendra ce fichier.

> # mkdir /root/.ssh

Puis, nous allons créer et compléter le fichier authorized_keys dans ce répertoire.

> # touch /root/.ssh/authorized_keys
> # chmod 600 /root/.ssh/authorized_keys
> # nano /root/.ssh/authorized_keys

Une fois dans ce fichier, copier complètement la clé publique (dans le premier cadre sur PuTTyGen) et coller là dans ce nouveau fichier (avec PuTTy, il suffit de faire un clic-droit dans le fenêtre pour coller le texte précédemment copié).

Sauvegardez ce fichier. Nous allons à présent nous occuper du fichier de configuration SSH.

> # nano /etc/ssh/sshd_config

Décommentez la ligne « AuthorizedKeysFile %h/.ssh/authorized_keys » ainsi que « PasswordAuthentication no« . PasswordAuthentication ne vous permettra plus d’entrer un login/mot de passe mais bien d’utiliser un autre moyen d’authentification (dans notre cas, un certificat).

Sauvegardez et relancer le service SSH.

> # /etc/init.d/ssh restart

Ouvrez ensuite PuTTy. Dans « Host Name », mettez l’adresse de votre serveur. Puis, dans l’arborescence de gauche, choisissez SSH puis Auth. Tout en bas, dans « Private key file for authentication », aller rechercher votre clé privée (.ppk) sauvez au préalable depuis PuTTyGen.

Ouvrez alors la connexion. Entrez le login de l’utilisateur pour lequel vous avez généré cette clé privée (dans notre exemple, c’est root). Vous devriez alors vous connecter sans devoir entrer de mot de passe avec un message du genre : « Authenticating with public key « rsa-key-XXXXXXXX » »

Votre connexion fonctionne. Notez donc bien qu’il est possible de faire cette opération pour tous les utilisateurs. En effet, nous avons créer le fichier authorized_keys dans le répertoire /root/.ssh car si vous vous souvenez, dans le fichier de configuration de ssh, nous avons la ligne « AuthorizedKeysFile %h/.ssh/authorized_keys« . Cela signifie que pour aller trouver le fichier authorized_keys, il doit aller chercher dans « %h » (qui est le « home » de l’utilisateur qui tente de se connecter) puis .ssh (un dossier caché que nous créons manuellement puis dans le fichier authorized_keys (que nous garnissons avec la clé publique générée dans PuTTyGen.

Facile, non ? :-). Laissez un commentaire si vous n’y arrivez vraiment pas.

A la prochaine pour un nouveau tuto.