Rechercher dans ce blog

dimanche 30 mai 2010

WIFI: Cracker la clé WEP et WAP

Cracker la clé WEP et WAP :

crack de clé wep automatique avec spoonwep 2
Spoonwep 2 permet d'automatiser la suite aircrack-ng (airmon-ng aireplay-ng et aircrack-ng) il gere la suite avec un gui, les attaques sont préréglés et redoutablement efficace.
On va voir comment l'utiliser (bien qu'il n'y ai pas grand chose à expliquer tellement c'est facile de cracker une clé wep).

spoonwep settings

1/ sélection de la carte wifi
2/normal (si c'est une atheros vu que c'est un peu différent vous avez une option spécifique)
3/unkown victim pour lancer une recherche, si vous la connaissez déja ca passe à l'étape suivante et vous devez rentrer le bssid et éventuellement l'adresse mac de la station.
4/next pour passer à l'étape suivante


victims discovery

1/chann hopping pour faire une recherche sur l'ensemble des cannaux wifi
2/fixed chann pour choisir votre chann
3/launch pour lancer la recherche de ssid



On sélectionne l'ap et le client si il y en a un et on valide avec "selection ok"


attack pannel

1/selection de l'attaque (arp replay, chopchop, fragmentation, -p 0841)
2/launch pour lancer l'attaque
*/deauth si vous avez sélectionné un client ca va envoyer 3 deauth pour déclencher une réaction de l'ap (arp par éxemple)


Et on boit un coca cola parceque la on a vachement travaillé, donc on glande en attendant qu'il crack la clé wep

Et bingo crack de clé wep presque sans rien faire réussi, à tester sur votre materiel ou avec l'accord du propriétaire...

installation:

lzm2dir spoonwep2.lzm /
(dans un shell)

download:

http://neovortex.kodings.googlepages.com/spoonwep2.lzm

miroir: spoonwep2.lzm

on dit merci qui:
merci au développeur shamanvirtuel


spoonwpa tuto download :) aircrack-ng gui pour backtrack
Présentation de spoonwpa
spoonwpa utilise le cli de la suite aircrack-ng, il est destiné à améliorer le confort de l'utilisateur pour tester la sécurité d'une clé wpa avec son gui top confort.
Le crack wpa en quelque clics et un bon dico.
(spoonwpa c'est comme de passer d'une chaise en bois à un canapé en alcantara de moldinavie)
bref:
explain --> settings on choisit la carte, le driver (pour l'atheros c'est différent vu qu'une nouvelle interface est crée, c'est géré il suffit de le préciser) quand on ne connait pas sa carte "airmon-ng" dans un shell.

mode unkown quand on ne connait pas la "victime"


fixed chann ---> selection du chann en manuel
chan hopping ---> ca scan tous les chann


Sélection de la victime:


Lancement de l'attaque:



Sélection de la wordlist, internal (la word list utilisé avec le pico qui était dispo dans bt3 beta) user, la votre, et airolib (bein la votre aussi mais précomputé)


Et la c'est le deauth qui débute jusqu'à récupération du handskake:


download spoonwpa:

http://shamanvirtuel.googlepages.com/SWPA.lzm


Crack de clé WPA sous Backtrack 2

A travers cet exercice, vous allez vous familiariser avec le live-cd Backtrack 2, et utiliser la suite aircrack-ng pour cracker une clé WPA.

1/ Introduction, découverte de Backtrack 2

Tout d'abord, choisissez votre version de Backtrack 2 ici. Nous proposons au téléchargement 2 versions modifiées de Backtrack 2 mises à jour. Une fois votre live cd téléchargé et gravé, bootez votre ordinateur sur Backtrack 2.
Arrivé à l'écran de login, le login est root et le password est toor. Entrez la commande startx pour lancer l'interface graphique (nous sommes actuellement en clavier qwerty, il faut taper stqrtx).

.Une fois le bureau chargé, cliquez 4 fois sur le petit drapeau américain situé en bas à droite de l'écran pour passer en clavier azerty français.

En cliquant sur la boule bleue en bas à gauche, vous lancez konqueror, l'interface qui vous permettra de naviguer dans vos dossiers.

Ouvrez un shell de commande en cliquant sur l'écran noir en bas à gauche. Par défaut, vous vous trouvez dans /root. Pour voir le contenu du dossier root, cliquez sur home folder dans konqueror.

Astuces concernant le shell:
-Pour vous rendre dans un dossier, tapez cd/chemin_du_dossier. Par exemple, si vous avez une partition fat32 reconnue comme hda3, tapez cd/mnt/hda3 pour vous rendre dans cette partition. Les fichiers de capture seront alors enregistrés sur votre partition fat32, ce qui permettra de les récupérer plus tard, notamment sous windows.
-Passez le pointeur de la souris sur le shell, et faites un clic droit, show menubar. Vous aurez accès à des options permettant d'ouvrir plusieurs shells cote à cote, modifier la taille des caractères etc...

2/ Passage en mode monitor

Maintenant, renseignez vous sur vos interfaces réseaux en tapant iwconfig.

Ici, l'interface wifi (caractérisée par le protocole 802.11b/g) est reconnue en tant que wlan0. Pour la basculer en mode monitor afin d'écouter les réseaux wifi, tapez la commande airmon-ng start suivie du nom de l'interface wifi. Dans ce cas: airmon-ng start wlan0

Le retour de console indiquant "monitor mode enabled" indique que votre carte wifi vient de passer en mode monitor, vous etes pret à passer à l'étape suivante: l'écoute des réseaux.

3/ Airodump-ng: l'écoute des réseaux

Airodump-ng permet d'écouter les réseaux wifi et éventuellement d'enregistrer les paquets dans un fichier de capture. Les commandes sont assez simples:
usage: airodump-ng [,,...]
Un petit test: airodump-ng --encrypt wpa wlan0

Pour arretter airodump, faites ctrl + c dans le shell. Ici, airodump-ng a écouté tous les canaux, et a affiché les points d'accès utilisant le cryptage WPA, sans écrire de fichier de capture.
Liste des filtres airodump-ng:
-c permet de cibler un canal, ex: -c 1 ciblera le canal 1
--encrypt permet de cibler selon l'encryptage des réseaux, ex: --encrypt wpa ciblera uniquement les réseaux encryptés en WPA
-w spécifie le nom du fichier de capture qui sera créé ex: -w out
--bssid permet de cibler l'écoute sur un seul point d'accès ex: --bssid 00:AA:11:BB:22:CC:33
Dans cet exercice, nous allons cibler le point d'accès dont l'essid est Crack-wpa.fr, émettant sur le canal 11 et ayant comme adresse mac 00:17:33:8C:81:77
La commande sera airodump-ng -w out --encrypt wpa -c 11 --bssid 00:17:33:8C:81:77 wlan0

Résultat: airodump-ng va écouter sur le canal 11, le point d'accès dont l'adresse mac est 00:17:33:8C:81:77, et va écrire les paquets capturés dans un fichier nommé out-01.cap (airodump-ng ajoute -01.cap au nom du premier fichier de capture, si on stoppe et relance airodump avec le meme nom de fichier il en créera un second -02.cap, etc...).

Nous voyons qu'une station est connectée. Pour réussir un crack wpa, il est primordial qu'une station soit connectée, en effet le 4 way handshake (littéralement la poignée de mains) nécessaire au crack ne peut etre capturé QUE si une station est connectée au point d'accès.

4/ Aireplay-ng: l'attaque active

Une méthode de crack (méthode passive) consiste à cibler un point d'accès, et à écouter le réseau pendant des heures en attendant qu'un client se connecte. En effet, le 4 way handshake est un ensemble de paquets émis par le point d'accès et la station lorsque celle ci se connecte. Lors de la connexion, si votre réception est bonne (la qualité radio du signal est visible dans la colonne "rxq", si elle est supérieure à 50 elle est de bonne qualité), le handshake sera capturé.
Une autre méthode consiste à utiliser aireplay-ng et son attaque -0 (déauthentication) pour forcer la déconnexion du client et capturer le handshake lorsqu'il se reconnecte (le gestionnaire de réseau wifi de windows est reglé par défaut pour se reconnecter automatiquement à un point d'accès en cas de déconnexion, l'attaque -0 exploite cette faille).
Préparez votre attaque aireplay-ng. Cliquez dans session, new shell et ouvrez 2 nouveaux shells.
Dans le premier, préparez la commande aireplay-ng -0 0 -a bssid -c station interface
Dans le second, préparez la commande aireplay-ng -0 0 -a bssid interface
Le paramètre -0 signifie une attaque déauth, le 0 qui suit signifie que l'envoi des paquets de déauth sera infini, il faudra donc arretter l'attaque après quelques instants avec ctrl + c. Vous pouvez spécifier un délai, par exemple aireplay-ng -0 5 , et l'attaque s'arrettera après l'envoi de 5 paquets de déauth. Quand les commandes sont pretes, lancez les dans chaque shell, patientez quelques secondes et stoppez les.

Si l'attaque a réussi, vous devriez avoir une bonne surprise en revenant dans votre shell airodump-ng. L'apparition du WPA handshake en haut à droite de la fenetre indique la réussite de l'attaque. Selon la qualité de la réception, la capture du handshake peut etre immédiate, ou très fastidieuse. Il se peut que vous deviez renouveler les attaques à de nombreuses reprises avant d'obtenir le tant attendu handshake.


5/ Aircrack-ng: le bruteforce du handshake

Le handshake est maintenant dans le fichier de capture, vous pouvez stopper airodump. Vous devez maintenant vous armer d'un bon fichier dictionnaire (consulez notre section spéciale concernant les Packs Crack Wpa ICI), et le copier dans le dossier ou se trouve le fichier de capture. Comme on peut le voir, j'ai copié le fichier dictionnaire nommé 8.txt dans le dossier root. Le fichier out-01.cap est le fichier de capture contenant le handshake, et le fichier out-01.txt est un fichier créé par airodump-ng contenant des informations sur le fichier de capture.

Le crack peut commencer
Le crack se lance avec la commande suivante:
aircrack-ng -w nom-du-fichier-dictionnaire nom-du-fichier-de-capture
Dans cet exemple: aircrack-ng -w 8.txt out-01.cap

Le crack se lance, aircrack-ng va tester tous les mots de passe contenus dans le fichier dictionnaire. La vitesse du crack, indiquée en haut en keys/second dépend de la puissance de calcul de votre processeur.

Le crack peut etre long, il faut patienter et tester plusieurs fichiers dictionnaires jusqu'à ce que...


KEY FOUND!


Crack de clé WEP sous Backtrack 3 beta avec la suite Aircrack-ng

A travers cet exercice, nous allons voir comme il est aisé de cracker un réseau wifi encrypté en WEP avec la suite aircrack-ng.

1/ Introduction, explications préliminaires

Pour cet exemple, nous allons cracker une Livebox utilisant le WEP. La méthode de crack est la meme sur toutes les box en WEP. Pré-requis:
-Procurez vous un live cd de Backtrack 2 ou Backtrack 3 (distribution Linux live cd disponible au téléchargement sur le site de remote exploit). Si vous utilisez déja un système d'exploitation Linux, vous pouvez télécharger la suite aircrack-ng sur aircrack-ng.org.
-Lisez l'introduction du tutoriel Crack de clé WPA afin de vous familiariser avec l'environnement Linux
-Assurez vous que vous disposez d'une carte wifi compatible mode monitor et injection
Bootez votre ordinateur avec le live cd de Backtrack. Une fois sur le bureau, passez en clavier azerty français, et ouvrez un shell de commande. C'est parti...

2/ Airodump-ng, découverte des réseaux wifi

Commencez par passer votre carte wifi en mode monitor afin de pouvoir écouter les réseaux wifi environnants. La commande iwconfig vous renseigne sur les interfaces wifi. Dans notre exemple, nous utilisons une carte alfa 500 AWUS036H. La commande permettant de basculer la carte en mode monitor est:
airmon-ng start wlan0

