From b88dddba96b9ecc917f12036e9eee2efcd09f1ae Mon Sep 17 00:00:00 2001 From: benoit Date: Sun, 5 Mar 2017 00:36:42 +0100 Subject: [PATCH] =?UTF-8?q?WIP=20=C3=A9bauche=20ssl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoSecureMailServer.page | 90 +++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/HowtoSecureMailServer.page b/HowtoSecureMailServer.page index 870f558..0e59edf 100644 --- a/HowtoSecureMailServer.page +++ b/HowtoSecureMailServer.page @@ -36,8 +36,9 @@ On en profite pour aussi créer une swap de 1G tant qu'à faire. ``` # dd if=/dev/zero of=/swapfile.img bs=1M count=1000 -# chmod 600 /var.img -# mkswap +# chmod 600 /swapfile.img +# mkswap -LSWAP +# echo "/swapfile.img none swap sw 0 0" >> /etc/fstab ``` On chiffre le volume en LUKS avec `cryptsetup`. Choisissez une passphrase, vous aller devoir la taper à chaque démarrage dans la console de Scaleway. Pas très souvent si tout est stable ! :-) @@ -81,3 +82,88 @@ Filesystem Size Used Avail Use% Mounted on # Installation de Mailcow ## Pré-requis + +Il vous faut un nom de domaine ! Il faudra choisir quel FQDN utiliser, le plus classique étant `mail.domain.tld`. + +Au niveau de vos entrées DNS, il vous faudra un champ A et un MX. Plus de détails sur le [README](https://github.com/andryyy/mailcow#before-you-begin-prerequisites). + +On supprime exim4, car Mailcow utilise postfix. + +``` +# apt purge exim4 exim4-base exim4-config exim4-daemon-light +``` + +Puis on télécharge le script d'installation, on édite la configuration et on lance l'installation. + +``` +# wget -O - https://github.com/andryyy/mailcow/archive/v0.14.tar.gz | tar xfz - +# cd mailcow-0.14 +# vim mailcow.config +``` + +> **Note** : Le webmail par défaut est Roundcube. Si vous allez utiliser un smartphone avec synchronisation des contacts et agenda, choisissez plutôt SOGo dans le fichier de config. + +Laissez-vous guider par le script d'installation. + +``` +# ./install.sh +``` + +# Fini + +Voilà, c'est fini ! Il vous reste à créer votre premier compte mail via l'interface d'admin. + +Si vous avez des questions ou besoin d'aide, n'hésitez pas à ouvrir un ticket (an anglais !) ici. Sinon demandez-moi sur [Twitter](https://twitter.com/benpro82) ou par [Mail](mailto:benoit[arobase]benpro.fr). + +# Bonus : Certificat client X.509 + +L'idée est de restreindre l'accès au services web (webmail et admin), et mail (SMTPS/IMAPS) via un certificat client X.509. Sans ce certificat, impossible d'accéder à quoi que ce soit. + +> **Note** : Cela remplace le certificat Let's Encrypt utilisé par Mailcow. + +Pour cela il faut mettre en place une `PKI` et émettre un certificat client. J'utilise l'outil [shellPKI](https://wiki.evolix.org/HowtoOpenVPN#mise-en-place-dune-pki-avec-shellpki-openbsd-et-debian) pour ça. + +``` +# cd /usr/local +# git clone https://forge.evolix.org/shellpki.git +# cd shellpki +# install -d -m 700 /etc/shellpki /etc/ssl/clients +# sed -i 's#/etc/openvpn/ssl#/etc/shellpki#g' openssl.cnf +# install -m 600 openssl.cnf /etc/shellpki/ +# sed -i -e 's#PREFIX=.*#PREFIX=/etc/shellpki#' -e 's#WWWDIR=.*#WWWDIR=/etc/ssl/clients#' shellpki.sh +``` + +Éditer `/etc/shellpki/openssl.cnf` et initialiser shellPKI. Le plus important est de remplir le « Common Name », par exemple `ca.domain.tld`. + +``` +# vim /etc/shellpki/openssl.cnf +# ./shellpki.sh init +``` + +Ensuite on génère un + +On obtiens un certificat et une clé dans `/etc/shellpki/ca/` que l'on peut positionner sur nginx, dovecot et postfix. + +``` +# sed -i -e 's#/etc/ssl/mail/mail.crt#/etc/shellpki/ca/cacert.pem#' \ + -e 's#/etc/ssl/mail/mail.key#/etc/shellpki/ca/private.key#' \ + /etc/nginx/sites-available/mailcow.conf /etc/postfix/main.cf \ + /etc/dovecot/dovecot.conf +``` + +Générer un certificat client + +``` + +``` + + +# Autres actions + +Voici une liste de tâches non exhaustives à faire de votre côté que je ne documente pas, non obligatoire mais conseillé… + +- Activer un pare-feu sur votre machine, par exemple `ufw` ; +- Monitorer votre serveur ; +- S'assurer du suivi des mises à jour ; +- Faire des sauvegardes ; +- …