22
Installation d'un Serveur Internet Étape 1 : Wamp, DNS, ouverture sur le réseau Cette version du cours utilise Winows Server 2012 virtualisé sous VirtualBox 64 bits, et WAMP Serveur 2.5 x64. Certains points de ce cours varient significativement avec d'autres versions. Objectif. L'objectif de ce cours/TP est : d'installer un serveur Internet, avec Apache, PHP, MySQL. Nous allons utiliser pour ça la suite logicielle WAMP Server. Il existe une vieille variante de ce TP qui détaille l'installation séparée de ces logiciels, mais ne montre pas les aspects qui suivent (sécurisation, création des utilisateurs). d'apprendre à modifier la configuration pour créer l'espace Web d'un nouvel Internaute. Comme chez un hébergeur, nous allons lui créer sa racine Web, le VirtualHost correspondant, sa base de données MySQL, son compte FTP. d'écrire les scripts MS-DOS pour automatiser la création d'un nouvel Internaute. Ainsi, créer un compte se résumera à saisir un login dans un fichier de commandes. de sécuriser les serveurs Apache et MySQL pour qu'ils ne s'exécutent pas avec les droits administrateurs. Prérequis matériels. Pour faire ce TP vous devez avoir à disposition : Un serveur Windows Server 2012 fraîchement installé (2008 ou plus récent doit faire l'affaire). Ce TP suppose que le serveur est dans une machine virtuelle (nous utilisons Oracle VirtualBox) mais ce n'est pas obligatoire : il faudra juste reformuler quelques phrases où je parle de l'ordinateur hôte (qui fait office de client quelconque). Pour plus de confort, installez dans ce serveur un vrai navigateur (Chrome, Firefox) et un vrai éditeur de texte brut (NotePad++, SublimeText).

Installation d'un serveur web...o Ouverture du pare-feu pour MySQL (facultatif). • Création de nos deux premiers VirtualHost : www et phpmyadmin . • Étape 2 : création d'un

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

  • Installation d'un Serveur Internet

    Étape 1 : Wamp, DNS, ouverture sur le

    réseau

    Cette version du cours utilise Winows Server 2012 virtualisé sous VirtualBox 64 bits, et WAMP Serveur 2.5 x64. Certains points de ce cours varient significativement avec d'autres versions.

    Objectif.

    L'objectif de ce cours/TP est :

    • d'installer un serveur Internet, avec Apache, PHP, MySQL. Nous allons utiliser pour ça la suite logicielle WAMP Server. Il existe une vieille variante de ce TP qui détaille l'installation séparée de ces logiciels, mais ne montre pas les aspects qui suivent (sécurisation, création des utilisateurs).

    • d'apprendre à modifier la configuration pour créer l'espace Web d'un nouvel Internaute. Comme chez un hébergeur, nous allons lui créer sa racine Web, le VirtualHost correspondant, sa base de données MySQL, son compte FTP.

    • d'écrire les scripts MS-DOS pour automatiser la création d'un nouvel Internaute. Ainsi, créer un compte se résumera à saisir un login dans un fichier de commandes.

    • de sécuriser les serveurs Apache et MySQL pour qu'ils ne s'exécutent pas avec les droits administrateurs.

    Prérequis matériels.

    Pour faire ce TP vous devez avoir à disposition :

    • Un serveur Windows Server 2012 fraîchement installé (2008 ou plus récent doit faire l'affaire). Ce TP suppose que le serveur est dans une machine virtuelle (nous utilisons Oracle VirtualBox ) mais ce n'est pas obligatoire : il faudra juste reformuler quelques phrases où je parle de l'ordinateur hôte (qui fait office de client quelconque).

    • Pour plus de confort, installez dans ce serveur un vrai navigateur (Chrome, Firefox) et un vrai éditeur de texte brut (NotePad++, SublimeText).

  • Sommaire...

    • Installation de WAMP Server. o Installation du redistribuable Visual C++ 2012. o Installation de WAMP Server puis tests.

    • Activez et configurer le serveur DNS o Ajout du service DNS. o Ajout du nom de domaine. o Ajout d'un premier FQDN. o Test de ping et ajustements. o Ajustement pour le navigateur.

    • Vérification de l'accès à partir d'un ordinateur distant. o Réparation du DNS. o Réparation du pare-feu pour le PING. o Réparation du pare-feu pour le HTTP. o Autoriser Apache à recevoir les requêtes distantes.

    • Sécurisation de MySQL et phpMyAdmin. o Imposer l'authentification pour accéder à phpMyAdmin. o Supprimer l'utilisateurs par défaut 'vide' inutile. o Mettre un mot de passe au root (l'administrateur de MySQL). o Ouverture du pare-feu pour MySQL (facultatif).

    • Création de nos deux premiers VirtualHost : www et phpmyadmin. • Étape 2 : création d'un compte pour un internaute.

    1 Installation de WAMP Server. On pourrait trouver des avantages à installer séparément Apache puis son module PHP, MySQL puis phpMyAdmin . Toutefois, la suite logicielle WAMP Server 2 nous permet de gagner un temps considérable, et nous laisse toute la souplesse nécessaire pour configurer chaque logiciel à notre guise.

    Par principe, nous installerons ce serveur Internet dans un système d'exploitation serveur, comme Windows Server 2008, Windows Server 2012 ou une distribution de Linux . Toutefois, tout ce qui est dit ici s'appliquera également si vous l'installez sous Windows XP ou Seven, à condition que le système de fichiers soit NTFS et pas FAT32. Pour Windows 8, cela reste à tester.

    L'installation de WAMP ne pose aucune difficulté. Pendant l'installation, vous devrez saisir : - le serveur SMTP utilisable au lycée : smtp.numericable.fr, - l'adresse électronique de l'administrateur du serveur : mettez votre mél.

    Installation du redistribuable Visual C++ 2012.

  • Le redistribuable de Visual Studio (l'équivalent du JRE pour Java) doit être installé car Apache a été compilé sous Microsoft Visual C++ 2012. Si vous avez déjà installé Visual Studio, cette étape est inutile.

    Cherchez dans Google redistribuable visual studio 2012 et installez la version 64 bits.

    Installation de WAMP Server puis tests.

    Lancez votre Windows Server 2012 Virtualisé sous VirtualBox.

    Rendez-vous sur www.wampserver.com

    Téléchargez et Installez la dernière version de WAMP Server 64 bits (mars 2015 : WAMP 2.5 & PHP 5.5)

  • Pour vérifier que tout marche, lancez un navigateur (sur le serveur) et ouvrez l'URL : http://127.0.0.1. Si ça marche, la page d'accueil de WAMP s'ouvre.

    2 Activez et configurer le serveur DNS Si vous avez déjà votre propre nom de domaine...

    Vous pouvez vous passer de l'installation du DNS et de sa configuration. Vous n'aurez qu'à rajouter de nouvelle entrées dans votre configuration DNS existante (par exemple : phpmyadmin.votre-domaine.com pointe vers 172.18.22.???.

  • On va installer un serveur DNS. Le but est qu'on accède à vos différents sites grâce des URL du type : http://www.domaine-v_anonyme.local.

    Ajout du service DNS.

    Allez dans le Gestionnaire de serveur -> Gérer -> Ajouter des rôles et fonctionnalités.

    Dans la fenêtre Sélectionnez des rôles de serveur, cochez Serveur DNS puis validez tout.

    Ajout du nom de domaine.

    Allez dans le Gestionnaire de serveur -> Outils -> DNS.

    Cliquez sur le nom de votre serveur (par exemple WIN-COI7C2465U), puis Action -> Nouvelle Zone.

    Zone principale (votre DNS est le Primary Domain Contoller de ce domaine, les autres ne sont que de vulgaires caches),

    Zone de recherche direct (pour convertir des nom de domaines en adresses IP),

  • Le nom de la zone (c'est à dire le nom de domaine) : domaine-v_anonyme.local, puis validez tout.

    Ajout d'un premier FQDN.

    Grâce à IPCONFIG, relevez l'adresse IP de votre Windows Serveur et notez-la ici :

    Votre réponse n°1

    Cliquez sur votre zone (comme dans le schéma ci-dessus), Action -> Nouvel hôte (A ou AAAA).

    Renseigner le nom : www, l'adresse IP : (celle de votre serveur), puis validez.

  • Test de ping et ajustements.

    Dans une fenêtre de commande de votre serveur, essayez d'exécuter PING www.domaine-v_anonyme.local. Est-ce que ça marche ?

    Votre réponse n°2

    Dans une même fenêtre, faites IPCONFIG /ALL et relevez ici l'adresse notée comme Serveur DNS :

    Votre réponse n°3

    Grâce à cette indication, expliquez pourquoi le ping n'a pas marché ?

    Votre réponse n°4

    Allez dans Modifier les paramètres de la carte [réseau], propriétés TCP/IP v4,

  • utiliser l'adresse de serveur DNS suivante :

    Réessayez d'exécuter le même PING (est-ce que ça marche ?

    Votre réponse n°5

    Essayez d'exécuter PING www.google.frRemarque : chez moi ça marche alors que je ne m'y attendais pas du tout, je pensais qu'il fallait mettre un redirecteur dans mon DNS pour qu'il sache résoudre les zones qu'il ne gère pas. Si quelqu'un sait pourquoi ça marche, il me le dit ou le met en commentaire en bas de cette page.

    Votre réponse n°6

    \ ping www.domaine-spa store.local Envoi d'une requête 'ping' sur www.domaineavec 32 octets de donnéesRéponse de 192.168.0.117Réponse de 192.168.0.117Réponse de 192.168.0.117Réponse de 192.168.0.117 Statistiques Ping pour 192.168.0.117: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),Durée approximative des boucles en millisecondes : Minimum = 0ms, Maximu \ ping google.fr Envoi d'une requête 'ping' sur google.fr [173.194.6 7.94] avec 32 octets de données : Réponse de 173.194.67.94Réponse de 173.194.67.94Réponse de 173.194 .67.94Réponse de 173.194.67.94 Statistiques Ping pour 173.194.67.94: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),Durée approximative des boucles en millisecondes : Minimum = 26ms, Maximum = 28ms, Moyenne = 27ms

    Ajustement pour le navigateur.

    utiliser l'adresse de serveur DNS suivante : mettez l'adresse de votre serveur

    Réessayez d'exécuter le même PING (PING www.domaine-v_anonyme.local

    PING www.google.fr. Est-ce que ça marche ? Remarque : chez moi ça marche alors que je ne m'y attendais pas du tout, je pensais qu'il fallait

    ns mon DNS pour qu'il sache résoudre les zones qu'il ne gère pas. Si quelqu'un sait pourquoi ça marche, il me le dit ou le met en commentaire en bas de cette page.

    store.local

    Envoi d'une requête 'ping' sur www.domaine - spastore.local [192.168.0.117] avec 32 octets de données : Réponse de 192.168.0.117 : octets=32 temps

  • Dans vos navigateurs (sur le serveur et sur l'hôte), modifiez les paramètres de proxy de façon à ce que le proxy ne soit pas utilisé pour domaine-v_anonyme.local :

    • Dans Chrome : pas de proxy pour *.domaine-v_anonyme.local • Dans FireFox : pas de proxy pour domaine-v_anonyme.local

    3 Vérification de l'accès à partir d'un ordinateur distant. À partir de votre ordinateur hôte (celui où est installé VirtualBox), inutile d'essayer de contacter votre serveur WAMP, pour l'instant ça ne marche pas. Pourquoi ?

    • Votre hôte ne sait pas résoudre www.domaine-v_anonyme.local car il n'interroge pas le bon DNS.

    • Votre Windows Serveur 2012 a un pare-feu qui le protège du ping et des requêtes HTTP.

    • Votre Apache est configuré pour ne répondre qu'aux requêtes locales.

    Réparation du DNS.

    Pour que votre ordi puisse résoudre votre nom de domaine, allez dans les paramètres de la carte réseau, propriétés TCP/IP v4, et mettez :

    • En serveur DNS préféré : 172.18.22.7 (c'est le serveur normalement utilisé sur notre réseau, sur mon serveur, il sait résoudre bts-sio.local et redirige vers les DNS de Numericable),

    • En serveur DNS auxiliaire : (l'adresse IP de votre serveur) (lui seul sait résoudre www.domaine-v_anonyme.local),

    Pour que votre ordi puisse résoudre votre nom de domaine, donnez-moi votre adresse IP pour que je la rentre dans le serveur DNS utilisé sur notre réseau local (172.18.22.7).

    Tentez à nouveau (depuis l'hôte) : PING www.domaine-v_anonyme.local (ne fermez pas la fenêtre). Quelle est l'erreur obtenue ?

    Votre réponse n°7

    Cette erreur vous apprend-elle que la résolution du nom de domaine a échoué, ou qu'il y a un problème de communication entre l'hôte et le serveur ?

  • Votre réponse n°8

    Réparation du pare

    Allez dans le Gestionnaire de serveur

    Tentez à nouveau (depuis l'hôte) :serveur devrait répondre.

    Règles de trafic entrant -> activez la règle(Demande d’écho - Trafic entrant ICMPv4)

    \ ping www.domaine- spastore.local Envoi d'une requête 'ping' sur www.domaineavec 32 octets de donnéesRéponse de 192.168.0.117Réponse de 192.168.0.117Réponse de 192.168.0.117Réponse de 192.168.0.117 Statistiques Ping pour 192.168.0.117: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),Durée approximative des boucles en millisecondes : Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms

    Réparation du pare

    Dans le pare-feu Windows,

    Quel type de règle voulez-vous créer ?ça marche aussi).

    Cette règle s'applique-t-elle à TCP ou UDP ?aux DNS et aux flux multimedia qui utilisent UDP)

    Cette règle s'applique à desde faire du HTTPS sur notre serveur, ce qui n'est pas prévu dans ce TP)

    Puis validez tout, nom de la règle :

    Là, nous n'aurons plus besoin du Gestionnaire de serveur, que vous pouvez donc fermer.

    Vérification : à partir d'un navigateurl'URL http://www.domaine

    Réparation du pare-feu pour le PING.

    Gestionnaire de serveur -> Outils -> Pare-feu Windows avec ...

    Tentez à nouveau (depuis l'hôte) : PING www.domaine-v_anonyme.local. À ce stade

    > activez la règle Partage de fichiers et d’imprimantes Trafic entrant ICMPv4)

    spastore.local

    Envoi d'une requête 'ping' sur www.domaine -spastore.loca l [192.168.0.117] avec 32 octets de données : Réponse de 192.168.0.117 : octets=32 temps

  • magnifique Forbidden, You d'ont have permission to acces / on this serverréussi à vous faire remballer gentiment par votre serveur Apache...

    Autoriser Apache à recevoir les requêtes distantes.

    Maintenant autorisons dans Apache les accès depuis d'autres ordinateurs. Par défaut, Apache est configuré pour ne répondre qu'aux requêtes locales.

    Ouvrez le fichier httpd.confdans C:\wamp\bin\apache

    Trouvez la directive suivante :

    ... Require local

    Et remplacez-là par :

    ... Require all granted

    Redémarrez Apache, puis revous accédez à la page d'accueil de Wamp.

    (remarque : cette modif est équivalente à "Put Online" dans le menu de WampManager).

    Forbidden, You d'ont have permission to acces / on this serverréussi à vous faire remballer gentiment par votre serveur Apache...

    r Apache à recevoir les requêtes distantes.

    Maintenant autorisons dans Apache les accès depuis d'autres ordinateurs. Par défaut, Apache est configuré pour ne répondre qu'aux requêtes locales.

    httpd.conf (la configuration de Apache) qui se trouve apache\apache2.4.9\conf

    Trouvez la directive suivante :

    all granted

    Redémarrez Apache, puis re-testez l'accès depuis le navigateur sur l'hôte. Normalement vous accédez à la page d'accueil de Wamp.

    (remarque : cette modif est équivalente à "Put Online" dans le menu de WampManager).

    Forbidden, You d'ont have permission to acces / on this server, vous avez

    Maintenant autorisons dans Apache les accès depuis d'autres ordinateurs. Par défaut,

    trouve

    testez l'accès depuis le navigateur sur l'hôte. Normalement

    (remarque : cette modif est équivalente à "Put Online" dans le menu de WampManager).

  • 4 Sécurisation de MySQL et Imposer l'authentification pour accéder à phpMyAdmin.

    Lorsque vous accédez à phpMyAdmin (par exemple en tapant http://127.0.0.1/phpmyadminen mode administrateur, ce qui n'est pas du tout séc

    Trouvez le fichier config.inc.php(c:\wamp\apps\phpmyadmin4.1.14).

    Trouvez les lignes suivantes qui permettent d'accéder à phpMyAdmin avec les paramètres utilisateurs/mot de passe in

    $cfg['Servers'][$i]['auth_type'] = 'config';$cfg['Servers'][$i]['user'] = 'root';$cfg['Servers'][$i]['password'] = '';

    Remplacez-les par (http

    $cfg['Servers'][$i] ['auth_type'] = '/* $cfg['Servers'][$i]['user'] = 'root';$cfg['Servers'][$i]['password'] = '';

    Dorénavant phpMyAdmin

    Sécurisation de MySQL et phpMyAdmin.

    Imposer l'authentification pour accéder à phpMyAdmin.

    Lorsque vous accédez à phpMyAdmin (par exemple en http://127.0.0.1/phpmyadmin sur votre serveur, vous accédez directement à MySQL

    en mode administrateur, ce qui n'est pas du tout sécurisé et totalement inacceptable.

    config.inc.php qui se trouve à la racine de phpMyAdmin phpmyadmin4.1.14).

    Trouvez les lignes suivantes qui permettent d'accéder à phpMyAdmin avec les paramètres utilisateurs/mot de passe indiquées :

    $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = '';

    http pour une pop-up, cookie pour un formulaire HTML):

    ['auth_type'] = ' http '; $cfg['Servers'][$i]['user'] = 'root';

    $cfg['Servers'][$i]['password'] = ''; */

    phpMyAdmin vous impose de vous authentifier :

    Imposer l'authentification pour accéder à phpMyAdmin.

    sur votre serveur, vous accédez directement à MySQL urisé et totalement inacceptable.

    qui se trouve à la racine de phpMyAdmin

    Trouvez les lignes suivantes qui permettent d'accéder à phpMyAdmin avec les

    pour un formulaire HTML):

  • Supprimer l'utilisateurs par défaut 'vide' inutile.

    Si vous vous connectez avec un utilisateur bidon, vous aurez la suprise de remarquez que vous accéder à phpMyAdmin !!! (ok : sans droit aucun). Ceci est du à la présence d'un utilisateur vide dans la table user de la BDD mysql.

    Vous remarquez également qu'il y a trois root, chacun autorisé à se connecter... depuis le poste local !

    Faites le ménage en :

    • Supprimant l'utilisateur vide • Supprimant deux root au hasard • Remplaçant le Host du dernier root par la valeur % , qui lui permettra de se connecter

    à partir de n'importe-où (attention à la sécurité, je ne le recommande pas forcément sur un serveur en production !).

    Au final, dans votre table, il doit rester ceci :

    • Ceci sera pris en compte lorsque vous aurez redémarré MySQL ou exécuté la commande SQL Flush Privileges; (qui synchronise les droits réellement utilisés par le moteur MySQL avec la table user).

    Mettre un mot de passe au root (l'administrateur de MySQL).

    Un root sans mot de passe, c'est pas génial, surtout maintenant que le serveur est accessible depuis l'extérieur (en fait pas encore, à cause du pare-feu).

  • Connectez-vous à phpMyAdmin et changez le mot de passe de l'administrateur grâce à la commande : SET PASSWORD = PASSWORD('abcd') ;

    Vous allez devoir vous reconnecter immédiatement avec le nouveau mot de passe.

    Ouverture du pare

    Étape facultative que je fais sur mes serveurs mais qu'on retrouve rarement chez les hébergeurs.

    Cela permet de se connecter à un serveur MySQLligne de commande mysql.exe

    Ainsi, quand je programme en PHP sur un serveur, je peux accéder aux bases de données d'un autre serveur. Je peux administrer mes serveurs à distance en ligne de commande.

    Dans le pare-feu Windows,

    Quel type de règle voulez

    Cette règle s'applique-t-elle à TCP ou UDP ?

    Cette règle s'applique à desdéfaut pour MySQL).

    Puis validez tout, nom de la règle :

    Vérification : à partir de la fenêtre de commande

    • Allez dans les exécutables de MySQL :• Lancez la commande• Entrez le mot de passe (fu

    \ mysql -uroot - h192.168.0.117 Enter password: **** Welcome to the MySQL monitor. Commands end with ; or Your MySQL connection id is 67Server version: 5.6.17 MySQL Community Server (GPL) Type 'help;' or '\ h' for help. Type 'statement. mysql>

    vous à phpMyAdmin et changez le mot de passe de l'administrateur

    SET PASSWORD = PASSWORD('abcd') ;

    Vous allez devoir vous reconnecter immédiatement avec le nouveau mot de

    pare-feu pour MySQL (facultatif).

    Étape facultative que je fais sur mes serveurs mais qu'on retrouve rarement chez les

    Cela permet de se connecter à un serveur MySQL depuis l'extérieurmysql.exe, soit avec une commande PHP comme

    Ainsi, quand je programme en PHP sur un serveur, je peux accéder aux bases de données d'un autre serveur. Je peux administrer mes serveurs à distance en ligne de

    feu Windows, Règles de trafic entrant -> Nouvelle règle

    Quel type de règle voulez-vous créer ? Port.

    elle à TCP ou UDP ? TCP (MySQL n'utilise que TCP)

    Cette règle s'applique à des Ports locaux spécifiques : 3306 (3306 est le port par

    out, nom de la règle : MySQL .

    Vérification : à partir de la fenêtre de commande sur l'ordinateur hôte

    Allez dans les exécutables de MySQL : c:\wamp\bin\mysqlLancez la commande mysql -uroot -hip-de-votre-serveur -pEntrez le mot de passe (furtif) et validez, normalement vous avez l'accès.

    h192.168.0.117 -p

    Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 67 Server version: 5.6.17 MySQL Community Server (GPL)

    h' for help. Type ' \ c' to clear the current input

    vous à phpMyAdmin et changez le mot de passe de l'administrateur

    Vous allez devoir vous reconnecter immédiatement avec le nouveau mot de

    Étape facultative que je fais sur mes serveurs mais qu'on retrouve rarement chez les

    depuis l'extérieur soit avec la mande PHP comme mysqli_connect.

    Ainsi, quand je programme en PHP sur un serveur, je peux accéder aux bases de données d'un autre serveur. Je peux administrer mes serveurs à distance en ligne de

    Nouvelle règle,

    (MySQL n'utilise que TCP).

    (3306 est le port par

    sur l'ordinateur hôte :

    mysql\mysql###\bin p

    rtif) et validez, normalement vous avez l'accès.

    c' to clear the current input

  • 5 Création de nos deux premiers VirtualHost :Le but d'un VirtualHost , dans la configuration de Apache, est de dire : "Si j'accède au serveur avec telle URL, alors la racine Web est

    C'est ce qui est utilisé sur mon serveur : quand vous y accédez avec http://v_anonyme.bts

    C'est donc bien sûr la même méthode qui est utilisée chez distinguer l'hébergement de chaque client.

    À la fin du fichier httpd.conf, rajoutez les lignes suivantes :

    servername www.domaine documentroot c:/wamp/www servername phpmyadmin.domaine documentroot c:/wamp/apps/phpmyadmin4.1.14

    Redémarrez Apache et vérifiez quev_anonyme.local marche

    http://phpmyadmin.domaineaurez inscrit l'entrée correspondante (ou un catchall) dans le serveur DNS. Vous pouvez le faire, sinon ça sera fait au début de l'étape suivante.J'ai mis votre catchall sur mon serveur DNS, donc ça doit marcher.

    6 Étape 2 : création d'un compte pour un internaute.

    Installation d'un Serveur Internet

    compte pour un internaute

    Création de nos deux premiers VirtualHost : www et phpmyadmin

    , dans la configuration de Apache, est de dire : "Si j'accède , alors la racine Web est tel répertoire".

    C'est ce qui est utilisé sur mon serveur : quand vous y accédez http://v_anonyme.bts-sio.com, vous accédez à votre propre espace Web

    C'est donc bien sûr la même méthode qui est utilisée chez les hébergeurs pour distinguer l'hébergement de chaque client.

    À la fin du fichier httpd.conf, rajoutez les lignes suivantes :

    servername www.domaine -v_anonyme.local documentroot c:/wamp/www

    servername phpmyadmin.domaine -v_anonyme.local documentroot c:/wamp/apps/phpmyadmin4.1.14

    et vérifiez que http://www.domaine-marche toujours.

    http://phpmyadmin.domaine-v_anonyme.local ne marchera que lorsque vous aurez inscrit l'entrée correspondante (ou un catchall) dans le serveur DNS. Vous

    ça sera fait au début de l'étape suivante. J'ai mis votre catchall sur mon serveur DNS, donc ça doit marcher.

    Étape 2 : création d'un compte pour un internaute.

    Installation d'un Serveur Internet - Étape 2 : Création d'un

    compte pour un internaute.

    Création de nos deux premiers phpmyadmin.

    , dans la configuration de Apache, est de dire : "Si j'accède

    votre propre espace Web.

    les hébergeurs pour

    ne marchera que lorsque vous aurez inscrit l'entrée correspondante (ou un catchall) dans le serveur DNS. Vous

    J'ai mis votre catchall sur mon serveur DNS, donc ça doit marcher.

    Étape 2 : création d'un compte pour un internaute.

    Étape 2 : Création d'un

  • Objectif.

    L'objectif de ce cours/TP est :

    • d'installer un serveur Internet, avec Apache, PHP, MySQL. Nous allons utiliser pour ça la suite logicielle WAMP Server. Il existe une vieille variante de ce TP qui détaille l'installation séparée de ces logiciels, mais ne montre pas les aspects qui suivent (sécurisation, création des utilisateurs).

    • de sécuriser les serveurs Apache et MySQL pour qu'ils ne s'exécutent pas avec les droits administrateurs.

    • d'apprendre à modifier la configuration pour créer l'espace Web d'un nouvel Internaute. Comme chez un hébergeur, nous allons lui créer sa racine Web, le VirtualHost correspondant, sa base de données MySQL.

    • d'écrire les scripts MS-DOS pour automatiser la création d'un nouvel Internaute. Ainsi, créer un compte se résumera à saisir un login dans un fichier de commandes.

    Sommaire...

    • Ajouter l'entrée (ou un catchall) dans le serveur DNS. • Créer un VirtualHost dans Apache.

    o A faire une fois pour toute. o Créer algriffiths.conf

    • Création d'une base de données MySQL pour algriffiths. • Validation. • Création automatisée du compte Web. • Création automatisée de la base de données. • Suppression automatique des utilisateurs. • Création de l'accès FTP.

    Le premier utilisateur de notre seveur va s'appeler algriffiths (ou autre chose, si vous n'aimez pas le reggae).

    1 Ajouter l'entrée (ou un catchall) dans le serveur DNS. Le but est que l'internaute consulte son espace Web avec un FQDN du genre : http:// algriffiths.domaine-v_anonyme.local.

    On va donc ajouter une entrée dans le serveur DNS.

    Normalement, le service DNS est déjà installé sur votre serveur. Si ce n'est pas le cas, retournez à l'étape 1.

  • Rajoutez une entrée DNS de IPv6) : algriffiths .domaineserveur.

    Étant donné que tout va pointer vers notre adresse IP, rajoutez une fois pour toute ce qu'on appelle unl'adresse IP de votre serveur. Vous n'aurez alors plus aucune entrée à rajouter. Si vous le souhaitez, vous pouvez même supprimer l'entrée

    2 Créer un VirtualHost dans Apache.A faire une fois pour toute.

    À la fin du httpd.conf se trouve une ligne en commentaire, qui permet à Apache d'aller cherche un complément de configuration dansnous intéresse.

    À la fin de httpd.conf, trouvez le commentaire suivant :

    #IncludeOptional "c:/wamp/vhosts/*"

    Rajoutez une entrée DNS de type A (ou AAAA si vous êtes en .domaine-v_anonyme.local va pointer vers l'adresse IP de votre

    va pointer vers notre adresse IP, rajoutez une fois pour toute ce qu'on appelle un catchall : * .domaine-v_anonyme.local va pointer vers l'adresse IP de votre serveur. Vous n'aurez alors plus aucune entrée à rajouter. Si vous le souhaitez, vous pouvez même supprimer l'entrée www.

    Créer un VirtualHost dans Apache.

    A faire une fois pour toute.

    se trouve une ligne en commentaire, qui permet à Apache d'aller cherche un complément de configuration dans c:\wamp\vhosts

    , trouvez le commentaire suivant :

    IncludeOptional "c:/wamp/vhosts/*"

    v_anonyme.local va pointer vers l'adresse IP de votre

    va pointer vers notre adresse IP, rajoutez une fois pour e.local va pointer vers

    l'adresse IP de votre serveur. Vous n'aurez alors plus aucune entrée à rajouter. Si

    se trouve une ligne en commentaire, qui permet à Apache vhosts. Cette ligne

  • Supprimer le commentaire pour obtenir :

    IncludeOptional "c:/wamp/vhosts/*"

    On n'a rien fait de visible mais ça sert directement après.

    Créer algriffiths.conf

    On crée maintenant l'espace Web de notre internautele VirtualHost associé.

    Créez le dossier c:\wampinternaute.

    Créez-y un fichier index.php

    Page d'accueil de algriffiths

    Créez le fichier suivant :

    servername algriffiths.dom documentroot c:/wamp/www/algriffiths

    Sauvegardez-le sous le nom

    Redémarrez Apache et vérifiez quev_anonyme.local nous amène vers la page d'accueil de algriffiths.

    En savoir plus sur les VirtualHost

    3 Création d'une base de données MySQL pourNous allons créer un utilisateurla base algriffiths_db .

    Supprimer le commentaire pour obtenir :

    IncludeOptional "c:/wamp/vhosts/*"

    On n'a rien fait de visible mais ça sert directement après.

    algriffiths.conf

    On crée maintenant l'espace Web de notre internaute algriffiths et

    wamp\www\algriffiths qui sera l'espace Web de notre

    index.php qui contient :

    Page d'accueil de algriffiths

    Créez le fichier suivant :

    servername algriffiths.dom aine-v_anonyme.local documentroot c:/wamp/www/algriffiths

    le sous le nom c:\wamp\vhosts\algriffiths.conf

    et vérifiez que http://algriffiths.domainenous amène vers la page d'accueil de algriffiths.

    VirtualHost (doc officielle Apache).

    Création d'une base de données MySQL pour

    Nous allons créer un utilisateur algriffiths dans MySQL, qui aura les droits sur

    et

    qui sera l'espace Web de notre

    http://algriffiths.domaine -nous amène vers la page d'accueil de algriffiths.

    Création d'une base de données MySQL pour algriffiths.

    dans MySQL, qui aura les droits sur

  • Dans MySQL, créez la base de données algriffiths_db grâce à la requête SQL : CREATE DATABASE algriffiths_db ;

    Créez l'utilisateur algriffiths grâce à la requête SQL : GRANT ALL ON algriffiths_db.* TO algriffiths@'%' identified by ' algriffiths' ; (souvenez-vous des cours SQL : cette requête crée l'utilisateur s'il n'existe pas, lui affecte un mot de passe, lui accorde tous les droits sur la base).

    4 Validation. Voici les points à vérifier pour être sûr que tout soit bien installé et bien sécurisé.

    Dans le navigateur, l'URL phpmyadmin.domaine-v_anonyme.local nous amène bien à phpmyadmin.

    Dans le navigateur, l'URL algriffiths.domaine-v_anonyme.local nous amène bien à l'espace Web de l'internaute algriffiths.

    Si je me connecte, dans phpMyAdmin, avec l'utilisateur algriffiths , j'ai bien accès à sa base de données algriffiths_db .

    Lorsque vous êtes sûr que tout fonctionne, appeler le prof pour vérifier ensemble et valider cette étape avec un simple ok.

    Votre réponse n°1

    5 Création automatisée du compte Web. L'objectif est d'automatiser toutes les étapes de la création manuelle d'un compte Web sous Apache. Cela sera automatisé sous forme de fichiers de commandes MS-DOS, comme on l'a vu au premier semestre (cours MS-DOS).

    L'idée est de créer un fichier de commandes nommé create_user.bat. Pour créer l'utilisateur v_anonyme, son espace Web, sa base de données, on tapera la commande suivante : create_user.bat v_anonyme Rappel : dans le fichier de commandes, le premier paramètre (qui a ici pour valeur v_anonyme), se nomme %1.

  • Dans create_user.bat, écrivez la commande MKDIR qui permet de créer lla racine Web de l'utilisateur sous c:\wamp\www.

    Votre réponse n°2

    Grâce à la commande ECHO, à la redirection du résultat (> pour éventuellement recréer le fichier, >> pour ajouter du contenu), et à l'échappement des caractères spéciaux (par exemple vous écrirez : ^ , remarquez que les chevrons sont échappés), ajoutez les commandes qui créent le fichier c:\wamp\vhosts\v_anonyme.conf (où v_anonyme est le login passé en paramètre) . Une explication sur la redirection.

    Votre réponse n°3

    Ajoutez les commandes NET STOP et NET START qui vont redémarrer le service wampapache.

    Votre réponse n°4

    Testez en tapant (à partir du bon répertoire) la commande MS-DOS : create_user v_anonyme

    Validation : vérifiez que vous arrivez à accéder, dans le navigateur, à l'URL http://v_anonyme.domaine-v_anonyme.local.

    6 Création automatisée de la base de données. Toutes les étapes suivantes seront rajoutées à la suite du fichier de commandes create_user.bat.

  • Ajoutez la commande MKDIR qui permet de créer le répertoire de la base de données c:\wamp\bin\mysql\mysql###\data\v_anonyme_db (où v_anonyme est le login passé en paramètre) sous son répertoire de travail.

    Votre réponse n°5

    Grâce à la commande mysql -e (-e permet d'exécuter une requête SQL), exécutez la requête GRANT qui permet de créer l'utilisateur MySQL. La commande mysql.exe doit être précédée de son répertoire absolu (ou bien son répertoire peut être ajouté dans la variable PATH de MS-DOS. Vérifiez le paramétrage de mysql.exe -e.

    Votre réponse n°6

    Testez en tapant (à partir du bon répertoire) la commande MS-DOS : create_user v_anonyme

    Validation : vérifiez que vous arrivez à lancer phpMyAdmin et à vous connecter avec l'utilisateur v_anonyme, que la base de donnée v_anonyme_db est présente.

    Une fois que le prof a validé toutes les réponses ci-dessus et du paragraphe précédent : fusionnez-les toutes dans cette dernière réponse, pour avoir le fichier de commandes dans son ensemble.

    Votre réponse n°7

    7 Suppression automatique des utilisateurs. Ecrivez le fichier de commande delete_user.bat qui reçoit en paramètre un login et supprime l'utilisateur windows, supprime l'utilisateur dans MySQL, supprime le répertoire de travail de l'utilisateur (et donc, par conséquence, sa racine Web

  • et ses bases de données), supprime le lien symbolique vers la base de données, supprime la configuration du VirtualHost.

    Votre réponse n°8