Nous allons lancer airodump-ng, le programme qui permet de surveiller les réseaux wifi. Airodump-ng est assez simple d'utilisation. Usage: airodump-ng . La commande à lancer sera donc airodump-ng vos-options votre-interface-wifi. Airodump-ng offre une multitude d'options et de filtres afin de cibler ce que l'on souhaite surveiller. Options airodump-ng:
-w permet de créer un fichier de capture dans lequel seront enregistrés tous les paquets. Exemple: airodump-ng -w out wlan0 (un fichier de capture nommé out sera créé, le premier fichier s'appellera out-01.cap, le 2ème out-02.cap etc...)
--encrypt permet de filtrer les réseaux en fonction du type d'encryption utilisé. Exemple: airodump-ng --encrypt wep wlan0 (seuls les réseaux en WEP seront affichés)
-c permet de cibler l'écoute sur un canal wifi particulier. Exemple: airodump-ng -c 1 wlan0 (airodump-ng n'écoutera que le canal 1)
--bssid permet de ne cibler qu'un seul point d'accès en fonction de son adresse mac. Exemple: airodump-ng --bssid 00:16:41:C9:E0:3F wlan0 (airodump-ng ne surveillera que le point d'accès dont l'adresse mac est 00:16:41:C9:E0:3F)
Nous allons commencer par surveiller les réseaux encryptés en wep, avec la commande
airodump-ng --encrypt wep wlan0

Le réseau dont l'essid (essid = nom du réseau wifi) est Livebox-a1b2 sera notre cible pour cet exemple. Sous airodump-ng, les points d'accès sont affichés en haut, et les stations (ordinateurs connectés) sont affichés en bas. On peut voir qu'un ordinateur est connecté au réseau Livebox-a1b2 dont l'adresse mac est 00:16:41:C9:E0:3F. Un réseau en WEP, une station connectée, les conditions sont réunies pour cracker le réseau. On stoppe airodump en faisant ctrl + c dans le shell, et on le relance en créant un fichier de capture et en ciblant le réseau Livebox-a1b2
airodump-ng -w out -c 10 --bssid 00:16:41:C9:E0:3F wlan0

Et voici le résultat:

On voit qu'airodump-ng surveille excusivement notre réseau cible. En bas, l'ordinateur connecté à la Livebox. La colonne "rxq" indique la qualité du signal radio (entre 0 et 100), ici avec un rxq à 100 le signal est excellent et le crack devait se dérouler dans les meilleures conditions. En naviguant sous konkeror dans le dossier depuis lequel nous avons lancé airodump-ng, nous pouvons voir les 2 fichiers créés: out-01.cap (le fichier de capture contenant les paquets) et out-01.txt (un fichier log contenant toutes les informations concernant les essids, adresses mac des points d'accès, stations etc... contenus dans le fichier de capture).


Ouvrons un nouveau shell de commande et passons à la suite.

3/ Aireplay-ng -1, l'association au point d'accès

Nous allons utiliser aireplay-ng pour vérifier si nous pouvons nous associer au point d'accès. Ici, les conditions sont optimales pour le crack: le signal est excellent et un client est connecté au point d'accès. Si le signal était moins bon, nous pourrions avoir des difficultés à nous associer au point d'accès. Il est judicieux de tenter une association avant de se lancer dans l'injection de paquet. Cela permet de voir si la connectivité est bonne, et cela peut aussi permettre de savoir si un point d'accès utilise le filtrage par adresse mac. Petite explication sur le filtrage mac:
Certaines box n'autorisent à s'associer que les clients figurant dans leur liste de clients autorisés. Pour résumer, si vous n'avez pas une adresse mac valide vous ne pourrez pas communiquer avec le point d'accès, ce qui rendra le crack et la connection impossible. Sachez que le filtrage mac est activé par défaut sur les Livebox, mais il est désactivé par défaut sur les routeurs Tecom (Club Internet). Connaitre les règlages par défaut des box permet bien souvent de savoir à l'avance si un filtrage mac est activé ou pas.
La commande pour s'associer au point d'accès est:
aireplay-ng
Les différentes attaques de aireplay-ng sont:
--deauth count : deauthenticate 1 or all stations (-0)
--fakeauth delay : fake authentication with AP (-1)
--interactive : interactive frame selection (-2)
--arpreplay : standard ARP-request replay (-3)
--chopchop : decrypt/chopchop WEP packet (-4)
--fragment : generates valid keystream (-5)
--caffe-latte : query a client for new IVs (-6)
--cfrag : fragments against a client (-7)
--test : tests injection and quality (-9)
Notre commande pour l'attaque -1 fakeauth (association & authentification) sera:
aireplay-ng -1 0 -e Livebox-a1b2 -a 00:16:41:C9:E0:3F -b 00:16:41:C9:E0:3F -h 00:12:F0:6F:ED:38 wlan0
Livebox-a1b2: essid (nom du réseau wifi)
00:16:41:C9:E0:3F: adresse mac du point d'accès
00:12:F0:6F:ED:38: adresse mac du client ("station" sous airodump-ng)
wlan0: notre interface wifi

On peut voir qu'avant d'envoyer les paquets d'association au point d'accès, aireplay-ng a remplacé l'adresse mac de notre carte wifi par celle spécifiée dans le paramètre -h (celle de la station) afin que nous puissions communiquer avec le point d'accès. L'association a été immédiate, le message "association successfull :-)" confirme le succès de l'opération.

4/ Aireplay-ng -3, l'attaque par rejeu d'arp (injection de paquets)

Nous allons maintenant lancer l'attaque aireplay-ng -3 (attaque par rejeu d'arp). Les anciennes versions de la suite aircrack-ng permettaient de cracker une clé WEP avec 1 millions d'Ivs, entre la capture, l'injection et le crack il fallait bien souvent pas loin d'une heure pour cracker le réseau. La version actuelle de la suite aircrack-ng utilise l'algorithme "PTW" qui permet de cracker un réseau WEP 128 bits avec à peine 45000 datas. Cependant, l'algoritme PTW n'utilise pas les Ivs, mais les arp pour le crack. C'est la raison pour laquelle l'attaque par rejeu d'arp est la solution la plus performante et la plus rapide pour cracker une clé WEP.
Notre commande pour l'attaque -3 standard ARP-request replay (rejeu d'arp) sera:
aireplay-ng -3 -e Livebox-a1b2 -a 00:16:41:C9:E0:3F -b 00:16:41:C9:E0:3F -h 00:12:F0:6F:ED:38 -x 600 -r out-01.cap wlan0
Livebox-a1b2: essid (nom du réseau wifi)
00:16:41:C9:E0:3F: adresse mac du point d'accès
00:12:F0:6F:ED:38: adresse mac du client ("station" sous airodump-ng)
600: nombre de paquets par secondes qui seront injectés (à règler en fonction de la qualité du signal wifi)
out-01.cap: notre fichier de capture airodump-ng
wlan0: notre interface wifi

Une fois l'attaque lancée, on peut voir en bas le nombre d'arp requests (requetes arp) contenus dans notre fichier de capture. A partir de 40000 arp, il est possible de cracker une clé WEP 128 bits.
Les requetes arp sont également sauvegardées dans un fichier appelé replay-arp-date-heure.cap. On peut voir qu'aireplay-ng vient de créer ce fichier:

Retournons dans notre shell airodump-ng pour découvrir ce qu'il se passe. On peut y voir les effets de notre attaque:
-La colonne "Data" augmente, ce qui signifie que le fichier de capture contient des Ivs.
-La colonne "#/s" indique 167, ce qui signifie que nous captons 167 datas/seconde

Quelques minutes de patience s'imposent, une fois que les datas et arp commencent à atteindre un nombre intéressant (10000 arp pour une clé WEP 64 bits, 40000 arp pour une clé WEP 128 bits) nous pouvons ouvrir un nouveau shell et lancer aircrack-ng pour cracker la clé WEP du réseau.

5/ Aircrack-ng, comment cracker une clé WEP en quelques minutes

Aircrack-ng est très simple d'utilisation. usage: aircrack-ng [options] <.cap / .ivs file(s)>
En tapant aircrack-ng dans le shell vous découvrirez les différentes options disponibles. Pour ce type de crack, la commande est basique:
aircrack-ng nom-du-fichier-de-capture
Dans notre exemple:
aircrack-ng out-01.cap

Aircrack-ng se lance et se met au travail:

