Sécuriser Apache2 avec SSL



Documents pareils
TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

Réaliser un inventaire Documentation utilisateur

NOTE: Pour une meilleure sécurisation, nous vous recommandons de faire l installation des outils web à l intérieur d un serveur virtuel.

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

SÉCURITÉ DU SI. Mini PKI. Denoun Jérémy De Daniloff Cyril Bettan Michael SUJET (3): Version : 1.0

Installation GLPI-OCSNG-SSL Linux Debian Sarge

Fonctionnement et mise en place d un reverse proxy sécurisé avec Apache. Dimitri ségard 8 mai 2011

Procédure d'installation

Serveur Web Apache - SSL - PHP Debian GNU/Linux

Autorité de certification

Les certfcats. Installation de openssl

2013 Installation de GLPI-OCS. Florian MICHEL BTS SIO LYCEE SAINTE URSULE

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Gestion d identités PSL Installation IdP Authentic

BIND : installer un serveur DNS

DOCUMENTATION ADMINISTRATEUR

Installation du serveur WEB Apache ( MySQL, PHP) sous Debian 7.

Installation et utilisation d'un certificat

Administration Linux - Apache

Étape 1 : gérer les certificats

Installation et configuration de Vulture Lundi 2 février 2009

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Projet de mise en œuvre d un serveur ftp sur serveur dédié

Service de certificat

Installation d un hébergement Web à domicile

BTS SIO Dossier BTS. PURCHLA Romain

CDS Invenio Installation et configuration de base

Tutoriel compte-rendu Mission 1

SSL - TLS. Histoire, fonctionnement Sécurité et failles

Module 7 : Configuration du serveur WEB Apache

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Préparation d un serveur Apache pour Zend Framework

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

SSL ET IPSEC. Licence Pro ATC Amel Guetat

TP PLACO. Journées Mathrice d'amiens Mars 2010

Méthode 1 : Mise en place IPSEC

Exemple : vous voulez tester votre site en local avant de l uploader via FTP chez votre hébergeur externe.

Guide de commande Commander un certificat d identité numérique PersonalSign

Procédure d utilisation et de paramétrage (filtrage) avec IPFIRE

Architectures PKI. Sébastien VARRETTE

M2-RADIS Rezo TP13 : VPN

Accès aux ressources informatiques de l ENSEEIHT à distance

Sécurité du Système d Information. Mini PKI

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Répartition des charges avec HaProxy CONTEXTE MFC JULIEN HUBERT

SSL. Secure Socket Layer. R. Kobylanski janvier version 1.1 FC INPG. Protocole SSL Application avec stunnel

Mise en place d un firewall d entreprise avec PfSense

Cours 14. Crypto. 2004, Marc-André Léger

Compte rendu d'activité PTI n 2

Utilisation des certificats X.509v3

Documentation FOG. 3. Choisir le nom de la machine, le nom d utilisateur et le mot de passe correspondant (par exemple : fog, password)

TP Service HTTP Serveur Apache Linux Debian

Dans l'épisode précédent

VoD ( Video on Demand ) avec VLC

Annexes. OpenVPN. Installation

Tutoriel réalisé par luo. Version du 22/02/14

SECURIDAY 2012 Pro Edition

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

07/03/2014 SECURISATION DMZ

Hébergement de sites Web

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

SERVEUR HTTP Administration d apache

WEB-II, Compléments sous la forme de rapport de travaux pratiques. Stève Galeuchet & Florian Seuret. Massimiliano Babino

Table des matières Hakim Benameurlaine 1

04/02/2014 Tutoriel. Lubuntu & glpi. thomas [NOM DE LA SOCIETE]

Installation d OpenVPN

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Les réseaux des EPLEFPA. Guide «PfSense»

Réalisation d un portail captif d accès authentifié à Internet

Authentification unique Eurécia

NAS 109 Utiliser le NAS avec Linux

Apache en tant que reverse proxy

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Installation d' OCS inventory et de GLPI

PROXY SQUID-SQARD. procédure

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

PPE GESTION PARC INFORMATIQUE

installer_un_serveur_debian - Documentation Ubuntu Francophone Installation complète d'un serveur web sous Debian 6.0

1. La plate-forme LAMP

ITRAINONLINE MMTK INFRASTRUCTURES BASÉES SUR LINUX

Richard MONTBEYRE Master 2 Professionnel Droit de l Internet Administration Entreprises. La banque en ligne et le protocole TLS : exemple

A B A C U S DESCRIPTIF D'INSTALLATION SAAS ABAWEB. septembre 2014 / OM / COB. Version 5.5

Côté Labo : le service Web

