Authentification SMTP avec Postfix et Dovecot SASL

Un serveur SMTP a habituellement deux fonctions dans une infrastructure de messagerie :

  • Recevoir les messages de l’extérieur pour les stocker dans les boites internes
  • Envoyer les messages soumis depuis les boîtes internes vers le monde extérieur

Si pour l’action « Recevoir » il n’y a généralement pas d’authentification de l’expéditeur (tout inconnu peut envoyer un mail vers votre serveur SMTP), il n’en est pas de même pour l’action « Soumission des messages ». Imaginez si tout inconnu pouvait envoyer des mails depuis votre serveur SMTP ! Ce serait le paradis des spammeurs 🙂 Ces paradis existent encore, il s’agit des fameux « relais ouverts ». Heureusement, ces serveurs sont très vites mis sur des liste noires par la plupart de hébergeurs de boîtes mails. Cela signifie que si votre serveur SMTP est lui-même un relais ouvert, alors même vos messages légitimes seront mis à la poubelle par les filtres anti-spam des hébergeurs.

Par défaut, le serveur SMTP Postfix autorise la soumission des messages uniquement depuis des clients positionnés dans le même réseau que le serveur lui-même. Pas très pratique pour la mobilité ! Nous verrons donc dans cet article comment mettre en place un système d’authentification SMTP des clients avec Postfix et l’implémentation SASL Dovecot.

Article écrit avec les versions Dovecot 2.2.13 et Postfix 2.11.3.

Continuer la lecture de « Authentification SMTP avec Postfix et Dovecot SASL »

Authentifier avec Apache

Le but de cette petite note est l'authentification simple avec Apache permettant un contrôle d'accès sur un site.

L'environnement est un serveur Ubuntu en version 12.04 LTS muni d'un noyau Linux en version 3.2.13 et d'un serveur Apache en version 2.2.22.

1 – Créer un fichier utilisateur

La première chose à faire est de créer un fichier contenant les utilisateurs et mots de passe qui pourront se connecter au site.

Pour cela, il faut utiliser l'utilitaire htpasswd fourni par Apache.

La commande prendra trois arguments :

  • -c : pour créer le fichier, à ne plus utiliser lors de l'ajout d'autres utilisateurs
  • le nom du fichier contenant les utilisateurs/mots de passe
  • l'utilisateur à ajouter

Nous allons donc créer le fichier par l'ajout d'un premier utilisateur, la commande nous demandera ensuite de taper deux fois le mot de passe associé :

# htpasswd -c /etc/apache2/passwords toto
New password:
Re-type new password:
Adding password for user toto

Le nom et l'emplacement du fichier sont libres, attention à ne pas le mettre dans un répertoire accessible depuis l'Internet !

2 – Configurer Apache

La configuration de l'authentification peut se faire dans un fichier .htaccess situé dans le répertoire à protéger, ou dans une directive <Directory> de la configuration du site.

C'est cette deuxième méthode qui sera utilisée ici. Dans la section <Directory> correspondant au répertoire à protéger, nous allons ajouter ces directives :

AuthType Basic

Indique le type d'authentification, ici Basic. Attention, cela signifie que les mots de passe passeront en clair sur le réseau, ce type d'authentification est à coupler avec l'utilisation d'une couche SSL.

AuthName "Restricted Area"

Le nom de la zone à protéger. Elle sert à la fois d'information au visiteur mais permet aussi de regrouper plusieurs emplacements, évitant ainsi à l'utilisateur de devoir se ré-authentifier à chaque changement d'emplacement.

AuthBasicProvider file

Le fournisseur de l'authentification, ici un fichier. Ce pourrait être une base de données ou un LDAP par exemple.

AuthUserFile /etc/apache2/passwords

Comme on a précisé avant que l'on utilisé un fichier, cette directive indique son emplacement.

Require valid-user

Ce qui est requis pour accéder au répertoire. Ce pourrait être un nom d'utilisateur, ici on indique plutôt que tout utilisateur présent dans le fichier peut accéder au répertoire si son authentification a réussie.

3 – Redémarrer et tester

Il n'y a plus qu'à redémarrer Apache pour la prise en compte des modifications de configuration :

# service apache2 reload
 * Reloading web server config apache2                                                                    [ OK ]

Et à tester en se rendant sur la page : devrait alors apparaitre une boite de dialogue permettant de s'authentifier avec l'utilisateur et mot de passe configurés précédemment !

