Comment exécuter votre propre serveur de messagerie et votre propre stockage de fichiers avec PEPS sur Ubuntu 14.04

Un article de l’équipe PEPS à MLstate

introduction

Nous utilisons tous des services de courrier électronique et de stockage de fichiers en ligne tels que Gmail ou Dropbox. Cependant, ces services peuvent ne pas être adaptés au stockage de données sensibles, tant personnelles que professionnelles. Faisons-nous confiance à leurs politiques de confidentialité pour joindre un contrat commercial important ou des informations confidentielles? Acceptons-nous que toutes nos données seront collectées, traitées et analysées?

Il existe une solution à ce problème: PEPS est une plate-forme de messagerie, de partage de fichiers et de discussion utilisant un cryptage de bout en bout. Le chiffrement de bout en bout garantit que le chiffrement et le déchiffrement ont lieu sur votre ordinateur (le client) et non sur le serveur, qui ne voit jamais les données confidentielles en texte clair.

image: https: //assets.digitalocean.com/articles/peps_ubuntu_1404/peps-macbook.png [PEPS: courrier électronique, partage de fichiers et discussion en direct pouvant être exécutés sur votre propre instance de cloud]

Ce tutoriel vous guidera tout au long du processus de déploiement de votre instance PEPS sur un droplet DigitalOcean afin que vous puissiez stocker vos données en toute sécurité.

Conditions préalables

PEPS est distribué sous forme de conteneurs Docker pour faciliter la configuration. Vous aurez besoin d’un droplet DigitalOcean avec Ubuntu 14.04 x64 et de l’application Docker installée dessus. Plus précisément:

  • Une Droplet Ubuntu 14.04 x64 avec 2 Go de mémoire si vous avez seulement quelques utilisateurs. Sélectionnez 4 Go de RAM ou plus si vous avez besoin de plus d’utilisateurs ou si vous avez juste besoin de plus de stockage pour vos données.

  • Achetez un certificat SSL à utiliser à la place du certificat auto-signé; Ceci est recommandé pour les environnements de production. Vous pouvez également créer un certificat SSL gratuit et signé. Les instructions pour créer le certificat sont incluses plus tard dans ce tutoriel.

Le nom de votre Droplet est important: Si vous prévoyez d’envoyer des messages par courrier électronique à des destinataires externes, vous souhaitez que Reverse DNS soit configuré pour éviter que vos messages ne soient marqués comme spam. Bonne nouvelle: DigitalOcean configure automatiquement l’enregistrement PTR si le nom de votre gouttelette est défini. vers votre nom de domaine complet (FQDN). Si vous envisagez d’envoyer un courrier électronique à partir de + mail.example.com +, il doit également s’agir du nom de votre Droplet (même si vos adresses se présentent sous la forme + utilisateur @ exemple.com +).

Toutes les commandes de ce didacticiel doivent être exécutées en tant qu’utilisateur non root. Si un accès root est requis pour la commande, il sera précédé de + sudo +. https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 La configuration initiale du serveur avec Ubuntu 14.04] explique comment ajouter des utilisateurs et leur donner un accès immédiat.

Étape 1 - Installation de Docker

La première étape consiste à installer Docker. Ce tutoriel est basé sur Docker 1.6.2. Vous avez 2 options pour installer Docker:

Vous devez également ajouter l’utilisateur non root que vous avez créé (celui qui exécutera toutes les commandes de ce tutoriel) dans le groupe d’utilisateurs + docker +. Remplacez par votre nom d’utilisateur:

sudo usermod -aG docker

Vous devrez également vous déconnecter et vous reconnecter en tant qu’utilisateur non root pour que cette modification soit active.

Étape 2 - Déploiement de PEPS

Connectez-vous à votre Droplet via SSH en utilisant + ssh @ + (remplacez votre nom d’utilisateur et l’adresse IP du serveur), puis exécutez les commandes suivantes pour préparer l’environnement.