AD FS avec Office 365 Guide d'installation e tape par e tape

Installation Installation. Windows. Tout-en-un. Un livre de Wikilivres.

Faire fonctionner symfony sous wamp et windows avec des vhost. Installation de wamp

Tunnels. Plan. Pourquoi? Comment? Qu est-ce? Quelles solutions? Tunnels applicatifs ESIL INFO 2005/2006. Sophie Nicoud

Transcription:

Sécuriser Apache2 avec SSL Sous Ubuntu 14.0.1 M22 : Au profit des TS en Techniques de Réseaux Informatiques 2 ième année Introduction Le protocole SSL Les Certificats Mise en application avec le Serveur Http Apache2 Méthode rapide (utilisation du site ssl par défaut) Activation du module SSL Création du certificat Configuration Apache2 Relance du serveur HTTP Apache2 Désactivation le site http Redirection du HTTP vers HTTPS automatiquement Vérification du fonctionnement Par : Jawad Errougui

Introduction Le protocole SSL SSL (Secure Socket Layer) 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. Les Certificats Un certificat permet de fournir diverses informations concernant l'identité de son détenteur (la personne qui publie les données). Ce certificat s'accompagne d'une clé publique qui est indispensable pour que la communication entre les machines soit chiffrée. De même, afin de garantir l'authenticité du certificat, ce dernier est signé numériquement par le biais d'une clé privée provenant soit d'un organisme officiel (Société spécialisée dans la certification) soit par le détenteur du Certificat lui-même. Dans ce dernier cas, on parlera de certificat auto-signé. Dans la plupart des cas, l'obtention d'un Certificat certifié par une autorité officielle ayant un prix assez élevé, les webmasters auront tendance à vouloir signer eux-mêmes leur certificat. Ce faisant, il est à noter que dans ce cas, le certificat ne sera pas reconnu par les navigateurs web comme étant certifié. Dans ce TP, la procédure présentée explique la démarche à suivre pour mettre en place un Site Web sécurisé via protocole SSL en utilisant un Certificat auto-signé. Pour ce TP, nous allons mettre en place l hôte virtuel du TP précédent, basé sur le nom isgim.local. Ce dernier étant accessible sur le port 80 à l'adresse http://www.isgim.local. Mise en application avec le Serveur Http Apache2 Méthode rapide (utilisation du site ssl par défaut) Par défaut Apache 2 contient deux sites préconfigurés : «000-default.conf» et «default-ssl.conf» qui pointent tous les deux vers le répertoire «/var/www/html» mais le premier écoute sur le port 80 (HTTP) et le second sur le port 443 (HTTPS). Dans la configuration d origine, seul le site «000-default.conf» est actif ce qui permet d accéder à la page «It Works!» d Apache tout de suite après avoir effectué l installation. Vu que le site par défaut SSL, il est pré-configuré pour fonctionner. De ce fait, il suffit d effectuer deux choses pour le rendre actif et opérationnel : Activer le module SSL d Apache Activer le site «default-ssl.conf» d Apache Une fois que ces deux activations sont effectuées, il suffit de recharger Apache et le site sera accessible en HTTPS. Voici les commandes à saisir : a2enmod ssl a2ensite default-ssl.conf service apache2 reload Par : Jawad Errougui 2/7

Vous remarquerez qu il n y a pas eu besoin de générer de certificat SSL. En effet, il y en a déjà un par défaut (valable 10 ans) on peut voir où il se trouve en regardant de plus près le fichier «default-ssl.conf» situé dans «/etc/apache2/sites-available» : # A self-signed (snakeoil) certificate can be created by inst$ # the ssl-cert package. See # /usr/share/doc/apache2/readme.debian.gz for more info. # If both key and certificate are stored in the same file, on$ # SSLCertificateFile directive is needed. SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key 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 : sudo a2enmod ssl puis recharger la configuration d'apache2 faites : sudo service apache2 force-reload Ou si vous êtes sur une ancienne version d'ubuntu : sudo /etc/init.d/apache2 force-reload Création du certificat On peut créer son certificat SSL auto signé en installant le paquet openssl. sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/apache2/server.crt -keyout /etc/apache2/server.key Explications : -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 documentation d Apache, il est déconseillé de créer une clé plus grande 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]: Entrez MA pour le Maroc validez par la touche «Entrée» State or Province Name (full name) [Some-State]: Entrez Maroc et validez par la touche «Entrée» Par : Jawad Errougui 3/7