Dovecot : utilisation de SSL pour l’IMAP

Le but de cette note est de sécuriser une connexion IMAP à un serveur Dovecot via l’utilisation du protocole SSL/TLS.

Pour l’installation de Dovecot, on se reportera à cette note : installer un serveur de mail sous Linux avec Dovecot

Article écrit avec les versions Dovecot 2.2.13 et OpenSSL 1.0.1t.

Article mis à jour le 11/10/2016

Continuer la lecture de « Dovecot : utilisation de SSL pour l’IMAP »

Dovecot : authentification IMAP

Suite à l'installation du serveur IMAP Dovecot (cf : http://blog.moncoindunet.fr/linux/installer-un-serveur-de-mail-sous-linux-23-dovecot/), je vais ici m'intéresser aux principes d'authentification IMAP offerts par ce serveur.

Cette note sera découpée en deux parties :

  • première partie théorique, où je passerai en revue les notions et méthodes disponibles dans Dovecot
  • deuxième partie pratique, avec la mise en place d'authentifications régulièrement utilisées

Dans cette note sera évoquée la mise en place d'une authentification Dovecot sans utilisation d'une application externe. La mise en place d'une authentification couplée avec SSL ou LDAP par exemple sera traitée dans des notes ultérieures, de même que l'interaction avec Postfix.

Au niveau de la configuration, avant Dovecot 2 toutes les directives de configuration se situées dans le fichier dovecot.conf. A partir de la version 2, ce fichier a été éclaté en plusieurs fichiers situés dans conf.d, par exemple 10-auth.conf. Je parlerai donc de ces nouveaux fichiers, si vous avez une version de Dovecot inférieure à la 2, la directive se trouvera donc dans le fichier dovecot.conf (moyennant parfois quelques modifications de syntaxe).

Logiciel utilisé : Dovecot 2.0.8

Continuer la lecture de « Dovecot : authentification IMAP »

Configurer Apache avec SSL

SSL (Secure Socket Layer) est un protocole permettant de sécuriser une communication entre deux points, typiquement un client et un serveur.

Il peut être couplé au protocole HTTP pour former le HTTP sécurisé (HTTPS) qui apporte à la communication entre le client et le serveur Web :

  • la confidentialité : les données sont cryptées et donc pas lisibles par un tiers
  • l'intégrité : vérification que les données n'ont pas été modifiées pendant le transport
  • l'authentification : vérification que le serveur (ou le client) est bien celui qu'il prétend être

Le but de cette note est donc de configurer un serveur Web Apache pour qu'il prenne en compte le SSL, permettant ainsi d'accéder à des sites Webs en HTTPS.

Continuer la lecture de « Configurer Apache avec SSL »

OpenSSL : créer un certificat auto-signé

OpenSSL est une boite à outils open source qui implémente SSL/TLS ainsi qu’une bibliothèque de cryptographie.

Il va nous permettre dans cet article de générer un certificat auto-signé. Ce type de certificat est très utile dans un cadre d’utilisation personnelle, par exemple pour implémenter les variantes sécurisées des protocoles tels que HTTP, IMAP ou SMTP qui deviendront alors HTTPs, IMAPs et SMTPs.

Article écrit avec OpenSSL en version 1.0.1e.

Article mis à jour le 12/10/2016

Continuer la lecture de « OpenSSL : créer un certificat auto-signé »

Générer un mot de passe aléatoire sous Linux

Voici un enchainement de commandes simples qui permet de générer très facilement une chaîne de caractère aléatoire composée de lettres minuscules, majuscules et de chiffres, et qui peut donc être utilisée comme générateur de mot de passe :

$ tr -d -c "a-zA-Z0-9" < /dev/urandom | head -c 8

Petite explication de texte :

  • /dev/urandom : interface du générateur de nombres aléatoires du noyau
  • tr : commande utilisée pour supprimer tous les caractères (option -d) ne correspondant pas (option -c) à la chaîne de caractères qui suit. Ici, on garde les lettres minuscules (a-z), les lettres majuscules (A-Z) et les chiffres (0-9). D’autres caractères peuvent être ajoutés, par exemple a-zA-Z0-9;,:?\!_- pour complexifier un peu plus le mot de passe.
  • head : commande qui permet de sélectionner les 8 premiers caractères (option -c 8). A adapter selon la longueur du mot de passe souhaitée.