Assez rapidement (on peut le voir sur le compteur, ici cela n'a pris que 3 minutes)...
KEY FOUND!

Ce tutoriel explique et démontre la vulnérabilité des réseaux wifi encryptés en WEP. On ne le répètera jamais assez, le WEP c'est périmé, passez au WPA!


Tutorial Aircrack-ng backtrack http://www.tuto-fr.com/tutoriaux/tutorial-crack-wep-aircrack.php
Le tutorial d'aircrack-ng
Aircrack-ng:
Pour tester la sécurité de votre réseau wifi, nous avons besoin de la suite aircrack-ng anciennement aircrack.
Par abus de language, on utilisera parfois la dénomination aircrack m�me pour aircrack-ng et ses composants.
Cette suite fonctionne sous windows et linux mais certaines fonctionnalités quasi indispensables sont impossibles sous Windows (l'injection de paquets par exemple) c'est pourquoi nous utiliserons une suite linux live (pas d'installation et aucunes connaissances requises): Backtrack, une distribution spécialisée dans les tests d'intrusion.
Il existe biensur d'autre distributions comme whax ou encore troppix (toutes ces distrib sont particulièrement adaptées au cracking wep mais une ubuntu ou autre fera très bien l'affaire)
Dans ces distributions, tout est déjà préinstallé : les drivers des cartes wifi et tous les logiciels nécessaires (aireplay, airodump, aircrack, wireshark, kismet ..).
Par contre, toutes les cartes wifi ne sont pas supportées, en gros cela dépend de leur chipset, voici une liste non exhaustive des cartes et de leurs possibilités:
Liste de cartes wifi compatibles mode monitor + aircrack-ng
Personnellement le tutorial a été réalisée avec une carte wifi usb alfa Awus036s.

Pour des raisons de confidentialité tous les noms des réseaux (ESSID) ont été masqué mis à part celui dont on s'occupe.
Les adresses mac (BSSID) ont-elles aussi été censurées partiellement, j'ai laissé affiché que la première partie des adresses mac qui correspond au constructeur du matériel. (liste des adresse mac qui donne le constructeur)
Je le répète, vous ne pouvez tenter de pénétrer un réseau que si celui-ci est le votre ou si vous avez l'accord de son propriétaire !!!
Voici également un tutorial pour installer aircrack sur un routeur type Wrt54g avec openwrt (puissant)
Prelude
La suite aircrack-ng comprend plusieurs programmes dont les 3 principaux sont
* airodump-ng, le logiciel de capture de paquets, c'est lui qui scan les réseaux et conserve les paquets qui serviront à décrypter la clef.
* aireplay-ng, un logiciel dont la principale fonction est l'envois de paquets dans le but de stimuler le reseau et capturer plus de paquets.
* aircrack-ng, le logiciel de crack de clef, c'est un logiciel qui à partir des informations capturées à l'aide d'airodump va nous donner la clef (si biensur on en a un nombre suffisant).
Pour de meilleure chances de réussite, il est recommandé d'avoir un ordinateur connecté en wifi sur le point d'acces cible et qu'il généère du traffic (téléchargements ...).
M�me s'il existe des methode d'injections de paquets sans stations, elles sont d'une part plus complexes mais possèdent aussi un plus faible pourcentage de réussite nous detaillerons donc plus precisement la methode avec station car plus fiable.
1:// Backtrack :
Bon on rentre un peu dans le vif du sujet maintenant :
Procurez vous backtrack (prenez la dernière version, actuellement backtrack 2 finale)
Backtrack est un live cd et non un logiciel: explications
Si vous utilisez d'autre live cd comme whax ou troppix, le fonctionnement est quasi identique mais il est tout de m�me conseillé de passer à backtrack qui dispose de plus de fonctionnalités et compatibilitées
Gravez la distrib sur une belle galette mettez la de coté 2 secondes. En parallèle, je vous conseille de créer une partition FAT32 de 2 ou 3 giga.
L'avantage du FAT32 c'est qu'il est lisible par windows et linux.
Cette partition va en fait servir à stocker les paquets capturés et les différents fichiers nécessaires pour le crack de la clé wep.
Cette partition n'est pas indispensable mais recommandée si vous ne disposez que de peu de RAM (128 ou moins) car la distrib backtrack est un live cd donc les fichiers de capture sont stockés dans la ram.
Le fait d'avoir une partition fat32 vous permet aussi d'arrêter le pc et de redémarrer sans perdre tous les paquets déjà capturés par airodump-ng !!! (il y a aussi les clef usb ;) )
Par contre votre partition ne portera pas le même nom sous linux que sous Windows, mettez donc un fichier particulier dedans pour pouvoir la reconnaître.
Apres avoir booté sur backtrack vous tombez sur un écran de login.
Le login est root, le mot de passe est toor et pour lancer le mode graphique tapez startx (il faut taper sqrtx car le clavier est anglais

Vous tombez ensuite sur cet écran : (clic pour agrandir)

La première chose à faire est de passer en clavier français c'est plus agréable :).
Pour ce faire : clic droit sur l'icône du drapeau américain en bas à droite puis sélectionnez français.
Ensuite ouvrez une console :
l'interface est KDE donc pour ouvrir c'est simple clic partout, suffit juste de s'y habituer ;)

Puis tapez "airmon-ng" pour détecter les interfaces wifi puis sélectionnez celle que vous voulez démarrer avec la commande "airmon-ng start « l'interface wifi » "

Ici on voit que la carte est correctement reconnue et que le mode monitor est directement activé. Le mode monitor permet de capter tous les paquets qui transitent même ceux qui ne vous sont pas adressés. (aussi appelé mode promiscuous)
Si vous avez une carte à chipset atheros la gestion est très légerement différente, en effet avec une unique carte, vous pouvez en créer plusieures dites virtuelles. Elles ont toute le m�me père noté wifi0
Lorsque vous passer votre carte en mode monitor, vous utilisez le père: airmon-ng start wlan0.
Il va ensuite vous créer une interface athX (X allant de 0 à 4) et vous afficher qu'il la passe en mode monitor. A partir de ce moment la vous utiliserez cette interface (athX) pour toutes les commandes suivantes.
Ici ath1:

Si vous avez une carte wifi à chipset ralink (comme dans ce tuto) il se peut que vous ayez à démarrer au préalable votre interface avec la commande:
ifconfig rausb0 up
C'est une zéro, pas un Ho majuscule.

Si vous utilisez déjà une autre distribution linux ou si vous souhaitez installez la dernière version de la suite aircrack pour bénéficier des nouvelles fonctionnalitées (dont aircrack-ptw) reportez vous à la partie 4BIS du tuto.
2:// Airodump :
Maintenant nous allons commencer à scanner les réseaux wifi avec airodump qui fait partie de la suite aircrack-ng :
On tape dans la console:
airodump-ng --write "NomFichierSortie" --channel "NumeroChannel" "Interface"
exemple:
airodump-ng --write tuto --channel 11 rausb0
Les paramètres sont:
• "--write tuto" --write indique que l'on souhaite enregistrer la capture, il est suivis du nom du fichier dans lequel on enregistre justement.
• "--channell XX" Indique sur quel channel on scan
Pour choisir de scanner tous les canaux ne precisez pas "--channel XX" et le scan se fera sur tous les channel, 1 par 1.
Voir la documentation airodump-ng pour plus de details
Si vous avez choisi de d'utiliser une partition FAT32, vous devez vous placer dans cette partition avec la console afin d'y enregistrer vos fichiers de capture et autres. (mini tuto navigation sous linux)
Une fois lancé airodump vous obtenez ceci:

Je suis en résidence étudiante donc y a pas mal de monde :D.
La colonne BSSID correspond à l'adresse mac des points d'accès (AP)
La colonne ESSID correspond au nom du réseau (monRezoWifi, Wanadoo-XXXX, WiFI-freebox.)
La colonne power donne une indication de la puissance de reception, cette information peut foirer (-1) cela n'influ en rien la puissance de reception réelle , une bonne indication est la vitesse de défilement des beacons
La première partie correspond aux points d'accès et la seconde partie aux stations (en gros les ordinateurs qui se connectent aux AP).
La colonne qui nous intéresse est la colonne des IVs, la colonne #data, c'est ces "bouts de fichiers" qui vont nous permettre de cracker notre clef wep aucun rapport avec la colonne beacons completement inutile pour le crack.
Ici l'AP cible "tuto-fr.com" est le seul dont le Essid n'est pas totalement masqué. Pour plus de performance dans la capture des paquets, on relance airodump en choisissant seulement le canal ou il se situe : le 2 et en mettant un filtre sur son bssid
airodump-ng --write capture_tuto -channel 2 --bssid 00:11:22:33:44:55 rausb0

Pour arrêter la capture et pouvoir entrer des commandes faites Ctrl+C.
Vous êtes également obligés de stopper la capture si vous souhaitez copier une adresse mac car l'écran se rafraichi.
Pour plus de détails sur airodump tapez uniquement « airodump-ng » dans la console et l'aide apparaîtra (idem pour aircrack et airplay et toutes les commandes linux) ou consultez la documentation airodump-ng.

Une fois que l'on a des stations dont une qui est connecté à l'AP qui nous intéresse on doit voir les #data augmenter s'il y a du traffic et airodump nous indique dans la colonne ENC le cryptage utilisé (WEP, WPA, OPN).
Certains point d'acces (livebox ...) possède un mode dit d'association, en clair un filtrage sur les adresses mac (collonne STATION). Il peut donc �tre necessaire de connaitre une adresse mac d'un ordinateur (station) déja accepté par le point d'accès car toutes les autres sont automatiquement rejetées.
Pour aireplay, le programme qui va envoyer des paquets, on a justement besoin de cette adresse mac, en fait on se fait passer pour l'ordinateur qui a le droit d'accès à l'AP en spoofant son adresse mac pour pouvoir par exemple injecter des paquets ensuite.
Maintenant que l'on sait que le cryptage est WEP, qu'une station est présente et qu'il y a du trafic (quelques data en peu de temps), on va lancer aireplay, un injecteur de paquets pour accélérer le trafic et surtout stimuler les IVs
Il faut savoir que pour cracker la clef wep d'un réseau wifi, il est préférable qu'il y ai un minimum de trafic. Par expérience la capture de IVs est beaucoup plus rapide, et de plus ils sont plus diversifiés car le crackage de la clef wep nécessite moins de IVs.
3:// Aireplay :
3.1:// Fake authentication
Pour lancer aireplay, ouvrez une nouvelle console, la première servira pour airodump-ng (laissez tourner airodump).
On va en premier lieu tester l'association avec le point d'acces avec une attaque "-1" dite de fake authentication.
La synthaxe est la suivante:
aireplay-ng -1 0 -e ESSID -a @_mac_AP -h @_mac_station interface
Les paramètres sont:
• "-1 0" -1 indique une fake authentication et 0 indique le temps a laisser entre 2 tentatives (ici nul).
• "-e ESSID" ici il faut remplacer ESSID par le nom du reseau colonne ESSID.
• "-a adresse-mac-de-l'AP" colonne BSSID.
• "-h adresse-mac-de-la-station" colonne STATION.
• "interface" a remplacer par le nom de votre interface (rausb0, ath1 ...)

Cette étape n'est pas indispensable, elle peut servir à tester si le point d'acces possède un filtrage d'addresse mac, mais le protocole n'est pas super fiable, il arrive que m�me avec une bonne adresse mac on obtienne une erreure ou pas de reponse.
Certain AP n'ont pas de filtrage d'adresse mac et vous pouvez en mettre une au hasard.
Il se peut que si vous ne captiez pas très bien le signal (si le power est bas) que l'authentification succesful et l'association ne soient pas instantanées :

Et là l'exemple est court mais vous pouvez facilement en avoir 40 lignes .
Voici un petit schéma qui vous montre les relations entre les paramètres d'aireplay et la capture de airodump :

3.2:// Injection de paquets :
L'injection de paquets est la clef pour réussir un crack wep rapidemment. En effet il est necessaire de capturer beaucoup de Ivs pour trouver la clef wep (conseillé 1 000 000 pour une 128 les plus courantes) donc si on ne veut pas y passer la semaine il faut mieu stimuler le reseaux.
On utilise aireplay là encore pour injecter des paquets. On modifie et on ajoute simplement quelques paramètres.
L'attaque la plus prolifique pour générer des Ivs est l'attaque "-3" dite de réinjection d'ARP.
La synthaxe est la suivante:
aireplay-ng -3 -e ESSID -b @_mac_AP -h @_mac_station interface

On peut ajouter le paramètre "-x XXX" ou XXX représente la vitesse d'injection. Par defaut 600 paquets/s.
Il est conseillé d'augmenter ou de diminuer cette valeure en fonction de la qualité et de la puissance du signal de l'AP.
Dans certains cas, si vous injecter trop vite, vous pouvez faire planter l'AP aussi !
Pour airodump, les IVs sont importants mais notez que pour aireplay lors d'une attaque par réinjection, les ARP le sont tout autant, se sont eux qui vont vous permettre d'augmenter la production de IVs.
Aireplay vous sauvegarde donc les arp capturés dans un fichier qu'il créé à chaque fois qu'il est lancé.
Ce fichier se trouve dans le répertoire à partir duquel vous avez lancé airplay.
On peut réutilisez les anciens ARP en ajoutant le paramètre "-r" suivi du nom de fichier cité précedemment ou le fichier de capture (celui de airodump).
Ce paramètre indique dans quel fichier lire pour voir s'il contient des ARP. Ce sont ces arp justement qui vont nous permettre d'influencer le trafic en les réinjectant.
N'oubliez pas de vous placer dans le même répertoire.
Pour vous éviter de tout taper, vu que la syntaxe est quasiment identique qu'avec le paramètre -1 appuyé sur la flèche haute pour retrouver ce que vous aviez entré précédemment.
Les arp sont obtenus en lisant le fichier indiqué et/ou en écoutant le réseau comme le fait airodump.
Dès que l'on a un arp, aireplay commence à envoyer des paquets et normalement si tout se passe bien, les IVs augmentent.

Et c'est la cas ils augmentent, regardez la colonne IVS/s qui indique le nombre de Ivs par seconde:

Si l'injection se déroule bien, les Ivs augmentent mais les ARP capturés dans aireplay également: (image issue d'un autre crack)


Si vous ne parvenez pas à capturer un ARP, une bonne manière d'un générer un est de déconnecter puis reconnecter la station ou à partir de la station de pinguer une adresse du reseau non atribuée.
On peut forcer une station à se déconnecter avec aireplay et une attaque de des-authentification (ne fonctionne pas toujours) lien
Comme je disais tout à l'heure il existe d'autres attaques pour générer des Ivs et qui ne necessitent pas forcement la presence d'une station.
Notamment les attaques chopchop et par fragmentation
4:// Aircrack :
Sachant qu'il faut environ 300 000 IVs pour cracker une clef wep 64bits
Et environ 1 000 000 pour une clef wep 128 ça va assez vite :D.
Il est donc conseillé de lancer une première fois aircrack des que l'on a 300k paquets si on suppose que la clef peut être de 64 bits.(beaucoup plus courant que l'on ne le croit ...)
Pour cela dans les paramètre de aircrack-ng, il suffit de rajouter -n 64, et aircrack va tenter de cracker la clef wep comme si c'était une clef 64 même s' il s'avère que c'est une 128.
Ouvrez une nouvelle console et lancez aircrack.
N'oubliez pas de vous placer dans le dossier contenant les fichiers de airodump si vous avez créé une partition FAT32.
La synthaxe est la suivante:
aircrack-ng -x fichier_capture
Le paramètre -x permet de ne pas bruteforcer les 2 derniers bits. (ça accélère le crack en principe)
Ensuite le dernier paramètre est le nom du fichier de capture de airodump.
Vous pouvez également utiliser la syntaxe « *.cap » et « *.ivs » pour ouvrir tous les fichiers .cap et .ivs.
Ce qui donnerais :
« aircrack-ng -x *.cap *.ivs »
Une fois lancé aircrack nous affiche tous les réseaux qu'il a rencontré, leur cryptage et le nombre de IVs correspondant. Il vous suffit d'entrer le numéro du réseau : ici 1 et de lancer aircrack.

