TP7 - DeumeniDerval/admin-2 GitHub Wiki
TP7 : Sécurisation du service mail
Noms des auteurs : Jérémie MUCHEMBLED
1. Mise en place du service mail
On commence par choisir un FQDN pour notre serveur mail : mail.l1-5.ephec-ti.be. On rajoute un RR MX et un RR A appropriés :
@ IN MX 10 mail.l1-5.ephec-ti.be.
mail.l1-5.ephec-ti.be. IN A 54.36.181.37
Ainsi qu'un RR PTR en zone parent :
37.181.36.54.in-addr.arpa. IN PTR mail.l1-5.ephec-ti.be.
Ensuite on télécharge les fichiers de configuration pour le serveur mail et son conteneur Docker :
On renseigne le FQDN dans le docker compose :
hostname: mail.l1-5.ephec-ti.be
Et on indique au serveur dans son .env que notre certificat SSL provient de Let'sEncrypt :
SSL_TYPE=letsencrypt
Et on donne au serveur mail l'accès à notre certificat de zone :
- /etc/letsencrypt:/etc/letsencrypt:ro
Une fois tout ça fait, on compose up. Le serveur nous demande de configurer une adresse :
On rentre dans le conteneur et on en ajoute une, qu'on mettra en alias de l'adresse postmaster :
A ce stade, le serveur est prêt et on peut se connecter sur un client mail :
Puisque le serveur n'est pour l'instant pas authentifié, les fournisseurs majeurs comme Google nous refusent la réception de mails :
Toutefois, l'envoi vers notre serveur mail fonctionne :
Ainsi qu'entre deux adresses de notre serveur :
MxToolbox nous confirme que le serveur est accessible :
Réponses aux questions
- Comment sont gérés les utilisateurs? Via les utilisateurs Unix, un fichier, une DB?
Les utilisateur sont gérés avec le script
setup
fourni dans l'image du serveur. Les données fournies au script sont ensuite rangées dans des fichiers de configuration :
- Quel est le format de mailbox utilisé? C'est une boite IMAP
2. Sécurisation du service mail
2.1. Analyse du chiffrement TLS
On peut voir les ports du serveur mail dans le docker-compose :
ports:
- "25:25" # SMTP (explicit TLS => STARTTLS, Authentication is DISABLED => use port 465/587 instead)
- "143:143" # IMAP4 (explicit TLS => STARTTLS)
- "465:465" # ESMTP (implicit TLS)
- "587:587" # ESMTP (explicit TLS => STARTTLS)
- "993:993" # IMAP4 (implicit TLS)
On peut voir qu'ils supportent tous le chiffrement, soit explicite ou implicite. Le port 25 n'est pas authentifié.
On effectue une capture Wireshark au moment d'un transfert de mail.
Pour l'envoi, le port 465 est utilisé : TLS implicite. On voit la handshake TLS directment, sans commande STARTTLS :
Pour la réception, le port 993 est utilisé : TLS implicite encore une fois. :
2.2. Authentification du domaine
2.2.1. L'alignement des records MX-PTR-A
On retourne sur MXToolbox :
Les deux RRs sont biens symétriques, et correspondent au RR MX précédent.
2.2.2. SPF
On ajoute le RR :
@ IN TXT "v=spf1 mx -all"
Validé par MXToolbox :
Dorénavant, si on envoit un mail vers une adresse externe, on ne reçoit plus de mail de refus, et le mail arrive (dans les spams par contre).
2.2.3. DKIM
On génère la clé avec la commande :
Puis on rajoute le RR :
Validation externe par MXToolbox encore une fois :
DKIM Validator trouve bien une signature valide dans l'en-tête des mails :
2.2.4. DMARC
On selectione notre configuration sur DMARCGuide et on place le RR sur le DNS :
_dmarc.l1-5.ephec-ti.be. IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; sp=quarantine; fo=1; ri=86400"
Confirmé par MXToolbox :
On obtient un score SpamAssassin de 0.208 :
2.3. Filtrage du spam
On active SpamAssassin dans le fichier de configuration :
ENABLE_SPAMASSASSIN=1
A la réception d'un E-Mail valide, on ne voit rien :
A la réception d'un E-mail suspect en revanche, le mail finit dans les spams, on voit les en tetes :