Upload
phungkiet
View
235
Download
0
Embed Size (px)
Citation preview
01/01/2014
Serveur Web Sécurisé Installer un serveur sécurisé avec
protocole SSL
MAESTRE Anthony CFA ROBERT SCHUMAN
Pag
e1
Principales fonctionnalités
Le serveur web est un serveur HTTP qui reçoit des requêtes et y répond. Il est constamment
connecté à Internet et n’importe quel ordinateur connecté à l'Internet peut envoyer une
requête au serveur web et lui demander de lui transmettre une page html et tous les éléments
qui y sont indiqués (images, ...)
C’est un ordinateur disposant d'un logiciel spécifique qui lui permet d'accepter des demandes
d'ordinateurs clients et de renvoyer des réponses à ces demandes. Un serveur Web permet de
partager des informations via Internet ou via des réseaux intranet et extranet.
Pour fonctionner correctement, le serveur web a besoin des paquets suivants :
Apache : c’est le serveur web le plus répandu sur Internet. Il s'agit d'une application sur les
systèmes d'exploitation de type Unix. Son rôle est d'écouter les requêtes émises par les
navigateurs (qui demandent des pages web), de chercher la page demandée et de la renvoyer.
PHP : c’est un langage de script. Il permet, de décrire dans une page web, un affichage
dynamique d'information, c'est-à-dire que le texte affiché peut dépendre de variables. Nous
avons par exemple la possibilité d'afficher dans une page renvoyée au navigateur, la date du
jour. Les instructions PHP sont généralement contenues dans des fichiers d'extension php. Ces
fichiers peuvent contenir du HTML, entremêlé avec le code PHP. Quand un navigateur demande
un tel fichier, le serveur Apache exécute les instructions PHP, qui produisent une page HTML.
Une fois la page HTML générée, le serveur la renvoie au navigateur, qui ne voit qu'une page
HTML.
MySQL : c’est un système de gestion de base de données. Son rôle est de stocker les données,
sous forme de tables, et de permettre la manipulation de ces données à travers le langage de
requête SQL
Description:
Caractériser un service et le serveur associé
Exploiter les fonctions de base d’un langage de commandes.
Installer, configurer et administrer un service
Gérer les habilitations d’accès aux ressources d'un serveur et d’un service
Mettre en œuvre un protocole sécurisé associé à un service
Contexte:
Ce tp a été effectué dans le cadre scolaire, en autonomie.
Pag
e2
Activités:
Ce tp permet de valider les compétences suivantes :
SISR3 – Exploitation des services
Ce module permet de construire les savoirs et savoir-faire liés à l'exploitation des services.
Un service est entendu ici comme le résultat d’une action qui répond à un besoin. Il est mis en œuvre
par des composants logiciels ou matériels.
L'exploitation des services implique de gérer leur qualité, d'assurer leur continuité et leur sécurité. Elle
participe à la détection des problèmes et peut être à l’origine d’une demande de changement.
Pré requis : Modules SI1, SI2, SI3, SI4, SISR1, SISR2
Activités supports de l’acquisition des compétences
D1.1 - Analyse de la demande
A1.1.1 Analyse du cahier des charges d'un service à produire
A1.1.3 Étude des exigences liées à la qualité attendue d'un service D1.2 - Choix d’une solution
D1.3 - Mise en production d'un service
A1.3.2 Définition des éléments nécessaires à la continuité d'un service
A1.3.3 Accompagnement de la mise en place d'un nouveau service D2.1 - Exploitation des services
A2.1.2 Évaluation et maintien de la qualité de service D2.2 - Gestion des incidents et des demandes d'assistance
A2.2.3 Réponse à une interruption de service D2.3 - Gestion des problèmes et des changements
D3.1 - Conception d'une solution d'infrastructure
A3.1.1 Proposition d'une solution d'infrastructure
A3.1.3 Prise en compte du niveau de sécurité nécessaire à une infrastructure D3.2 - Installation d’une solution d’infrastructure
D3.3 - Administration et supervision d'une infrastructure
A3.3.1 Administration sur site ou à distance des éléments d'un réseau, de serveurs, de services et d'équipements terminaux
A3.3.2 Planification des sauvegardes et gestion des restaurations
A3.3.3 Gestion des identités et des habilitations
A3.3.5 Gestion des indicateurs et des fichiers d'activité D5.1 - Gestion des configurations
A5.1.2 Recueil d'informations sur une configuration et ses éléments
Pag
e3
A5.1.4 Étude de propositions de contrat de service (client, fournisseur) D5.2 - Gestion des compétences
Savoir-faire
Caractériser les éléments nécessaires à la qualité, à la continuité et à la sécurité d'un service
Installer et configurer les éléments nécessaires à la qualité et à la continuité du service
Sécuriser un service
Administrer un service
Contrôler et améliorer les performances d’un service
Analyser le contenu des fichiers d'activité, d'audit et les indicateurs de métrologie
Assurer la mise à jour d’un service
Valider et documenter la qualité, la continuité et la sécurité d'un service
Savoirs associés
Qualité, continuité et sécurité de service, méthodes, technologies, techniques normes et standards associés
Contrat de service
Plan de secours informatique
Contenu
1. Les principaux paramètres d'exécution du serveur 4
Vérifiez que les serveurs de base de données et Web sont installés et
opérationnels. 4
Selon le schéma d'articulation des applications, expliquez quel est le type de
client-serveur. 5
Processus et variables 5
À partir de la liste des processus actifs d'Apache (commande ps -ef | grep apache) : 5
➢ Repérez le numéro du processus père lancé par l'utilisateur « root ». 5
➢ Le nombre de processus fils lancés par l'utilisateur système « www-data ». 5
Dans le fichier de configuration principale d'Apache2, quelles sont les valeurs des
directives : 6
➢ User ? 6
➢ PidFile ? 6
➢ StartsServers (du module « mpm_perfork_module ») ? 6
Dans le fichier « envvars » : 6
➢ Quelle est la valeur de la variable d'environnement « APACHE_RUN_USER » ? 6
➢ Quelle est la valeur de la variable d'environnement « APACHE_PID_FILE » ? 7
Pag
e4
➢ Consultez le fichier correspondant à la variable d'environnement
«APACHE_PID_FILE » à quoi correspond le nombre inscrit ? 7
La directive « ServerName » définit le nom d'hôte du serveur 7
Lancez la commande qui permet de vérifier la syntaxe apache2ctl configtest. Que
renvoie-t-elle ? 7
Y-a-t-il une autre possibilité qu'un serveur DNS pour obtenir une résolution de
nom ? 8
Déroulement de la séquence :
Les principaux paramètres d'exécution du serveur :
Vérifiez que les serveurs de base de données et Web sont installés et opérationnels.
Pour vérifier que le serveur Web est bien lancé, il faut taper la commande :
/etc/init.d/apache2 start
Pour vérifier si le packet Mysql est installé, il faut taper la commande :
Dpkg –l | grep mysql-server
Et voici la commande pour vérifier si Mysql est lancé :
Pag
e5
Selon le schéma d'articulation des applications, expliquez quel est le type de client-serveur.
C’est une architecture à 3 niveaux car on un client demandeur de ressources, un serveur
d’application Apache2 et un serveur web Mysql.
Processus et variables
À partir de la liste des processus actifs d'Apache (commande ps -ef | grep apache) :
➢ Repérez le numéro du processus père lancé par l'utilisateur « root ».
Pour le repérer le numéro du processus, il faut taper la commande :
pc –ef | grep apache
Son numéro est : 2560
➢ Le nombre de processus fils lancés par l'utilisateur système « www-data ».
Pour connaitre le nombre de processus fils lancés par l’utilisateur, il faut taper la commande :
ps –ef | grep www-data
Pag
e6
Nous avons ici 5 processus fils lancés
Dans le fichier de configuration principale d'Apache2, quelles sont les valeurs des directives :
Pour ouvrir le fichier de configuration d’apache2, il faut taper la commande :
vi /etc/apache2/apache2.conf
➢ User ?
➢ PidFile ?
➢ StartsServers (du module « mpm_perfork_module ») ?
Dans le fichier « envvars » :
Pour ouvrir le fichier envvars, il faut taper la commande :
vi /etc/apache2/envvars
➢ Quelle est la valeur de la variable d'environnement « APACHE_RUN_USER » ?
Pag
e7
➢ Quelle est la valeur de la variable d'environnement « APACHE_PID_FILE » ?
2560
➢ Consultez le fichier correspondant à la variable d'environnement «APACHE_PID_FILE » à
quoi correspond le nombre inscrit ?
Pour connaitre à quoi correspond cette variable, il faut taper la commande :
vi /var/run/apache2$SUFFIX.pid
Avec le code 2560, on remarque que celui-ci correspond à la valeur du processus fils « root »
La directive ServerName
La directive « ServerName » définit le nom d'hôte du serveur
Lancez la commande qui permet de vérifier la syntaxe apache2ctl configtest. Que renvoie-t-
elle ?
Elle renvoie que la Syntaxe est OK
Pag
e8
Y-a-t-il une autre possibilité qu'un serveur DNS pour obtenir une résolution de nom ?
Oui grâce au fichier etc/host
Le port d'écoute
Quelle est la directive principale qui définit le port d'écoute ?
Pag
e9
Création de la résolution inverse, déclaration de zone
Modification du fichier db.sisr pour la recherche sur les noms test1 et test2
Création des fichiers de zone
Pag
e10
Création de zone inverse :
Pour redémarrer le DNS il faut taper /etc/init.d/bind9 restart
Puis, nous vérifions son bon fonctionnement via la commande ci-dessous :
Nslookup test1.sisr, test2.sisr
Nslookup 192.168.0.1
Pag
e11
Nous constatons que la résolution de nom et la résolution inverse s’effectuent correctement
Pour monter un lecteur réseau pour linux sous Virtual box
Attention : le nom de serveur (ServerName) et la racine web (DocumentRoot) doivent
exactement correspondre respectivement au nom sous lequel le serveur virtuel sera
nommé dans les URL clientes et au chemin du répertoire d'accueil des documents du
site avec les noms de dossiers sensibles à la casse.
Pag
e12
CONNEXION ET ECHANGES CRYPTES AVEC SSL/TLS
Protection des échanges au-delà du réseau local
La mise en place d'un Firewall permet de protéger le contenu présent à l'intérieur d'un réseau et
d'empêcher la fuite de données vers l'extérieur.
Mais pour les échanges autorisés, l'information est diffusée au-delà de notre sphère de contrôle
et il faut ajouter une capsule de protection autour de l'information que l'on transfère (on parle
d'encapsulation) si l'on souhaite en empêcher la lecture par des personnes extérieures à
l'échange.
Clé de cryptage
Pour partager des messages de manière confidentielle, deux extrémités d'une communication
doivent disposer d'un secret (une clé) qui permettra de coder un message (on parle de
chiffrement) à l'émission, et de le décoder (ou encore décrypter) à l'arrivée.
Si c'est la même clé qui permet le cryptage/décryptage, on dira qu'elle est symétrique.
Si on veut un niveau de sécurité accru, on réalisera l'encryptage par le biais d'une clé distribuée
à tous les émetteurs potentiels (cette clé est publique), et seul le destinataire possèdera la clé
capable de réaliser le déchiffrement (la clé est donc privée). On parle alors d'un cryptage
asymétrique.
Cryptage, clé publique, clé privée
La clé publique peut être vue comme un cadenas ouvert dont la serrure est basée sur
l'empreinte de la clé privée.
On distribue des cadenas (clé publique) à des interlocuteurs qui demandent à entrer en
communication.
Ils enferment leur message dans des boîtes qu'ils cadenassent avec cette clé publique
(cryptage).
La clé privée est la seule à même d'ouvrir les cadenas et de donner accès au contenu de la boîte
Pag
e13
1 : Création d'une clé privée
Pag
e14
2 : Création d'un certificat X509
Pag
e15
Remarque : la valeur de ces champs peut être saisie comme valeur par défaut dans
openssl.conf
Ce certificat va permettre de vérifier l’authenticité et la validité du certificat du serveur
Web.
Soyez très vigilant sur le Common Name (CN) : celui-ci doit correspondre exactement
au nom pleinement qualifié (nom DNS : celui que vous allez saisir dans l'URL de votre
serveur qui correspond aussi à la directive ServerName dans le fichier de configuration
d'Apache).
Remarque : il est possible d'utiliser un autre champ que CN, le champ
« subjectAltName » pour spécifier le nom DNS du serveur. Ce dernier champ permet en
outre de préciser un ou plusieurs noms DNS (ceux correspondant aux différents virtuals
hosts). Ce qui implique qu'il suffit d'un seul certificat pour l'ensemble des hôtes virtuels
d'un serveur web.
Mais il faut pour cela paramétrer plus finement le fichier openssl.conf.