Et là il commence à cracker la clef wep:

Pendant ce temps la capture avec airodump se poursuit et aircrack incrémente automatiquement les IVs et s'en sert pour cracker la clef wep.
La, il vous suffit de laisser tourner et la clef wep devrait apparaître d'elle même si le crack fonctionne.
En gros ça fonctionne statistiquement par rapport aux IVs et par un systeme de vote, plus un bit a de vote par rapport au autres bit du meme rang, plus il a de chances d'etre le bon.
Et après un petit temps d'attente:

Si jamais cela ne fonctionnait pas, augmentez le fudge factor de aircrack en rajoutant un paramètre « -f chiffre en 2 et 10 »
Exemple :
« aircrack-ng -x -0 *.cap *.IVs -f 4 »
Par défaut le fudge factor est à 2.
Aircrack utilise 17 type d'attaques statistiques crées par Korek.
Vous pouvez choisir de désactiver l'une d'entre elles les une apres les autres si jamais vous avez bcp de IVs mais que le crackage foire (je vous conseil plutot de repartir de 0 ;) )
Exemple :
« aircrack-ng -x -0 *.cap *.IVs -k 4 »
« aircrack-ng -x -0 *.cap *.IVs -k 12 » ...

On peut bien entendu combiner avec le fudge factor
Si jamais vous avez + de 3M de IVs que vous avez capturé alors qu'il y avait du trafic (bcp) et que l'attaque foire il peut y avoir plusieurs raisons :
-Le réseau a changé de clef mais bon ça vous devriez le savoir puisque vous en êtes le proprio
-Le fichier de capture est corrompu
-Z'avez trop pas de chance :s
...
4_BIS:// Aircrack-ptw et nouvelles version d'aircrack-ng :
La suite aircrack-ng est en constante évolution et des nouvelles versions sortent souvent, apportant leurs lot d'améliorations. Malheureusement, les versions de backtrack sont moin frequentes aussi backtrack n'inclu pas la dernière version d'aircrack-ng
Or depuis peu, un nouvel algorithme de crack a vu le jour et il est REDOUTABLE, on peut cracker des clef wep avec 40 000Ivs (au lieu de 1 000 000 !), il s'agit d'aircrack-ptw dont les fonctionnalités sont implentées dans les dernière version d'aircrack-ng

Pour installer justement la dernière version sur backtrack, il faut soit la télécharher à partir de backtrack, soit la placer sur une clef usb au préalable. Pour la télécharger, utilisez la synthaxe "wget URL".
Les clefs usb sont montées automatiquement sous backtrack qui vous ouvre une fen�tre vous demandant de parcourir votre clef. Copiez le fichier .tar.gz d'aircrack sur le bureau puis ouvrez une console.
On va maintenant l'installer. Pour ce faire, on dois d'abord se placer sur le bureau(cd Desktop/) puis décompresser l'archive (tar zxvf aircrack-ng-0.9.tar.gz) puis se placer dans le dossier decompressé (cd aircrack-ng-0.9/) et enfin, on compile et on instale ("make" puis "make install")



