Comment sécuriser Roundcube sur Ubuntu 16.04

De Get Docs
Aller à :navigation, rechercher

Introduction

Parce que le courrier électronique est un élément crucial de la communication moderne, il est important de garder à l'esprit la sécurité pour toutes les parties de votre pipeline de courrier électronique. Roundcube est un client de messagerie Web avec de solides fonctionnalités de sécurité et de nombreuses options de personnalisation à partir de son référentiel de plug-ins. Cet article explique comment sécuriser davantage une installation Roundcube de base existante.

Si vous avez utilisé SSL lors de la configuration de vos paramètres IMAP et STMP dans la configuration initiale de Roundcube, la connexion de Roundcube à votre serveur de messagerie est déjà sécurisée. Cependant, la connexion de votre navigateur à Roundcube ne l'est pas et vos e-mails eux-mêmes sont envoyés en clair. Votre compte Roundcube lui-même est également protégé uniquement par un mot de passe.

Dans ce didacticiel, vous allez sécuriser ces trois parties du pipeline de messagerie en :

  • Ajouter SSL à Apache avec Let's Encrypt.
  • Ajout de authentification à deux facteurs à votre compte Roundcube avec un plugin Roundcube.
  • Utilisation de GPG pour signer et chiffrer les e-mails avec un plugin Roundcube.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de :

  • Un serveur Ubuntu 16.04 avec Roundcube installé en suivant ce tutoriel Roundcube sur Ubuntu 16.04. Après avoir terminé ce didacticiel préalable, vous disposerez d'un client de messagerie Web entièrement fonctionnel, mais partiellement non sécurisé.
  • Un smartphone ou une tablette avec une application compatible TOTP installée, comme Google Authenticator (iOS, Android). Vous l'utiliserez pour configurer l'authentification à deux facteurs.

Vous pouvez en savoir plus sur l'authentification multifacteur dans l'introduction de Comment configurer l'authentification multifacteur pour SSH sur Ubuntu 16.04. Vous pouvez en savoir plus sur GPG dans Comment utiliser GPG pour chiffrer et signer des messages.

Étape 1 - Ajout de SSL pour sécuriser l'accès à Roundcube

À l'heure actuelle, si vous visitez votre installation Roundcube en utilisant le nom de domaine de votre serveur dans votre navigateur, vous serez connecté via HTTP au lieu de HTTPS. Pour sécuriser entièrement toute la chaîne de communication de votre navigateur à votre serveur de messagerie, cette connexion à Roundcube doit utiliser SSL/TLS.

Un moyen simple de le faire est d'utiliser des certificats SSL gratuits de Let's Encrypt. Roundcube est configuré au-dessus de la pile LAMP, vous pouvez donc suivre Comment sécuriser Apache avec Let's Encrypt sur Ubuntu 16.04 pour une procédure pas à pas détaillée sur la configuration. Voici un bref résumé :

Tout d'abord, installez le client Let's Encrypt.

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache

Obtenez ensuite votre certificat SSL et vérifiez que le renouvellement automatique fonctionne. Remplacez example.com par votre domaine et utilisez des drapeaux -d supplémentaires pour tous les sous-domaines ou alias.

sudo certbot --apache -d example.com
sudo certbot renew --dry-run

Lors de la configuration interactive (après avoir entré sudo certbot --apache -d example.com), lorsqu'on vous demande si vous voulez une configuration de base ou sécurisée, assurez-vous de choisir sécurisé. Cela garantira que tout le trafic HTTP est redirigé vers HTTPS.

Vous disposez maintenant d'une connexion sécurisée entre votre ordinateur et votre installation Roundcube, qui à son tour établit une connexion sécurisée avec votre serveur de messagerie IMAP/SMTP. Il y a encore quelques choses que vous pouvez faire pour améliorer la sécurité de vos communications par e-mail, mais elles nécessitent des plugins.

L'étape suivante utilise un plugin pour renforcer la sécurité d'un compte Roundcube en ajoutant une authentification à deux facteurs.

Étape 2 - Installation du plugin d'authentification à deux facteurs

Alors que le projet Roundcube travaille sur la fonctionnalité GUI pour les plugins, pour le moment, tous les plugins doivent être installés via la ligne de commande. Il y a deux façons de faire ça:

  • Installation manuelle, qui était la première méthode disponible. Cela implique de télécharger le plugin (qui est généralement soit un fichier .zip ou dans un référentiel Git), puis de l'activer en modifiant le fichier de configuration Roundcube /var/www/roundcube/config/config.inc.ph.
  • Installation semi-automatique, qui est la méthode la plus moderne. Cela répond au gestionnaire de packages PHP, Composer, pour installer les plugins que vous spécifiez dans son fichier de configuration.

Certains plugins recommandent une méthode d'installation plutôt qu'une autre. Le plugin 2FA fonctionne avec les deux méthodes et ne fait pas de recommandation, donc ici, nous allons utiliser l'installation semi-automatique en raison de sa facilité d'utilisation.

