REPUBLIQUE DU SENEGAL
Université Cheikh Anta Diop de Dakar
DEPARTEMENT MATHS INFORMATIQUE
Présenté par :
MOUHAMADOU GAYE
Année universitaire : 2009 - 20010
Présenté par Mouhamadou GAYE
* *
Thème :
MISE EN PLACE D'UN SITE SECURISE
INTRODUCTION
La sécurité informatique est l'ensemble des
moyens techniques, organisationnels, juridiques et humains nécessaires
et mis en place pour conserver, rétablir, et garantir la
sécurité des systèmes informatiques. Elle est
intrinsèquement liée à la sécurité de
l'information et des systèmes d'information. Ce projet à pour
objectif de sécurisé un site en utilisant les protocoles SSH,
SSH, HTTPS et le Certificat.
Le protocole SSL
SSL est un protocole qui a été
développé par la société Netscape. Ce protocole
permet à deux machines de communiquer de manière
sécurisée. Les informations échangées entre les
deux machines sont de ce fait inviolables. Le protocole SSL se traduit par la
combinaison de deux protocoles bien distincts (Handshake et Record) qui
permettent la négociation entre les deux machines et le chiffrement des
données échangées.
SSL assure 3 choses:
· Confidentialité: Il est
impossible d'espionner les informations échangées.
· Intégrité: Il est
impossible de truquer les informations échangées.
· Authentification: Il permet de s'assurer
de l'identité du programme, de la personne ou de l'entreprise avec
laquelle on communique.
Le protocole SSH
SSH (Secure Shell): c'est une sorte de telnet
(ou rlogin) sécurisé. Cela permet de se connecter à un
ordinateur distant de façon sûre et d'avoir une ligne de commande.
SSH possède des extensions pour sécuriser d'autres protocoles
(FTP, POP3 ou même X Windows).
Le protocole HTTPS
C'est HTTP+SSL. Ce protocole est inclus dans pratiquement tous
les navigateurs, et vous permet (par exemple) de consulter vos comptes
bancaires, compte de messagerie ..., par le web de façon
sécurisée. Le cadenas vous indique que les communications entre
votre
navigateur et le site web sont sûres: personne ne peut les
espionner, et personne ne peut trafiquer les communications. Mais il ne
garantie rien d'autre !
Les certificats
Lors d'une négociation SSL, il faut s'assurer de
l'identité de la personne avec qui on communique. Comment être
sûr que le serveur auquel vous parlez est bien celui qu'il prétend
être ?
C'est là qu'interviennent les certificats. Au moment de
vous connecter sur un serveur web sécurisé, ce dernier vous
enverra un certificat contenant le nom de l'entreprise, son adresse, etc. C'est
une sorte de pièce d'identité.
Comment vérifier l'authenticité de cette
pièce d'identité ?
Ce sont les PKI (Public Key Infrastructure), des
sociétés externes (auxquelles vous faites implicitement
confiance), qui vont vérifier l'authenticité du certificat. (La
liste de ces PKI est incluse dans votre navigateur. Il y a
généralement VeriSign, Thawte, etc.)
Ces PKI signent cryptographiquement les certificats des
entreprises (et ils se font payer pour ça).
MISE EN PLACE
Nous allons sécuriser notre site de messagerie
électronique nommé webmail cela suppose que nous avons
déjà mis en place un hôte virtuel basé sur le nom
nommé
gaye.sn, ce dernier
étant accessible sur le port 80 à
l'adresse
http://gaye.sn
Activation du module SSL
Pour que le protocole SSL puisse fonctionner avec le Serveur HTTP
Apache2, il faut activer le module ssl avec la commande :
puis recharger la configuration d'Apache2 faîtes :
Création du certificat
Nous travaillons sous ubuntu 9.10
Installer si nécessaire le package : apt-get install
ssl-cert
Pour générer un certificat auto-signé avec
Ubuntu, il nous suffit de taper les commandes suivantes dans un terminal :
Créer le certificat ssl :
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf
/etc/ssl/private/localhost.pem
On peut cependant créer son certificat SSL auto
signé en installant le paquet openssl ? Il est aussi possible
d'installer ca-certificates, mais ça ne semble pas utile dans le cas
d'un certificat auto-signé.
Plutôt que de repartir de l'ancien script, je propose
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out
/etc/apache2/server.crt - keyout /etc/apache2/server.key
Pour voir notre certificat sous format
texte:/etc/apache2/server.crt
Et pour le clé :
-x509 -nodes donne le type de certificat voulu
-days 365 indique la durée de validité (en jours)
de votre certificat
-newkey rsa:1024 demande une clé RSA de 1024 bits -
d'après la doc apache, il est
déconseillé de créer une clé plus
grosse pour des histoires de compatibilité -out /etc/apache2/server.crt
est le chemin de votre certificat
-keyout /etc/apache2/server.key est le chemin de la clé
privée Répondez alors aux questions posées :
Country Name (2 letter code) [GB]:SN
Entrez SN si vous êtes situé au SENEGAL et validez
par la touche << Entrée »
State or Province Name (full name) [Some-State]:SENEGAL Entrez
SENEGAL et validez par la touche << Entrée » Locality Name
(eg, city) []:DAKAR
Indiquez ici le nom de votre ville. (exemple : DAKAR) et validez
par la touche << Entrée » Organization Name (eg, company;
recommended) []:LAGGA
Indiquez le nom de votre organisation, de votre
société. (Exemple : LAGGA) et validez par la touche «
Entrée ». Si vous n'avez pas de société, vous pouvez
mettre un nom fictif, le nom de notre site Web par exemple.
Organizational Unit Name (eg, section) []:LTDSI
Indiquez ici le nom de la section de votre organisation, de votre
société. Si vous n'en avez pas, mettez la même chose que
pour la question précédente.
Common Name (eg, YOUR name) []:
http://127.0.0.1/index.html/src/login.php
Ici, il convient de faire particulièrement attention
à ce que vous allez entrer. Vous devez indiquer le nom de domaine que
vous désirez sécuriser. En ce qui nous concerne, il s'agit du
domaine :
gaye.sn. Nous indiquons donc
gaye.sn et nous validons par la touche
« Entrée ».
ici
http://127.0.0.1/index.html/src/login.php
est indexé donc elle équivaut à mon nom de domaine
www.gaye.sn
Email Address []:gaye@
amdy-laptop.gaye.sn
Ici, il s'agit d'indiquer l'adresse E-mail de
l'administrateur. En ce qui nous concerne, il s'agit de :
gaye@amdy-laptop.gaye.sn.
Nous terminons bien entendu en validant par la touche « Entrée
».
Configuration Apache2
Ajout de la directive Listen 443
Par défaut, Apache2 est configuré pour
écouter sur le port 80. Il s'agit là de la configuration usuelle
d'un Serveur Web. Cependant, le protocole SSL a besoin d'un port
spécifique pour pouvoir fonctionner. Il s'agit du port 443.
Nous allons donc rajouter une directive de configuration
nommée Listen qui permettra d'indiquer à Apache2 qu'il doit aussi
écouter sur le port 443.
Pour ce faire, éditez le fichier
/etc/apache2/ports.conf et rajoutez la ligne suivante :
Listen 443
Création du fichier de configuration
Ayant déjà configuré notre hôte
virtuel
gaye.sn un fichier de configuration
nommé gaye doit exister dans le répertoire
/etc/apache2/sites-available.
Voici le contenu de ce fichier :
Note : Il s'agit ici du contenu minimal d'un virtualhost.
Pour sécuriser cet Hôte Virtuel, nous allons donc
devoir modifier ce fichier en y ajoutant un hôte virtuel accessible sur
le port 443, ce dernier contenant des directives particulières qui sont
les suivantes :
Directive SSLEngine :
Cette directive permet d'activer le moteur SSL au sein d'un
hôte virtuel, Elle peut prendre deux arguments -> on/off
Directive SSLCertificateFile :
Cette directive définit le certificat authentifiant le
Serveur auprès des clients. L'argument est le chemin d'accès au
certificat. En ce qui nous concerne, le certificat se trouve dans le
répertoire /etc/apache2/
Directive SSLCertificateKeyFile :
Cette directive définit la clé privée du
Serveur utilisée pour signer l'échange de clé entre le
client et le serveur. Elle prend en argument le chemin d'accès à
la clé (fichier). Dans notre cas, la clé se trouve dans le
répertoire /etc/apache2/.
Par ailleurs, comme nous l'avons déjà fait pour
notre hôte virtuel accessible sur le port 80, nous allons devoir rajouter
une directive NameVirtualHost qui permettra que l'adresse nommée par le
nom de notre hôte virtuel accessible sur le port 443 soit résolue
correctement. Nous rajouterons donc cette directive (NameVirtualHost
127.0.0.0:443) au début de notre fichier de configuration.
Enfin, afin que les clients puissent continuer
d'accéder au site Web en tapant une url de type http et non https, nous
allons modifier l'hôte virtuel accessible sur le port 80 en
remplaçant la directive DocumentRoot par une directive de
redirection.
Voici donc le contenu de notre fichier une fois modifié
:
Reload du Serveur Http Apache2
Afin que les modifications que nous venons d'effectuer soient
prises en compte, nous devons demander au Serveur Http Apache2 de relire ses
fichiers de configuration.
Pour ce faire, il suffit de taper la commande suivante dans un
terminal :
Pour accéder à notre site sécurisé il
suffit après avoir configuré le fichier /etc/resolv.conf Taper
sur un URL
http://gaye.sn et vous obtenez :
Pour obtenir plus d'information cliqué sur Détail
techniques puis sur je comprends les risques pour obtenir ceci :
Puis cliquer sur Ajouter une exception et vous obtenez :
Et la pour voir le certificat cliquez sur le bouton Voir ...
à droite :
En Détails vous obtenez :
Puis revenir sur confirmé l'exception de
sécurité pour accéder à votre site de messagerie
sécurisé :
Et la vous vous connectez en toute sécurité
CONCLUSION
Ce projet a été ainsi pour nous une
expérience enrichissante aussi bien sur le plan technique que humain. Il
nous a permis d'une part de mettre en pratique nos connaissances
théoriques acquises tout au long de notre formation en
sécurité réseaux, de réaliser un site
sécurisé tant désiré en milieu des entreprises et
d'autre part de voir la place qu'occupe la sécurité des
systèmes informatique dans le monde d'aujourd'hui.
|