Et voilou, vous pouvez maintenant utiliser la dernière version d'aircrack-ng qui inclus aircrack-ptw
Pour utiliser l'algorithme d'aircrack-ptw avec aircrack-ng, il vous suffit d'ajouter le paramètre -z à la ligne de commande d'aircrack-ng
aircrack-ng -z *.cap
L'attaque ptw est particulièrement efficace si l'on a beaucoup d'ARP, donc notamment si on réalise une injection d'ARP avec aireplay-ng -3. Avec aircrack-ptw, on crack facilement son reseau en 5 minutes chrono!
Par contre aicrack-ptw utilise uniquement les fichiers de capture .cap et non .ivs, et il n'utilise pas tous les .ivs
Ce topic sur aircrack-ptw contient un peu plus d'info et des exemples de crack ;)
5://Configuration de la connection :
Bon maintenant c'est bien beau vous avez la clé wep, vous la connaissiez surement en ascii, ici, vous l'avez en hexa.
Ne confondez pas les 0 (zéros )avec des o (HO) majuscules car le codage est hexadécimal, les seules possibilités sont zéro à 9 et A à F.
Bon maintenant on a la clef wep, il ne nous manque plus que le plan d'adressage du réseau. Cependant, il est bien souvent inutile car la quasi-totalité des réseaux utilisent dhcp, c'est-à-dire ip automatique : vous vous connectez à l'accès point et il vous attribut une ip.
Vous pouvez donc tenter de vous connecter avec windows (attention sous windows, il faut enlever les « : » entre les parties de la clef et si il y a un filtrage d'adresse mac : Changer son adresse mac sous windows ) ou alors avec backtrack qui intègre un module de connection wifi.
5.1://En mode console :
Si vous passez par backtrack vous pouvez aussi le faire en mode console :D.
Les commandes du mode console sont :
Tout les paramètre de votre configu wireless s'affichent en tapant :
iwconfig ath0


Passage en mode managed :
« iwconfig ath0 mode managed »
Configuration de la clef wep :
« iwconfig ath0 key xx :xx :xx :xx :xx :xx »

Vous pouvez parfaitement combiner les paramètres :
« iwconfig ath0 mode managed key xx :xx :xx :xx :xx :xx »
5.2://Avec le module de backtrack 2:
Pour l'utiliser vous devez d'abord passer votre carte en « mode managed » pour cela tapez :
« iwconfig ath0 mode managed »
Et si vous souhaiter repasser en mode monitor pour la capture de paquets il vous suffit de mettre : « iwconfig ath0 mode monitor »

Si l'AP applique un filtrage d'adresse mac changez votre adresse mac et remplacez la par celle d'une station qui s'est connectée a l'AP :
Changer son adresse mac sous linux
Changer son adresse mac sous windows

Ensuite pour ouvrir l'assistant, allez dans le menu démarrer puis choisissez « Internet/wireless assistant » et configurez pépère votre réseau. (si dhcp ne fonctionne pas essayer sous windows ou voir plus bas pour trouver l'adressage du réseau)
Le module vous dira si la connection est réussie ou non.
Et vous pouvez toujours tester par une commande de type :
« ping www.google.fr »
5.3:// Changer son adresse mac :
5.3.1:// Sous linux :
Si l'AP applique un filtrage d'adresse mac changez votre adresse mac et remplacez la par celle d'une station qui s'est connectée a l'AP :
Pour se faire vous devez en premier éteindre le périphérique wifi :
ifconfig ath0 down
Puis pour changer l'adresse mac :
« ifconfig ath0 hw ether xx :xx :xx :xx :xx :xx » (remplacer xx :xx. par l'adresse mac de la station : son bssid)

Dernière étape : activation de dhcp :
« dhcp ath0 »
Si vous avez le retour de console c'est que c'est réussi pour dhcp (si dhcp ne fonctionne pas essayer sous windows ou voir plus bas pour trouver l'adressage du réseau)
Ensuite faite un « ping www.google.fr » pour vérifier que tout fonctionne.

5.3.2:// Sous widows :
Si jamais vous devez changer votre adresse mac sous windows, aller dans :
« démarrer/ panneau de configuration/performance et maintenance/système » Onglet matériel puis gestionnaire de périphériques.
Choisissez la catégorie carte réseau, choisissez votre carte et faites clic droit/ propriétés. Choisissez l'onglet avancé et vous devez avoir une catégorie adresse mac ou équivalente. Choisissez administrer localement et mettez la valeur d'adresse mac que vous voulez (en particulier le bssid de la station)
Vous pouvez également utiliser etherchange un programme pour windows qui change votre adresse mac.
Télécharger etherchange.
Lancez le choisissez l'interface reseau dont vous voulez changer l'adresse physique puis entrez l'adresse mac de remplacement :D Et voila ;)

6:// Trouver l'addressage du reseau :
Ici nous allons parler de wireshark, anciennement ethereal, les screen ont été fait avec ethereal il peut y avoir de légères differences
Si le réseau ne possède pas de dhcp ou si le dhcp est désactivé vous devez trouver le plan d'adressage du réseau.
Dans la plupart des cas il s'agit de
192.168.1.xxx avec le point d'accès 192.168.1.1 et le masque de sous réseau 255.255.255.0
Cependant il existe un moyen simple rapide et sur de connaître l'ip du point d'accès grâce à wireshark un sniffeur de réseau.
Vous devez obligatoirement posséder la clef wep pour trouver l'ip
Pour lancer wireshark, entrez simplement wireshark dans une cosole
Configurer wireshark pour qu'il décrypte les paquet avec la clef wep que vous venez juste de trouver (sinon vous n'aurez pas les ip) :
Faites : « Edit/préférences/protocols/IEEE 802.11 » (pour ouvrir protocols cliquez sur le petit triangle ensuite appuyez sur la touche i pour tomber directement sur IEEE 802.11)
Et configurez la clef wep :
Cochez bien « Assume packets have FCS »

Confirmez avec ok puis commencez la capture :
Faites « capture/options »
Choisissez l'interface (ath0)
Cochez la case (capture paquets in promiscuous mode)
Cochez la case enable network name résolution

Cliquez sur capture et la capture commence :D.
Vous allez vous retrouvez avec un sacré paquets de paquets :P :

Pour n'afficher que ceux qui vous intéressent appliquez un filtre dans la case filter.
Un filtre de type « (wlan.bssid == bssid de l'ap) && (TCP) marche du tonnerre
En fait vous choisissez de voir que les paquets transportés par protocole TCP et dont le bssid est celui indiqué :

Et là : Bingo, on trouve l'ip.
Si vous laissez tourner un peu on peu même avoir d'autres information et confirmer l'ip :

Et voila le boulot est terminé, vous avez l'adressage du réseau, l'adresse mac de la station, et la clef wep il vous reste plus qu'a vous connecter sur votre reseaux (tout ca pr ça ;) ) et passer en WPA ;).
En cas de soucis, le forum de support est là pour vous aider (lisez bien le tuto quand même ;)
Annexes :
exemple d'un reseau OPN (non crypté) :


Injection de paquet sous Windows :
Il existe differents logiciels pour faire de l'injection de paquets wifi sous plateforme win32.
Notamment pour les cartes à chipset Atheros:
Telecharger commView for WiFi ou sur le site de l'editeur.
Voici une liste des cartes supportées par commView
Pour les cartes à chipset Prism:
Download airGobbler Packet Generator ou sur le site de l'éditeur.

Postfix serveur SMTP avec TLS auth. et OpenLDAP

SOMMAIRE

1. INTRODUCTION……………………………………………………... 5
2. OBJECTIFS……………………………………………………………. 5
3. INTRODUCTION A LA MESSAGERIE ELECTRONIQUE……... 5
4. SERVEUR DNS………………………………………………………... 7
4.1. Installation du paquetage……………………………………... 7
4.2. Fichiers généraux de configuration…………………………... 7
5. OPENLDAP……………………………………………………………. 8
5.1. Présentation……………………………………………………. 8
5.1.1. Capacités de OpenLDAP 2.1……………………………………. 9
5.1.2. Classes d’objet…………………………………………………… 10
5.1.3. Les attributs et les types………………………………………… 10
5.1.4. Schéma…………………………………………………………… 11
5.2. Installation……………………………………………………... 11
5.3. Configuration…………………………………………………... 11
5.4. Peupler OpenLDAP…………………………………………… 12
5.5. Administration…………………………………………………. 13
5.6. Identification…………………………………………………… 13
6. POSTFIX………………………………………………………………. 14
6.1. Présentation……………………………………………………. 14
6.2. Installation……………………………………………………... 15
6.3. Configuration………………………………………………….. 20
6.4. Authentification………………………………………………... 23
6.5. Tests…………………………………………………………….. 23
6.6. Anti-spam………………………………………………………. 24
6.6.1. Installation ………………………………………………………. 24
6.6.2. Configuration pour Postfix……………………………………... 24
6.6.3. Configuration de SpamAssassin……………………………… 25
7. SERVEUR POP………………………………………………………... 27
7.1. Installation de Dovecot………………………………………… 27
7.2. Configuration de dovecot.ldap.conf…………………………... 28
8. MAIL BROWSER : THUNDERBIRD………………………………. 28
8.1. Introduction……………………………………………………. 28
8.2. Installation de Thunderbird…………………………………... 29
8.3. Configuration et utilisation……………………………………. 29
9. CONCLUSION ET PERSPECTIVES……………………………….. 34
TABLE DES FIGURES………………………………………………….. 35
BIBLIOGRAPHIE……………………………………………………….. 36





1. INTRODUCTION :

La messagerie électronique est devenue l’outil de travail indispensable de toute entreprise qui aspire à l’évolution et à la prospérité. En effet, elle représente le moyen de communication le plus économique et le plus rapide au sein de l’entreprise ainsi qu’avec ses collaborateurs externes, ses clients ou le grand public. On comprend dès lors que le fonctionnement de ce service aura un impact direct sur l´activité de l’entreprise.
D’un autre côté, la messagerie électronique représente le principal vecteur via lequel peuvent transiter toutes sortes d’attaques (spam, virus, phishing,...).
Il faudrait donc prendre toutes les mesures nécessaires pour sécuriser au maximum ce service pour qu’il garde tout son intérêt sans exposer ses utilisateurs aux risques d’espionnage ou d’attaque de leurs systèmes.
La complexité des systèmes de protection mis en place jusque là est principalement due au fait que les entreprises se prémunissaient pour répondre à une nouvelle forme d’attaque et non à une stratégie globale de sécurisation du flux SMTP.
De plus, choisir de travailler dans un environnement Linux tel que Ubuntu, garni de ses paquetages, les indispensables et les superflus, constitue un choix très avantageux. En effet, Ubuntu est une distribution Debian qui ne coûte rien à l’inverse d’un parc Windows avec lequel on a que l’OS seulement ! Windows Server 2003 par exemple coûte à partir de 750 € pour 5 postes clients seulement ! Pour ne citer que cela !

2. OBJECTIFS :

L’objectif principal de ce travail est la sécurisation de la messagerie électronique sous Ubuntu.
Pour ce faire, les principales procédures qui ont été effectuées sont :
 Installation et configuration d’un serveur DNS,
 Installation et configuration de OpenLDAP (paquetage slapd),
 Préparation de l'installation et mise en exploitation de Postfix en tant que serveur SMTP, dans un environnement classique, avec une solution de filtrage anti-spam simple (SpamAssassin),
 Installation et configuration d’un serveur de courrier mail (courrier-pop).

Après une brève présentation du fonctionnement de la messagerie électronique, ces différentes procédures seront détaillées.


3. INTRODUCTION A LA MESSAGERIE ELECTRONIQUE :

Le courrier électronique, la messagerie électronique, le mail, sont des dénominations diverses pour désigner l’outil de communication le plus connu et le plus coutumier des réseaux. Le courrier électronique permet de rester dans le monde du numérique, il n’y a plus de « hard copy », les documents transitent d’ordinateurs à ordinateurs sans passer par l’étape de l’impression papier, c’est l’ère du « zéro papier ». La messagerie électronique permet d’échanger des messages et des documents annexés au message en « pièces jointes ». Les correspondants d’une messagerie électronique doivent tous avoir une adresse électronique, une adresse de messagerie qui les identifie sur le réseau.




Le courrier électronique peut être restreint à une zone ou élargi au monde entier :
• La messagerie interne (en Intranet). Installée à l’intérieur d’une entreprise et exclusivement réservée aux employés de l’entreprise, le service de messagerie est géré par le service informatique de l’entreprise.
• La messagerie externe (avec Internet). Permettant la communication avec l’extérieur de l’entreprise (avec d’autres entreprises, ou des particuliers), le service de messagerie (souvent constitué d’une passerelle qui convertit les protocoles) est géré par un fournisseur extérieur.
Les fonctionnalités de la messagerie électronique

Les fonctionnalités de la messagerie électronique ou du courrier électronique sont nombreuses et s’apparentent aux différents services que propose la Poste :
• La boîte aux lettres pour chaque utilisateur,
• La notification personnalisée interpelle en temps réel le destinataire qu’un courrier vient de lui parvenir,
• L’accusé de réception informe l’expéditeur que son message est bien arrivé,
• La réponse à un courrier peut inclure le message d’origine,
• Les pièces jointes annexées au message peuvent être de tous les formats possibles (textes, photos, sons, vidéos, graphiques, feuilles de calcul, tables d’une base de données,…),
• L’envoi en copie du même message à un autre destinataire (avec le champ CC pour Carbon Copy),
• L’expédition groupée d’un même message à plusieurs destinataires,
• L’annuaire (Directory en anglais) répertorie tous les abonnés aux services de messagerie,
• La récupération des messages effacés par erreur,
• L’absence de bureau (OOF pour Out of Office en anglais) permet d’indiquer aux correspondants que le destinataire de leur courrier n’est pas là et qu’il reviendra bientôt…
Les normes de la messagerie électronique

La norme ISO localise la gestion du courrier électronique au niveau de la couche APPLICATION, la couche 7. Ainsi, des réseaux utilisant des systèmes d’exploitation différents peuvent s’échanger des messages.
Il existe différentes normes pour le courrier électronique correspondant à des systèmes de messagerie différents, comme par exemple :
• X.500 échafaudé par le CITT (Comité Consultatif International de télégraphie et de téléphonie), pour gérer les services d’annuaire des réseaux distribués, et permettre de retrouver facilement l’adresse d’un utilisateur appartenant à un autre réseau.
• SMTP (Simple Mail Transfer Protocol) a été conçu pour l’échange de messages entre deux ordinateurs distants. C’est le protocole de messagerie utilisé sur les systèmes UNIX et sur Internet, il fait partie de la pile de protocole TCP/IP.

Les standards ouverts d’Internet

Les standards ouverts pour la messagerie électronique d’Internet ont été définis par l’IETF (Internet Engineering Task Force):

• SMTP pour la partie serveur, c’est la partie qui stocke les e-mails entrants des utilisateurs et qui les transmet au serveur du destinataire. Le protocole SMTP (Simple Mail Transfer Protocol) route le courrier entre les différents serveurs de messagerie de l’Internet. SMTP est plus simple que UUCP (Unix to Unix copy Program) qui nécessitait que l’utilisateur connaisse et saisisse le chemin complet entre l’expéditeur et le destinataire (y compris tous les nœuds intermédiaires). SMTP requiert, de la part de l’utilisateur, seulement un nom d’utilisateur et un nom de domaine, le reste, il s’en charge…
• POP 3 et IMAP 4 pour la partie cliente, c’est la partie qui envoie les e-mails sur le serveur de messagerie de l’expéditeur. Avec POP 3, le client le plus ancien, l’utilisateur doit se connecter au serveur de messagerie pour télécharger ses messages. Une fois ceci fait, ceux-ci sont effacés du serveur, tandis que IMAP 4 peut éventuellement en garder une copie. Le protocole IMAP 4 est recommandé pour les réseaux dont les utilisateurs se déplacent.
4. SERVEUR DNS :

Un prérequis très important est la bonne configuration de notre serveur DNS, une mauvaise configuration de celui-ci est la source la plus fréquente du dysfonctionnement des serveurs mail.
Pour les distributions Debian, c’est le démon « bind », ou bien « bind9 » dans notre cas, qui s’occupe du DNS.
Le système de noms de domaine est une vaste base de données distribuée dont le principal travail est de mapper les hostnames en adresses IP. Il a également un rôle important dans l'email routing. Le MTA (Mail Transfer Agent) utilise en général le DNS pour la configuration de Postfix. Il faut garder à l'esprit qu'il y a deux aspects importants de vos serveurs de messagerie et DNS :
 Pour envoyer des mails, le système sur lequel marche postfix serveur mail doit avoir accès à un serveur DNS optimal pour résoudre les hostnames et les informations du email-routing,
 Pour recevoir des mails, le domaine doit être configuré correctement pour router les messages vers votre serveur mail.
Le serveur DNS se met en place au début afin d’identifier l’ensemble des composantes de notre réseau et faciliter l’accès vers l’extérieur.
Le système DNS est destiné à décrire les ordinateurs d’un réseau par la mise en relation d’une adresse IP avec un nom, plus facilement reconnaissable pour un humain.
L’emploi du simple fichier /etc/hosts ne suffit pas évidement pour de grands réseaux, donc ne suffit pas pour Internet. Mais ce fichier est très utile pour qu’une machine arrive à résoudre son propre nom par elle-même.
Pour cela, on va utiliser les fichiers suivants : /etc/hosts
/etc/resolv.conf
/etc/bind
/var/cache/bind/
4.1. Installation du paquetage :

[root] # apt-get install bind9

4.2. Fichiers généraux de configuration :

Ubuntu « éclate » le fichier de configuration en trois alors que ce n’est pas le cas pour les autres distributions.

/etc/bind/named.conf est le fichier de configuration général ;
/etc/bind/named.conf.options est le fichier contenant les options de bind ;
/etc/bind/named.conf.local est le fichier contenant notre zone.

Il faut faire une sauvegarde de ces trois fichiers afin de pallier aux mauvaises manipulations comme suit :
[root] # cp named.conf named.conf.sav
[root] # cp named.conf.options named.conf.options.sav
[root] # cp named.conf.local named.conf.local.sav

Maintenant, il faut éditer le fichier /etc/bind/named.conf avec le nom de notre serveur qui est « ns.kefi.local »
Les serveurs de messagerie doivent être listés dans la zone du domaine via un enregistrement MX (mail exchanger) qui sert à annoncer que l’hôte indiqué s’occupera de répartir le courrier pour toutes les machines de son domaine. Une entrée DNS MX indique les serveurs SMTP à contacter pour envoyer un courriel à un utilisateur d'un domaine donné. Pour récupérer les entrées MX d’un domaine, on utilise « host » qui recherche des informations sur des machines Internet. Cette commande affiche les champs A, MX et CNAME. L'option -v produit un affichage "verbeux", et l’option –t sert à spécifier le type d’information voulue:
#host -v -t MX kefi.local
Kefi.local. 3600 IN MX 10 ns.kefi.local.
Kefi.local. 3600 IN MX 20 ns.kefi.local.

On voit que les courriels envoyés à une adresse en @kefi.local sont en fait envoyés au serveur ns.kefi.local et que le nombre précédant le serveur représente la priorité. Normalement, on est censé utiliser le serveur avec la priorité numérique la plus petite. Ici, c'est donc ns.kefi.local. qui doit être utilisé en priorité avec une valeur de 10.
Remarque : Les entrées MX sont rendues obsolètes par les entrées SRV, informations sur les services disponibles, qui permettent de faire la même chose mais pour tous les services, pas juste SMTP (le courriel).


5. OPENLDAP :




5.1. Présentation :

Un serveur LDAP est une base de données où les informations sont enregistrées de manière hiérarchique sous forme d’arbre.
LDAP signifie Lightweight Directory Access Protocol, c'est une version simplifiée du protocole X500.
Le protocole LDAP définit la méthode d'accès aux données sur le serveur au niveau du client et non la manière avec laquelle les informations sont stockées.
LDAP supporte deux méthodes d'accès aux données d'un annuaire : le mode authentifié et le mode anonyme.
Le mode anonyme peut, a minima, permettre de se connecter en tant qu'utilisateur authentifié, voire, si les ACL (Listes de Contrôle d'Accès) de l'annuaire le permettent, de lire un contenu minimal dans l'annuaire.
Le mode authentifié, comme dans tout autre système gérant des données, permettra par ailleurs de spécifier des droits particuliers (lecture, écriture, authentification) à un utilisateur ou à un groupe d'utilisateurs.
Le protocole LDAP en est actuellement à la version 3 et a été normalisé par l'IETF (Internet Engineering Task Force). Ainsi, il existe une RFC pour chaque version de LDAP.
Le format des données dans le protocole LDAP n'est pas le format ASCII comme c'est le cas pour la plupart des protocoles mais une version allégée du Basic Encoding Rules (BER) appelée Lightweight Basic Encoding Rules (LBER).

5.1.1. Capacités d’OpenLDAP 2.1 :

OpenLDAP 2.1 est la première version à peu près propre de OpenLDAP (entendons nous bien, ce n'est pas péjoratif, le développement d'un tel logiciel est conséquent). Ce terme propre s'applique essentiellement au maintien des contraintes d'intégrité entre types de classes d'objets (pour les classes dites STRUCTURAL, voir plus loin).
OpenLDAP fournit une implémentation libre et complète du standard LDAP. La distribution OpenLDAP inclut le serveur LDAP slapd, le serveur de réplication slurpd, que nous n'utiliserons pas, et divers utilitaires pour interagir avec les serveurs en question.
OpenLDAP permet d'utiliser plusieurs sources de données, en plus des classiques bases internes, à présenter via une interface LDAP :
• DNS :
Un serveur DNS qui sera vu au travers d'un annuaire LDAP ;
• monitor :
Les informations sur le fonctionnement du moteur LDAP, fournies au travers du protocole. Cette possibilité est spécifique à OpenLDAP ;
• ldap :
Un moyen de construire un serveur mandataire inversé (reverse proxy pour les anglicistes), c’est-à-dire un serveur qui analyse les requêtes qu'on lui passe et les retranscrit pour un autre serveur (un bon moyen de s'assurer de la validité -- pour autant que votre OpenLDAP en frontal n'ait pas été compromis -- du protocole LDAP que vous passez à votre annuaire propriétaire) ;
• meta :
Permet la construction d'un méta-annuaire. Similaire au mandataire, il agrège plusieurs autres annuaires en définissant les sous-arbres d'informations (DIT) où viennent se brancher les différentes sources pour les présenter aux clients ;
• passwd :
Les informations fournies sont piochées dans un fichier de type /etc/passwd ;
• sql :
La source de données, plutôt que d'être gérée par un moteur de base de données directement lié à OpenLDAP (ce qui évite d'avoir plusieurs processus différents pour offrir le service), est stockée dans une base externe SQL.