Composer est contrôlé par un fichier composer.json stocké dans $RC_HOME/composer.json. Pour activer Composer en créant ce fichier de configuration. Roundcube est livré avec un fichier de configuration de base appelé composer.json-dist, nous allons donc partir d'une copie de celui-ci.

cd /var/www/roundcube
sudo cp composer.json-dist composer.json

Il y a quelques plugins de base déjà spécifiés dans ce fichier par défaut, alors lancez ensuite Composer pour les installer et terminer sa configuration initiale. Assurez-vous d'exécuter Composer à partir du répertoire /var/www/roundcube.

sudo composer install

Ensuite, pour ajouter le plugin 2FA, nous devons l'ajouter au fichier composer.json.

La syntaxe d'une ligne de plugin est "organization/plugin_name": "version_or_branch". Donc, pour le plugin 2FA, la ligne que vous ajouterez est "alexandregz/twofactor_gauthenticator": "dev-master".

Ouvrez le fichier composer.json pour le modifier à l'aide de nano ou de votre éditeur de texte préféré.

sudo nano /var/www/roundcube/composer.json

Recherchez le bloc requis, qui commence par "require": {. Chaque ligne entre les accolades ({ et }) est une ligne de plugin. Toutes les lignes de plug-in du bloc doivent se terminer par une virgule, à l'exception de la toute dernière entrée.

Ajoutez la ligne du plug-in 2FA à la fin du bloc et assurez-vous d'ajouter une virgule à la ligne précédente.

/var/www/roundcube/composer.json

. . .
"require": {
    "php": ">=5.4.0",
    "pear/pear-core-minimal": "~1.10.1",
    "pear/net_socket": "~1.2.1",
    "pear/auth_sasl": "~1.1.0",
    "pear/net_idna2": "~0.2.0",
    "pear/mail_mime": "~1.10.0",
    "pear/net_smtp": "~1.7.1",
    "pear/crypt_gpg": "~1.6.2",
    "pear/net_sieve": "~1.4.0",
    "roundcube/plugin-installer": "~0.1.6",
    "endroid/qr-code": "~1.6.5",
    "alexandregz/twofactor_gauthenticator": "dev-master"
},
. . .

Enregistrez et fermez le fichier, puis exécutez tell Composer pour mettre à jour ses informations de package pour installer le nouveau plugin.

sudo composer update

Lorsque Composer vous demande si vous souhaitez activer le plugin, entrez Y pour continuer. Une fois installé, déconnectez-vous de Roundcube et reconnectez-vous pour activer le plugin.

Maintenant que le plugin est installé, nous devons l'utiliser pour le configurer 2FA sur notre compte via l'interface graphique de Roundcube.

Étape 3 - Activer 2FA sur votre compte

Pour commencer, connectez-vous à Roundcube en utilisant l'adresse IP ou le domaine de votre serveur dans votre navigateur. Cliquez sur le bouton Paramètres dans le coin droit, puis sur Authentification à 2 facteurs dans la navigation de gauche.

Dans la section des options d'authentification à 2 facteurs, cochez la case Activer, puis cliquez sur Créer un secret.

Ensuite, cliquez sur Afficher les codes de récupération et stockez les quatre codes de récupération affichés dans un endroit sûr. Vous utiliserez ces codes pour vous connecter si vous ne pouvez pas générer de jeton (par exemple, si vous perdez votre téléphone).

Enfin, cliquez sur le bouton Enregistrer.

Cela active 2FA, mais vous devez maintenant ajouter le secret à votre application compatible TOTP, comme Google Authenticator. Cliquez sur le bouton Afficher le code QR qui est apparu après avoir enregistré votre secret et scannez le code avec votre application. Si l'analyse ne fonctionne pas, vous pouvez également entrer le secret manuellement.

Enfin, une fois que votre application génère des codes, assurez-vous qu'elle fonctionne en saisissant un code dans le champ à côté du bouton Vérifier le code, puis cliquez sur ce bouton. Si cela fonctionne, vous verrez une fenêtre indiquant Code OK, et vous pouvez cliquer sur le bouton OK en bas pour fermer cette fenêtre. En cas de problème, essayez de rajouter le secret à votre application.

La dernière étape de la sécurisation de vos communications numériques consiste à crypter les messages réels que vous envoyez par e-mail. Nous le ferons à l'étape suivante en utilisant un plugin appelé Enigma.

Étape 4 - Activation des e-mails cryptés avec GPG

Le plug-in Enigma ajoute la prise en charge de l'affichage et de l'envoi d'e-mails signés et cryptés. Si vous avez suivi le précédent tutoriel d'installation de Roundcube, alors le plugin Enigma est déjà activé sur votre installation. Sinon, vous pouvez suivre la même procédure que vous avez utilisée pour le plugin 2FA à l'étape 2 pour ajouter le plugin Enigma maintenant.

Pour commencer, nous devons activer certaines options de chiffrement par défaut. Connectez-vous à Roundcube et cliquez sur le bouton Paramètres dans le coin supérieur droit. À partir de là, cliquez sur Préférences puis sur Encryption sous la liste Section.

Il existe 7 paramètres de cryptage dans la liste Options principales. L'activation de tous les 7 offrira le plus de sécurité, mais cela s'accompagne d'un compromis en termes de convivialité.

Voici chacune des options du menu Options principales et nos suggestions (nécessaires, recommandées ou facultatives) pour chacune, mais vous devez choisir les paramètres qui correspondent à votre cas d'utilisation :

  • Activer le chiffrement et la signature des messages : nécessaire. Cela vous permet de signer et de chiffrer des messages.
  • Activer la vérification des signatures de message Recommandé. Si quelqu'un vous envoie un e-mail signé, ce paramètre oblige Roundcube à vérifier l'expéditeur par son adresse e-mail et sa clé.
  • Activer le déchiffrement des messages : recommandé. Si quelqu'un vous envoie un e-mail crypté, ce paramètre oblige Roundcube à utiliser vos clés GPG pour le décrypter.
  • Signer tous les messages par défaut : Facultatif. Cela signe chaque e-mail que vous envoyez, même si la personne à qui vous l'envoyez n'a pas de support GPG. S'ils ne le font pas, ils verront une masse de caractères au bas de l'e-mail. Vous pouvez également activer cette option lors de la rédaction d'un e-mail.
  • Chiffrer tous les messages par défaut : facultatif. Cela crypte chaque e-mail que vous envoyez, en supposant que vous ayez la clé publique de la personne à qui vous envoyez un e-mail. Vous pouvez également activer cette option lors de la rédaction d'un e-mail.
  • Joindre ma clé PGP publique par défaut : Facultatif. Cela ajoute votre clé publique GPG en pièce jointe dans chaque e-mail que vous envoyez. Si le destinataire prend en charge GPG, son client de messagerie verra la clé et l'installera dans son trousseau de clés afin qu'il puisse ensuite vous envoyer un e-mail crypté.
  • Conserver les mots de passe de la clé privée pour définit la durée pendant laquelle Roundcube se souvient de la phrase secrète que vous saisissez lors du chiffrement ou du déchiffrement des e-mails, vous n'avez donc pas à la saisir à chaque fois.

Une fois que vous avez choisi vos paramètres, cliquez sur Enregistrer. Cliquez ensuite sur Identités dans la colonne Paramètres.

Le paramètre par défaut est une identité unique avec l'adresse e-mail avec laquelle vous vous êtes inscrit. Cliquez sur l'e-mail et remplissez le champ Afficher le nom. Vous pouvez éventuellement remplir les autres champs, comme Organisation. Lorsque vous avez terminé, cliquez sur le bouton Enregistrer.

La dernière partie de la configuration consiste à créer une clé. Cliquez sur Clés PGP dans la navigation de gauche.

Si vous avez déjà une clé GPG, vous pouvez cliquer sur Importer en haut à droite et importer votre clé secrète, puis cliquer à nouveau dessus pour importer votre clé publique.

Si vous n'avez pas de clé GPG, ou si vous souhaitez en créer une nouvelle, cliquez sur le bouton plus (+) en bas de la colonne PGP Keys. À partir de là, choisissez l'identité pour laquelle vous souhaitez créer la clé et sélectionnez la force de la clé (plus la taille de la clé est grande, plus il est difficile de casser le cryptage, mais plus le cryptage est lent). Enfin, choisissez un mot de passe fort et cliquez sur Enregistrer.

Attention : Il existe un bogue qui empêche la création de nouvelles clés dans Roundcube lors de l'utilisation de Chrome. Si vous utilisez habituellement Chrome, passez temporairement à un autre navigateur pour créer une nouvelle clé. Une fois qu'il y a une clé dans Chrome, l'importation des paires de clés et la signature/chiffrement fonctionnent comme prévu.


Lorsque vous recevez un e-mail signé vérifié, Roundcube affiche une notification verte Signature vérifiée de en haut :

Lorsque vous recevez et déchiffrez un e-mail chiffré, Roundcube affiche une notification Message déchiffré :

Pour utiliser le cryptage GPG dans vos messages, composez un nouvel e-mail en cliquant sur l'icône Mail en haut à gauche, puis sur Composer. Cliquez sur l'icône Cryptage pour voir les options de cryptage disponibles. Ceux-ci dépendent de ce que vous avez choisi dans les paramètres de cryptage. Si vous avez suivi nos recommandations, vous devriez voir Signer numériquement ce message, Crypter ce message et Joindre ma clé publique. Lorsque vous envoyez un e-mail, cochez les options de cryptage souhaitées.

Conclusion

En ajoutant SSL, l'authentification à deux facteurs et le cryptage GPG, votre pipeline de messagerie est nettement plus sécurisé. À partir de là, vous pouvez continuer à développer et à personnaliser Roundcube en explorant le Roundcube Plugin Repository.