Locality Name (eg, city) []: Indiquez ici le nom de votre ville. (exemple : Marrakech) et validez par la touche «Entrée» Organization Name (eg, company; recommended) []: Indiquez le nom de votre organisation, de votre société. (exemple : Isgi-Marrakech) et validez par la touche «Entrée». Si vous n'avez pas de société, vous pouvez mettre un nom fictif, le nom de votre site Web par exemple. Organizational Unit Name (eg, section) []: Indiquez ici le nom de la section de votre organisation, de votre société (exemple : Technique de Réseaux Informatique). Si vous n'en avez pas, mettez la même chose que pour la question précédente. Common Name (eg, YOUR name) []: 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 : isgim.local. Nous indiquons donc www.isgim.local et nous validons par la touche «Entrée». Email Address []: Ici, il s'agit d'indiquer l'adresse E-mail de l'administrateur. En ce qui me concerne, il s'agit de : j.errougui@isgim.local. Nous terminons bien entendu en validant par la touche «Entrée». Enfin, on limite l accès à notre clé privée : sudo chmod o-rw /etc/apache2/server.key 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 isgim.local (TP précédent), un fichier de configuration nommé isgim.local.conf doit exister dans le répertoire /etc/apache2/sites-available. Voici le contenu de ce fichier : Par : Jawad Errougui 4/7

<VirtualHost *:80> # «*» indique à l hôte virtuel d écouter sur toutes les #adresses IP utilisées pour ce serveur ServerName isgim.local ServerAlias www.isgim.local 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 : 1. Directive SSLEngine : Cette directive permet d'activer le moteur SSL au sein d'un hôte virtuel, Elle peut prendre deux arguments > on/off 2. 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/ 3. 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 192.168.1.105:443) au début de notre fichier de configuration. Voici donc le contenu de notre fichier une fois modifié : Par : Jawad Errougui 5/7

<VirtualHost 192.168.1.105:80> ServerName isgim.local ServerAlias www.isgim.local <VirtualHost 192.168.1.105:443> ServerName www.isgim.local SSLEngine on SSLCertificateFile /etc/apache2/server.crt SSLCertificateKeyFile /etc/apache2/server.key Relance 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 les commandes suivantes dans un terminal : a2enmod ssl a2ensite default-ssl.conf service apache2 reload #Active le mode ssl #Active le site web (hôte virtuel) #Recharge le service http Apache2 Normalement, si tout s'est bien passé, vous devriez désormais avoir accès à votre site Web de manière sécurisée. Important : Suite aux dernières vulnérabilités découvertes au sein du protocole SSL en 2012 (attaque «CRIME»), il est recommandé également d effectuer la configuration suivante dans Apache pour plus de sécurité : SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2 SSLHonorCipherOrder On SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM- SHA256:HIGH:!MD5:!aNULL:!EDH:!RC4 SSLCompression off Ceci Crée un serveur SSL qui n'accepte que le chiffrement fort. En indiquant une préférence pour des algorithmes de chiffrement spécifiques optimisés en matière de rapidité (le choix final sera opéré par mod_ssl, dans la mesure où le client les supporte) Par : Jawad Errougui 6/7

Désactivation le site HTTP Si vous souhaitez qu on accède à votre site web uniquement via le protocole HTTPS, il est intéressant de désactiver le site accessible sur le port 80 c est-à-dire le site «000-default.conf». Pour cela on utilise la commande «a2dissite» qui permet de désactiver des sites dans Apache 2. a2dissite 000-default.conf Vous pouvez ensuite essayer d accéder à votre site en HTTP et vous verrez qu il n est plus accessible. Redirection du HTTP vers HTTPS automatiquement Plutôt que de désactiver le site HTTP, on peut le laisser activer sauf qu on va le configurer de façon à rediriger de manière permanente les requêtes HTTP vers HTTPS autrement dit les requêtes sur le port 80 seront redirigées vers le port 443. Les clients pourront continuer d'accéder au site Web en tapant une url de type http et non https. Pour cela, modifiez le fichier suivant: /etc/apache2/sites-available/000-default.conf en ajoutant la directive suivante Redirect permanent / https://www.isgim.local Voici donc le contenu de notre fichier une fois modifié : <VirtualHost 192.168.1.105:80> ServerName isgim.local ServerAlias www.isgim.local Redirect Permanent / https://www.isgim.local/ Adaptez la ligne ci-dessus avec votre nom de domaine. Ensuite, il ne vous reste plus qu à recharger la configuration d Apache puis de tester la redirection : service apache2 reload Vérification du fonctionnement En se connectant à partir d un client web de votre choix, au site web de l isgim indiqué ci-dessus, vous pourrez vérifier la sécurité de votre site au niveau HTTPS et savoir si votre configuration est bonne. Par : Jawad Errougui 7/7