D'autre part, LDAP fournit un format d'échange (LDIF, Lightweight Data Interchange Format) permettant d'importer et d'exporter les données d'un annuaire avec un simple fichier texte.
Notez que le séparateur entre deux objets est une ligne vide.
Nous verrons plus loin ce que sont les classes d'objets (ObjectClass). Disons simplement pour le moment qu'une classe définit les différents attributs qu'un objet peut ou doit posséder.
Le DN est le distinguished name, à savoir le nom de l'objet dans l'annuaire. C'est ce nom qui permet de retrouver de façon unique un objet dans l'arbre des objets. Un objet possède donc toujours un DN, qui reprend son RDN (relative dn). Ici, le RDN de dc=example, dc=com est dc=example et cn=Manager pour le second enregistrement. À noter que le RDN doit être spécifié tant dans l'objet que dans le DN.
Notez aussi que des espaces peuvent apparaître dans un DN, ils ne sont pas significatifs autour des virgules, et que si un DN est unique sur l'annuaire, il n'en est pas de même pour le RDN. Sauf chez Microsoft dans Active Directory Server. Mais aussi dans POSIX où il vaut mieux éviter d'avoir deux comptes ayant le même UID (au sens LDAP) dans l'arbre des comptes. Le tout est de savoir ce que l'on fait.

5.1.2. Classes d'objets :

Quelques classes d'objets :
• o : organization.
Cette classe permet de définir le nom de la société ou association qui gère l'annuaire. Elle peut constituer une racine pour ce même annuaire.
• ou : organizationalUnit.
Un sous-ensemble d'une organisation. On pourrait le traduire en français par un service, une entité, un secteur d'une société.
• dc : domainComponent.
Composant de nom de domaine (au sens DNS du terme). Le com ou example dans example.com
• person : schéma standard pour une personne.
Elle permet de définir une personne par son nom et son prénom (a minima), ainsi que, de façon optionnelle, un mot de passe, un numéro de téléphone, et une description de la personne.

Les classes d'objets permettent donc de regrouper les objets de même type, avec un plus par rapport à une base de données : un objet peut appartenir à plusieurs classes en même temps. Ce qui permet de fusionner, autour du même nom, des données de person, de posixAccount (cette personne a un compte Unix), de sambaSamAccount (elle a aussi un compte Samba), etc.

Un point à garder en mémoire est que les classes peuvent être de plusieurs types : ABSTRACT, STRUCTURAL et AUXILIARY. Dans la pratique, on utilisera essentiellement les deux dernières. Ce typage va nous permettre de définir des héritages entre classes.

Le type ABSTRACT permet juste de définir une classe dont doivent dériver d'autres classes. Une classe de type ABSTRACT ne peut avoir aucune instance d'objet dans l'annuaire.

Le type STRUCTURAL permet de définir une classe qui dérive d'une autre, la classe racine étant elle-même de type ABSTRACT. Le point important ici est que dans l'instanciation d'un objet (dans son écriture LDIF, par exemple), on doit spécifier l'entière hiérarchie des classes. Ce mécanisme est peut-être un peu contraignant (surtout si vous avez à migrer un annuaire OpenLDAP 2.0 vers un 2.1 ou un 2.2, car la version 2.0 ne vous obligeait pas à spécifier toute la hiérarchie d'objets), mais permet une chose importante : ne pas mélanger torchons et serviettes. Imaginez en effet que nous ayons à définir des utilisateurs, mais aussi des groupes. Cela ferait mauvais effet de ne serait-ce que pouvoir mélanger les genres, et d'avoir un objet qui soit à la fois un groupe et un utilisateur. Mais comme les classes afférentes aux groupes et utilisateurs sont structurelles, elles ne peuvent donc être mélangées.

Il existe le dernier type de classe, AUXILIARY, qui permet de s'affranchir de ce mécanisme d'héritage, et d'attribuer des données complémentaires (« auxiliaires » dirait-on en bon franglais) à un objet.

5.1.3. Les attributs et les types :

Les attributs sont donc définissables pour un objet en fonction de la classe à laquelle l'objet appartient.
Le typage est relativement faible contrairement à un SGBD (Système de Gestion de Base de Données). Ou plutôt, il sert un autre dessein : l'interopérabilité. Les types sont en effet spécifiques aux annuaires, et permettent de stocker essentiellement des données alphanumériques, voire des données binaires. Mais il n'est pas complètement dans le rôle de l'annuaire de vérifier ces types. Sur un SGBD, si.
Il existe une cinquantaine de types de données, certains génériques, comme « DirectoryString » (chaîne de caractères UTF-8), « INTEGER » ou « Binary String », d'autres limités à des usages spécifiques, comme « DN » (Distinguished Name, le nom d'un objet dans un annuaire) ou « JPEG » (image au format JPEG).
Tous les types sont définis dans la RFC 2252. Nous verrons plus loin, dans l'écriture d'un schéma, que ces syntaxes (le nom des types LDAP) sont référencées par des OID (oui, les mêmes OID ASN-1 que pour SNMP, mais dans un espace de nommage différent).

5.1.4. Schéma :

L'endroit où se définissent attributs et classes d'objets, qu'ils soient standards ou de votre fait, s'appelle un schéma.
Si vous avez un OpenLDAP à votre disposition, via les paquetages standards de votre distribution Linux, vous pouvez y jeter un coup d'œil. Ils sont dans /etc/openldap/schema/ ou dans /usr/share/openldap/schema/. Au pire, un locate schema vous dira où ils se trouvent.

5.2. Installation :

Paquets à installer :
[root] # apt-get install ldap-server ldap-client
Postfix doit être membre du groupe sasl.
Pour ajouter l'utilisateur Postfix au groupe sasl, tapez :
[root] # adduser postfix sasl

Autoriser la norme v2 pour les clients Win 2000. Par défaut, le script d’installation prend votre nom de domaine pour base.
Si votre domaine ne correspond pas, faites :
[root] # dpkg-reconfigure slapd

5.3. Configuration :

Le fichier de configuration est : /etc/ldap/slapd.conf
• La ligne suivante permet d’autoriser l’utilisation de la norme V2 de LDAP : allow bind_v2.
• La ligne suivante donne la racine de la base LDAP : "dc=ns,dc=kefi,dc=local".
• La ligne suivante qu’il faut ajouter manuellement donne le login de l’administrateur (admin avec le rappel de la racine). Cette ligne et la suivante sont obligatoires pour avoir un accès root sur la base depuis un programme externe (ex : PHP) : rootdn "cn=admin,dc=ns,dc=kefi,dc=local".
• La ligne suivante qu’il faut ajouter manuellement donne le mot de passe en clair : rootpw admin.
Pour plus de sécurité, il est préférable de générer un mot de passe crypté en utilisant la commande : # slappasswd New password : Re-enter new password : SSHArdh5747747LDHDFHMDFHDDHD.
Ensuite, il faut copier la chaîne cryptée à la place du mot de passe en clair.

Paramétrage de l’accès en écriture de la base. Il faut indiquer le bon login et la racine de la base :
access to attribute=userPassword
by dn="cn=admin,dc=ns,dc=kefi,dc=local" write
by anonymous auth
by self write
by * none

Paramétrage de l’accès en lecture seule de la base. Il faut indiquer le bon login et la racine de la base :
access to * by
dn="cn=admin,dc=ns,dc=kefi,dc=local" write
by * read

Démarrage du serveur (slapd). Démarrer le serveur :
/etc/init.d/slapd restart

5.4. Peupler LDAP :

On va peupler LDAP avec un schéma classique avec les adresses book et des comptes Posix qui vont permettre l’authentification à diverses applications comme les applications web et les emails avec MTA.
Les répertoires LDAP peuvent être peuplés avec les fichiers LDIF (LDAP Directory Interchange Format).
Pour cela, on crée un fichier LDIF dans le système et on le nomme par exemple : base.ldif
dn: ou=people,dc=ns,dc=kefi,dc=local
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=ns,dc=kefi,dc=local
objectClass: organizationalUnit
ou: groups

dn: uid=lotfi,ou=people,dc=ns,dc=kefi,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: lotfi
sn: Mokni
givenName: Lotfi
cn: Lotfi Mokni
displayName: Lotfi Mokni
uidNumber: 1000
gidNumber: 10000
userPassword: password
gecos: Lotfi Mokni
loginShell: /bin/bash
homeDirectory: /home/lotfi
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: lotfi.mokni@kefi.local
postalCode: 1001
l: Tunis
o: Example
mobile: +216 (0) 96 20 66 64
homePhone: +216 (0) 71 12 34 56
title: System Administrator
postalAddress: 13 Rue de la Liberté Tunis
initials: LM

