Sécuriser son Kimsufi Web avec SFTP et Let's Encrypt

tbowan

1er juillet 2019

Une fois son hébergement web activé, il est utile de configurer certains paramètres incontournables liés à la sécurité de votre site : SFTP pour vos transferts de fichiers et TLS pour vos visiteurs.

Depuis notre panne d'internet, nous sommes passé sur un hébergement extra-muros chez OVH et nous avons donc du configurer quelques réglages pour augmenter la sécurité de l'accès au site.

Activer le SFTP

Nous commençons donc par sécuriser le transfert des fichiers entre nous et le serveur.

Pour ça, nous allons dans le menu FTP - SSH. En bas de cet écran, on trouve un tableau avec les comptes disponibles et leurs caractéristiques, la colonne SFTP, comme son nom l'indique, permettant d'activer le chiffrement des connexions pour le transfert des fichiers.

Petit piège, le texte ne dit pas ce qu'il se passe lorsqu'on coche la case mais l'état dans lequel se trouve la configuration. À votre première visite, la case n'est pas cochée et le texte indique Désactivé.

SFTP Désactivé

SFTP Désactivé

Pour activer SFTP, il suffit donc de cocher la case, le texte change alors pour vous indique que la modification est en cours puis, au bout d'un moment, vous indique que le chiffrement est activé.

Activation de SFTP

Activation de SFTP

Activer le multisite

Pour cette étape, il ne s'agit pas vraiment de sécurité mais si vous avez plusieurs noms de domaines, il vaut mieux les configurer maintenant plutôt que d'attendre et devoir ensuite faire la configuration plusieurs fois.

On se dirige donc vers le menu Multisite qui contient un tableau avec les domaines disponibles et la configuration correspondante (dossier, journalisation, ...).

Ajouter un domaine

Pour ajouter un domaine, cliquez sur le bouton correspondant (en bas, Ajouter un domaine ou sous-domaine).

La première étape vous demande si vous voulez un sous-domaine ou un domaine externe. Dans notre cas, on est là pour ajouter d'anciens domaines (repo.arsouyes.org), on choisi donc le premier bouton radio.

Domaine ou sous-domaine ?

Domaine ou sous-domaine ?

La deuxième étape consiste à configurer le domaine proprement dit, on complète donc les champs en fonction :

Réglages du domaine

Réglages du domaine

La dernière étape est un résumé pour être sûr de nos réglages. Comme nous avons nos DNS chez OVH, l'ajout des sous-domaine peut se faire automatiquement (case cochée).

Résumé des réglages

Résumé des réglages

On peut alors voir notre nouveau domaine parmi les autres domaines.

Liste des domaines

Liste des domaines

Modifier un domaine

En cas de soucis, ou de besoin de changement, l'icone d'engrenage permet de modifier un domaine. Les paramètres sont les mêmes que pour la deuxième étape lors de la création.

Modifier un domaine

Modifier un domaine

L'étape suivante n'est qu'un résumé pour valider.

Lets-encrypt

Un site HTTPS n'a de sens que si son certificat est signé par une autorité acceptée par vos visiteurs. Vous pourriez générer votre propre autorité, ou faire signer vos certificats par une autorité payante, dans notre cas, nous avons choisi Let's Encrypt.

⚠️ Comme la configuration d'un multisite n'est pas instantanée, il est conseillé d'attendre un peu avant de (re)générer ses certificats.

La documentation officielle est plutôt facile à suivre. La configuration des certificats peut se faire via deux menus :

  1. Via le menu Informations générales, le bouton à droite de la configuration SSL permet de re-générer vos certificats,
  2. Via le menu Multisite qui a un bouton dédié pour les re-générer aussi.
Configuration via les informations générales

Configuration via les informations générales

Activer Let's Encrypt

Si c'est la première fois que vous l'activez, vous devez choisir Commander un certificat SSL puis choisir la première option (certificat gratuit via let's encrypt).

Nouveau certificat Let's Encrypt

Nouveau certificat Let's Encrypt

Regénérer les certificats

Si vous avez ajouté un nouveau domaine, il faut alors re-générer vos certificats pour que tous vos domaines soient présents dans le certificat.

Confirmation de la génération des certificats

Confirmation de la génération des certificats

Redirections

À ce stade, votre site est disponible en HTTPS mais vos visiteurs peuvent encore se tromper et venir en clair. Si vous voulez leur filer un coup de main et éviter qu'ils ne se trompent, vous devriez les rediriger automatiquement.

On quitte donc la configuration du domaine et de l'hébergement pour aller dans celle de l'application web que vous déployez et dans notre cas, on passe par le .htaccess et le mod_rewrite :

RewriteEngine on

Les domaines

Nos anciens domaines n'hébergeant plus d'applications spécifique, nous avons choisi de rediriger les visiteurs qui suivraient un vieux lien mort vers le site de base.

On ajoute donc une condition sur le nom d'hôte utilisé dans la requête et s'il ne s'agit pas du domaine principal, on redirige le visiteur :

RewriteCond %{HTTP_HOST}      !^www\.arsouyes\.org
RewriteRule (.*) https://www.arsouyes.org/$1 [R=301,L]

HTTPS

La technique est ici similaire, on ajoute une condition sur la requête et si on remarque qu'il ne s'agit pas de HTTPS, on redirige.

La première solution est d'utiliser la variable HTTPS fournie directement par apache2 qui vaut on si c'est le cas et off si la connexion n'est pas chiffrée.

RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.arsouyes.org/$1 [R=301,L]

La deuxième solution est d'utiliser le numéro de port de la connexion, 80 en HTTP contre 443 en HTTPS. Si la première méthode ne fonctionne pas sur votre serveur, la second peut parfois aider.

RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://www.arsouyes.org/$1 [R=301,L]

Et après ?

Maintenant, vos connexions vers votre site sont sécurisées et utilisent des protocoles cryptographiques sûrs.

Déployer un site web via sftp et Gitlab
10 juin 2019 Avec notre nouvel hébergement, nous avons du revoir nos scripts de déploiement continu. Remplacer rsync par lftp n'est pas compliqué mais nécessite de fournir les données d'authentifications à l'environnement de déploiement. Heureusement, gitlab fournit une méthode sécurisée pour protéger ces informations sensibles.
Panne d'internet, pas de site web
3 juin 2019 C'est le risque lorsqu'on pratique l'auto-hébergement : une panne de connexion internet a rendu le site des arsouyes inaccessible. Pour revenir au plus vite et surtout que ça ne se reproduise plus, nous sommes passés chez un hébergeur.

  1. Techniquement, on devrait plutôt parler de TLS (successeur de SSL qui est maintenant obsolète) ou de HTTPS, mais comme le terme est resté...