Serveur Web et  Gestion de Sites Web Saïd Radhouani Université de Genève janvier 2005
Arborescence des répertoires Le serveur Apache donne accès aux répertoires suivants : conf : les fichiers de configuration logs : les fichiers logs (statistiques) modules : les modules www : les pages accèssible dpuis internet icons : le jeu des icons cgi-bin : les cgi ( des scripts tels écrits en perl, en C, etc.) bin : contient des exécutables
Le répertoire conf Configuration d'Apache :  définie dans 3 fichiers au format texte (rep. Conf), on peut les éditer à tout moment, un certain nombre de variables à positionner, prise en compte des modifications : relancer le serveur, ces variables ont une valeur par défaut, pour répondre à un besoin bien précis : savoir quelle variable on doit positionner, Ces 3 fichiers sont : httpd.conf  : Spécification de tous les paramètres &quot;techniques&quot; du serveur:  nom du serveur, port de communication… srm.conf  : Configuration d'utilisation : format des données à partager, racine des documents HTML, possibilité d'utiliser les scripts CGI, les comptes utilisateurs (/~<nom>/) … (presque jamais utilisé) access.conf  : Liste des droits d'accès aux différentes parties de l'arborescence pour définir une région bien précise de l'arborescence => utiliser des balises (même &quot;style&quot; que le HTML) on peut redéfinir des permissions au niveau des répertoires à l'aide de fichier  .htaccess
Fichiers de configuration - httpd.conf Le fichier principale pour la configuration du serveur Apache Modifier la configuration : éditer son contenu + relancer le processus Apache père Il permet de  paramétrer  le comportement du serveur Apache Par défaut, il contient plusieurs lignes commentés qui contiennent des commandes Pour activer les commandes, il suffit de décommenter les lignes qui les contiennent …  dans la suite, quelques paramètres
Les fichiers de configuration - httpd.conf Définir le chemin o ù se trouve le serveur Apache : ServerRoot   «C:/Program Files/EasyPHP1-7/apache» (par défaut) Port de communication : Indiquer le port utilisé par le serveur Apache 80, par défaut On peut utiliser un autre port à condition qu’il n’est pas déjà utilisé Port  80 Indiquer l’adresse e-mail de l’administrateur du serveur ServerAdmin  admin@unige.ch On peut le modifier à tout moment
Les fichiers de configuration - httpd.conf Définition du nom du serveur : ServerName   nom_du_serveur Si le serveur est destiné à  être utilisé en local, il faudrait l’appeler  localhost Répertoire principale de votre serveur : là o ù vos pages Web seront mises DocumentRoot   répertoire principale DocumentRoot  «C:/Program Files/EasyPHP1-7/www», par défaut KeepAlive off KeepAliveTimeout 15 Timeout 300
Les fichiers de configuration - httpd.conf Définition de la page qui sera prise par défaut par le serveur : DirectoryIndex   index.html Pour mettre plusieurs pages, il faut mettre un espace Définition du nom du fichier qui sert à contr ôler les accès à un répertoire (par défaut, .htaccess) : AccessFileName  .htaccess Personnalisation des messages d’erreurs : Syntaxe :  ErrorDocument (code-à-3-chiffres [nom du fichier ou texte ou url]) 1- taper le texte qu’on veut afficher pour une erreur directement dans le fichier de configuration : Exemple :  ErrorDocument   403  «Votre message» 2- faire une redirection  locale  sur une page Web personnalisée créée auparavant: Exemple :  ErrorDocument   403  /page.html 3- faire une redirection  extérieur  pour afficher le message d’erreur : Exemple :  ErrorDocument   403  http://www.machin.truc/page.html
Contr ôle d’accès Possiblilité de restreindre l’accès à certains répertoires au sein de l’arborescence d’un serveur Web Placer les bonnes instructions dans le fichier de configuration  et  Créer un  fichier  particulier dans l’arborescence pour spécifier les critères de contr ôle Ce  fichier  s’appelle en général .htaccess (ce nom est re-configurable) => définit le domaine d’autorisation des clients dans l’arborescence de serveur Ces contrôles peuvent être également définis au niveau du fichier httpd.conf => méthode est moins souple :  intervention dans cette partie délicate redémarrage du serveur chaque fois que l’on veut modifier les contrôles
Contr ôle d’accès Au lieu d’utiliser des fichiers  .htaccess , on peut contr ôler l’accès aux répertoires à partir du fichier httpd.conf <Directory «chemin/du/repertoire»> Options </Directory> Les sections <Directory>   s’appliquent à un répertoire et ses sous-répertoires Exemples d’options : Allow/Deny  :  Allow from All  : définit une limitation d’accès en fonction du host du client ( Allow from  domain.com) Order  Deny, Allow  : définit l’ordre dans lequel les directives Deny et Allow sont évaluées
Contr ôle d’accès Les valeurs possibles sont : Deny, Allow : l’accès est autorisé par défaut, une station qui n’apparaît pas dans une directive Deny ou qui apparaît dans une directive Allow est autorisée Allow, Deny : l’accès est bloqué par défaut, une station qui n’apparaît pas dans une directive Allow ou qui apparaît dans une directive Deny est bloquée Autres directives : AuthName  absent  : contexte dans lequel va s’appliquer l’authentification. Ce message apparaît dans la fen être de login/mot de passe afin d’aider l’utilisateur quel login utiliser AuthType  Basic  : définit le mode d’authentification utilisé AuthUserFile  chemin/du/fichier : fichier dans lequel sont listés les utilisateurs et les mots de passe qui peuvent se connecter au site (voir suite)
Contrôle d’accès Le fichier de mot de passe est un fichier texte Il est administré avec le programme  htpasswd sur chacune des ses lignes le nom de chaque utilisateur suivi de deux points (:), puis du mot de passe crypté (solution recommandée) ou en clair Sa syntaxe est la suivante: Login 1 : mot de passe crypté Login2 : mot de passe crypté  Exemple de fichier de mot de passe non crypté JFPillou:Toto504  Damien:Robert(32)  Le même fichier contenant des mots de passe cryptés :  JFPillou:$apr1$Si0.....$teyL5Y7BR4cHj0sX309Jj0 Damien:$apr1$TD1.....$sfPTHjoufoNsda4HsD1oL0
Contrôle d’accès Gestion du fichier UserFile à l’aide du programme  htpasswd  présent dans le répertoire  bin  de l’arborescence Apache Utilisation de  htpasswd  :  Création  d’un nouveau fichier de mots de passe :  htpasswd -c {chemin du fichier de mot de passe} utilisateur Ajout d’un nouvel utilisateur/motde passe à un fichier existant :  htpasswd {chemin du fichier de mot de passe} utilisateur  Suppression d’un utilisateur : éditer le fichier et supprimer la ligne correspondante à l’utilisateur Le fichier GroupFile s’édite avec tout éditeur texte
Contrôle d’accès AuthGroupFile  chemin/du/fichier : fichier dans lequel sont listés les groupes avec les utilisateurs qui leurs sont affectés La syntaxe de ce fichier est : Group1: user1, user2 Group2: user1, user3 Require  : définit les utilisateurs autorisés à accéder à ce répertoire Syntaxes : Require user  user1   user2 : les utilisateurs listés et présents dans le fichier  UserFile  peuvent accéder au site Require   group  group1 : les utilisateurs listés dans  group1  et présent dans le fichier  UserFile  peuvent accéder au site Require valid-user : tous les utilisateurs présents dans le fichier UserFile peuvent accéder au site
Exemple Pour interdire l’accès à tous les utilisateurs sauf à vous m ême : <Directory «C:/Program Files/EasyPHP1-7/www»>   AllowOverride None   #Cela laisse les permissions de tous les répertoires par défaut et n'autorise pas d'accès spéciaux même si un .htaccess existe   Order allow,deny   #L’ordre de prise en compte des «permissions»   Allow from 127.0.0.1   #Seul l’IP 127.0.0.1 est autorisée à accéder </Directory> Allow from all : tout le monde peut avoir accès au serveur Web
Les fichiers .htaccess Sont des fichiers de configuration d’Apache qui permettent de : Définir les limites d’accès aux fichiers, répertoires et leurs sous-répertoires Spécifier des fichiers de mots de passe dans lequel sont rangés les couples « nom d’utilisateur, mot de passe » autorisés Restreindre l’accès selon des critères spécifiques : nom de réseau, mot de passe,… Intér êts des fichiers .htaccess : Gérer l’accès à certains fichiers et répertoires Protéger l’accès à un répertoire par un mot de passe Protéger l’accès à un fichier par un mot de passe
Principe des fichiers .htacces Le fichier .htaccess est placé dans le répertoire là o ù il doit agir Il agit sur les permissions du répertoire qui le contient et de tous ses sous-répertoires On peut placer un autre fichier .htaccess dans un sous répertoire d’un répertoire déjà contrôlé par un fichier .htaccess Le fichier .htaccess du répertoire parent reste en « activité » tant que les fonctionnalités n’ont pas été réécrites Création de fichiers .htaccess à l’aide d’un simple éditeur de texte
Emp êcher l’accès à des ressources Un fichier .htacces est composé de deux sections : Section contenant les chemins vers les fichiers contenant les définitions de groupes et d’utilisateurs : AuthUserFile  /repertoire/de/votre/fichier/.FichierDeMotDePasse AuthGroupFile  /repertoire/de/votre/fichier/.FichierDeGroupe AuthName  « Accès protégé » AuthType Basic  (précise qu'il faut utiliser AuthUserFile pour l'authentification) Section contentant la définition des conditions d’accès : <Limit GET POST>  :  GET et/ou POST définit le type de méthode du protocole HTTP auxquelles la restriction s'applique Require valid-user  :  précise que l'on autorise uniquement les personnes identifiées. Il est possible de préciser explicitement le nom des personnes autorisées à s'identifier : Require user {username} (instructions d’accès à satisfaire) </Limit>
Exemple Protéger un répertoire par un login et mot de passe Syntaxe : AuthUserFile  (emplacement du fichier de mots de passe) AuthGroupFile  (emplacement du fichier de groupes) AuthName  « Accès protégé » AuthType Basic <Limit GET POST> Require valid-user </Limit> Quand l’utilisateur demande à accéder à un fichier ou un répertoire contenu dans le répertoire qui contient .htaccess, une cartouche est affichée. Elle fait apparaître : Le texte défini par AuthName Deux champs à remplire pour un login et un mot de passe qui est masqué
Exemples AuthType Basic AuthName « Licence de physique » AuthUserFiles /…/passwd <Limit GET POST> Require user prof </Limit> => seul l’utilisateur prof, parmi tous ceux déclarés dans le fichier passwd, peut accéder au répertoire Création d’une intranet : AuthType Basic Order deny, allow <Limit GET POST> Allow from  mon-domaine.org </Limit> => Seuls les postes clients appartenants au domaine  mon-domaine.org  peuvent accéder à l’information
Exemple de restriction d'accès Empêcher l'accès à un répertoire par un domaine   AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse  AuthGroupFile /dev/null  (l'authentification ne se base pas sur le fichier .htgroup) AuthName &quot;Accès sécurisé au site ABC&quot;  AuthType Basic  <LIMIT GET POST>  order deny,allow  deny from all  allow from 193.48.172.2  require user TOTO  </LIMIT> Dans ce cas, l'accès ne sera possible que pour l'utilisateur TOTO à partir de l'adresse IP 193.48.172.2 et avec le bon mot de passe
Exemple Empêcher l'accès à un fichier particulier   Par défaut, Apache applique les restrictions du fichier .htaccess à l'ensemble des fichiers du répertoire dans lequel il se trouve ainsi qu'à tous les fichiers contenus dans ses sous-répertoires Il est possible de restreindre l'accès pour un ou plusieurs fichiers du répertoire grâce à la balise <Files> Exemple de restriction au fichier admin.php :  <Files  admin.php >  AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse  AuthGroupFile /dev/null  AuthName &quot;Accès sécurisé au site X&quot;  AuthType Basic  <LIMIT GET POST>  require user JFPillou  </LIMIT>  </Files>
Exemple Empêcher l'accès à un type de fichier par un domaine   <Files  *.png >  Order Deny, Allow  Deny from .LeNomDuDomaine.com  </Files> Toutes les personnes (requêtes) provenant du domaine .LeNomDuDomaine.com ne pourront avoir accès aux images, dont l'extension est .png, comprises dans le répertoire et ses sous-répertoires
Exemple Autoriser l'accés à un groupe de fichiers par un domaine et un pays <Files  php* >  Order Allow, Deny  Deny from all  Allow from .phpfrance.com  Allow from .fr  </Files> Toutes les personnes (requêtes) provenant du domaine  .phpfrance.com  ou des domaines ayant la terminaison  .fr  pourront avoir accès aux fichiers commençant par  php  (eg, les fichiers phpbonjour.html, phpaurevoir.abc) compris dans le répertoire et ses sous-répertoires
Exemple Obliger l'utilisateur à satisfaire à, au moins, une des conditions La syntaxe est la suivante : Satisfy  any, all Exemple : Order Allow, Deny Deny from all Allow from .free.fr Require User Damien Comma PumpPHP Jeff Rastapaye Satisfy  Any => L'accès au répertoire sera bloqué pour tout le monde à l'exception des personnes qui s'identifient et des requêtes provenant du domaine .free.fr
.htacces - Gérer les types de fichiers Un type MIME est un ensemble de types de fichiers standard, permettant d'associer une extension de fichier donnée à une application, afin d'automatiser le lancement de l'application Ajout d’un mime-type à un répertoire : Syntaxe : AddType (mime/type [liste d'extension]) Exemple de mise en oeuvre du fichier .htacces  AddType image/x-photoshop PSD  => Le serveur enverra au navigateur Internet le fichier en lui disant de lancer le programme PhotoShop (s'il est installé sur sa machine) et de lui donner le fichier Cette commande permet aussi d'annuler tout élément prédéfini. Ainsi, vous pouvez enregistrer un fichier .wav avec une extension .gif et préciser au navigateur de considérer les fichiers .gif comme des fichiers audio !
Gérer les types de fichier Forcer tous les fichiers d'un répertoire à un mime-type Syntaxe : ForceType (mime/type) Par exemple avec la ligne suivante, tous les fichiers du répertoire contenant le fichier .htaccess seront considérés comme étant des fichiers .jpg quelque soit leur extension :  ForceType image/jpg Définir l'extension de fichiers par défaut Syntaxe  : DefaultType mime/type Exemple :   DefaultType text/html Cette option permet de définir le comportement par défaut du navigateur face à des extensions lui étant inconnues (eg. lazy) Ici, il prendra tout fichier inconnu (par exemple 'bonjour', ‘Hello.salut’) en tant que document HTML
Personnalisation de messages d'erreures Même principe que dans le cas du fichier httpd.conf Permet de définir des messages d’erreur personnalisés => Donner un message d'erreur personnalisé remplaçant les fichiers fournis avec le navigateur Syntaxe : ErrorDocument (code-à-3-chiffres [nom du fichier ou texte ou url]) Exemple : définir les pages d'erreurs personnalisées au cas où l'accès à un document serait interdit ou bien que le document n'existe pas :  ErrorDocument 403 /erreurs/403.php3  ErrorDocument 404 /erreurs/404.php3
Changer le fichier index par défaut Le fichier index est le fichier qui est affiché lorsque aucun nom de fichier n'est défini dans l'URL (par exemple http://www.serveur.com/repertoire) => Permet d'éviter que le navigateur liste l'ensemble des fichiers contenus dans le répertoire (pour des raisons de confidentialité) Syntaxe : DirectoryIndex  fichiers Exemple : DirectoryIndex index.php index.html /erreurs/403.php3 Lorsque vous essayez d'accéder au répertoire sans préciser la page à afficher, Apache va avoir recours à la directive DirectoryIndex. En général, par défaut, cette directive pointe vers index.html puis index.htm Dans l'exemple ci-dessus, Apache va commencer par chercher index.php, puis index.html. Si aucun de ces fichiers existent, la page 403.php3 (se trouvant dans la racine) sera affichée pour éviter de lister le répertoire
Le répertoire  logs  : Logs et Statistiques Votre site est-il beaucoup visité ? Quelles pages ? Par qui ? Quel navigateur ? Depuis quelles pages ? Quand ?… Ces informations sont déduites des fichiers logs qui enregistrent les requ êtes HTTP (et surtout les entêtes) Les fichiers logs sont rangés sous le répertoire  logs .  Cet emplacement peut être modifié dans le fichier de configuration
Les fichiers logs Les accès et erreurs générés sur votre serveur sont tous consignés dans deux fichiers situés dans le répertoire  logs  : access_log  : Garde trace de toutes les requêtes effectuées sur le serveur Ce fichier est souvent à l'origine d'analyses statistiques Voir exemple error_log  : Enregistre toutes les erreurs rencontrées par le serveur Lors du débuggage de cgi-bin ou au démarrage du serveur, il est indispensable de jeter un coup d'oeil à ce fichier Voir exemple Possibilité de personnaliser les logs : Exemple : afficher la version du client et le referer (page de référence) Démo  : voir l’évolution du contenu des fichiers access.log et error.log Contr ôle de l’activité du serveur avec les fichiers log et les outils d’analyse des fichiers logs Outil téléchargeable gratuitement http://awstats.sourceforge.net   Démo
Le répertoire www Chemin : C:\Program Files\EasyPHP\www Ce répertoire est la racine du site Web Il contient la page d’accueil du site Il contient les fichiers accessibles depuis Internet = tous les répertoires du site Web Par défaut, vous devez mettre vos fichiers PHP et HTML dans le répertoire www. Ce sont ces fichiers qui seront appelés lorsque vous entrerez l'URL localhost/ ou 127.0.0.1 Pour que les pages PHP soient interprétées, il faut les placer  dans ce répertoire
Le répertoire  bin Ce répertoire contient des fichiers exécutables Exemples : L’utilitaire htpasswd qui permet de créer des fichiers de mots de passe Un programme exécutable qui permet de démarrer le serveur MySQL …
Cgi-bin Répertoire par défaut pour les programmes de génération de pages dynamiques CGI Permet de configurer notre serveur Web afin d’activer les CGI et exploiter les SSI CGI (Common Gateway Interface) : Une CGI est un programme dont le flux de sortie sera renvoyé au client via le serveur web SSI (Server Side Include) : les SSI sont des instructions que l’on peut inclure dans une page web qui sera analysée par le serveur avant d’ être envoyée au client Ce répertoire peut contenir des sous-répertoires qui seront également autorisés à lancer des programmes
Cgi-bin Pour configurer le serveur Apache, il faut : « activer » les cgi : modifier le fichier htpd.conf en ajoutant la ligne suivante si elle n’existe pas encore :  ScriptAlias /cgi-bin/ «C:/Program Files/EasyPHP1-7/cgi-bin/» => spécifier le répertoire qui contiendra les cgi AddHandler cgi-script .pl AddHandler cgi-script .cgi => ces lignes permettent au serveur de savoir que les fichiers ayant des extensions en .pl et .cgi sont des CGI à exécuter Ensuite, il faut créer les fichier .cgi et .pl
Le répertoire modules Il  contient un certain nombre de bibliothèques dynamiques ou modules Leur nom comprend obligatoirement l’extension «.so» et étend les fonctionnalités du serveur Dans sa configuration de base, le serveur ne peut pas faire grand-chose : sans module pas de CGI par exemple Cette modularité des fonctionnalités permet de gérer très souplement le fonctionnement d’un serveur La liste des modules disponibles s’agrandit à chaque nouvelle version A chaque module correspondent des instructions spécifiques qui, ajoutées dans le fichier de configuration d’Apache, configurent le fonctionnement du module correspondant
Modules - exemples mod_status.so :  permet de faire des statistiques sur le serveur (les requ êtes qui lui ont été adressées, etc.) mod_access.so Permet de contrôler quelles machines peuvent accéder à un répertoire du site mod_actions.so Contrôle l’exécution de scripts CGI mod_auth.so Permet de contrôler l’authentification des utilisateurs et l’usage des ressources mod_log_agent.so Autorise le recueil d’informations relatives aux clients utilisateurs mod_mime.so Pour l’organisation des différents types MIME

Serveur Web (1)

  • 1.
    Serveur Web et Gestion de Sites Web Saïd Radhouani Université de Genève janvier 2005
  • 2.
    Arborescence des répertoiresLe serveur Apache donne accès aux répertoires suivants : conf : les fichiers de configuration logs : les fichiers logs (statistiques) modules : les modules www : les pages accèssible dpuis internet icons : le jeu des icons cgi-bin : les cgi ( des scripts tels écrits en perl, en C, etc.) bin : contient des exécutables
  • 3.
    Le répertoire confConfiguration d'Apache : définie dans 3 fichiers au format texte (rep. Conf), on peut les éditer à tout moment, un certain nombre de variables à positionner, prise en compte des modifications : relancer le serveur, ces variables ont une valeur par défaut, pour répondre à un besoin bien précis : savoir quelle variable on doit positionner, Ces 3 fichiers sont : httpd.conf : Spécification de tous les paramètres &quot;techniques&quot; du serveur: nom du serveur, port de communication… srm.conf : Configuration d'utilisation : format des données à partager, racine des documents HTML, possibilité d'utiliser les scripts CGI, les comptes utilisateurs (/~<nom>/) … (presque jamais utilisé) access.conf : Liste des droits d'accès aux différentes parties de l'arborescence pour définir une région bien précise de l'arborescence => utiliser des balises (même &quot;style&quot; que le HTML) on peut redéfinir des permissions au niveau des répertoires à l'aide de fichier .htaccess
  • 4.
    Fichiers de configuration- httpd.conf Le fichier principale pour la configuration du serveur Apache Modifier la configuration : éditer son contenu + relancer le processus Apache père Il permet de paramétrer le comportement du serveur Apache Par défaut, il contient plusieurs lignes commentés qui contiennent des commandes Pour activer les commandes, il suffit de décommenter les lignes qui les contiennent … dans la suite, quelques paramètres
  • 5.
    Les fichiers deconfiguration - httpd.conf Définir le chemin o ù se trouve le serveur Apache : ServerRoot «C:/Program Files/EasyPHP1-7/apache» (par défaut) Port de communication : Indiquer le port utilisé par le serveur Apache 80, par défaut On peut utiliser un autre port à condition qu’il n’est pas déjà utilisé Port 80 Indiquer l’adresse e-mail de l’administrateur du serveur ServerAdmin admin@unige.ch On peut le modifier à tout moment
  • 6.
    Les fichiers deconfiguration - httpd.conf Définition du nom du serveur : ServerName nom_du_serveur Si le serveur est destiné à être utilisé en local, il faudrait l’appeler localhost Répertoire principale de votre serveur : là o ù vos pages Web seront mises DocumentRoot répertoire principale DocumentRoot «C:/Program Files/EasyPHP1-7/www», par défaut KeepAlive off KeepAliveTimeout 15 Timeout 300
  • 7.
    Les fichiers deconfiguration - httpd.conf Définition de la page qui sera prise par défaut par le serveur : DirectoryIndex index.html Pour mettre plusieurs pages, il faut mettre un espace Définition du nom du fichier qui sert à contr ôler les accès à un répertoire (par défaut, .htaccess) : AccessFileName .htaccess Personnalisation des messages d’erreurs : Syntaxe : ErrorDocument (code-à-3-chiffres [nom du fichier ou texte ou url]) 1- taper le texte qu’on veut afficher pour une erreur directement dans le fichier de configuration : Exemple : ErrorDocument 403 «Votre message» 2- faire une redirection locale sur une page Web personnalisée créée auparavant: Exemple : ErrorDocument 403 /page.html 3- faire une redirection extérieur pour afficher le message d’erreur : Exemple : ErrorDocument 403 http://www.machin.truc/page.html
  • 8.
    Contr ôle d’accèsPossiblilité de restreindre l’accès à certains répertoires au sein de l’arborescence d’un serveur Web Placer les bonnes instructions dans le fichier de configuration et Créer un fichier particulier dans l’arborescence pour spécifier les critères de contr ôle Ce fichier s’appelle en général .htaccess (ce nom est re-configurable) => définit le domaine d’autorisation des clients dans l’arborescence de serveur Ces contrôles peuvent être également définis au niveau du fichier httpd.conf => méthode est moins souple : intervention dans cette partie délicate redémarrage du serveur chaque fois que l’on veut modifier les contrôles
  • 9.
    Contr ôle d’accèsAu lieu d’utiliser des fichiers .htaccess , on peut contr ôler l’accès aux répertoires à partir du fichier httpd.conf <Directory «chemin/du/repertoire»> Options </Directory> Les sections <Directory> s’appliquent à un répertoire et ses sous-répertoires Exemples d’options : Allow/Deny : Allow from All : définit une limitation d’accès en fonction du host du client ( Allow from domain.com) Order Deny, Allow : définit l’ordre dans lequel les directives Deny et Allow sont évaluées
  • 10.
    Contr ôle d’accèsLes valeurs possibles sont : Deny, Allow : l’accès est autorisé par défaut, une station qui n’apparaît pas dans une directive Deny ou qui apparaît dans une directive Allow est autorisée Allow, Deny : l’accès est bloqué par défaut, une station qui n’apparaît pas dans une directive Allow ou qui apparaît dans une directive Deny est bloquée Autres directives : AuthName absent : contexte dans lequel va s’appliquer l’authentification. Ce message apparaît dans la fen être de login/mot de passe afin d’aider l’utilisateur quel login utiliser AuthType Basic : définit le mode d’authentification utilisé AuthUserFile chemin/du/fichier : fichier dans lequel sont listés les utilisateurs et les mots de passe qui peuvent se connecter au site (voir suite)
  • 11.
    Contrôle d’accès Lefichier de mot de passe est un fichier texte Il est administré avec le programme htpasswd sur chacune des ses lignes le nom de chaque utilisateur suivi de deux points (:), puis du mot de passe crypté (solution recommandée) ou en clair Sa syntaxe est la suivante: Login 1 : mot de passe crypté Login2 : mot de passe crypté Exemple de fichier de mot de passe non crypté JFPillou:Toto504 Damien:Robert(32) Le même fichier contenant des mots de passe cryptés : JFPillou:$apr1$Si0.....$teyL5Y7BR4cHj0sX309Jj0 Damien:$apr1$TD1.....$sfPTHjoufoNsda4HsD1oL0
  • 12.
    Contrôle d’accès Gestiondu fichier UserFile à l’aide du programme htpasswd présent dans le répertoire bin de l’arborescence Apache Utilisation de htpasswd : Création d’un nouveau fichier de mots de passe : htpasswd -c {chemin du fichier de mot de passe} utilisateur Ajout d’un nouvel utilisateur/motde passe à un fichier existant : htpasswd {chemin du fichier de mot de passe} utilisateur Suppression d’un utilisateur : éditer le fichier et supprimer la ligne correspondante à l’utilisateur Le fichier GroupFile s’édite avec tout éditeur texte
  • 13.
    Contrôle d’accès AuthGroupFile chemin/du/fichier : fichier dans lequel sont listés les groupes avec les utilisateurs qui leurs sont affectés La syntaxe de ce fichier est : Group1: user1, user2 Group2: user1, user3 Require : définit les utilisateurs autorisés à accéder à ce répertoire Syntaxes : Require user user1 user2 : les utilisateurs listés et présents dans le fichier UserFile peuvent accéder au site Require group group1 : les utilisateurs listés dans group1 et présent dans le fichier UserFile peuvent accéder au site Require valid-user : tous les utilisateurs présents dans le fichier UserFile peuvent accéder au site
  • 14.
    Exemple Pour interdirel’accès à tous les utilisateurs sauf à vous m ême : <Directory «C:/Program Files/EasyPHP1-7/www»> AllowOverride None #Cela laisse les permissions de tous les répertoires par défaut et n'autorise pas d'accès spéciaux même si un .htaccess existe Order allow,deny #L’ordre de prise en compte des «permissions» Allow from 127.0.0.1 #Seul l’IP 127.0.0.1 est autorisée à accéder </Directory> Allow from all : tout le monde peut avoir accès au serveur Web
  • 15.
    Les fichiers .htaccessSont des fichiers de configuration d’Apache qui permettent de : Définir les limites d’accès aux fichiers, répertoires et leurs sous-répertoires Spécifier des fichiers de mots de passe dans lequel sont rangés les couples « nom d’utilisateur, mot de passe » autorisés Restreindre l’accès selon des critères spécifiques : nom de réseau, mot de passe,… Intér êts des fichiers .htaccess : Gérer l’accès à certains fichiers et répertoires Protéger l’accès à un répertoire par un mot de passe Protéger l’accès à un fichier par un mot de passe
  • 16.
    Principe des fichiers.htacces Le fichier .htaccess est placé dans le répertoire là o ù il doit agir Il agit sur les permissions du répertoire qui le contient et de tous ses sous-répertoires On peut placer un autre fichier .htaccess dans un sous répertoire d’un répertoire déjà contrôlé par un fichier .htaccess Le fichier .htaccess du répertoire parent reste en « activité » tant que les fonctionnalités n’ont pas été réécrites Création de fichiers .htaccess à l’aide d’un simple éditeur de texte
  • 17.
    Emp êcher l’accèsà des ressources Un fichier .htacces est composé de deux sections : Section contenant les chemins vers les fichiers contenant les définitions de groupes et d’utilisateurs : AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse AuthGroupFile /repertoire/de/votre/fichier/.FichierDeGroupe AuthName « Accès protégé » AuthType Basic (précise qu'il faut utiliser AuthUserFile pour l'authentification) Section contentant la définition des conditions d’accès : <Limit GET POST> : GET et/ou POST définit le type de méthode du protocole HTTP auxquelles la restriction s'applique Require valid-user : précise que l'on autorise uniquement les personnes identifiées. Il est possible de préciser explicitement le nom des personnes autorisées à s'identifier : Require user {username} (instructions d’accès à satisfaire) </Limit>
  • 18.
    Exemple Protéger unrépertoire par un login et mot de passe Syntaxe : AuthUserFile (emplacement du fichier de mots de passe) AuthGroupFile (emplacement du fichier de groupes) AuthName « Accès protégé » AuthType Basic <Limit GET POST> Require valid-user </Limit> Quand l’utilisateur demande à accéder à un fichier ou un répertoire contenu dans le répertoire qui contient .htaccess, une cartouche est affichée. Elle fait apparaître : Le texte défini par AuthName Deux champs à remplire pour un login et un mot de passe qui est masqué
  • 19.
    Exemples AuthType BasicAuthName « Licence de physique » AuthUserFiles /…/passwd <Limit GET POST> Require user prof </Limit> => seul l’utilisateur prof, parmi tous ceux déclarés dans le fichier passwd, peut accéder au répertoire Création d’une intranet : AuthType Basic Order deny, allow <Limit GET POST> Allow from mon-domaine.org </Limit> => Seuls les postes clients appartenants au domaine mon-domaine.org peuvent accéder à l’information
  • 20.
    Exemple de restrictiond'accès Empêcher l'accès à un répertoire par un domaine AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse AuthGroupFile /dev/null (l'authentification ne se base pas sur le fichier .htgroup) AuthName &quot;Accès sécurisé au site ABC&quot; AuthType Basic <LIMIT GET POST> order deny,allow deny from all allow from 193.48.172.2 require user TOTO </LIMIT> Dans ce cas, l'accès ne sera possible que pour l'utilisateur TOTO à partir de l'adresse IP 193.48.172.2 et avec le bon mot de passe
  • 21.
    Exemple Empêcher l'accèsà un fichier particulier Par défaut, Apache applique les restrictions du fichier .htaccess à l'ensemble des fichiers du répertoire dans lequel il se trouve ainsi qu'à tous les fichiers contenus dans ses sous-répertoires Il est possible de restreindre l'accès pour un ou plusieurs fichiers du répertoire grâce à la balise <Files> Exemple de restriction au fichier admin.php : <Files admin.php > AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse AuthGroupFile /dev/null AuthName &quot;Accès sécurisé au site X&quot; AuthType Basic <LIMIT GET POST> require user JFPillou </LIMIT> </Files>
  • 22.
    Exemple Empêcher l'accèsà un type de fichier par un domaine <Files *.png > Order Deny, Allow Deny from .LeNomDuDomaine.com </Files> Toutes les personnes (requêtes) provenant du domaine .LeNomDuDomaine.com ne pourront avoir accès aux images, dont l'extension est .png, comprises dans le répertoire et ses sous-répertoires
  • 23.
    Exemple Autoriser l'accésà un groupe de fichiers par un domaine et un pays <Files php* > Order Allow, Deny Deny from all Allow from .phpfrance.com Allow from .fr </Files> Toutes les personnes (requêtes) provenant du domaine .phpfrance.com ou des domaines ayant la terminaison .fr pourront avoir accès aux fichiers commençant par php (eg, les fichiers phpbonjour.html, phpaurevoir.abc) compris dans le répertoire et ses sous-répertoires
  • 24.
    Exemple Obliger l'utilisateurà satisfaire à, au moins, une des conditions La syntaxe est la suivante : Satisfy any, all Exemple : Order Allow, Deny Deny from all Allow from .free.fr Require User Damien Comma PumpPHP Jeff Rastapaye Satisfy Any => L'accès au répertoire sera bloqué pour tout le monde à l'exception des personnes qui s'identifient et des requêtes provenant du domaine .free.fr
  • 25.
    .htacces - Gérerles types de fichiers Un type MIME est un ensemble de types de fichiers standard, permettant d'associer une extension de fichier donnée à une application, afin d'automatiser le lancement de l'application Ajout d’un mime-type à un répertoire : Syntaxe : AddType (mime/type [liste d'extension]) Exemple de mise en oeuvre du fichier .htacces AddType image/x-photoshop PSD => Le serveur enverra au navigateur Internet le fichier en lui disant de lancer le programme PhotoShop (s'il est installé sur sa machine) et de lui donner le fichier Cette commande permet aussi d'annuler tout élément prédéfini. Ainsi, vous pouvez enregistrer un fichier .wav avec une extension .gif et préciser au navigateur de considérer les fichiers .gif comme des fichiers audio !
  • 26.
    Gérer les typesde fichier Forcer tous les fichiers d'un répertoire à un mime-type Syntaxe : ForceType (mime/type) Par exemple avec la ligne suivante, tous les fichiers du répertoire contenant le fichier .htaccess seront considérés comme étant des fichiers .jpg quelque soit leur extension : ForceType image/jpg Définir l'extension de fichiers par défaut Syntaxe : DefaultType mime/type Exemple : DefaultType text/html Cette option permet de définir le comportement par défaut du navigateur face à des extensions lui étant inconnues (eg. lazy) Ici, il prendra tout fichier inconnu (par exemple 'bonjour', ‘Hello.salut’) en tant que document HTML
  • 27.
    Personnalisation de messagesd'erreures Même principe que dans le cas du fichier httpd.conf Permet de définir des messages d’erreur personnalisés => Donner un message d'erreur personnalisé remplaçant les fichiers fournis avec le navigateur Syntaxe : ErrorDocument (code-à-3-chiffres [nom du fichier ou texte ou url]) Exemple : définir les pages d'erreurs personnalisées au cas où l'accès à un document serait interdit ou bien que le document n'existe pas : ErrorDocument 403 /erreurs/403.php3 ErrorDocument 404 /erreurs/404.php3
  • 28.
    Changer le fichierindex par défaut Le fichier index est le fichier qui est affiché lorsque aucun nom de fichier n'est défini dans l'URL (par exemple http://www.serveur.com/repertoire) => Permet d'éviter que le navigateur liste l'ensemble des fichiers contenus dans le répertoire (pour des raisons de confidentialité) Syntaxe : DirectoryIndex fichiers Exemple : DirectoryIndex index.php index.html /erreurs/403.php3 Lorsque vous essayez d'accéder au répertoire sans préciser la page à afficher, Apache va avoir recours à la directive DirectoryIndex. En général, par défaut, cette directive pointe vers index.html puis index.htm Dans l'exemple ci-dessus, Apache va commencer par chercher index.php, puis index.html. Si aucun de ces fichiers existent, la page 403.php3 (se trouvant dans la racine) sera affichée pour éviter de lister le répertoire
  • 29.
    Le répertoire logs : Logs et Statistiques Votre site est-il beaucoup visité ? Quelles pages ? Par qui ? Quel navigateur ? Depuis quelles pages ? Quand ?… Ces informations sont déduites des fichiers logs qui enregistrent les requ êtes HTTP (et surtout les entêtes) Les fichiers logs sont rangés sous le répertoire logs . Cet emplacement peut être modifié dans le fichier de configuration
  • 30.
    Les fichiers logsLes accès et erreurs générés sur votre serveur sont tous consignés dans deux fichiers situés dans le répertoire logs : access_log : Garde trace de toutes les requêtes effectuées sur le serveur Ce fichier est souvent à l'origine d'analyses statistiques Voir exemple error_log : Enregistre toutes les erreurs rencontrées par le serveur Lors du débuggage de cgi-bin ou au démarrage du serveur, il est indispensable de jeter un coup d'oeil à ce fichier Voir exemple Possibilité de personnaliser les logs : Exemple : afficher la version du client et le referer (page de référence) Démo : voir l’évolution du contenu des fichiers access.log et error.log Contr ôle de l’activité du serveur avec les fichiers log et les outils d’analyse des fichiers logs Outil téléchargeable gratuitement http://awstats.sourceforge.net Démo
  • 31.
    Le répertoire wwwChemin : C:\Program Files\EasyPHP\www Ce répertoire est la racine du site Web Il contient la page d’accueil du site Il contient les fichiers accessibles depuis Internet = tous les répertoires du site Web Par défaut, vous devez mettre vos fichiers PHP et HTML dans le répertoire www. Ce sont ces fichiers qui seront appelés lorsque vous entrerez l'URL localhost/ ou 127.0.0.1 Pour que les pages PHP soient interprétées, il faut les placer dans ce répertoire
  • 32.
    Le répertoire bin Ce répertoire contient des fichiers exécutables Exemples : L’utilitaire htpasswd qui permet de créer des fichiers de mots de passe Un programme exécutable qui permet de démarrer le serveur MySQL …
  • 33.
    Cgi-bin Répertoire pardéfaut pour les programmes de génération de pages dynamiques CGI Permet de configurer notre serveur Web afin d’activer les CGI et exploiter les SSI CGI (Common Gateway Interface) : Une CGI est un programme dont le flux de sortie sera renvoyé au client via le serveur web SSI (Server Side Include) : les SSI sont des instructions que l’on peut inclure dans une page web qui sera analysée par le serveur avant d’ être envoyée au client Ce répertoire peut contenir des sous-répertoires qui seront également autorisés à lancer des programmes
  • 34.
    Cgi-bin Pour configurerle serveur Apache, il faut : « activer » les cgi : modifier le fichier htpd.conf en ajoutant la ligne suivante si elle n’existe pas encore : ScriptAlias /cgi-bin/ «C:/Program Files/EasyPHP1-7/cgi-bin/» => spécifier le répertoire qui contiendra les cgi AddHandler cgi-script .pl AddHandler cgi-script .cgi => ces lignes permettent au serveur de savoir que les fichiers ayant des extensions en .pl et .cgi sont des CGI à exécuter Ensuite, il faut créer les fichier .cgi et .pl
  • 35.
    Le répertoire modulesIl contient un certain nombre de bibliothèques dynamiques ou modules Leur nom comprend obligatoirement l’extension «.so» et étend les fonctionnalités du serveur Dans sa configuration de base, le serveur ne peut pas faire grand-chose : sans module pas de CGI par exemple Cette modularité des fonctionnalités permet de gérer très souplement le fonctionnement d’un serveur La liste des modules disponibles s’agrandit à chaque nouvelle version A chaque module correspondent des instructions spécifiques qui, ajoutées dans le fichier de configuration d’Apache, configurent le fonctionnement du module correspondant
  • 36.
    Modules - exemplesmod_status.so : permet de faire des statistiques sur le serveur (les requ êtes qui lui ont été adressées, etc.) mod_access.so Permet de contrôler quelles machines peuvent accéder à un répertoire du site mod_actions.so Contrôle l’exécution de scripts CGI mod_auth.so Permet de contrôler l’authentification des utilisateurs et l’usage des ressources mod_log_agent.so Autorise le recueil d’informations relatives aux clients utilisateurs mod_mime.so Pour l’organisation des différents types MIME

Notes de l'éditeur

  • #7 Timeout définit, en seconde, la durée pendant laquelle le serveur attend des réception et des émissions en cours de communication (requ ête GET, reception paquet TCP, ACK) KeepAlive : autorise ou non plus d’une requête par connexion.