HSC
Cabinet de consultants en sécurité informatique depuis 1989 - Spécialisé sur Unix, Windows, TCP/IP et Internet
Mode texte : accès au contenu de la page
Hervé Schauer Consultants
Vous êtes ici : Accueil > Ressources > Brèves > Installation de postfix avec TLS (serveur de mail sécurisé)
Accéder au : Site HSC des formations
Télécharger le catalogue des formations
Recherche :  
English version
   Services   
o Domaines de compétences
o Conseil & Expertise
o Prestations ISO 27001
o Audit & Évaluation
o Tests d'intrusion
o Tests de vulnérabilités (TSAR)
o Analyse Forensique
o Certification ARJEL
o Formations
o E-learning
   Conférences   
o Agenda
o Interventions passées
o Tutoriels
   Ressources   
o Index thématique
o Brèves
o Présentations
o Cours
o Articles
o Outils (téléchargement)
o Veille en vulnérabilité
   Société   
o Hervé Schauer
o Equipe
o Offres d'emploi
o Références
o Historique
o Partenariats
o Associations
   Presse et
 communication
 
 
o Newsletter HSC
o Bulletin juridique HSC
o Revue de presse
o Communiqués de presse
o Publications
   Contacts   
o Coordonnées
o Requêtes particulières
o Accès à nos locaux
o Hôtels proches de nos locaux
|>|Installation de postfix avec TLS (serveur de mail sécurisé)   

par Yann Berthier (30/11/2000)




--------[Postfix / TLS------------------------------------------------------

Qui n'a pas révé un jour d'avoir son Postfix causer TLS avec ses petits
camarades MTA ? Et bien c'est ce à quoi nous allons nous employer de ce pas.

1. Où commencer ?

Par la page de Postfix, http://www.postfix.org, un MTA sécurisé par
Wietse Venema.

Une présentation complète de postfix, par Alain Thivillon, est 
disponible ici : http://www.hsc.fr/ressources/cours/postfix/

Et bien sur par la page où trouver le patch qui va bien : 
http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/


2. De quoi a t'on besoin ?

Sans ordre particulier, aujourd'hui :

 . Postfix snapshot-20001121
 . OpenSSL-0.9.6
 . et le patch pfixtls-0.6.26

Il faut de préférence utiliser la dernière version du patch.


3. Assez de théorie !

3.1. Décompresser le patch (je veux dire le tarball récupéré sur le site
mentionné plus haut)


3.2. Appliquer le patch.

On se met un dans l'arborescence du source postfix
(décompressé), puis :

 % patch -p0 < patch_to_the_patch/pfixtls.diff
 % cd path_to_postfix_src
 % make makefiles CCARGS="-DHAS_SSL -I/usr/local/ssl/include" \
  AUXLIBS="-L/usr/local/ssl/lib -lssl -lcrypto"         
 (bien sur, à modifier en fonction de votre installation de openssl)
 % make
 # sh INSTALL.sh, par exemple, pour installer postfix (ce qui n'est pas l'objet
 de ce document)


3.3. Où ça se gate. Euh, je veux dire, où il est question de certificats.

3.3.1. Aller chercher de l'aspirine et du rhum

3.3.2. Se créer son certificat serveur

 % openssl genrsa -out what.cert 1024


Puis il faut générer une 'requête de certificat', qui va être ensuite signée
par une autorité de certification :

 % openssl req -in what.cert -out what.req -keyout what.key -new -nodes

Attention, il ne faut pas mettre de passphrase pour protéger la clef privée,
sinon postfix attend la passphrase avant de se lancer au boot ! 

Il est très important également que le Common Name du certificat soit égal au
nom canonique du serveur postfix (ici what.ever.tld)
L'autorité de certification signe :

 % openssl x509 -req -in what.req -out what.crt \
 -CA ca.crt -CAkey ca.key -days 2000 -CAcreateserial

Si vous voulez être votre propre autorité de certification :
http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/doc/myownca.html

Il faut enfin mettre les clefs et les certificats dans /etc/postfix/, et
vérifier les droits sur ces fichiers, *très important* puisque notre
clef privée n'est pas protégée par une pass-phrase :

 # chmod 0400 /etc/postfix/what.key
 # chown root:root /etc/postfix/what.key
 # chown root:root /etc/postfix/what.crt
 # chown root:root /etc/postfix/ca.crt
 

3.4. Où il est enfin question de postfix !

Dans /etc/postfix/main.cf, les paramètres propres à TLS sont à rajouter :

## config TLS
#

# certificats :
# on peut utiliser des certificats différents
# pour le client smtp et le serveur smtpd
smtp_tls_key_file = /etc/postfix/what.key
smtp_tls_cert_file = /etc/postfix/what.crt
smtpd_tls_key_file = /etc/postfix/what.key
smtpd_tls_cert_file = /etc/postfix/what.crt
smtpd_tls_CAfile = /etc/postfix/ca.crt
smtp_tls_CAfile = /etc/postfix/ca.crt
#
# c'est ici que l'on controle l'utilisation ou non de TLS
smtp_use_tls = yes
smtpd_use_tls = yes
#
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtp_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_ask_ccert = yes
#relay_clientcerts = hash:/etc/postfix/certs_ok
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
smtp_tls_session_cache_database = sdbm:/etc/postfix/smtp_scache
smtpd_tls_session_cache_timeout = 3600
smtp_tls_session_cache_timeout = 3600

Dans ca.crt, rajouter à suivre tous les certificats auquels on fait confiance
si on veut du 'verified ok' dans les headers

Il faut enfin rajouter une ligne dans /etc/postfix/master.cf :

tlsmgr	fifo	-	-	n	300	1	tlsmgr

NB : tlsmgr n'est *pas* chrootable.

Il n'y a plus maintenant qu'à lancer postfix :
 # postfix start


4. Où on vérifie que tout est pour le mieux dans le meilleur des mondes :

yann@what:~% telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 what.ever.tld ESMTP Postfix
EHLO what
250-what.ever.tld
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250 8BITMIME

Notre postfix annonce désormais STARTTLS !!

Et si on envoie un mail entre deux serveurs qui causent TLS, on peut voir dans
les headers :

Received: from what.ever.tld (what.ever.tld [192.168.2.1])
        (using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits)) 
	(Client CN "what.ever.tld", Issuer CN "EVER CA" (verified OK))
	by where.ever.tld (Postfix) with ESMTP id 3B71415CD4B
	for <yann@where.ever.tld>; Fri, 17 Nov 2000 11:28:48 +0100 (CET)

On vérifie bien que le dialogue entre what.ever.tld et where.ever.tld a bien
été 'tlsisé', et que le certificat de what présenté est bien le bon (on le
connait car il est dans notre fichier /etc/postfix/ca.crt).

En rajoutant dans /etc/postfix/main.cf la ligne suivante :

smtp_tls_per_site = hash:/etc/postfix/tls_per_site

Avec dans le fichier /etc/postfix/tls_per_site

where.ever.tld	MUST

Le serveur where.ever.tld *doit* alors présenter un certificat signé, ce qui
permet d'éviter qu'une machine puisse récupérer les mails à destination de
where.ever.tld en usurpant son adresse IP. 

Etonnant, non ?



Dernière modification le 12 novembre 2003 à 13:55:00 CET - webmaster@hsc.fr
Mentions légales - Informations sur ce serveur - © 1989-2013 Hervé Schauer Consultants