Tout d’abord, clonez le référentiel:

git clone https://github.com/MLstate/PEPS

Allez dans le répertoire + PEPS +:

cd PEPS

Configurez votre nom de domaine, en le remplaçant par votre nom de domaine:

echo  > domain

Cette commande crée un fichier texte nommé + domaine + avec votre nom de domaine comme première et unique ligne du fichier.

Installer la marque:

sudo apt-get update
sudo apt-get install make

Il est maintenant temps de construire les conteneurs, ce qui prendra environ 10 à 20 minutes, de sorte que vous puissiez prendre un café ou planifier une réunion informelle:

make build

Si tout se passe bien, cela se termine par quelque chose comme ce qui suit (les identifiants sont générés aléatoirement et différeront):

Removing intermediate container 38d212189d43
Successfully built 24fd74241e48

Pour le premier lancement, nous allons créer des certificats SSL / TLS temporaires et exécuter les conteneurs. (Les deux étapes sont presque instantanées, alors ne pensez pas que vous alliez prendre une autre pause-café.)

Si vous avez déjà des certificats SSL en main pour votre domaine, ignorez-le et copiez votre certificat et votre clé à la place (voir l’étape 5).

Créez des certificats SSL temporaires avec la commande:

make certificate

Choisissez un mot de passe simple, car il vous sera demandé de le saisir 4 fois et les certificats sont des espaces réservés. La plupart des questions peuvent être sautées: La seule question qui compte est `+ Nom Commun (par exemple. nom de domaine complet du serveur ou VOTRE nom) []: + `qui devrait être identique à votre domaine.

Voici un exemple de dialogue:

openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus [...]
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be [...]
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key # strip passphrase
Enter pass phrase for server.key.org:
writing RSA key [...]
Getting Private key

Nous sommes maintenant prêts à lancer PEPS avec la commande suivante:

sudo make run

Étape 3 - Se connecter pour la première fois

Connectez-vous à votre Droplet en utilisant son adresse IP en visitant + https: // + à partir de votre navigateur, où '++ `est l’adresse IP de votre Droplet.

Puisque nous utilisons des certificats SSL temporaires pour le moment, votre navigateur vous avertira que le site n’est pas sécurisé. Acceptez-le quand même. Avec Chrome, cliquez sur * Avancé * pour continuer.

image: https: //assets.digitalocean.com/articles/peps_ubuntu_1404/ssl_chrome.png [Chrome vous avertit du mauvais certificat SSL, nous y remédierons plus tard]

Lors de la première utilisation, vous serez invité à créer un mot de passe administrateur. Choisissez ce que vous voulez, à condition que sa complexité soit suffisante.

image: https: //assets.digitalocean.com/articles/peps_ubuntu_1404/first_run.png [PEPS fonctionne, choisissez votre mot de passe administrateur]

En raison du chiffrement de bout en bout dans PEPS, le compte administrateur peut créer et supprimer des utilisateurs, mais ne pourra pas accéder aux données utilisateur chiffrées existantes.

Une fois votre mot de passe administrateur défini, l’interface principale PEPS s’affiche.

image: https: //assets.digitalocean.com/articles/peps_ubuntu_1404/peps_interface.png [L’interface PEPS sans données]

Ensuite, concentrons-nous sur la configuration correcte du domaine et des certificats.

Étape 4 - Configuration de votre domaine

Maintenant que votre instance fonctionne correctement, nous devons toujours définir le domaine correctement, ce qui implique l’utilisation de vrais certificats SSL, la configuration de DNS, etc.

Commençons par le DNS. En fonction de votre fournisseur de nom de domaine, utilisez leur propre interface pour configurer les entrées DNS de votre domaine ou votre propre serveur DNS. Si vous souhaitez configurer votre propre serveur DNS, vous pouvez utiliser le https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on ubuntu-14-04 [Comment configurer BIND en tant que serveur DNS de réseau privé sur Ubuntu 14.04], qui fait partie de l’article https://www.digitalocean.com/community/tutorial_series/an-introduction-to-managing-dns Série d’articles [Une introduction à la gestion DNS].

