Lycée La Colinière PPE 2 Festival BTS SIO Sommaire I Contexte A CADRE DU PPE B MISSION C DESCRIPTIF DE L ENVIRONNEMENT D LE RESEAU E ETUDE DES RESSOURCES TECHNIQUES ET FINANCIERES II - Installation et configuration de l environnement A CONFIGURATION DU FICHIER HOSTS B TELECHARGEMENT ET INSTALLATION DES MODULES C TELECHARGEMENT DE WEB2PY III - Configuration Apache 2 A CONFIGURATION D ACCES A WEB2PY B PHASE DE TEST ET DE CORRECTIONS IV - Accès sécurisé pour l administration de l application A GENERATION DE CERTIFICATS SSL B CONFIGURATION FICHIER D APACHE POUR L ACCES SECURISE C CONFIGURATION ACCES ADMINISTRATION V Recettage A TESTS FINAUX EFFECTUES B BILAN VI Procédure d accès à l environnement de production de l application 1
I - Contexte A CADRE DU PPE Chaque année, la ville de Saint-Malo organise un festival de musique Folklores du Monde la première semaine de juillet. Ce festival permet de réunir des groupes étrangers ainsi que quelques groupes français. Cette manifestation est une composante de la politique culturelle de la ville, héritée de sa longue tradition maritime et de son esprit d ouverture. Elle ambitionne de faire connaître les différences de culture entre les peuples. Ainsi, les représentations sont l occasion de mieux connaître les traditions du pays d origine des groupes. Avant chaque spectacle, une présentation du pays sa géographie, son histoire, ses costumes traditionnels, etc. - est réalisée sous la forme d une petite conférence bâtie autour d un diaporama. La ville s attache à bien recevoir les groupes et prend notamment en charge l hébergement et la restauration durant leur séjour. Les groupes sont invités pour la semaine entière. La mairie est mobilisée à cet effet ; la Maison des Associations, service municipal dépendant de la direction du développement culturel, se charge de la préparation du festival en s appuyant sur les compétences du monde associatif et des autres directions de la mairie. L hébergement des groupes est assuré par divers établissements d accueil : les établissements scolaires de la ville disposant d un internat et le Centre de Rencontres Internationales (CRI). Ces entités sont sollicitées pour mettre à disposition les chambres de leur établissement. Toutes les chambres peuvent accueillir 3 personnes. Il a été envisagé d'informatiser la gestion de l'hébergement. Une application web a été commandée afin de permettre la gestion de l'enregistrement des établissements d'accueil et de leur capacité, l'enregistrement des groupes et l'attribution des hébergements pour les groupes. B MISSION Par le biais de missions, vous participerez au développement et à l'installation de l'environnement de production de l'application web. Cette application web sera accessible sur l'intranet de la Mairie. Les missions 1 et 2 correspondent à la partie développement de ce projet. La mission 3 correspond à la partie réseau et support de ce projet afin de mettre un place un environnement de production de l application web. C est cette partie du projet qui sera traitée dans la suite du document. Notre mission consiste donc à donner un accès basique pour la gestion des enregistrements, mais aussi configuré avec un accès sécurisé HTTPS pour l administration de l application Web2Py. C DESCRIPTIF DE L ENVIRONNEMENT Pour des raisons de coûts et de délais, l application qui sera hébergée sera Web2Py. Un framework basé sur du langage Python. Nous utilisons un environnement Linux Kubuntu LTS14.04.2 hébergeant ainsi un serveur Apache 2.7.4. 2
D LE RESEAU Ce serveur est intégré dans le réseau LAN de la ville de Saint-Malo ainsi : Plan physique (réel, suivant le plan du réseau BTS): Chaque PC des employés se trouvent sur le réseau local 192.168.50.0/24. Certains de ses employés auront accès à la partie administration de l application (Web2Py) des gestions des hébergements via une connexion sécurisée HTTPS qui utilise le port 443 sur le serveur web Apache 2, il s agit des développeurs de l application. Pour les autres employés qui utiliseront cette application, il sera possible d accéder à l application via la connexion de base http qui utilise le port par défaut 80. 3
E ETUDE DES RESSOURCES TECHNIQUES ET FINANCIERES 1 - Ressource matériels et immatériels (pour le contexte) Liste des besoins matériels et immatériels - Machine Linux Kubuntu 14 LTS - Serveur Web Apache 2 - Environnement de production Web2Py - Certificats d authentification SLL - Commutateur Cisco - 2 câbles RJ45 2 - Ressource matériels et immatériels (pour la solution réelle) Liste des besoins matériels et immatériels - Commutateur Cisco - 2 câbles RJ45-2 machines physiques 3 Etude des ressources et des coûts financiers Les ressources choisies sont très peu coûteuses voir complètement gratuites. En effet, la machine virtuelle Linux Kubuntu est un système d exploitation libre, et donc gratuit. De plus, les services Apache 2 et Web2Py sont disponibles en téléchargement et ce, gratuitement. Les certificats d authentification SSL permettent l activation de la connexion sécurisée et le protocole HTTPS (via le port 443). De nombreuses autorités proposent d acheter des certificats qui sont alors utilisables et signés par les organismes créateurs, mais s avèrent très coûteux. Cependant, l environnement de production n étant pas un site marchand, et ne servant qu a une utilisation locale au sein du réseau de la ville de Saint-Malo, il est possible d auto générer ces certificats et de façon gratuite. La solution proposée est une solution peu coûteuse voir quasi gratuite (hors prix du matériel déjà disponible) afin de répondre aux besoins de mise en place d un environnement. 4
II - Installation et configuration de l environnement La machine virtuelle Linux est configurée en Bridge : elle devra être sur le même réseau que la machine physique. Sa configuration réseau et ses identifiants sont ceux-ci : Adresse IP : 192.168.50.1 Masque : 255.255.255.0 Identifiant : administrateur Mot de passe : Pqsszord1 (puis Password1 une fois le clavier changé) Avant toute chose, pour faciliter l installation et la configuration, le clavier étant en Qwerty, il est judicieux de la passer en clavier Azerty français via la commande «setxkbmap fr». De plus, pour pouvoir effectuer des commandes via l autorisation de l administrateur, il faut effectuer la commande «sudo s» et rentrer le mot de passe admin. Il faut dans un 1 er temps modifier le fichier «hosts» qui sert à faire la résolution d adresse IP avec un nom dans la barre d adresse URL évitant ainsi aux utilisateurs de l application d y accéder en apprenant par cœur l adresse du serveur. A - CONFIGURATION DU FICHIER HOSTS Pour le configurer : sudo nano /etc/hosts On y ajoute donc la ligne : 127.0.0.1 web2py.sqsm.com 5
B - TELECHARGEMENT ET INSTALLATION DES MODULES : On installe donc tous les modules nécessaires à Apache et à Web2py à savoir Python, les modules SSL pour la connexion sécurisé, WSGI qui est un interprète du langage python pour Apache et le module proxy. On réalise ces installations grâce aux commandes : sudo apt-get -y install python sudo apt-get -y install python-dev sudo apt-get -y install apache2 sudo apt-get -y install libapache2-mod-wsgi sudo apt-get -y install libapache2-mod-proxy-html Après avoir installé ces modules il faut les rendre actifs Pour rendre le module Proxy actif il faut créer un lien : ln s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load Pour rendre les autres modules actifs on utilise la commande sudo a2enmod : sudo a2enmod ssl sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod wsgi Ci-dessus, la liste des modules actifs. 6
C - TELECHARGEMENT DE WEB2PY Le téléchargement de web2py n ayant pas réussi depuis l invite de commande, on a donc importé le fichier web2py_src.zip via une clé USB. Ensuite nous l avons dézippé grâce à la commande : Unzip web2py_src.zip Ce dossier une fois dézippé aura pour adresse sur la machine /home/www-data/web2py. C est ce dossier qui sera présent sur le serveur Apache pour accéder à l application web2py. Il faut ensuite changer le propriétaire de ce dossier pour que le propriétaire devienne root. Cette étape est très importante car cela donne les autorisations d accès et d écriture dans le dossier Web2Py nécessaire pour l accès administration de l application. Chown R www-data :www-data /home/www-data/web2py Ainsi cette commande permet de changer le propriétaire pour le répertoire et tous les sousrépertoires. Au début notre dossier web2py n était pas bien placé et nous avons rencontré des problèmes. En effet le dossier était placé dans /home/administrateur/www-data/ hors il doit être placé dans /home/www-data. On a donc dû le déplacer : cp r /home/administrateur/www-data/web2py/ /home/www-data/web2py 7
III - Configuration Apache 2 A CONFIGURATION D ACCES A WEB2PY Après installer correctement Apache, web2py et tous les modules. Il faut configurer Apache afin que le serveur rendre Web2Py accessible sur un navigateur web. Le fichier de configuration du site est le fichier default qui se situe dans /etc/apache2/sites-available. On configure donc le fichier default qui permet l accès à l application sur le port par défaut 80 c està-dire grâce au protocole HTTP, donc aux utilisateurs qui ne sont pas administrateur. On configure donc dans ce fichier le nom du serveur, l adresse du dossier web2py que le module WSGI doit interpréter. Mais la partie la plus importante dans ce dossier et les règles d accès aux dossiers de l application. Ici on autorise l accès au dossier web2py mais on interdit l accès aux sous-répertoires /admin et /appadmin. On répertorie également l adresse des fichiers de log qui enregistre tous les accès au site et aussi les erreurs. Après avoir correctement configuré on rend le site actif : a2ensite default Remarque : Il faudra également rendre actif le fichier default-ssl mentionné plus tard une fois qu il sera configurer. 8
On voit bien que les sites sont «availables» c est-à-dire rendu actifs. Il faut configurer également le fichier principal apache2.conf. C est à partir de lui que tous les autres fichiers sont chargés. Il est donc nécessaire de répertorier le nom du serveur à la fin du fichier, on y ajoute donc la ligne : ServerName web2py.sqsm.com Il faut ensuite redémarrer le serveur Apache afin qu il prenne en compte tous les changements. /etc/init.d/apache2 restart Ou Service apache2 restart 9
B - PHASE DE TEST ET DE CORRECTIONS A partir de cette étape, l accès à l application doit être possible sur le port 80. Cependant nous avons été confrontés à plusieurs problèmes. 1 Problème de langage En effet, notre version d Apache 2 n était pas Apache 2.2 comme dans les documents fournis pour l installation mais Apache 2.4.7, et certains langages ont été modifiés notamment dans les fichiers de configurations des sites. Par exemple l ancien langage qui permettant l accès ou le blocage à certains dossiers, notamment les dossiers admin, était : Order allow,deny Allow from all (ou Deny from all) Le nouveau langage est donc : Require all granted (ou Require all denied) 2 Problème de chemin de dossiers L accès à l application n a toujours pas possible en raison d une mauvaise configuration des fichiers, notamment le fichier default où les adresses de dossiers répertoriés n étaient souvent pas les bonnes. En effet dans le fichier de configuration du site default.conf, les adresses commençant par «/users/www-data/web2py..», doivent être modifiées en «/home/www-data/web2py..» 3 Problème de configuration de ports Un problème de langage dans le fichier de configuration des ports d écoute d Apache «ports.conf» a été une source de problème d accès à l application car une ligne n était pas présente et permet l écoute du serveur sur le port 80 et empêchait le démarrage du serveur qui nous affichait un message [Fail]. Il a donc fallu rajouter la ligne suivante : Listen 80 10
Après une bonne configuration, le serveur s est redémarré correctement et nous affiche alors [Ok]. L accès au site est alors possible mais la partie administration est bloquée, elle affiche d ailleurs un message d erreur. 11
IV - Accès sécurisé pour l administration de l application Afin de rendre l accès à l espace d administration de l application web2py sécurisé, il est nécessaire de configurer le serveur Apache. Dans un premier, on a dû créer un dossier dans lequel nous y mettrons les certificats SSL et la clé SSL : mkdir /etc/apache2/ssl A GENERATION DE CERTIFICATS SSL Afin de pouvoir avoir un accès sécurisé à la partie administration de l application, il est nécessaire d avoir des certificats SSL qui garantissent la sécurité d accès. Les certificats peuvent être achetés auprès d autorités fournissant des certificats mais sont bien souvent très cher. Le site n étant pas un site marchand, il est donc possible de générer soi-même des certificats. La procédure suivante va permettre ainsi de générer nos propres certificats : openssl genrsa -out server.key 1024 openssl req -new -key server.key -out server.csr openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt cp server.crt /etc/ssl/server.crt cp server.key /etc/ssl/server.key Il est nécessaire de bien placer ces certificats dans le bon dossier 12
B CONFIGURATION FICHIER D APACHE POUR L ACCES SECURISE Afin de pouvoir accéder à l application sur l accès sécurisé, c est-à-dire avec le protocole HTTPS, il est nécessaire de configurer un fichier default-ssl donnant des droits d accès aux dossiers administrateur lorsque le serveur est en écoute sur le port 443 (Protocole HTTPS). Il faut donc configurer le fichier ainsi : 13
Il s agit du même fichier que default mais cette fois-ci nommé default-ssl. Sur ce screenshot, on voit bien que les lignes correspondant au répertoire d accès /admin et /appadmin ne sont pas présentes. Et que tous les répertoires et sous-répertoires de Web2Py sont en «Require all granted», donc que l accès est autorisé. C est-à-dire que lorsque le navigateur web sera en protocole HTTPS, l accès sera autorisé pour les administrateurs afin de modifier le code. Afin que le navigateur web puisse passer en protocole HTTPS, il est nécessaire de configurer Apache pour qu il passe sur un port sécurisé différent de 80 et qui est le 443. Il faut donc modifier le fichier ports.conf. On trouve donc sur le fichier Listen 80 C est-à-dire que lorsqu un hôte virtuel se connectera au serveur il sera sur le port par défaut qui est le 80. Mais nous nous voulons faire en sorte que lorsqu un hôte virtuel se connecte et accède à l espace d administration, le navigateur passe en protocole sécurisé sur le port 443. Il faut donc bien s assurer que le port d écoute 443 est actif lorsque les modules SSL sont actifs. C CONFIGURATION ACCES ADMINISTRATION Une fois le serveur configuré, il faut établir un mot de passe permettant de se connecter en tant qu administrateur à l application, il est définit avec la commande suivant : 14
Remarque : La commande qui était fournie avec la documentation n était pas la bonne, nous avons trouvé celle-ci sur internet après quelques heures de recherches! Une fois notre serveur configuré, nous avons rencontré un problème. Lors de l accès à l espace administrateur, le navigateur nous affichait que l accès nous était refusé. Après encore quelques heures de recherche mais en vain, il s avère qu un fichier de paramètres web2py était manquant. Celui permettant le paramétrage de web2py sur le port 443. Il s agit du fichier parameters_443.py. Pour résoudre le problème, il a juste suffit de dupliquer le parameters_8000.py et de le renommer. IV Recettage A TESTS FINAUX EFFECTUES Ping Les tests suivant sont effectués depuis un poste client configuré sur le réseau local : Adresse IP : 192.168.50.3 Masque : 255.255.255.0 Afin de vérifier la bonne configuration du réseau, il est nécessaire dans un 1 er temps d effectuer un ping depuis le poste client vers le serveur web Apache 2 : 15
Accès à l application Le ping est fonctionnel. Nous allons pouvoir à présent nous connecter à l application via un navigateur web : Accès sécurisé à l application (administration) L application Web2Py est donc accessible depuis le port part défaut 80. Le test est validé. Nous pouvons dès à présent nous connecter à la partie administration sur une connexion sécurisée : Mot de passe administrateur : «bonjour» 16
On remarque bien en haut le petit cadenas qui nous certifie que la page est sécurisée, c est-àdire que les données transférées depuis le serveur sont cryptées. Et une fois le mot de passe rentré, on obtient donc la page d administration de l application : B BILAN Les tests étant validés, l accès à l environnement de production de l application Web2Py est accessible sur une connexion sécurisée pour les développeurs de même que l accès par défaut à l application. La solution mise en place est donc validée. 17
VI Procédure d accès à l environnement de production de l application Afin que les développeurs est un accès à leur environnement de production Web2Py, il est nécessaire de fournir une procédure documentée des tâches à effectuer. Le document suivant présentera ainsi les démarches à suivre pour pouvoir se connecter à l application de manière sécurisée. (Double cliquer pour ouvrir) Procédure d'accès à l'environnement de production.pdf Nussbaum Simon Laurent Stevens Eslan Quentin Brevet Matéo 18