mails:sasl:mta-serveur

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
mails:sasl:mta-serveur [2018/11/18 20:36] – [SASL pour l'accès au serveur MTA] cdrom1mails:sasl:mta-serveur [2018/11/26 14:58] – [Les binds LDAP] cdrom1
Ligne 1: Ligne 1:
 ====== SASL pour l'accès au serveur MTA ====== ====== SASL pour l'accès au serveur MTA ======
-Nous utilisons Postfix installé sous debian avec saslauthd (Cyrus). +Le MTA est postfix, ce service est accessible via le protocole SMTP. 
-On n'utilise pas ldapdb parce que cette lib garde un cache des hashs de mot de passe, alors que Cyrus sait aussi valider l'authentification par un bind ldapune auth pamou encore une auth IMAP sur le MDA.+Certaines de ses fonctions comme la transmission de mails de l'extérieur vers un destinataire@picasoft.net sont publiquement accessibles. 
 +Cependant, d'autres sont accessibles seulement après authentification. En effet, la politique [[txs:infra-a18-1:docu#spf|SPF]] donne seulement à nos serveurs le droit d'émettre des courriels dont l'expéditeur a une adresse du type expediteur@picasoft.net, et on ne veut pas que le monde entier puisse usurper l'identité des utilisateurs@picasoft.net. On autorise donc seulement des utilisateurs authentifiés à utiliser une telle fonctionnalité. 
 +Il faut remarquer que la couche de sécurité qu'on va décrire dans cette page ne fait qu'interdire aux utilisateurs non authentifiés d'utiliser des adresses en @picasoft.net. Mais une qu'on est authentifié, on peut a priori utiliser l'adresse de n'importe qui. Ce n'est pas un problème fondamental car: 
 +  * On peut mettre en place des logs permettant de voir qui a utilisé quelle adresse 
 +  * Picasoft est une petite association donc on peut se faire confiance. 
 +A titre indicatif, la même politique est en vigueur à l'UTC: une fois qu'on a utilisé son login pour se connecter au serveur SMTP, on peut demander à ce dernier d'envoyer un mail en [n'importe quoi]@utc.fr. Ce qui fait qu'on peut usurper l'identité de quelqu'un, mais ce sera tracé et on peut remonter la piste jusqu'au login de la personne qui a utilisé le serveur. 
 + 
 +Cette couche de sécurité sera appelée SASL serveur, puisqu'elle protège l'accès au serveur, mais une fois qu'on est dedans on peut tout faire indépendamment de son identité. 
 + 
 +Nous utilisons Postfix installé sous debian avec la bibliothèque saslauthd (Cyrus). A chaque fois qu'un démon postfix (smtp pour nous) a besoin de vérifier un couple (login;mot de passe), il utilise un socket pour les cpmmuniquer à un démon saslauthd. Ce démon effectue un certain nombre d'opérations puis répond à Postfix si l'authentification a réussi ou échoué. 
 + 
 +Dans notre cas, on a connecté saslauthd au serveur LDAP de Picasoft. A la place de saslauthd, on aurait pu utiliser ldapdb, mais cette bibliothèque garde un cache des hashs de mot de passe, ce qui est contraire à la politique de sécurité en vigueur. D'ailleurssaslauthd est plus modulaireil est également possible de le connecter à PAM (framework UNIX), un serveur IMAP, etc.
  
 Ils ont tous des avantages respectifs: Ils ont tous des avantages respectifs:
   * Une auth PAM permet de contrôler localement des utilisateurs, embarqués dans la machine.   * Une auth PAM permet de contrôler localement des utilisateurs, embarqués dans la machine.
-  * Une auth IMAP permet de rendre l'accès au MTA dépendant de l'accès à une boîte, ce qui fait que un émetteur = un destinataire.+  * Une auth IMAP permet de rendre l'accès au MTA dépendant de l'accès à une boîte mail, ce qui fait que un émetteur = un destinataire.
   * Une auth LDAP permet de contrôler finement qui a accès à quoi, cependant l'exécution des règles de sécurité se fait côté client (le MTA est seul responsable de la sécurité, le LDAP n'est pour lui qu'un annuaire).   * Une auth LDAP permet de contrôler finement qui a accès à quoi, cependant l'exécution des règles de sécurité se fait côté client (le MTA est seul responsable de la sécurité, le LDAP n'est pour lui qu'un annuaire).
-L'idéal serait d'implémenter une auth IMAP, mais il faudrait voir si Dovecot permet certaines subtilités (plusieurs utilisateurs pouvant accéder à des boîtes mails partagées par exemple). Sinon, en LDAP, on est sûr d'y arriver, mais ça fait plus de config en aval, donc plus de chances pour que le système soit instable. 
-===== Les fichiers de config ===== 
-Le remplissage des fichiers de config est automatisé avec les dockerfiles, mais il peut être intéressant de les inspecter à la main. On détaille ici les paramètres importants pour Cyrus. 
  
-Sous debian, le fichier de config Cyrus pour postfix est dans <code>/etc/postfix/sasl/smtpd.conf</code>+Pour le moment, nous avons opté pour une auth LDAP, mais pour ne pas se fermer des portes ou faciliter le debug, nous avons également mis en place des auth PAM et IMAP qu'on peut tester avec sasl-test en spécifiant en argument le paramètre ldap, pam ou imap. 
 + 
 +===== Les fichiers de config de saslauthd ===== 
 +Le remplissage des fichiers de config est automatisé avec les dockerfiles, mais il peut être intéressant de les inspecter à la main. On détaille ici les paramètres importants pour saslauthd. 
 + 
 +Sous debian, le fichier de config saslauthd pour postfix est dans <code>/etc/postfix/sasl/smtpd.conf</code>
  
 On indique dans le main de Postfix un lien vers ce fichier de config de Cyrus: On indique dans le main de Postfix un lien vers ce fichier de config de Cyrus:
Ligne 64: Ligne 77:
 === IMAP === === IMAP ===
 <code> <code>
-MECHANISMS="imap"+MECHANISMS="rimap"
 MECH_OPTIONS="nom-hôte-serveur-imap/port" MECH_OPTIONS="nom-hôte-serveur-imap/port"
 </code> </code>
Ligne 70: Ligne 83:
 saslauthd tentera de faire un AUTH IMAP standard, et dès qu'il a une réponse il se déconnecte. saslauthd tentera de faire un AUTH IMAP standard, et dès qu'il a une réponse il se déconnecte.
 ===== Les binds LDAP ===== ===== Les binds LDAP =====
-Si on choisit la solution LDAP, il faut configurer des binds au niveau du SASL serveur.+Si on choisit la solution LDAP, il faut configurer des binds au niveau du serveur. Ces binds sont préalables au challenge SASL: d'abord on vérifie si un utilisateur existe, ensuite on vérifie son mot de passe.
 Cette configuration se fait dans /etc/saslauthd.conf: Cette configuration se fait dans /etc/saslauthd.conf:
 <code> <code>