Troisième vidéo de notre formation « Optimiser ses temps de chargement sur Wordpress » ! On a déjà commandé notre VPS, et on s’est connecté en SSH, mais à ce stade on a encore un petit souci : la connexion n’est sécurisée « que » par mot de passe…
Avant de procéder à l’installation de notre stack LEMP, on va sécuriser tout ça !
Utiliser une authentification par échange de clés
En fait, il existe de nombreux moyens de solidifier la connexion SSH serveur :
- Interdire la connexion de l’utilisateur « root »
- N’autoriser que certaines adresses IP à se connecter
- Utiliser un mot de passe très fort
- Bannir les utilisateurs qui commettent trop d’erreurs pour s’authentifier etc.
Pour un site sur lequel on travaille, c’est un peu pénible de ne pas pouvoir se connecter en root, car on va être amené à travailler sur pas mal de fichiers, et on a justement besoin d’avoir les mains libres pour bosser tranquillement.
Du coup, la connexion root, si elle est nécessaire, demeure toutefois une faille de sécurité potentielle.
NB : En fait, il existe tout un tas d’approche pour sécuriser l’accès SSH à un serveur : changer le port de connexion (mais ici, on perdrait une partie du monitoring chez OVH), créer un autre groupe d’utilisateurs etc. Je vous livre une approche, mais libre à vous de faire plus si vous voulez over-blinder votre machine.
Il existe donc un moyen radical de sécuriser notre connexion : en autorisant uniquement la connexion de l’utilisateur « root » à l’aide d’une clé RSA ! On coupe court à toutes les attaques de type « brute force » (type d’attaque qui utilise toutes les combinaisons possibles pour se connecter).
La clé qu’on va générer, il faut vraiment la voir comme la clé d’une maison : si on ne l’a pas, on ne rentre pas. Donc triple backup, s’il vous plaît, ne la perdez pas !
PS : si jamais vous la perdez quand même, il existe une console d’urgence chez OVH qui permet de retrouver son accès en éditant le fichier de configuration de SSH…
Télécharger Putty
Pour générer notre couple de clés publiques et privées, on va utiliser un logiciel qui s’appelle Putty, et que vous pouvez télécharger en cliquant ici. Une fois le logiciel installé, utilisez l’utilitaire intitulé « Puttygen », dans le dossier créé par l’installateur.
Générer clé privée et clé publique
Cliquez sur le bouton « Generate » et faites des mouvements aléatoires avec votre souris au-dessus de la fenêtre pour générer le chiffrement.
Copiez L’ensemble du texte généré dans la fenêtre du haut, et conservez-le dans un fichier texte que vous appellerez « public-key.txt ». Puis entrer un mot de passe à la ligne « Key passphrase ».
Confirmez-le sur la ligne du dessous. Ce mot de passe, il ne faudra pas le perdre : vous en aurez besoin quand vous voudrez charger votre clé privée. Si jamais vous vous faites voler votre clé privée, sans le mot de passe, elle sera tout simplement inutilisable.
Puis, cliquez sur le bouton « Save private key » et enregistrez la sur votre ordinateur.
Tous ces fichiers doivent être sauvegardés et conservés précieusement, car avec les manips qu’on va faire par la suite, sans clé, pas de connexion possible.
Idéalement, ces fichiers doivent être placés dans un coffre-fort électronique…
Envoyer la clé publique sur votre compte OVH
Maintenant qu’on a la clé publique, on va l’envoyer sur notre compte OVH. Rendez-vous dans la section « mon compte », puis dans la sous-section « mes clés SSH ».
Collez le contenu de votre fichier public-key.txt dans la fenêtre tel que montré ci-dessous, et donnez un nom à votre clé. Attention, pas de caractère accentué ou de caractères spéciaux dans le nom de la clé, sinon, ça va planter.
Votre clé publique est maintenant greffée sur votre compte utilisateur chez OVH.
Réinstaller le serveur en greffant la clé publique
Maintenant, on va réinstaller notre VPS SSD, en greffant la clé publique dessus. En fait, on pourrait greffer la clé directement via SSH, mais c’est chiant et compliqué, donc on la joue grosse feignasse et on laisse un script travail à notre place (non, je n’ai pas honte)…
Rendez-vous dans la section « server » et sélectionnez votre serveur dans la liste des VPS disponibles. Sur la fenêtre qui apparaît, cliquez sur « réinstaller mon VPS », puis choisissez votre système d’exploitation : Ubuntu 18.04 (ou une version plus récente que la 16.04).
On choisit la langue, et on greffe la clé qu’on vient de générer sur la nouvelle installation.
Validez, faites-vous un café, c’est fini ! Quelques minutes plus tard, vous recevez de nouveaux identifiants pour vous connecter à votre machine.
Se connecter à la machine distante
On va maintenant utiliser Putty pour se connecter au serveur. On va utiliser l’adresse IP de la machine comme destination, le nom d’utilisateur « root», et le mot de passe indiqué dans le mail de livraison. Comme dans la vidéo précédente en fait…
Une fois qu’on est connecté, on peut procéder aux mises à jour habituelles :
apt-get install update
apt-get install dist-upgrade
Ensuite, toujours en mode « un peu feignant », on va utiliser WinSCP pour se connecter au gestionnaire de fichiers. Téléchargez WinSCP ici, entrez les mêmes données pour vous connecter à la machine, et vous arrivez à la racine du serveur.
Editer le fichier de configuration sshd
On va éditer le fichier sshd_config afin de restreindre les droits de connexion SSH.
Rendez-vous dans /etc/ssh pour accéder au fichier en question, et ouvrez-le.
Rechercher la ligne qui commence par
[ihc-hide-content ihc_mb_type=“show” ihc_mb_who=“1” ihc_mb_template=“1” ]
PermitRootLogin yes
Puis modifier la en
PermitRootLogin without-password
Ainsi, la connexion root est toujours possible, mais uniquement avec un mode d’authentification qui n’utilise pas de mots de passe (donc avec un échange de clés).
Pour bien faire, on va aussi interdire la connexion avec mot de passe :
Cherchez
PasswordAuthentication yes
Remplacez par
PermitEmptyPasswords no
Enregistrer les modifications (CTRL + S), puis rendez-vous de nouveau sur Putty pour faire :
service sshd restart
[/ihc-hide-content]
Et voilà, c’est fini, désormais vous ne pouvez plus vous connecter avec l’identifiant root sans utiliser la clé. Avant de fermer votre session en cours, je vous invite à ouvrir une autre session de putty en parallèle pour vous assurer que vous pouvez bien vous connecter avec la clé privée (voir section ci-dessous). Si vous ne pouvez pas, vérifiez votre configuration sur le fichier de config.
Charger la clé privée pour se connecter
Du coup, la procédure pour vous connecter désormais est la suivante :
- Double-cliquez sur votre clé privée
- Entrez le mot de passe sur la pop-up qui arrive
- Puis lancez Win SCP, où le client que vous utilisez pour vous connecter au serveur, mais ne mettez pas de mot de passe pour vous authentifier
Sans mots de passe, Pageant va charger directement la clé privée, et procéder à l’échange de clés avec le serveur pour permettre la connexion.
Les attaques de type brute force n’ont maintenant plus aucun sens sur votre serveur, puisque le seul moyen de vous connecter, c’est d’utiliser la clé privée et le mot de passe qui va avec, dont vous êtes le seul propriétaire.
Il existe une console d’urgence dans votre compte OVH, si jamais vous perdez la clé : j’ai testé la procédure indiquée pour me reconnecter il y a quelque mois, et ça fonctionne bien, mais faites des sauvegardes quand même ????
Dans la prochaine vidéo, on procède à l’installation du Stack LEMP qui va nous permettre d’avoir des temps de chargement extrêmes !
Si vous voulez aller plus loin pour sécuriser votre machine, j’ai prévu une petite série sur Fail2Ban, qui sortira prochainement ????