Conception et déploiement d?une architecture réseau sécurisée : cas de SUPEMIR( Télécharger le fichier original )par Angeline Kone SUPEMIR - Ingénieur 2011 |
d. Serveur de mailsLa plupart des serveurs de messagerie possèdent ces deux fonctions (envoi/réception), mais elles sont indépendantes et peuvent être dissociées physiquement en utilisant plusieurs serveurs. L'agent de transfert de courriel communément appelé MTA (Mail Transfert Agent), en anglais est un programme qui reçoit et envoie les courriels depuis votre serveur, et par conséquent, en est la pierre angulaire. On distingue plusieurs sortes de MTA dont les plus connus sont : Postfix, Exim4, SendMail, Google Mail, Fetchmail, Mailman Xmail et Zimbra. Pour notre projet, nous avons choisi d'utiliser Postfix. Pour permettre le téléchargement des courriels depuis les postes clients, il est nécessaire de configurer un serveur IMAP ou POP3. Il en existe de nombreux. On a par exemple Dovecot, Cyrus et Courier. Tous les serveurs cités dessus peuvent être installés depuis le dépôt principal, et donc bénéficier des mises à jour de sécurité lorsque cela est nécessaire. Mais celui pour lequel nous avons opté pour ce projet est le serveur Dovecot. Postfix est un serveur de messagerie électronique et un logiciel libre développé par Wietse Venema et plusieurs contributeurs. Il se charge de la livraison de courriers électroniques ( courriels) et a été conçu comme une alternative plus rapide, plus facile à administrer et plus sécurisée que l'historique Sendmail. Postfix permet de gérer presque tous les cas d'une utilisation professionnelle, il permet d'éviter bon nombre de spams sans même devoir scanner les contenus de message. La mise en place de ce serveur passe par plusieurs étapes : Vérification du nom du serveur Cette opération se fait à l'ai de la commande hostname de la manière suivante : Figure 16 : Vérification du nom d'hôte. Installation des paquets requis Une mise à jour de la liste des fichiers disponibles dans les dépôts APT présents dans le fichier de configuration /etc/apt/sources.list et une mise à jour de tous les paquets installés sur le système vers les dernières versions sont nécessaires pour la suite. Pour cela nous avons utilisé les commandes ci-après : apt-get update apt-get upgrade Les paquets postfix, mysql, dovecot et bien d'autres sont installés comme suit : apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server dovecot-common dovecot-imapd dovecot-pop3d postfix libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl telnet mailutils Lors de cette installation, nous avons configuré dans différentes boîtes de dialogues les paramètres suivants : Ø Le mot de passe root pour MySQL Ø Le type de configuration du serveur mail : 'Site internet' Ø Le nom de domaine pleinement qualifié du système de messagerie : 'labs.supemir.ma'. Configuration de Mysql pour les domaines et utilisateurs virtuels Pour ce faire nous nous sommes connectés à la base de données au travers de cette commande : Figure 17 : Connexion à la base de données. Nous avons créé la base de données pour notre serveur de messagerie de la manière suivante : CREATE DATABASE mail; USE mail; Après sa création nous nous sommes connectés à elle pour créer les différentes tables qu'elle doit contenir. Nous avons créé un compte administrateur « mail_admin » avec mot de passe pour gérer la base de données des mails, nous lui avons donné les droits adéquats : Figure 18 : Création d'un utilisateur avec d'c droits. Nous avons crée les tables : Ø domains qui contient les domaines virtuels Ø forwardings qui gère l'acheminement des mails Ø users qui enregistre les adresses email des utilisateurs Ø transport Après ces manipulations, il faut quitter l'invite de commande avec la commande « quit » pour pourvoir continué la configuration. Il faut vérifier dans le fichier /etc/mysql/my.cnf que Mysql est configuré pour utiliser localhost c'est-à-dire l'adresse IP 127.0.0.1 ; ceci est confirmé par la présence de la ligne « bind-address = 127.0.0.1 » dans le dit fichier. Cette ligne permet à postfix de communiquer avec le serveur de base de données en local. Il faut redémarrer mysql pour la prise en compte des modifications : service mysql restart . Configuration de postfix pour utiliser Mysql Nous avons créé des fichiers de configurations suivants : Ø /etc/postfix/mysql-virtual_domains.cf pour la gestion du domaine virtuel postfix, ci-dessous son contenu : user = mail_admin password = password_admin dbname = mail query = SELECT domain AS virtual FROM domains WHERE domain='%s' hosts = 127.0.0.1 Ø /etc/postfix/mysql-virtual_forwardings.cf pour le transfert postfix, ci-dessous son contenu : user = mail_admin password = password_admin dbname = mail query = SELECT destination FROM forwardings WHERE source='%s' hosts = 127.0.0.1 Ø /etc/postfix/mysql-virtual_mailboxes.cf pour les boîtes aux lettres virtuelles, ci-dessous son contenu : user = mail_admin password = password_admin dbname = mail query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' hosts = 127.0.0.1 Ø /etc/postfix/mysql-virtual_email2email.cf, ci-dessous son contenu : user = mail_admin password = password_admin dbname = mail query = SELECT email FROM users WHERE email='%s' hosts = 127.0.0.1 La valeur de password_admin dans les fichiers ci-dessus est le mot de passe de l'administrateur `mail_admin' que nous avons précédemment créé. Nous avons attribué des autorisations appropriées au groupe utilisant ces fichiers de configurations ainsi : chmod o= /etc/postfix/mysql-virtual_*.cf chgrp postfix /etc/postfix/mysql-virtual_*.cf Nous avons aussi créé un utilisateur et un groupe pour le traitement des courriers électroniques, ainsi toutes les boîtes aux lettres des utilisateurs sont stockées dans ce répertoire : Groupadd -g 5000 vmail Useradd -g vmail -u 5000 vmail -d /home/vmail -m Pour compléter la suite de la configuration, nous avons exécuté la suite des commandes ci-dessous : Figure 19 : Suite configuration postfix. Création d'un certificat SSL pour postfix Nous avons créé ce certificat avec la commande suivante : Figure 20 : Création du certificat SSL. Le certificat créé, nous lui avons attribué les droits nécessaires pour l'utilisation de la clé par cette commande : chmod o = /etc/postfix/smtpd.key Configuration de saslauthd pour utiliser Mysql Le saslauthd est le processus démon qui prend en charge l'authentification en texte plein des requêtes des utilisateurs. Il faut créer un répertoire pour saslauthd avec la commande : mkdir -p /var/spool/postfix/var/run/saslauthd Ensuite, il faut faire une sauvegarde du fichier /etc/default/saslauthd avec la commande : cp -a /etc/default/saslauthd/etc/default/saslauthd.bak Nous avons remplacé son contenu comme suit : START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" Il faut aussi crée le fichier /etc/pam.d/smtp avec ce contenu : auth required pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1 account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1 Le dernier fichier à créer est /etc/postfix/sasl/smtp.conf avec ce contenu : pwcheck_method: saslauthd mech_list: plain login allow_plaintext: true auxprop_plugin: mysql sql_hostnames: 127.0.0.1 sql_user: mail_admin sql_passwd: mail_admin_password sql_database: mail sql_select: select password from users where email = '%u' Nous avons donné des permissions et droits adéquats pour l'utilisation de ces fichiers de configuration de la manière suivante : chmod o= /etc/pam.d/smtp chmod o= /etc/postfix/sasl/smtpd.conf Pour que postfix puisse utiliser les services du deomon saslauthd, il faut ajouter l'utilisateur postfix au groupe sasl, puis redémarrer les services pour la prise en compte des configurations faites : adduser postfix sasl service postfix restart service saslauthd restart Configuration de Dovecat Nous avons choisi ce serveur IMAP/POP3 pour sa aisance à configurer et son efficacité. Pour configurer Divecot, nous avons édité le fichier /etc/postfix/master.cf et ajouté en fin de ligne : dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} Avant la modification du fichier /etc/dovecot/dovecot.conf de sauvegarde avec cette commande : cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak Nous l'avons édité ensuite remplacé son contenu par celui-ci : protocols = imap imaps pop3 pop3s log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir ssl_cert_file = /etc/ssl/certs/dovecot.pem ssl_key_file = /etc/ssl/private/dovecot.pem namespace private { separator = . prefix = INBOX. inbox = yes } protocol lda { log_path = /home/vmail/dovecot-deliver.log auth_socket_path = /var/run/dovecot/auth-master postmaster_address = postmaster@labs.supemir.ma mail_plugins = sieve global_script_path = /home/vmail/globalsieverc } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } auth default { user = root passdb sql { args = /etc/dovecot/dovecot-sql.conf } userdb static { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes } socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = vmail } client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } } Etant donné que Mysql est utilisé pour stocker les mot de passe, nous avons faites une copie de sauvegarde et l'avons ainsi modifié : driver = mysql connect = host=127.0.0.1 dbname=mail user=mail_admin password=mail_admin_password default_pass_scheme = CRYPT password_query = SELECT email as user, password FROM users WHERE email='%u'; La configuration de dovecot terminées, il faut redémarrer pour se rassurer qu'il fonctionne: service dovecot restart . Une vérification également dans le fichier /var/log/mail.log est nécessaire en utilisant la commande tail : tail /var/log/mail.log , nous avons obtenu ceci Figure 21 : Aperçu des fichiers logs. Avant de tester dovecot, nous avons modifié les permissions sur le fichier /etc/dovecot/dovecot.conf pour permettre à l'utilisateur vmail d'y accéder : chgrp vmail /etc/dovecot/dovecot.conf chmod g +r /etc/dovecot/dovecot.conf Test de connexion au serveur pop Figure 22 : Test de connexion au serveur POP. Configuration des alias massagerie Pour ce faire, nous avons édité le fichier /etc/aliases et l'avons ainsi modifié : postmaster: root root: postmaster@labs.supemir.ma Après avoir modifié ce fichier, un redémarrage de Postfix est requis pour mettre à jour les alias. La configuration de Postfix est complète, nous sommes au test du serveur mail pour être sûr qu'il fonctionne correctement. Figure 23 : Redémarrage de postfix Test de Postfix Pour ce faire, il faut saisir la commande suivante : telnet localhost 25 Etant connecté, il faut saisir cette commande pour continuer le test : ehlo localhost Nous obtenons ceci : Figure 24 : Aperçu du test de connexion au serveur. Pour quitter Postfix, il faut entrer la commande quit. Configuration des domaines et des utilisateurs Nous avons dans cette partie, ajouté notre domaine labs.supemir.ma à la table domains et ajouté également un utilisateur nommé test à la table users . Ceci a nécessité une connexion à la base de données comme suit : mysql -u root -p USE mail; INSERT INTO domains (domain) VALUES ('labs.supemir.ma'); INSERT INTO users (email, password) VALUES ('test@labs.supemir.ma', ENCRYPT('password')); Quit Pour activer les nouveaux comptes emails, il faut leur envoyer un message afin qu'ils soient accessibles par IMAP ou POP3. Ceci est au fait que les emails des nouveaux utilisateurs ne sont pas créés jusqu'à ce qu'un mail ne leur soit envoyés. Nous nous sommes servis de mailutils pour envoyer un message à notre nouvel utilisateur test, pour ce faire on tape la commande : La combinaison de touche ctrl+D est utilisé pour compléter le message. Ensuite une vérification des fichiers de log de Dovecot situé dans /var/log/mail.log est requise, nous avons obtenu le message ci-dessous, ce qui signifier que le mail a bien été envoyé : Figure 26 : Aperçu du fichier mail.log Enfin une vérification des fichiers de log de Dovecot situé dans /home/vmail/dovecot-deliver.log est requise, nous avons obtenu le message ci-dessous, ce qui signifier que le mail a bien été envoyé : La configuration de notre serveur mail s'achève ici, mais pour permettre à nos utilisateurs de pouvoir accéder à leur mail en interface graphique nous avons donc à cet effet mis en place un webmail. Installation de squirrelmail Un webmail ou messagerie Web, est une interface Web rendant possible l'émission, la consultation et la manipulation de courriers électroniques directement sur le Web depuis un navigateur. Un logiciel de webmail est un client de messagerie qui s'exécute sur un serveur Web, Il sert d'interface entre un serveur de messagerie et un navigateur web contrairement au client lourd qui permet les mêmes opérations à partir d'un logiciel installé localement sur un ordinateur personnel. Les avantages du webmail pour l'utilisateur sont de ne pas avoir à installer un logiciel spécialisé sur sa ou ses machines, de ne pas avoir à faire la configuration de base pour envoyer et recevoir le courrier et de déporter la responsabilité de la sécurité de l'installation vers le serveur. Les inconvénients de cette solution sont d'être dépendant en performance de la rapidité du réseau, en particulier si le nombre de message est grand ou s'il y a des pièces jointes de taille importante dans les messages. Nous avons plusieurs sortes de webmail sous la distribution GNU/Linux dont les plus connus sont : Squirrelmail et Roundcube. Dans la suite de notre projet, nous avons utilisé Squirrelmail pour sa facilité de déploiement, sa rapidité et sa configuration assez simple. Nous avons installé Squirrelmail en saisissant la commande : apt-get install squirrelmail Il est fournit avec une interface qui facilite sa configuration. Cette interface est accessible par la commande : squirrelmail-configure Figure 27 : Interface de configuration de squirrelmail. Le menu 2 'Server settings' (paramètres du serveur de messagerie) permet de renseigner les paramètres IMAP tels que le nom du serveur, le port utilisé et dans le menu 4 `General options', nous avons activé l'option `Allow server-side sorting' pour permettre le tri des mails côté serveur. Squirrelmail est livré avec un fichier de configuration apache dans /etc/squirrelmail/apache.conf . Pour permettre l'accès à squirrelmail via un navigateur, nous avons copié ce fichier dans /etc/apache2/sites-available/squirrelmail avec la commande: cp /etc/squirrelmail/apache.conf /etc/apache2/sites-available/squirrelmail Ensuite nous avons créé un lien vers le répertoire sites-enabled avec la commande : ln -s /etc/apache2/sites-available/squirrelmail /etc/apache2/sites-enabled/squirrelmail Nous avons terminé la configuration, en saisissant en fin la commande : a2ensite squirrelmail Test d'utilisation Squirrelmail est accessible à travers cette url http://labs.supemir.ma/squirrelmail et nous obtenons cette interface qi permet à l'utilisateur de s'identifier pour accéder à sa boîtes aux lettres. Figure 28 : Aperçu de l'interface de connexion à squirrelmail. En entrant le login test@labs.supemir.ma et le mot de passe de notre utilisateur `test', nous entrons dans la boîte mail et nous apercevons ci-dessous le contenu de sa boîte aux lettres. Figure 29 : Interface de la boîte aux lettres d'un utilisateur. Nous avons créé des mails virtuels pours les membres de l'administration et les étudiants par niveau, tous ces utilisateurs peuvent désormais accéder à leurs boîte aux lettres à partir de toutes les machines du réseau local en saisisant l'adresse : http://labs.supemir.com/squirrelmail . Après la mise en place de notre serveur mail et d'un webmail, nous avons pensé à implémenter une sécurité contre les spams, qui représentent une réelle entrave pour les serveurs mail. C'est ainsi que pour pallier au problème des spams, nous avons d'installer SpamAssassin. Mise en place de SpamAssassin Ce logiciel a pour but 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 Postfix. SpamAssassin est un programme (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 message. 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 vers la corbeille). Tous les messages doivent donc passer par SpamAssassin pour être traités, avant d'arriver dans leur dossier définitif. Nous allons donc procéder à l'installation de SpamAssassin. Ubuntu possède par défaut un anti-spam Bogofilter, il est installé et activé par défaut, il faut donc au préalable le désinstaller, cela se fait en ligne de commande ou en passant par la logithèque Ubuntu. Ensuite on peut installer SpamAssassin, en tapant la commande : apt-get install spamassassin spamc Nous avons souhaité qu'il ne démarre pas en tant que root, de ce fait nous avons créé un groupe et un utilisateur spamd de la manière suivante : groupadd spamd useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd mkdir /var/log/spamassassin chown spamd:spamd /var/log/spamassassin Pour automatiser le demarrage de spamassassin au démarrage du système, nous avons faites la modification suivante dans le fichier /etc/default/spamassassin : ENABLED=1 SAHOME="/var/log/spamassassin/" OPTIONS="--create-prefs --max-children 2 --username spamd \-H ${SAHOME} -s ${SAHOME}spamd.log" -max-children définit le nombre de processus enfant -username définit le nom d'utilisateur de spamd précédemment créé -H définit le répertoire de base -s définit le fichier de log Ensuite le redémarrage du deamon spamassassin se fait en exécutant la commande : /etc/init.d/spamassassin start . Pour permettre à spamassassin d'utiliser Postfix, nous avons modifié le fichier /etc/postfix/master.cf en ajoutant cette ligne en début de ce fichier : smtp inet n - - - - smtpd -o content_filter=spamassassin Puis en ajoutant cette autre à la fin du même fichier : spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} Ceci fait, nous avons redémarré, nous avons redémarré Postfix pour charger la modification effectuée. Il a été important de faire un test pour s'assurer du bon fonctionnement se spamassassin, de cet fait nous avons envoyé des spams volontairement à notre adresse test@labs.supemir.ma et une vérification des fichiers de log nous a donné le resultat ci-dessous qui attest le bon fonctionnement du filtre antispam. Jul 26 14:56:10 localhost postfix/pipe[12139]: 9CBD5DA4BF: \ to=<test@labs.supemir.ma>, relay=spamassassin, delay=17, status=sent (localhost) Le serveur srvsupemir4 hébergeant plusieurs services, l'administration, la supervision de tous ces services en ligne de commande s'avère très lourde ; afin faciliter ces tâches d'administration, nous avons installé un logiciel qui prend en charge une vue générale sur tous les services que nous avons installés sur ce serveur. C'est dans ce cadre qu'est intervenu Webmin. Installation de Webmin Webmin est un outil permettant d'administrer une machine Linux. Il s'utilise par le biais d'un navigateur web. Webmin est une mine d'or pour les administrateurs réseaux : presque tout peut être configuré avec Webmin. Nous avons procédé à l'installation de Webmin en ajoutant d'abord sa clé à notre système en tapant : cd /root wget http://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc la modification se fait également dans le fichier /etc/apt/sources.list en ajoutant cette ligne : deb http://download.webmin.com/download/repository sarge contrib Ceci fait, l'installation en ligne de commande est donc possible en exéxutant ces commandes : apt-get update apt-get install webmin Pour utiliser Webmin, il faut entrer dans notre navigateur l'adresse https://localhost:10000. Et nous avons l'interface de login : Figure 30 : Interface de connexion à Webmin. Après avoir renseigné les champs de login et de mot de passe correctement, nous obtenons le panneau visuel ci-dessous : Figure 31 : Aperçu de la page d'accueil de Webmin. Au travers de cette interface, nous avons une visibilité sur l'ensemble des services du système, nous pouvons leur apporter des modifications d'une manière aisée. Il reste à noter que pour des configurations affinées, il serait primordial de faire recourt aux fichiers de configuration afin de faire les modifications manuellement. Notre serveur est désormais fonctionnel, tout en respectant le cahier de charge qui a été définit. |
|