dn: cn=example,ou=groups,dc=kefi,dc=local
objectClass: posixGroup
cn: example
gidNumber: 10000

Dans cet exemple, on a ajouté un utilisateur et un groupe. Mais après on peut faire des ajouts avec la commande « ldapadd » comme suit :
#ldapadd -x -D cn=admin,dc=ns,dc=kefi,dc=local -W -f base.ldif

On peut vérifier cet ajout par la commande :
#ldapsearch -xLLL -b "dc=ns,dc=kefi,dc=local" uid=lotfi sn lotfi cn
dn: uid=lotfi,ou=people,dc=ns,dc=kefi,dc=local
cn: Lotfi Mokni
sn: Mokni
givenName: Lotfi

Il suffit d'indiquer maintenant au système d'aller interroger notre annuaire LDAP, ceci se fait dans le fichier /etc/nsswitch. Il vous suffit de rajouter après compat la directive ldap :
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd: compat ldap
group: compat ldap
shadow: compat ldap

5.5. Administration :

Pour administrer facilement votre serveur LDAP, vous pouvez utiliser Luma (client Graphique), phpLDAPadmin (via navigateur) ou encore le très bon LAM (LDAP Account Manager) ou bien gq.
apt-get install gq
apt-get install luma
apt-get install ldap-account-manager
Pour PhpLDAPadmin, une fois installé, ouvrez un navigateur et tapez :
http://votre_domaine.com/phpldapadmin/

5.6. Identification :

Pour Luma et PhpLDAPadmin : cn=admin,dc=ns, dc=kefi ,dc=local PASSWORD.
Pour LDAP Account Manager, une fois installé, ouvrez un navigateur et tapez :
http://ns.kefi.local/lam/

Fig.1 : Interface d’administration de Luma

6. POSTFIX :



6.1. Présentation :

Postfix est une application réseau faite pour Unix. C’est un MTA (Mail Transfer Agent), il assure le transport des messages entre des serveurs et localement sous un système. Il reçoit et délivre les emails à travers le réseau via le protocole SMTP (port 25). Comme il est dans les dépôts « main » de Ubuntu, il reçoit donc les mises à jour de sécurité. Cela permet de corriger les failles de sécurité qui pourraient être exploitées par des utilisateurs locaux malveillants.
On va configurer Postfix comme étant un serveur SMTP. Il peut aussi communiquer avec n’importe quel autre serveur qui supporte ou « parle » SMTP.






Fig.2 : Chemins d’échange de courriel



6.2. Installation :

Dans cette configuration de Postfix, on garde notre domaine kefi.local avec son enregistrement MX valide comme ns.kefi.local
[root] # aptitude install postfix

Postfix doit être membre du groupe sasl, ceci permettra à postfix d’aller dialoguer avec « saslauthd » grâce au socket unix /var/run/saslauthd/mux.

Pour ajouter l'utilisateur Postfix au groupe sasl, tapez :
[root] # adduser postfix sasl

Pour configurer Postfix, tapez :
[root] # dpkg-reconfigure postfix





On aura l’utilitaire de configuration des paquets comme suit :



Fig.3 : Choix du type du serveur de messagerie

Dans ce dernier imprimé écran, on constate que pour ce qui est de Postfix, les paquets Debian ont popularisé une certaine terminologie représentant les modes de configuration d´un serveur SMTP entre lesquels une société peut choisir, et qui sont :

• Local : Tout est fait en local, il n´y a pas d´échange via le réseau, bien que le mode local est utile pour la communication entre l’utilisateur et le système et certains programmes qu’il utilise. Ex: mails d’administrations adressés à root et messages du kernel.
• Smarthost : Le serveur peut recevoir des mails directement, mais tout le courrier sortant passe par un autre serveur (centralisation). Avec certains FAI, il est obligatoire de passer par leurs serveurs de messagerie (ils filtrent ainsi le spam). Dans ce cas, si l’on veut mettre en place son propre serveur de mail, le mode smarthost offre donc une solution pour ce cas de figure.
• Satellite : Le serveur ne reçoit pas de mail directement et ne peut qu´envoyer des mails via un serveur.
• Internet site : Le serveur envoie et reçoit des mails directement.


Dans la configuration la plus simple et sans filtrage de la part des FAI, nous dirons qu’il faut au moins un serveur SMTP pour chaque entreprise et un serveur POP ou IMAP pour l’entreprise du destinataire, soit 3 serveurs au total.

Fig.4 : Le transit d’un seul email

Fig.5 : La mise à jour de la file d’attente des courriels

Fig.6 : Indication des réseaux internes pour Postfix

Fig.7 : Taille maximale des boîtes aux lettres

Fig.8 : Caractère d’extension des adresses locales

Fig.9 : Fin d’installation de Postfix et activation
6.3. Configuration :

Après avoir fait l’installation de Postfix, on va faire sa configuration pour qu’il soit un serveur SMTP, mais avec une authentification SMTP qui vise à identifier les clients avec leur login et mot de passe (authentification chiffrée) pour les autoriser à relayer des mails vers notre serveur et vers les domaines extérieurs.
Pour cela, il faut installer les paquets suivant : openssl, ssl-cert, libssl, ca-certificates, postfix-tls.

Transport Layer Security (TLS), anciennement nommé Secure Socket Layer (SSL), est un protocole de sécurisation des échanges sur Internet. Par abus de langage, on parle de SSL pour désigner indifféremment SSL ou TLS.

TLS fonctionne suivant un mode client-serveur. Il fournit les objectifs de sécurité suivants:
• l'authentification du serveur ;
• la confidentialité des données échangées (ou session chiffrée) ;
• l'intégrité des données échangées ;
• de manière optionnelle, l'authentification ou l'authentification forte du client avec l'utilisation d'un certificat numérique ;
• la spontanéité, c’est-à-dire qu'un client peut se connecter de façon transparente à un serveur auquel il se connecte pour la première fois.

Dans la pile de protocole TCP/IP, SSL se situe entre la couche application (comme HTTP, FTP, SMTP, etc.) et la couche transport TCP.
Son utilisation la plus commune reste cependant en dessous de HTTP.

Générons le certificat SSL valable 1 an pour le TLS de Postfix :
[root] # postconf -e 'smtpd_sasl_local_domain ='
[root] # postconf -e 'smtpd_sasl_auth_enable = yes'
[root] # postconf -e 'smtpd_sasl_security_options = noanonymous'
[root] # postconf -e 'broken_sasl_auth_clients = yes'
[root] # postconf -e 'smtpd_recipient_restrictions = ' permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
[root] # postconf -e 'inet_interfaces = all'

echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key  pour sécuriser l’accès à la clé !

C’est précisément la commande qui va suivre qui va générer le certificat et nous poser certaines questions auxquelles il faut répondre correctement:
[root] # openssl req -new -key smtpd.key -out smtpd.csr
On aura :
Enter pass phrase for smtpd.key=
Information about your certificate request=
You are about to enter the DistinguishedName or a DN=
Country Name=
State or Province name=
Locality Name (eg, city) =
Organisation Name=
Organisational unit Name(section)=
Common Name (eg, YOUR name)= ns.kefi.local  Très important!
Email Address=
Please enter the following “extra” attributes to be sent with your certificate request
A challenge password []=



Fig.10: Générer le certificat SSL



Fig.11: Renseignements pour le certificat SSL pour le TLS de Postfix


openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'  Enregistre les informations de négociation TLS et des certificats.
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'myhostname = ns.kefi.local'

Le fichier /etc/postfix/main.cf doit ressembler à ceci :
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
myhostname = ns.kefi.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = ns.kefi.local, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8  réseaux autorisées (on peut y ajouter d’autres).
mailbox_size_limit = 20000000
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes  active le support SASL du serveur SMTP.
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

N'oubliez pas de donner un myorigin correct. Les serveurs destinataires vont en effet tester ce paramètre. Ils vérifieront dans les serveurs DNS si cette adresse existe bien !

Puis redémarrez le serveur Postfix :
[root] # /etc/init.d/postfix restart


6.4. Authentification :

L'authentification utilise saslauthd. SASL signifie Simple Authentication and Security Layer, c'est un protocole qui permet une authentification quelconque et saslauthd est un processus démon qui se charge des requêtes d’authentifications, et doit démarrer au démarrage des scripts système en mode multi-user.
Le mécanisme d’authentification de saslauthd ici sera PAM (Pluggable Authentication Modules). C’est un mécanisme permettant d'intégrer différents schémas d'authentification, permettant de ce fait de rendre indépendants du schéma les logiciels réclamant une authentification. L'administrateur système peut alors définir une stratégie d'authentification sans devoir recompiler des programmes d'authentification. PAM permet de contrôler la manière dont les modules sont enfichés dans les programmes en modifiant un fichier de configuration. Les programmes qui donnent aux utilisateurs un accès à des privilèges doivent être capables de les authentifier. Lorsque vous vous connectez sur le système, vous indiquez votre nom et votre mot de passe. Le processus de connexion vérifie que vous êtes bien la personne que vous prétendez être.
Il est possible de changer quelques détails pour le faire fonctionner proprement. Postfix exécutant "chroot" qui permet de changer le répertoire racine vers un nouvel emplacement ; c’est une sorte de prison ou Jail permettant de tester certaines choses sans risquer de casser son système. Alors, dans /var/spool/postfix, nous devons faire :
mkdir -p /var/spool/postfix/var/run/saslauthd
rm -fr /var/run/saslauthd

La configuration de saslauthd se fait dans /etc/default/saslauthd
Il faut alors éditer ce dernier fichier comme suit :
Décommentez START=yes
Spécifiez MECHANISMS= « sasldb »
et modifiez la dernière ligne : OPTIONS="-c -m /var/run/saslauthd"
comme cela:
OPTIONS="-m /var/spool/postfix/var/run/saslauthd"
Enfin redémarrez saslauthd : # /etc/init.d/saslauthd restart

6.5. TESTS :
Afin de vérifier que SMTP-AUTH et TLS fonctionnent correctement, tapez :
#telnet localhost 25 ou bien #netcat localhost 25
Ensuite, après avoir établi la connexion avec Postfix, tapez :
ehlo kefi.local
Si vous voyez ces lignes :
250-STARTTLS
250-AUTH
Ça fonctionne !
Pour retourner à l'invite de commande, tapez :
Quit



Fig.12 : Fonctionnement de SMTP-AUTH et TLS

6.6. Anti-spam :

Selon les estimations, 62 billions de messages de spam ont été envoyés dans le monde en 2008. Ils ne font que remplir les boites aux lettres des utilisateurs particuliers et surtout des entreprises, sans oublier son impact financier dans le cas de certaines arnaques par phishing.
Donc il devient nécessaire de faire en sorte que les spams soient éradiqués des boites emails. Pour cela nous allons étudier la solution SpamAssassin qui semble la plus largement utilisée sur les serveurs UNIX/LINUX.
Le serveur de mail que nous utilisons est Postfix. On va intégrer directement dans le processus de réception des mails l’éradication des spams. Comme nous allons aussi avoir besoin de faire marcher un antivirus dans cette chaine, nous allons utilisez la méthode d’intégration de SpamAssassin grâce à amavis.
SpamAssassin est un outil sous licence Apache Software License qui permet de filtrer le trafic des courriels à l’arrivée et à la sortie du serveur de mail afin d’éradiquer ceux reconnus comme pourriels ou courriels non sollicités.

6.6.1. Installation :

# apt-get install spamassassin spamc pyzor razor arj amavisd-new clamav-daemon clamav-testfiles libmail-dkim-perl re2c libsys-syslog-perl libtextcat0

6.6.2. Configuration pour Postfix :

Dans le fichier master.cf (/etc/postfix/master.cf) rajouter en fin de fichier les lignes suivantes :

smtp inet n - - - - smtpd
-o content_filter=spamassassin
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o receive_override_options=no_address_mappings
#suite de spamassassin: ne pas oublier un espace avant spamassassin
spamassassin unix - n n - - pipe
user=nobody argv=/usr/bin/spamc -f –e