Vous devez définir les enregistrements A et MX. Par exemple, pour le domaine fictif + exemple.com + hébergé sur + mail.example.com +:

mail.example.com.   10799   IN   A
mail.example.com.   10799   IN   MX  example.com.

Votre nom Droplet doit être + mail.example.com +. Ne t’inquiète pas. Vous pouvez renommer le Droplet à partir de votre compte DigitalOcean. Cliquez sur le nom de la droplet pour afficher ses détails, cliquez sur l’onglet * Paramètres *, puis sur l’onglet * Renommer *. Vous devrez peut-être attendre que le DNS soit mis à jour.

Vous pouvez également définir des enregistrements supplémentaires. Le vérificateur en ligne MXToolBox est utile pour vérifier que votre domaine est correctement configuré et donne des conseils sur plusieurs points.

Notez que la propagation DNS peut être un peu lente, mais après un certain temps (souvent 1 heure), vous pourrez accéder à PEPS à partir de + https: // example.com +.

Étape 5 - Configuration des certificats SSL

Vous aurez toujours un avertissement de certificat SSL non valide de votre navigateur.

Il est maintenant temps de configurer les certificats SSL. Si vous ne possédez pas déjà de certificats SSL, vous pouvez les acheter auprès d’un fournisseur ou même https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-with-a-free-signed- ssl-certificate-on-a-vps [configurer un certificat SSL gratuit] à des fins non commerciales.

L’article Comment installer un certificat SSL à partir d’une autorité de certification commerciale explique tout sur les certificats SSL, y compris comment en acheter un.

Assurez-vous de copier la clé et le certificat nommé + server.key et` + server.crt` dans le répertoire + / etc / peps / +.

Préparez-les sur votre ordinateur local et copiez les fichiers sur votre serveur en exécutant à partir du répertoire contenant les certificats:

scp server.key server.crt :/etc/peps/

où «++» est l’adresse IP de votre Droplet.

Ceci fait, vérifiez que votre navigateur peut accéder à + ​​https: // example.com + sans erreurs SSL.

Étape 6 - Test

Pour créer plus d’utilisateurs, connectez-vous en tant qu’administrateur avec + admin + comme nom d’utilisateur et avec le mot de passe que vous avez créé dans Etape 3: Se connecter pour la première fois. L’utilisateur admin peut créer des comptes de messagerie pour votre domaine. Accédez au PEPS Admin Manual pour savoir comment faire.

Commencez par essayer d’envoyer et de recevoir des messages électroniques entre deux utilisateurs différents de votre domaine. Par exemple, essayez d’envoyer un courrier électronique de [email protected] à [email protected]. Si cela réussit, essayez de faire en sorte que sammy réponde à l’administrateur pour vous assurer que l’opération inverse aboutit.

Envoyez maintenant un courrier électronique à un compte situé en dehors de votre domaine. Si cela échoue, vos enregistrements A et MX n’ont pas été configurés correctement. Retournez à l’étape 4: Configuration de votre domaine. N’oubliez pas de tester la réception d’e-mails provenant d’un utilisateur extérieur à votre domaine.

Conclusion

Toutes nos félicitations! Vous avez maintenant une instance de PEPS s’exécutant sur un droplet DigitalOcean. Vous pouvez envoyer des messages, partager des fichiers et plus encore (en exécutant des plugins tels que chat) en toute sécurité.

Plusieurs manuels sont disponibles:

  • User Manual

  • Admin Manual

  • Vous trouverez plus de documentation pour les développeurs souhaitant utiliser l’API PEPS ou les opérateurs en matière de sauvegarde. Vous pouvez en savoir plus sur le wiki du projet à l’adresse GitHub.

Visitez également la page Facebook PEPS pour obtenir les dernières nouvelles concernant PEPS.