Professional Documents
Culture Documents
Mise en Place D Un Systeme de Messagerie Securisee Pour Une Pme Pmi 130415031641 Phpapp02 1 PDF
Mise en Place D Un Systeme de Messagerie Securisee Pour Une Pme Pmi 130415031641 Phpapp02 1 PDF
Sous la direction de :
M. TRAORE Mahamadou
A mon défunt et regretté père Ibrahima CISSE qui, de son vivant, n’a cessé
d’inculquer en moi l’art de
bien faire et celui de ne jamais laisser tomber devant une difficulté. Je lui dois
cette réussite.
A mes très respectueux petits frères Mamadou Lakhassane et Papa Ali CISSE.
A ma chère sœur Aissatou Cisse sans qui ce mémoire n’aurait pas pu être rédigé. Tu
comprendras.
A mes oncles Saër Badiane, Mamadou Lakhassane Cisse qui me sont si chères et à qui
je suis très
reconnaissant.
Enfin à toute ma famille, mes amis, voisins, camarades de classe et toute personne
qui de près ou de
loin n’a cessé de me soutenir durant mon parcours.
Notre reconnaissance ensuite à nos proches, amis et à toutes les personnes de bonne
volonté qui nous ont aidé tout au long de notre parcours.
Présenté et soutenu par : Papa Cheikh CISSE et Mactar Ndiaga SECK Page | 4
3.1.2 Configurer Postfix et Dovecot pour SASL
48
3.2 Sécurisation des communications
51
3.2.1 Protection contre l’Open-Relay et le spam
51
3.2.2 Les certificats SSL
53
3.2.3 Chiffrement des communications IMAP et SMTP avec OpenSSL
55
3.2.4 Configuration d’un firewall
57
3.3 Gérer l’intégrité des données
59
3.3.1 Filtrage de contenu avec Amavis
59
3.3.2 Intégration d’un antivirus : ClamAV
60
3.3.3 Intégration d’un Anti Spam : Spamassassin
61
3.3.4 Tri des messages avec SIEVE
65
Bibliographie / Webographie
69
Conclusion
70
Annexes
71
Présenté et soutenu par : Papa Cheikh CISSE et Mactar Ndiaga SECK Page |
5
Liste des tableaux
Tableau 1 : Récapitulatif des principales commandes
SMTP__________________________71
Présenté et soutenu par : Papa Cheikh CISSE et Mactar Ndiaga SECK Page
| 6
Liste des figures
Figure 1 : Architecture de fonctionnement des différents éléments du système de
messagerie____ 19
Figure 2 : Menu d’installation d’Ubuntu Server 10.04
LTS__________________________________ 23
Figure 3 : choix d’une adresse IP fixe pour le
serveur______________________________________24
Figure 4 : Sélection de services à installer en même temps qu’Ubuntu-
Server__________________25
Figure 5 : Ecran de première connexion au
serveur_______________________________________ 26
Figure 6 : Première étape de la configuration de
Postfix___________________________________ 35
Figure 7 : Interface de configuration de RoundCube (RoundCube Installer)
____________________42
Figure 8 : Interface de connexion du RoundCube
Webmail_________________________________43
Figure 9 : Boite aux lettres d’un
utilisateur______________________________________________43
Le MTA est un programme qui permet d’envoyer le message d’un serveur à un autre. Ce
logiciel est situé sur chaque serveur de messagerie. Il est composé d’un agent de
routage et
d’un agent de transmission. Il envoie le message via un protocole sortant. Notons
que les
protocoles sortants permettent de gérer la transmission du courrier entre les
systèmes de
messagerie et le plus utilisé est le Simple Mail Transfert Protocol (SMTP). Les
messages sont
transférés au MTA du destinataire, sauf si celui-ci est le MTA traitant
actuellement le mail :
dans ce cas le message est transféré à un MDA. Lorsqu'un MTA veut transférer un
message à
un MTA qui est indisponible, il met ce message dans sa file d'attente : il essaiera
plusieurs
fois de retransmettre le message, jusqu'à ce que le MTA destinataire soit à nouveau
disponible. Au-delà d'un certain nombre d'essais infructueux (ou d'une certaine
durée selon
la configuration), le message sera rejeté par le MTA. Il peut rejeter un message
reçu pour
une de ces raisons :
serveur non concerné : les MTA sont en général configurés pour n'accepter que
des
messages expédiés par des personnes appartenant à un certain réseau (par
exemple
celui des clients pour un FAI) et/ou que des messages destinés à certaines
adresses.
Le MDA est un agent qui est en charge de la gestion des boites aux lettres. Il
prélève le
courrier dans les files d’attentes du MTA et le dépose dans le répertoire de boites
aux lettres
Un protocole est une méthode standard qui permet la communication entre des
processus
(s'exécutant éventuellement sur différentes machines), c'est-à-dire un ensemble de
règles et
de procédures à respecter pour émettre et recevoir des données sur un réseau. Il en
existe
plusieurs selon ce que l'on attend de la communication.
On les classe généralement en deux catégories:
Les protocoles orientés connexion: Il s'agit des protocoles opérant un contrôle
de
transmission des données pendant une communication établie entre deux machines.
Les protocoles non orientés connexion: lorsqu’aucune connexion n’est établie
entre la
machine émettrice et celle réceptrice.
Il existe ainsi une syntaxe précise pour envoyer des messages et une série de codes
retour
pour indiquer le statut de la demande.
Pour les codes de retour, émis par le serveur, il est possible de se repérer
facilement à l’aide
du premier chiffre du code :
Code 2 : La demande a été exécutée sans erreur.
Code 3 : La demande est en cours d’exécution
Code 4 : Indique une erreur temporaire
Code 5 : La demande n’est pas valide et n’a pas pu être traitée. Vérifiez
votre
syntaxe.
Voir en annexe un récapitulatif des principales commandes SMTP ainsi que les
différents
codes de retour du protocole SMTP et leurs significations.
Cependant, le protocole SMTP ne permet pas la récupération de mails, d’où l’utilité
des
protocoles tels que POP3 et IMAP.
Les protocoles POP (Post Office Protocol) et IMAP (Internet Message Access
Protocol)
permettent d'aller récupérer du courrier sur un serveur distant.
Tout comme dans le cas du protocole SMTP, le protocole POP fonctionne grâce à des
commandes textuelles envoyées au serveur POP. Chacune des commandes envoyées par le
client (validée par la touche « Entrée ») est composée d'un mot-clé, éventuellement
accompagné d'un ou plusieurs arguments et est suivie d'une réponse du serveur POP
composée d'un numéro et d'un message descriptif.
Le protocole POP3 gère ainsi l'authentification à l'aide d'un nom d'utilisateur et
d'un mot de
passe, il n'est par contre pas sécurisé car les mots de passe, au même titre que
les mails,
circulent en clair sur le réseau. D'autre part le protocole POP3 bloque la boîte
aux lettres
lors de la consultation, ce qui signifie qu'une consultation simultanée par deux
utilisateurs
d'une même boîte aux lettres est impossible.
En annexe, un tableau récapitulatif des commandes POP3.
Le protocole IMAP (Internet Message Access Protocol) est un protocole alternatif au
protocole POP3 mais beaucoup plus complet et offrant beaucoup plus de
possibilités :
IMAP permet de gérer plusieurs accès simultanés.
IMAP permet de gérer plusieurs boîtes aux lettres.
IMAP permet de trier le courrier selon plus de critères.
Le protocole IMAP permet de répondre beaucoup mieux à des besoins de déplacement.
Il
minimise également les échanges de données sur le réseau. La plupart des clients de
messagerie implémentent le protocole IMAP puisque celui-ci est largement utilisé
par les
différents fournisseurs d'accès à Internet.
Les différents éléments d’un système de messagerie sont agencés selon une
architecture
logique, pour en assurer le fonctionnement. L’architecture d’un système de
messagerie peut
être représentée de la sorte :
Le MTA pour Mail Transfert Agent est l’agent de messagerie qui permet d’acheminer
le
courriel d’un serveur à un autre. C’est un programme doté d’une fonction de
routage et
Le MDA (Mail Delivery Agent) est un programme qui est en charge de la gestion des
boîtes aux lettres. Il assure la livraison du courriel dans la boîte à messages
du
destinataire. C’est lui qui récupère le courriel du serveur IMAP/POP3, et le met
à
disposition du MUA. Pour cela, il est souvent considéré comme le point final
d'un
système de messagerie. Dans le MDA, il est possible de filtrer les courriels et
aussi de
supprimer les spams. Il existe plusieurs serveurs MDA et parmi les plus courants
figurent
Dovecot, Procmail, Maildrop et Cyrus. Ici, nous avons choisi Dovecot, intégré
dans la
version serveur de Ubuntu 10.04 LTS, comme notre MDA.
Nous allons choisir, l’option Installer Ubuntu Server. Il s’en suivra le choix de
nos paramètres
régionaux puis celui de l’agencement de notre clavier. Nous allons devoir choisir
notre pays,
notre langage, etc.
Après cela, le programme d’installation d’Ubuntu Server va passer à la
configuration du
réseau. Cela suppose que nous avons sur notre futur serveur tous les matériels
réseaux
nécessaires à sa bonne marche. Choisissons l’option Configurer vous-même le réseau.
Ainsi
apparait par la suite un écran qui nous invite à choisir pour notre futur serveur
une adresse
IP comme ceci :
Nous mettrons ensuite le bon masque de sous-réseau. Dans notre cas, le masque
choisi est
255.255.255.0. Comme passerelle, nous laissons le champ vide, et pour l’adresse du
serveur de noms, nous mettons 192.168.10.1. Cela est du fait que, le serveur sur
lequel
on installe ce système d’exploitation jouera en même temps le rôle de serveur de
noms (Voir
chapitre suivant pour la configuration d’un serveur DNS).
On passera, après cela, aux choix des noms de machine (ou hostname) et de domaine
qui
mettront fin aux étapes de configuration du réseau. Voici les valeurs choisies dans
notre cas :
Ceci veut dire que le serveur sera mail.minfo.sn. C’est-à-dire la machine qui
s’appelle
mail dans le domaine minfo.sn.
Après ces étapes, le setup va passer à la détection des disques et autres
périphériques sur
notre serveur. Ceci nous amènera par la suite au partitionnement. Cependant, nous
ne nous
attarderons pas sur ce point. Dans notre présent cas, nous avons juste choisi :
Une partition / pour le système de fichiers racine.
Une autre /home de taille suffisamment grande car c’est dans ce répertoire que
l’on
choisira par la suite de garder les courriels des utilisateurs du système (Voir
configuration
du serveur IMAP).
Ainsi comme le montre la capture précédente, nous avons juste choisi de mettre en
place les
serveurs DNS, LAMP et Mail. Pour le DNS, le système va installer le programme bind,
pour
LAMP on aura Apache, MySQL et PHP d’installé et enfin pour le serveur Mail, le
système va
mettre Postfix en place. Faut aussi savoir que tous ces outils peuvent être
installés bien
après la mise en place du système d’exploitation (Voir les chapitres suivants
concernant les
installations et configurations des différents services).
L’installation de notre système d’exploitation va se poursuivre pour enfin terminer
avec la
configuration de ces différents services.
Le DNS pour Domain Name System est l'ensemble des règles utilisées par les machines
et les
logiciels pour établir, entre autres choses, la correspondance entre les noms de
machines et
les adresses IP, dont chaque machine sur internet est pourvue. Le serveur de noms
permet
d'associer une adresse IP à un nom. Dans un réseau, chaque machine se voit
attribuer une
adresse IP unique qui permet de l'identifier. C'est un peu comme une adresse
postale, qui
Dans etc/host.conf, il doit être indiqué quels services de conversion de noms sont
disponibles, et dans quel ordre il faut les appliquer :
Nous pouvons passer à la propre mise en place du DNS en lançant, avec les
privilèges de
super-utilisateur, la commande suivante :
[…]
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
zone "0.0.127.in-addr-arpa"{
type master;
file "named.local";
};
zone "10.168.192.in-addr.arpa"{
type master;
file "minfo.sn.rev";
};
zone "minfo.sn"{
type master;
file "minfo.sn";
};
type master pour indiquer à bind, qu’il s’agit ici d’un serveur DNS primaire ayant
autorité
sur la zone déclarée.
minfo.sn
$TTL 604800
@ IN SOA mail.minfo.sn. root.mail.minfo.sn. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
minfo.sn. IN NS mail.minfo.sn.
mail IN A 192.168.10.1
www IN CNAME mail
minfo.sn IN MX 10 mail.minfo.sn.
minfo.sn.rev
$TTL 604800
@ IN SOA mail.minfo.sn. root.mail.minfo.sn. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS mail.minfo.sn.
@ IN A 192.168.10.1
1 IN PTR mail.minfo.sn.
Après ces trois étapes, nous avons un DNS fonctionnel que nous pourrons tester de
cette
manière :
Name: mail.minfo.sn
Address: 192.168.10.1
> 192.168.10.1
Server: 192.168.10.1
Address: 192.168.10.1#53
1.10.168.192.in-addr.arpa name = mail.minfo.sn
>
Ce test montre que notre serveur de noms de domaines est bien configuré et qu’il
peut
résoudre une adresse ip à partir d’un nom et vice-versa.
Nous avons vu que pour consulter ses messages et pour en envoyer, l’utilisateur
avait le
choix entre utiliser un client lourd de messagerie tel que Mozilla Thunderbird,
Outlook parmi
tant d’autres, ou utiliser un webmail, c’est-à-dire un client léger. Ce webmail
n’est rien
d’autre qu’une sorte de site web. De ce fait, il n’est accessible que via un
navigateur web tel
que Firefox de Mozilla, Internet Explorer, etc.
Ainsi, lorsque l’utilisateur, via un quelconque poste client, accède à son compte
de
messagerie grâce à un navigateur, cela suppose qu’il y’a en plus du service de
messagerie, un
service web disponible sur le serveur mail. Dès lors, pour que les employés d’une
structure
telle qu’une PME/PMI puissent de n’importe quelle manière accéder à leurs messages
électroniques, il nous faudra installer et configurer un service web.
Pour installer un serveur web (serveur HTTP), nous allons utiliser une application
bien
connue des administrateurs réseaux : Apache.
Lorsque le choix du système d’exploitation devant héberger le serveur est porté sur
la
version 10.04 d’Ubuntu, l’installation d’Apache peut se faire directement lors de
l’installation
du système en cochant LAMP (Voir chapitre sur Ubuntu Server 10.04 LTS). Si par
contre, tel
n’est pas le cas, il nous suffira juste de lancer la commande suivante pour
procéder à
l’installation d’un serveur web :
Sendmail :
Sendmail est le doyen de tous les serveurs de messagerie. Son code est ouvert et
fut à une
époque la plus répandu sur les réseaux grâce à ses bonnes performances et une
grande
publicité par les universités. Sendmail est un programme très flexible supportant
un large
éventail de moyens de transfert et de livraison de courriers électroniques,
incluant le
populaire SMTP. La première version de Sendmail a été écrite au début des années
1980 par
Eric Allman (Université de Berkeley), qui avait également écrit Deliver Mail.
Qmail :
Postfix :
Postfix est l’agent de transfert courrier (MTA) par défaut d’Ubuntu. Il est dans
les dépôts
main, donc il reçoit les mises à jour de sécurité. Cette partie décrit son
installation et sa
configuration pour en faire un serveur SMTP.
L’installation du serveur SMTP proprement dite est très simple. Il suffit
d’installer le paquet
Postfix, si ce n’est déjà fait lors de l’installation du système d’exploitation,
avec la
commande :
Nous allons après cette étape indiquer les réseaux pour lesquels notre serveur
pourra
relayer le courriel. On aura comme information dans ce champ les adresses
127.0.0.0/8
et 192.168.10.0/24 séparées par un espace. Postfix va par la suite nous demander si
nous voulons choisir Procmail pour la distribution locale. Nous choisissons de
refuser (No)
car nous mettrons par la suite notre propre agent de distribution à savoir Dovecot
(Voir
chapitres sur Dovecot).
Site internet
minfo.sn
/etc/aliases
minfo.sn, mail.minfo.sn, localhost.minfo.sn, localhost
127.0.0.0/8 192.168.10.0/24
No
0
+
tous
Les courriels ne sont autres que des fichiers envoyés de serveurs à serveurs, un
peu comme
si une lettre ou un colis était envoyé du bureau de Poste de chez vous au bureau de
Poste du
destinataire. Par ailleurs, il existe ce que l’on appelle des clients mail, qui
permettent de
traiter ce courrier. Ces clients peuvent être en ligne, c’est à dire que vous y
accédez via un
site web (Hotmail et Gmail sont typiquement des clients mail en ligne) ou client
léger, ou
bien, il existe également des applications que vous installez sur votre ordinateur,
et qui vont
régulièrement synchroniser votre espace de stockage de mails sur votre ordinateur
avec le
contenu du serveur de mail que vous utilisez. Là, on sera davantage dans des
logiciels type
Mozilla Thunderbird ou Microsoft Outlook.
Un client léger est une application cliente entièrement gérée par un serveur, de la
gestion au
stockage des données. Les utilisateurs de l’application auront accès aux données
par un
portail sécurisé depuis leur navigateur (Internet Explorer, Firefox…).
Pour les systèmes en client léger, l’installation est beaucoup plus simple. On a
tendance à
penser que les applications Web sont moins sécurisées. Pourtant elles permettent de
réduire les risques à un seul serveur. Bien entendu, la sécurisation de celui-ci
est
primordiale, surtout lors d’un partage de l’application sur Internet.
On peut distinguer quelques types de client léger :
SquirrelMail :
SquirrelMail est une application qui permet de consulter son courrier électronique,
stocké
sur un serveur, grâce à un simple navigateur. SquirrelMail est écrit en PHP. Les
fonctions de
base peuvent être étendues par des plugins.
RoundCube Webmail:
Zimbra
Client lourd
Le terme « client lourd », par opposition au client léger, désigne une application
cliente
graphique exécutée sur le système d'exploitation de l'utilisateur. Un client lourd
possède
généralement des capacités de traitement évoluées et peut posséder une interface
graphique sophistiquée. Néanmoins, ceci demande un effort de développement et tend
à
mêler la logique de présentation (l'interface graphique) avec la logique
applicative (les
traitements).
La mise en place d’un système de type client lourd nécessitera une installation de
l’application sur chaque poste. Il faudra donc prévoir des ressources à l’arrivée
de chaque
nouveau collaborateur pour l’installation du logiciel sur le nouveau poste de
travail.
Les applications du type client lourd sont généralement plus sécurisées si elles ne
concernent que quelques utilisateurs. Il faut cependant que tous les postes qui
utilisent
l’application soient sécurisés car une partie des données est stockée sur les
postes des
différents collaborateurs. Cela peut donc multiplier les risques.
Pour permettre l’accès aux boites IMAP depuis n’ importe où, l’installation d’un
Webmail
s’impose. De nombreux webmails Open Source sont disponibles mais celui qui sort du
lot en
ce moment, c’est RoundCube. Il est encore très jeune mais offre de gros atouts coté
ergonomie, notamment grâce à l’utilisation d’AJAX. L’interface est très soignée,
claire et
simple. Techniquement, ça reste très classique, c’est du PHP et ça s’installe très
facilement.
Parmi ses fonctionnalités, on peut noter l’utilisation possible (grâce à AJAX) du
glisser-
déposer, le multilinguisme, un carnet d’adresse, le blocage automatique des images
distantes, la recherche automatique en cours de frappe dans le carnet d’adresse
lors de
l’ajout de destinataire, l’utilisation de comptes multiples pour l’envoi de
messages, le
support MIME, la création de dossier ainsi que la sélection des dossiers affichés.
Pour que RoundCube fonctionne correctement, il faut bien entendu que la machine
héberge
un serveur Apache et un serveur MySQL fonctionnels. La configuration du serveur web
est
décrite ci-dessous.
Tout d’abord télécharger RoundCube (version complète) sur le site www.roundcube.net
et
l’extraire dans un répertoire.
Il est plus pratique de le renommer après l’avoir copié dans la racine web:
# cp roundcubemail-0.3.1 /var/www
# mv /var/www/roundcubemail-0.3.1 /var/www/webmail
Ensuite, il faut donner les droits au serveur d’écrire dans les répertoires temp/
et logs/ :
Il faut créer une base de données qui sera utilisée par RoundCube, avec son propre
utilisateur. Pour cela, démarrons MySQL en tant qu’administrateur (le login et le
mot de
passe ont été choisis lors de la configuration de MySQL) :
On accorde à l’utilisateur user toutes les privilèges sur toutes les tables de la
base de
données webmail:
NameVirtualHost *:443
<VirtualHost *:80>
ServerName mail.minfo.sn
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/webmail
ServerName mail.minfo.sn
<Directory /var/www/webmail/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory /var/www/webmail/config>
# a2ensite webmail
Et recharger Apache :
# /etc/init.d/apache2 reload
Configuration de RoundCube :
Il ne reste plus qu’à configurer RoundCube. Une interface assez explicite a été
développée
dans RoundCube pour cela. Grâce à un navigateur nous allons rentrer l’URL suivant
http://mail.minfo.sn/installer/ après avoir fait de telle sorte que l’on puisse se
connecter sur le serveur. Les différentes étapes de la configuration sont décrites
ici :
Celui-ci devrait bien se passer à part quelques modules optionnels dont on n’aura
pas besoin
ici. Nous avons la capture ci-contre :
Il permet de tester que tout est OK. Il nous faudra cliquer sur Initialise
Database.
Une fois ces étapes effectuées, rendons-nous sur l’adresse du webmail pour vérifier
que ça
fonctionne. Nous pouvons dès lors nous connecter en tant qu’utilisateur du système
de
messagerie. Si tout est ok, supprimez ou renommer le répertoire /var/www/installer/
pour qu’il ne soit plus accessible via l’extérieur:
Voilà deux captures montrant respectivement l’interface de connexion et la boîte
aux lettres
d’un utilisateur :
Présenté et soutenu par : Papa Cheikh CISSE et Mactar Ndiaga SECK Page
| 44
2.3.2.3 Mise en place de Dovecot comme MDA et serveur IMAP
Comme vu un peu plus haut dans ce document, la mise en place d’un MDA est plus que
nécessaire dans un système de messagerie. En effet, c’est un outil situé sur le
serveur de
messagerie et qui a en charge la livraison des messages dans la bonne boîte aux
lettres. En
plus du MDA, un serveur IMAP/POP3, aussi appelé serveur de protocoles entrants est
à
mettre en place. Son rôle à lui sera d’aller récupérer le message situé dans la
boite aux
lettres suite à la quête de celui-ci. Dovecot est un outil qui de par son
efficacité pourra jouer
ces deux rôles. Ainsi, c’est lui que nous avons choisi d’utiliser pour ces
différentes tâches.
Dès lors, nous allons comparer différents MDA existants avant de passer à la
configuration
de notre outil.
Il existe différents MDA dans le monde des serveurs. Parmi ceux-là, on peut citer
Dovecot,
Procmail, Maildrop, Deliver, Mailfilter et Cyrus. Chacun d’entre eux présente des
avantages
et des inconvénients. Des MDA sont aussi intégrés aux grands logiciels de
messagerie
intégrés (Exim par exemple). Ils assurent la gestion de boite à lettres, le
filtrage des
messages , l’envoi de message de réponse automatique.
# etc/init.d/dovecot restart
Il est aussi possible de mettre imap à la place de 143 ou pop3 à la place de 110.
Ceci montre
que notre serveur imap et pop3 est maintenant fonctionnel.
SASL pour Simple Authentication and Security Layer est une méthode qui offre un
support
d’authentification à des protocoles orientés connexion. SASL inclut des commandes
pour
identifier et authentifier un utilisateur sur un serveur et pour éventuellement
négocier la
protection des interactions du protocole. Si son utilisation aboutit, une couche de
sécurité
est insérée entre le protocole et la connexion.
Si l’on utilise Dovecot comme serveur IMAP, il est maintenant possible d’utiliser
son démon
d’authentification pour réaliser l’authentification SMTP via SASL. Nous allons
passer à la
configuration des serveurs SMTP et IMAP/POP3 dans la section qui suit.
Après cela, il nous reste à configurer Dovecot pour qu’il réponde aux requêtes
d’authentification de Postfix. Ceci se fait dans le ficher
/etc/dovecot/dovecot.conf, il
suffit de rajouter les lignes suivantes dans la section socket listen :
Bien entendu, pour que les modifications soient prises en compte, il faut
redémarrer les
services avec les commandes suivantes :
# /etc/init.d/dovecot restart
# /etc/init.d/postfix restart
On parle d’Open-Relay lorsqu’on est en face d’un serveur SMTP qui autorise tous les
messages électroniques entrants à transiter par lui pour atteindre d’autres
domaines. Il
s’agit d’un mécanisme qui consiste à accepter de transmettre un message à un
destinataire
quelconque. C’est le comportement par défaut de plusieurs serveurs SMTP. Cependant
plusieurs spammeurs ont par la suite commencé à abuser de cette fonctionnalité pour
causer des dégâts ; ce qui a poussé les administrateurs réseaux et systèmes à
contrôler les
flux entrants et à empêcher le relais pour leurs serveurs afin de ne pas se
retrouver
« blacklisté ».
Ainsi pour augmenter la sécurité de notre serveur de mail, il est important de
contrôler les
échanges avec les serveurs SMTP ouverts (Open Relay). Ces serveurs sont utilisés
pour
envoyer des messages électroniques non sollicités, connus sous le nom de spam. Pour
cela, il
existe des listes d’adresses IP correspondant aux machines qui fonctionnent comme
des
serveurs SMTP ouverts. On peut donc demander à Postfix de consulter ces listes
avant
d’accepter un message entrant. Ceci est réalisé grâce à la
directive
smtpd_client_restrictions dans le fichier /etc/postfix/main.cf. Enfin pour
éviter que notre serveur devienne lui-même ouvert, il faut limiter les accès de
façon très
stricte. Par exemple, on peut rejeter le mail si les en-têtes sont incomplètes, si
le message
est mal formé, etc. Par contre, mes messages provenant des réseaux connus
(my_networks) ou des personnes authentifiées (sasl_authenticated) seront toujours
acceptés.
Nous devons modifier notre fichier /etc/main.cf de façon à avoir les lignes
suivantes :
Présenté et soutenu par : Papa Cheikh CISSE et Mactar Ndiaga SECK Page | 52
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_destination,
permit
Comme nous l’avons vu plus haut, les services de messagerie (SMTP et IMAP)
demandent
une authentification de la part des utilisateurs. Dans ce cas, ce dernier va
fournir un couple
login/mot de passe qui devra transiter sur le réseau entre le client et le serveur.
Pour que
ces identifiants ne circulent pas en clair, la plupart des services offrent la
possibilité de
chiffrer les échanges à l’aide d’OpenSSL.
Pour cela, chaque service doit disposer d’un certificat SSL qui permettra de
s’assurer de son
authenticité et de chiffrer/déchiffrer les communications.
Le fichier de configuration ci-dessous permettra de générer le certificat du
serveur SMTPS.
On peut par exemple l’enregistrer dans /etc/ssl/smtpd.cnf.
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
prompt = no
string_mask = nombstr
Nous allons ensuite générer le certificat et restreindre les privilèges sur la clé
privée. Il nous
suffira de lancer les commandes suivantes :
protocols = imaps
ssl_cert_file = /etc/ssl/certs/imapd.pem
ssl_key_file = /etc/ssl/private/imapd.key
Notons que le paramètre protocols ne devra contenir que la valeur imaps, les autres
protocoles de relève de courrier étant bannis. Avec cette configuration, les
clients peuvent
maintenant se connecter au serveur IMAP uniquement sur le port 993 et toutes les
communications seront chiffrées.
Il reste simplement à redémarrer le serveur avant de faire un premier test en ligne
de
commande:
# /etc/init.d/dovecot restart
# openssl s_client -connect mail.minfo.sn:993
---
* OK Dovecot ready.
. login user minfo
. OK Logged in.
. logout
* BYE Logging out
. Logout completed.
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.pem
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
# etc/init.d/postfix restart
Le but d’un firewall est d’empêcher que des programmes puissent communiquer sur le
réseau sans votre accord.
Les iptables représentent le plus célèbre firewall utilisé sous Linux. Il permet
d’établir un
certain nombre de règles pour dire par quels ports on peut se connecter à votre
ordinateur,
mais aussi à quels ports vous avez le droit de vous connecter. On peut aussi
filtrer par IP
mais nous ne détaillerons pas cela ici.
Par exemple, si nous voulons empêcher toute connexion FTP, nous pouvons souhaiter
bloquer le port 21 (utilisé par FTP). Nous utiliserons les iptables pour mettre en
place notre
firewall.
En général, la technique d’un pare feu ne consiste pas à bloquer certains ports,
mais plutôt à
bloquer par défaut tous les ports et à en autoriser seulement quelques-uns.
Pour bloquer tous les ports :
Ainsi notre serveur refusera tout trafic entrant (INPUT DROP), sortant (OUTPUT
DROP) ou
qui doit juste passer par lui (FORWARD DROP).
Nous allons ensuite autoriser le trafic sur l’interface de loopback locale. Ceci
car le serveur a
quelquefois besoin de communiquer avec lui-même. Dans la configuration retenue ici,
il faut
ouvrir uniquement les ports suivant en entrée :
Cela fait, nous allons autoriser les requêtes de type ICMP, ne serait-ce que pour
pouvoir
s’assurer que notre serveur est toujours en vie, grâce à cette commande :
Ainsi, nous venons de configurer notre pare feu avant d’éviter toute intrusion
indésirable
dans notre système. Ceci grâce aux iptables. Il existe en guise d’information,
depuis la
version 8.04 LTS d’Ubuntu, un autre outil, aux commandes assez simples, très
puissant et qui
permet de configurer un pare feu, constituant ainsi une alternative aux iptables :
il
s’agit de UFW (Uncomplicated FireWall).
Cependant, avoir un firewall ne prémunit pas contre les dangers. En revanche, cela
rend la
tâche particulièrement difficile aux pirates qui voudraient accéder à notre
serveur.
content_filter = amavis:[127.0.0.1]:10024
# /etc/init.d/amavis restart
# /etc/init.d/postfix restart
Il existe de nombreux antivirus mais beaucoup sont distribués sous des licences
propriétaires. Dans le monde de l’Open, il existe ClamAV qui fait très bien son
boulot. Pour
qu’Amavis puisse faire du filtrage antivirus, il faut donc installer ClamAV ainsi
que quelques
librairies de compression (pour analyser les archives). L’installation peut se
faire à partir de
la commande suivante:
ClamAV est l’antivirus qui va lire le contenu des mails puis le valider et le
transmettre à
Postfix ou le rejeter. Pour que tout se passe correctement, il faut maintenant
s’assurer que
l’utilisateur "clamav" fasse partie du groupe "amavis".
@bypass_virus_checks_maps=(\%bypass_virus_checks,\@bypass_virus_checks_acl,
\$bypass_virus_checks_re);
$final_virus_destiny = D_BOUNCE;
# /etc/init.d/clamav-daemon restart
# /etc/init.d/amavis restart
Le but de Spamassassin est de filtrer le trafic des courriels pour éradiquer les
courriels
reconnus comme pourriels ou courriels non sollicités.
Face à l'augmentation importante du spam, ce logiciel connaît un engouement
important et
est adaptable sur de nombreux serveurs de courriels dont Sendmail, Postfix, Exim,
Qmail ; il
peut être installé sur la plupart des systèmes basés sur Linux, Windows et Mac OS
X.
Spamassassin est un programme écrit en Perl qui fait passer un certain nombre de
tests au
message. En fonction du résultat de ces tests, il attribue un score au courriel.
Si le score dépasse un certain seuil, le courriel est alors considéré comme du
Spam.
Spamassassin modifie alors le titre du message (il l'encadre par ***** SPAM *****).
De plus,
Spamassassin positionne deux nouveaux en-têtes au message : X-Spam-Status et X-
Spam-
Level.
Ces deux en-têtes permettent alors de créer des filtres dans votre client de
messagerie pour
orienter le message (par exemple le mettre dans la corbeille).
CRON =1
# sa -update
report_safe 0
lock_method flock
# Bayes -related operations
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
bayes_auto_expire 1
bayes_path /var/lib/amavis /.spamassassin /bayes
bayes_file_mode 0777
# External network tests
dns_available yes
skip_rbl_checks 0
use_razor2 1
use_pyzor 1
# Use URIBL (http :// www.uribl.com/about.shtml)
urirhssub URIBL_BLACK multi.uribl.com. A 2
# su - amavis
$ razor -admin -d --create
$ razor -admin -register
$ razor -admin -discover
# su - amavis
$ pyzor disposer
Notons qu’avec la configuration ci-dessus, les en-têtes de spam seront ajoutées sur
tous les
messages, quel que soit le score obtenu. Par ailleurs, tous les messages atteignant
un score
supérieur à 6.0 seront considérés comme Spam.
# /etc/init.d/amavis restart
Dovecot est conçu en favorisant toujours les aspects de sécurité. Il est activement
développé
et implémente de nombreuses fonctionnalités. L’un des atouts intéressant de Dovecot
est la
gestion des filtres SIEVE. SIEVE est un langage permettant de traiter les messages
à leur
arrivée sur le serveur : il est par exemple possible de rediriger un message vers
un dossier
particulier ou de mettre en place un répondeur automatique de vacance.
SIEVE agit donc de manière comparable à Procmail mais apporte une fonctionnalité
très
intéressante: MANAGESIEVE. MANAGESIEVE est un protocole permettant de gérer les
scripts
de filtrage depuis l’application de messagerie cliente : plus besoin de se
connecter en SSH
pour éditer son script de filtrage !
Bien entendu, le support SIEVE est disponible uniquement si la livraison des
messages est
réalisée par le LDA de Dovecot.
Configuration du plugin
protocol lda {
[...]
# sieve_global_path =
mail_plugins = [...] cmusieve
[...]
}
Pour activer la gestion des filtres SIEVE, il ne reste plus qu’à redémarrer le
service :
Filtres globaux
Dovecot supporte les filtres globaux pour permettre à tous les utilisateurs de
partager un
script de filtrage. Attention cependant, le script global défini par la variable
sieve_global_path ne sera exécuté uniquement s’il n’y a aucun filtre personnel pour
l’utilisateur.
Dans /etc/dovecot/dovecot.conf :
Création du répertoire :
# mkdir /etc/dovecot/global_script
# chown -R vmail:mail/etc/dovecot/global_script/
# chmod -R 770 /etc/dovecot/global_script/
# /etc/init.d/dovecot restart
Ainsi, notre système de messagerie est fin prêt, opérationnel avec une sécurité,
nous ne
dirons pas inviolable, mais que le pirate ou hacker aura beaucoup de mal à mettre
hors de
portée.
http://doc.ubuntu-fr.org/
http://www.commentcamarche.net/contents/networking/
http://trac.roundcube.net/wiki/RoundCube
http://www.howtoforge.com/howtos/linux/ubuntu
http://fr.wikipedia.org/wiki/Portail:Sécurité_informatique
http://postfix.traduc.org/index.php
http://www.vogelweith.com/home/index.php
http://prendreuncafe.com/
http://www.linux-france.org/article/memo/dns/dns.html
http://www.alsacreations.com/tutoriels/622-Securite-firewall-iptables.html
http://www.postfix.org/
http://wiki.dovecot.org/
http://www.system-linux.eu/index.php?tag/roundcube
http://www.tbs-internet.com/
http://www.nbs-system.com/blog/howto-iptables/
Présenté et soutenu par : Papa Cheikh CISSE et Mactar Ndiaga SECK Page | 71
Récapitulatif des principales commandes SMTP
Identification à
l'aide de
l'adresse IP ou du
nom de
HELO (devenu EHLO) EHLO 121.12.54.75
domaine de
l'ordinateur
expéditeur
421 <domaine> Service non disponible, canal en fermeture [Réponse à émettre sur
tous les canaux
450 Action non effectuée : boîte aux lettres non disponible [Ex. : boîte aux
lettres occupée]
500 Erreur de syntaxe, commande non reconnue [y compris des erreurs de type
"ligne de
550 Action non effectuée : boîte-aux-lettres non disponible [Ex : boîte aux
lettres non trouvée, pas
d'accès]
553 Action non effectuée : nom de boîte-aux-lettres non autorisée [Ex : erreur de
syntaxe dans le
nom de boîte]
Commande Description