6.6.3. Configuration de SpamAssassin :

Le fichier de configuration est /etc/spamassassin/local.cf
Il doit ressembler à ceci :

# SpamAssassin config file for version 3.x
# NOTE: NOT COMPATIBLE WITH VERSIONS 2.5 or 2.6
# See http://www.yrex.com/spam/spamconfig25.php for earlier versions
# Generated by http://www.yrex.com/spam/spamconfig.php (version 1.50)
# How many hits before a message is considered spam.
required_score 7.5
# Change the subject of suspected spam
rewrite_header subject [SPAM]
# Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)
report_safe 1
# Enable the Bayes system
use_bayes 1
# Enable Bayes auto-learning
bayes_auto_learn 1
# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all

Il est maintenant nécessaire d’activer les plugins pour SpamAssassin dans :
/etc/mail/spamassassin/v310.pre :
# This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
#This file was installed during the installation of SpamAssassin 3.1.0,
# and contains plugin loading commands for the new plugins added in that
# release. It will not be overwritten during future SpamAssassin installs,
# so you can modify it to enable some disabled-by-default plugins below,
# if you so wish.
###################################################################
# DCC - perform DCC message checks.
#
# DCC is disabled here because it is not open source. See the DCC
# license for more details.
#
loadplugin Mail::SpamAssassin::Plugin::DCC
# Pyzor - perform Pyzor message checks.
#
loadplugin Mail::SpamAssassin::Plugin::Pyzor
# Razor2 - perform Razor2 message checks.
#
loadplugin Mail::SpamAssassin::Plugin::Razor2
# SpamCop - perform SpamCop message reporting
#
loadplugin Mail::SpamAssassin::Plugin::SpamCop
# AntiVirus - some simple anti-virus checks, this is not a replacement
# for an anti-virus filter like Clam AntiVirus
#
#loadplugin Mail::SpamAssassin::Plugin::AntiVirus
# AWL - do auto-whitelist checks
#
loadplugin Mail::SpamAssassin::Plugin::AWL
# AutoLearnThreshold - threshold-based discriminator for Bayes auto-learning
#
loadplugin Mail::SpamAssassin::Plugin::AutoLearnThreshold
# TextCat - language guesser
#
loadplugin Mail::SpamAssassin::Plugin::TextCat
# AccessDB - lookup from-addresses in access database
#
#loadplugin Mail::SpamAssassin::Plugin::AccessDB
# WhitelistSubject - Whitelist/Blacklist certain subject regular expressions
#
loadplugin Mail::SpamAssassin::Plugin::WhiteListSubject
###################################################################
# experimental plugins
# DomainKeys - perform DomainKeys verification
#
# External modules required for use, see INSTALL for more information.
# Note that this may be redundant if you also plan to use the DKIM plugin.
#
#loadplugin Mail::SpamAssassin::Plugin::DomainKeys
# MIMEHeader - apply regexp rules against MIME headers in the message
#
loadplugin Mail::SpamAssassin::Plugin::MIMEHeader
# ReplaceTags
#
loadplugin Mail::SpamAssassin::Plugin::ReplaceTags

Enfin dans /etc/default/spamassassin, il est nécessaire de mettre la valeur de ENABLED à 1 ce qui permet à spamd, le démon de SpamAssassin, de se lancer au démarrage.
Relancer postfix et spamd :
#/etc/init.d/spamassassin restart
#/etc/init.d/postfix restart

7. SERVEUR POP :

Le serveur POP est un MAA (Mail Access Agent). J’ai opté ici pour le protocole POP vu que je travaille en local. Pour une personne qui ne lit ses mails que depuis sa machine personnelle, POP sera le serveur le plus adapté vu sa rapidité pour la relecture une fois téléchargé et l’absence de problème de quotas.
Lorsque c'est le protocole POP qui est défini dans votre client de messagerie, ce dernier se connecte au serveur de messagerie (là où se trouvent les nouveaux messages arrivés), copie les nouveaux messages sur le disque dur de votre ordinateur personnel et efface les messages du serveur.
On a ensuite la possibilité de lire les messages même si on n’est plus connecté à Internet, puisque ils sont désormais sur le disque dur de l’ordinateur.
Une option de configuration du protocole POP appelée "leave mail on server", nous permet de ne pas effacer les messages du serveur, une fois qu'ils ont été copiés sur l’ordinateur (par exemple dans des dossiers locaux qu’on crée sur l’ordinateur). Il est même possible de définir un nombre de jours durant lesquels les messages ne doivent pas être effacés du serveur. Une fois cette limite dépassée, les messages seront effacés.
Avec POP, le quota ne risque pas d'être dépassé car les messages sont effacés du serveur, à moins que vous ayez coché l'option "leave mail on server".
POP ne connaît que l'INBOX d'une boîte-aux-lettres. Il n'est pas possible d'accéder par POP à des dossiers qui auraient été créés sur le serveur (lors d'une connexion par IMAP, il est possible de le faire).
L’avantage du protocole POP est qu'il vous permet de vous connecter brièvement à Internet pour copier vos messages de votre boîte-aux-lettres sur votre ordinateur. Vous pourrez ensuite vous déconnecter, et prendre tout le temps nécessaire à la lecture de vos messages.
Dovecot est une implémentation libre des protocoles POP3 et IMAP servant à lire le mail à distance. Dovecot lit les mails stockés sur le disque dur dans un des formats standards Mbox ou Maildir et les sert par-dessus POP ou IMAP.
Pour une Ubuntu, on va utiliser le paquetage Dovecot.

7.1. Installation de Dovecot :

Pour l'installer, il suffit de tapez :
# apt-get install dovecot-common dovecot-pop3d



7.2. Configuration de dovecot-ldap.conf :

Voici les paramètres à configurer dans le fichier /etc/dovecot/dovecot-ldap.conf :
hosts NomDuServeurLDAP
auth_bind yes
ldap_version 3
base dc=votredomaine,c=org
user_filter (&(objectclass=posixAccount)(uid=%u))
pass_filter (&(objectclass=posixAccount)(uid=%u))
default_pass_schema SSHA
user_global_gid mail

Pour connaitre le fichier de configuration de Dovecot on fait :
# dovecot -n | head -1
1.0.10 : /etc/dovecot/dovecot.conf

Editez ensuite ce fichier de configuration /etc/dovecot/dovecot.conf et modifiez ces lignes comme suit :
protocols = pop3
pop3_uidl_format = %08Xu%08Xv
mail_location = mbox:/var/spool/mail/%u
disable_plaintext_auth = no  pour se connecter à Dovecot seulement par SSL.
Éditez donc cette ligne comme cela :
mail_location = mbox:/var/spool/mail/%u

Du côté poste client, configurez votre logiciel de mail favori pour que votre serveur Linux soit le serveur POP (il suffit de rajouter le nom du poste en question dans le champ correspondant), et puis c'est tout, les courriers seront récupérés dans /var/spool/mail du serveur.

Enfin redémarrez le service :
# /etc/init.d/dovecot restart
Restarting IMAP/POP3 mail server dovecot [OK]

Il ne faut pas oublier que pour utiliser le serveur POP, il faut toujours avoir une méthode d’authentification. Ainsi, il est nécessaire de créer des comptes d’utilisateurs sous courrier.

Remarque : En général le nom du serveur POP s’écrit comme ça : pop.fai.fr. Mais dans mon exemple (expérimental) c’est pop.kefi.local.

8. MAIL BROWSER : THUNDERBIRD

8.1. Introduction :

Thunderbird est l’effeuilleur de courriel de la fondation Mozilla. Il vous permet de paramétrer un ou plusieurs comptes de courrier électronique et de recevoir et d’envoyer des courriels.
Vous pouvez partager la configuration pour une même boîte de courrier électronique à relever entre la version de Thunderbird installée sur votre Ubuntu et celle installée sur votre Windows. Cet aspect est très pratique pour ceux et celles qui ont un ordinateur en double amorce et qui souhaitent relever leurs courriels alternativement sous les deux systèmes d'exploitation.
Thunderbird possède une option « Récupérer les en-têtes uniquement », qui peut être utile avec une connexion bas débit, ou pour mieux lutter contre le spam : on ne télécharge alors que les courriels souhaités à partir de la liste reçue. Le menu Outils → Filtre de messages recense les règles de filtrage à appliquer aux messages.
Pour filtrer des messages, vous utilisez généralement les informations sur l'expéditeur (en-tête « from: »), le sujet (en-tête « subject: »), etc.
Pour ajouter de nouveaux comptes, rendez-vous dans le menu Édition → Paramètres des comptes… et cliquez sur « Ajouter un compte… ». Renseignez alors les informations demandées.

8.2. Installation de Thunderbird :

#apt-get install thunderbird thunderbird-locale-en-gb


8.3. Configuration et utilisation :

Ce client courriel se configure comme tous les clients courriel, vous devez connaître vos serveurs (POP ou IMAP et SMTP), vos identifiant et mot de passe.

Fig.13 : Page d’accueil de Thunderbird
La création des comptes est assez facile à faire, il faut juste suivre cet utilitaire tout en indiquant :
- Le serveur POP.
- Le serveur SMTP.
- L’authentification (SSL pour le serveur POP, TLS pour le serveur SMTP).
- Nom de l’utilisateur et son adresse courriel.

Fig.14 : Paramètres d’un nouveau compte

Fig.15 : Type du serveur de réception




Fig.16 : Paramètres du serveur POP


Pensez à bien cocher la case qui dit que le serveur requiert une authentification (SSL pour le serveur POP, TLS pour le serveur SMTP).

En général, le nom du serveur POP s’écrit comme ça : pop.fai.fr. Mais dans mon exemple (expérimental) c’est pop.kefi.local.



















Fig.17 : Rédaction et adressage du courrier


Cochez la case rédiger les messages au format HTML si vous souhaitez ultérieurement mettre une quelconque mise en forme à votre texte. Dans le cas contraire, décochez cette case pour accélérer la vitesse de transfert (due au poids moins lourd du message) mais aussi pour permettre à tous les clients de messagerie de lire le message, car certains clients mails ne lisent pas les mails au format HTML.











Fig.18 : Fin de la création d’un compte


Thunderbird se trouve maintenant dans le menu Applications → Internet → Messagerie Thunderbird.





9. CONCLUSION ET PERSPECTIVES :
Cette solution de sécurité, bien que efficace, est un casse-tête pour réaliser de l´hébergement de masse car dès qu´on construit sa propre solution d´authentification, il est nécessaire d´adapter toutes les procédures soi-même : changement de mot de passe, révocation de compte, renommage de compte, listes de diffusion, etc.
Vu la limite des ressources qui sont en ma disposition, je ne pouvais faire qu’une configuration du serveur SMTP en mode local.
POP est le protocole le plus ancien et également le plus rustique, son seul but est de permettre à l´utilisateur de télécharger sa boîte de réception sans autre interaction. Le protocole POP n'est pas conseillé si vous voulez accéder à vos messages depuis plusieurs endroits simultanément, car les messages étant effacés à chaque consultation, vous aurez l'impression de "manquer" ou de voir "disparaître" certains messages. Tandis que IMAP répond aux besoins de nomadisme en proposant une multitude de fonctionnalités complexes. Ce fût une sorte de révolution lorsque les utilisateurs ont pu stocker, dans la limite de leurs quotas, tous leurs messages sur le serveur qui les maintenait classés et avec les attributs donnés par les utilisateurs. Cependant, avec POP, on peut activer l’option "leave mail on server", les messages ne risquent plus alors d’être effacés une fois consultés, toujours dans les limites du quota.
La solution de messagerie basée sur Postfix comme un serveur SMTP est très prometteuse vu sa fiabilité et sa robustesse au point que le ministère de la défense français a opté pour cette infrastructure en 2008, ce qui nous donne à réfléchir sur son importance.