36
Serveur Web et Gestion de Sites Web Saïd Radhouani Université de Genève janvier 2005

Serveur Web (1)

Embed Size (px)

DESCRIPTION

Apache configuration, EasyPHP, Proxy,

Citation preview

Page 1: Serveur Web (1)

Serveur Web et Gestion de Sites Web

Saïd RadhouaniUniversité de Genèvejanvier 2005

Page 2: Serveur Web (1)

2

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 moduleswww : les pages accèssible dpuis internet icons : le jeu des iconscgi-bin : les cgi (des scripts tels écrits en perl, en

C, etc.)bin : contient des exécutables

Page 3: Serveur Web (1)

3

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 "techniques" 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

"style" que le HTML) on peut redéfinir des permissions au niveau des répertoires à l'aide de fichier .htaccess

Page 4: Serveur Web (1)

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

Page 5: Serveur Web (1)

5

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 [email protected] On peut le modifier à tout moment

Page 6: Serveur Web (1)

6

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

Page 7: Serveur Web (1)

7

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

Page 8: Serveur Web (1)

8

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

Page 9: Serveur Web (1)

9

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

Page 10: Serveur Web (1)

10

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)

Page 11: Serveur Web (1)

11

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

Page 12: Serveur Web (1)

12

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

Page 13: Serveur Web (1)

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

Page 14: Serveur Web (1)

14

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

Page 15: Serveur Web (1)

15

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

Page 16: Serveur Web (1)

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

Page 17: Serveur Web (1)

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/.FichierDeMotDePasseAuthGroupFile /repertoire/de/votre/fichier/.FichierDeGroupeAuthName « 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>

Page 18: Serveur Web (1)

18

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é

Page 19: Serveur Web (1)

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 BasicOrder 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

Page 20: Serveur Web (1)

20

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 "Accès sécurisé au site ABC" 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

Page 21: Serveur Web (1)

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 "Accès sécurisé au site X" AuthType Basic <LIMIT GET POST>

require user JFPillou </LIMIT>

</Files>

Page 22: Serveur Web (1)

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

Page 23: Serveur Web (1)

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

Page 24: Serveur Web (1)

24

Exemple

Obliger l'utilisateur à satisfaire à, au moins, une des conditions

La syntaxe est la suivante :Satisfy any, all

Exemple :Order Allow, DenyDeny from allAllow from .free.frRequire User Damien Comma PumpPHP Jeff RastapayeSatisfy 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

Page 25: Serveur Web (1)

25

.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 !

Page 26: Serveur Web (1)

26

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

Page 27: Serveur Web (1)

27

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

Page 28: Serveur Web (1)

28

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

Page 29: Serveur Web (1)

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

Page 30: Serveur Web (1)

30

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

Page 31: Serveur Web (1)

31

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

Page 32: Serveur Web (1)

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

Page 33: Serveur Web (1)

33

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

Page 34: Serveur Web (1)

34

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

Page 35: Serveur Web (1)

35

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

Page 36: Serveur Web (1)

36

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