Protéger votre serveur Linux contre les attaques de mots de passe

Gazette Linux n°182 — janvier 2011

Eric Gérard

Adaptation française  

Gaël Montreuil

Relecture de la version française  

Article paru dans le n°182 de la Gazette Linux de janvier 2011.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

À propos de l'auteur

Lisez le fichier /var/log/secure d'un serveur Linux/UNIX connecté à Internet et vous allez immédiatement comprendre la nécessité de sécuriser votre compte root. Les pirates utilisent constamment « root » ou d'autres noms d'utilisateurs, pour essayer de se connecter à votre serveur en utilisant SSH ou d'autres protocoles. Si vous utilisez un mot de passe simple, il ne faudra pas longtemps avant que votre serveur ne soit compromis par une attaque de mot de passe. Que pouvez-vous y faire?

La meilleure pratique est d'interdire la connexion SSH sur root, éliminant ainsi une grande part de risque.

Le problème est, qu'en agissant ainsi, vous privez les administrateurs système d'une grande souplesse et compliquez l'usage d'outils comme WinSCP utilisés pour la copie de fichiers entre votre ordinateur fixe ou portable Windows et votre serveur Linux/UNIX.

Une solution simple consiste à utiliser une paire de clés privée/publique pour l'authentification. La clé publique est enregistrée sur le serveur Linux/UNIX et la clé privée enregistrée sur votre PC Windows. Quand vous lancez la connexion à votre serveur Linux/UNIX depuis votre PC Windows, l'authentification est réalisée avec la paire de clés au lieu du mot de passe. L'authentification par mot de passe ayant été désactivée pour le compte root, toute tentative de login par mot de passe échouera pour vous identifier.

Voici la façon de procéder:

  1. Commencez par télécharger l'installeur Windows de PuTTY depuis http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe. Lancez l'installation sur votre PC local Windows.

  2. Ensuite, vous devez générer la paire de clés. L'installeur Windows PuTTY, que vous avez lancé, a installé l'application appelée PuTTYgen que vous pouvez utiliser pour générer la paire de clés. L'installeur a vraisemblablement placé PuTTYgen (ainsi que les autres applications PuTTY) dans Démarrer>>Tous les programmes>>PuTTY.

  3. Quand vous lancez PuTTYgen la première fois, vous devez générer une nouvelle paire de clés. Dans le bas de la fenêtre PuTTYgen, vous avez le choix entre trois paramètres : SSH-1 (RSA), SSH-2 RSA, et SSH-2 DSA. SSH-2 RSA est présélectionné avec une longueur de clé de 1024 bits par défaut. Plus la clé est longue et meilleure est la sécurité, mais cela demande plus de puissance de calcul. Une longueur de clé de 1024 bits est un compromis acceptable actuellement (fin 2010), mais ne sera plus acceptable dans le futur du fait des l'augmentation des puissances de calcul.

  4. Cliquez sur le bouton Generate pour lancer le calcul de vos clés publique et privée. (Vous devez bouger votre pointeur de souris au-dessus de la zone blanche en haut de la fenêtre pour augmenter le caractère aléatoire de la clé. Bougez votre pointeur de souris en cercle au-dessus de la zone blanche jusqu'à ce que la barre d'avancement atteigne la bordure droite pendant que PuTTYgen génère la clé.)

  5. Vous devez ensuite sauvegarder votre clé privée sur votre PC fixe ou portable et copier la clé publique sur votre serveur Linux/UNIX.

  6. Entrez et confirmez un mot de passe pour protéger votre clé privée dans les deux champs réservés à cet effet dans l'application PuTTYgen.

  7. Cliquez sur le bouton Save private key et choisissez un emplacement sur votre disque dur local pour sauver votre clé privée. (Protégez votre clé privée en l'enregistrant dans un endroit sûr!). Personnellemnt, je sauve ma clé publique dans un fichier texte pour en faciliter une future utilisation.

  8. Copiez le charabia de la clé publique (en haut de la fenêtre PuTTYgen) et collez le dans le fichier /root/.ssh/authorized_keys situé sur votre serveur. (pour ce faire, vous devez avoir préalablement créé le répertoire .ssh ainsi que probablement le fichier authorized_keys. Notez que le répertoire .ssh est un répertoire caché car son nom débute par un point). Si vous avez sauvé votre clé publique dans un fichier texte comme décrit précédemment, il vous suffit simplement de copier le contenu de ce fichier dans le fichier /root/.ssh/authorized_keys.

  9. Sur votre serveur Linux/UNIX, éditez le fichier /etc/ssh/sshd_config pour vous assurer que l'authentification RSA et les authentifications à l'aide de clé publique sont toutes deux autorisées en modifiant trois lignes dans le fichier sshd_config. Suivant le système installé sur le serveur, vous devrez changer « no » en « yes » ou bien dé-commenter les lignes pour autoriser l'authentication. Assurez vous également que le chemin du fichier authorized_keys est défini comme suit « %h/.ssh/authorized_keys » et dé-commentez la ligne. Ces lignes se situent approximativement ligne 43 sur une distribution RedHat et ligne 29 sur Debian.) Lorque vous avez terminé, ces lignes doivent ressembler à ceci:

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile %h/.ssh/authorized_keys

  10. Pour valider ces changements, vous devez redémarrer SSHD:

  11. Si vous tentez maintenant de vous connecter en tant que root avec le mot de passe de root la connexion doit échouer:

  12. Vous devez ensuite configurer PuTTY pour qu'il utilise la paire de clés publique/privée pour effectuer l'authentification. Lancez PuTTY, puis dans l'arbre situé à gauche, développez la clé SSH et sélectionnez Auth. Dans la partie droite de la fenêtre, naviguez jusqu'à l'endroit où vous avez enregistré votre clé privée ou bien simplement l'insérer dans le champ Private key file for authentication:.

    Ensuite, dans le menu de gauche, sélectionnez Session (en haut de la liste). Dans la fenêtre de droite, entrez l'adresse IP ou le nom de domaine de votre serveur Linux/UNIX puis cliquez sur le bouton marqué Open.

  13. Lorsque PuTTY se connecte au serveur, entrez « root » comme nom d'utilisateur. Le programme va alors demander le mot de passe que vous avez renseigné lors de la création de la clé privée. Entrez ce mot de passe et vous devriez vous retrouver connecté au serveur en tant que root.

L'intérêt de cette méthode est qu'il est pratiquement impossible pour un pirate de se connecter à votre serveur sur le compte root en attaquant le mot de passe. Pour qu'un pirate puisse se connecter en tant que root, il devra disposer de votre clé privée et connaitre le mot de passe associé.

À propos de l'auteur

Don R. Crawley est l'auteur de « The Accidental Administrator: Linux Server Step-by-Step Configuration Guide » et le Président de http://soundtraining.net , une compagnie de formation IT basée à Seattle. C'est un vétéran IT, avec plus de 35 années d'expérience en technologie adaptée au lieu de travail, qui détient de multiples certifications Microsoft, Cisco, et produits Linux. Don peut être joint par téléphone au (206) 988-5858 ou par mail à l'adresse don CHEZ soundtraining POINT net .

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.