|
Julien Thomas - TELECOM Bretagne
|
![]()
|
|
Informations
Déploiement d'applications
Sécurité des applications
Sécurité SELinux
|
SMTP : activation des supports SSL et SASLDans le cas de SMTP, la sécurisation peut être vue de différents points de vue. Premièrement, SMTP utilise LDAP et il est donc nécessaire de sécuriser ces communications via l'extension TLS de LDAP. Deuxièmement, le support SLL/TLS permet d'assurer la confidentialité des communications avec les clients. Enfin, le support SASL permet d'assurer l'authentification des clients. Ces différents aspects sont présentés dans cette section. Les configurations se sont en partie basées sur les documents Configurer tls ssl et cyrus sasl avec postfix (Nicolas Billard : http ://www.niqozweb.net/Configurer-TLS-SSL-et-Cyrus-SASL) et Howto postfix-ldap virtual users with qmail schema (Gentoo wiki : http ://gentoowiki. com/HOWTO_Postfix-LDAP_virtual_users_with_qmail_schema) Connexion à l'annuaire LDAPLa configuration de la connexion à l'annuaire LDAP se fait via le fichier main.cf. Afin de respecter la séparation des pouvoirs, le compte utilisé pour se connecter est cn=smtp, comme l'indique le listing suivant du fichier main.cf : ldapvirtual_server_host = ldaps://LDAP_URL ldapvirtual_server_port = 636 ldapvirtual_version = 3 ldapvirtual_bind = no ldapvirtual_bind_dn = cn=smtp,ou=ldap,ou=accounts,ROOT_DN ldapvirtual_bind_pw = smtp ldapvirtual_search_base =ou=mails,ou=accounts,ROOT_DN ldapalias_server_host = ldaps://ldap.polux.org ldapalias_server_port = 636 ldapalias_version = 3 ldapalias_bind = yes ldapalias_bind_dn = cn=smtp,ou=ldap,ou=accounts,ROOT_DN ldapalias_bind_pw = smtp Parmi les différentes options de ce fichier, certaines sont essentielles pour la sécurité. N_server_port permet de définir le port utilisé pour la connexion. Avec le port 389, la connexion se fait en mode classique non sécurisé. Il est donc nécessaire de soit utiliser le port 636, soit 389 + TLS. Le support de SSL étant simple à configuré, nous avons donc utilisé SSL en spécifiant N_server_host = ldaps://ldap.polux.org et N_server_port = 636. L'ajout de ldaps :// est obligatoire car par défaut la connexion utilisée est ldap :// (même avec le port 636). ldapalias_bind = yes permet de définir si la connexion est authentifiée ou non (i.e. utilisation des options ldapalias_bind_N. Cependant, cette option requiert N_version = 3). La récupération d'erreurs sur postfix pouvant être assez chaotique, l'utilisation de l'outil postmap (postmap -v -q postfix ldap:ldapvirtual et postmap -v -q postfix ldap:ldapalias) peut être utile. Étant donné que des informations confidentielles ont été ajoutées, il est nécessaire de sécuriser le fichier main.cf avec la commande chmod o= main.cf. Création du certificatTout comme pour pop et imap, nous avons choisi d'utiliser des clés non sécurisées (simplification du lancement des services). De ce fait, les différentes étapes présentées dans cette section vont aboutir à l'obtention d'un certificat signé pour smtp et d'une clé RSA non chiffrée. La première étape crée les données RSA et chiffre le certificat. # mv4 cd /home-nfs/postfix openssl genrsa -out postfix-key.pem 2048 openssl req -new -nodes -key postfix-key.pem -out postfix_DSC.pem Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:France Locality Name (eg, city) []:Rennes Organization Name (eg, company) [Internet Widgits Pty Ltd]:POLUX Organizational Unit Name (eg, section) []:smtp Common Name (eg, YOUR name) []:smtp.polux.org 82 PARTIE 4. SÉCURISATION DES SERVICES Email Address []:admin@polux.org Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: openssl ca -in postfix_DSC.pem -out postfix_cert.pem -days 3650 Au niveau du serveur mv3, les clés RSA sont ajoutées dans le dossier /etc/postfix/ssl et leur droits sont correctement configurés. # mv3 mkdir /etc/postfix/ssl cp /home/nfs/CAcert.crt /home/nfs/postfix/postfix-key.pem /home/nfs/postfix/postfix_cert.pem /etc/postfix/ssl cd /etc/postfix/ssl chown root.root * chmod 400 postfix-key.pem chmod 440 postfix_cert.pem CAcert.crt Configuration de SASLAprès avoir configuré (mais non lancé) les communications SSL, il faut également configurer le support SASL. La première étape consiste à installer l'extension sasl pour postfix et à configurer saslauthd, utilisé par l'extension SASL. USE=sals emerge postfix rc-update add saslauthd default /etc/init.d/saslauthd start La configuration de SASL repose sur le fichier /etc/sasl2/smtpd.conf. Dans notre cas, l'utilisation de saslauthd permet l'utilisation de ldap. Il est donc nécessaire d'indiquer à SASL d'utiliser l'authentification via saslauthd : pwcheck_method: saslauthd mech_list: plainlogin Configuration de salsauthdSaslauthd supporte différents mécanismes d'authentification tels que ldap, sasldb ou encore pam. Ces information sont configurables dans le fichier /etc/conf.d/salsauthd. Dans notre cas, nous utilisons ldap et nous avons donc :
SASL_AUTHMECH=" ldap "
SASLAUTHD_OPTS="-a ${SASL_AUTHMECH} -O /etc/sasl2/saslauthd.conf "
Comme indiqué par SASLAUTHD_OPTS, les options relatives à ldap sont stockées dans le fichier /etc/sasl2/saslauthd.conf : ldap_servers: ldaps://LDAP_URL:636 ldap_version: 3 ldap_search_base: ou=mail , ou=accounts ,ROOT_DN ldap_scope: sub ldap_filter: uid=%u ldap_auth_method: bind ldap_bind_dn: cn=sasl,ou=ldap,ou=accounts,ROOT_DN ldap_password: MDP Ce fichier contient des informations sensibles. il est donc nécessaire de le protéger par chmod o= /etc/sasl2/saslauthd.conf. Cette protection renforce la sécurité, bien que les extensions du module SASL de SELinux (type saslauthd_config_t) assure la confidentialité des fichiers du répertoire /etc/sasl2. Afin d'éviter d'avoir des problèmes au niveau de postfix, il est possible de vérifier si saslauthd a bien été configuré en utilisant la commande ./testsaslauthd -u user -p pass, après avoir redémarrer le démon. Activation des protocolesAprès avoir défini les condigurations de base, il est nécessaire d'activer les extensions de sécurité (SSL et SASL) de postfix.Activation de TLSL'activation de TLS/SSL se base sur le fichier /etc/postfix/master.cf. Il suffit de décommentez les lignes suivantes :~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ ~~~~~~~ smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ ~~~~~~~ La confoguration de TLS/SSL au niveau de postfix se base également sur le fichier /etc/postfix/main.cf : smtpd_tls_cert_file = /etc/postfix/ssl/postfix_CRT.pem smtpd_tls_key_file = /etc/postfix/ssl/postfix-key.pem smtpd_tls_CAfile = /etc/postfix/ssl/CAcert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_use_tls = yes #smtpd_enforce_tls = yes smtpd_tls_auth_only = no smtpd_tls_session_cache_database = btree:/var/run/ smtpd_tls_session_cache Les trois premières lignes définissent les emplacement du certificat pour stmp (smtpd_tls_cert_file), de la clé RSA (smtpd_tls_key_file) et du certificat racine (smtpd_tls_CAfile). Les lignes suivantes configure TLS : smtpd_tls_loglevel indique le niveau d'enregistrement dans les logs (1 signie informations de négociation), smtpd_tls_received_header indique si les informations tls sont à rajoutées dans les messages, smtpd_use_tls active TLS et smtpd_tls_auth_only force l'utilisation de TLS pour les connexions authentifiées. Activation de SASLL'activation de SASL se configure également au niveau du fichier /etc/postfix/main.cf. smtpd_sasl_auth_enable active SASL, smtpd_recipient_restrictions définit les autorisations d'envois de courrier, smtpd_sasl_authenticated_headeraffiche les noms de login SASL dans l'en-tête des messages, broken_sasl_auth_clients assure la compatibilité avec d'ancien clients. smtpd_sasl_security_options et smtpd_client_restrictions permettent de renforcer la sécurité lors de l'authentification : les clients sont obligés de s'identifier et aucun login anonyme n'est autorisé. smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_r e c ipi ent_r e s t r i c t i ons = permit_mynetworks pe rmi t_sas l_authent i cat ed r e j e c t_unauth_de s t inat ion smtpd_c l i ent_r e s t r i c t i ons = permi t_sas l_authent icated , r e j e c t smtpd_sasl_authenticated_header = yes smtpd_sas l_secur i ty_opt ions = noanonymous broken_sas l_auth_cl ient s = yes smtpd_sasl_path = smtpd SMTP et webmailApache ne peut pas utiliser tls. Ce problème est probablement du au fait que TLS n'et pas supporté sur le serveur (module pear). De ce fait, l'utilisation de smtpd_enforce_tls = yes engendre l'erreur "Une erreur est survenue lors de l'envoi du message : Failed to set sender : admin@polux.org [SMTP: Invalid response code received from server (code: 530, response: 5.7.0 Must issue a STARTTLS command first ) ]". Celà est du au fait que smtp oblige l'utilisation de STARTTLS avant l'authentifcation SASL. La solution consiste donc à désactiver l'aspect obligatoire (smtpd_enforce_tls = no). Les connexions sur horde se font donc via SSL. Cependant, il sera possible qu'un utilisateur se connecte en TLS non sécurisé.
«Design-by-assumption works as long as assumptions hold. Assumptions are
shortcuts to useful efficiencies, provided they are not violated. »
|