Вы находитесь на странице: 1из 44

Prof.

zytoune

SERVEUR HTTP
1

Administration dapache

PLAN
Introduction:

Prsentation HTTP; Installation et configuration dapache; VirtualHosts; Aliasing; Limitation daccs.

Prof. zytoune

PROTOCOLE HTTP PRSENTATION


HTTP : HyperText Transfer Protocol Versions : 0.9, 1.0, 1.1

Client

Prof. zytoune

Entte Donnes

Enttes Donnes Requte (demande) Rponse

Rponse

Requte

Architecture Client-Serveur RFC 1945, 2616, 822 Messages composs de :

Entte

Donnes

Messages du type :

Serveur

PROTOCOLE HTTP REQUTE


Schma : Titre de la requte

Prof. zytoune

METHODE (GET, HEAD, POST) RESSOURCE VERSION du protocole Options dentte supplmentaires Hte virtuel interroger Identit du navigateur (User-Agent) Types MIME supports par le navigateur Cookies (Cookie) etc Ligne blanche

EXEMPLES DE REQUTES HTTP


GET

http://www.yahoo.com HTTP/1.1
Prof. zytoune

Host: www.yahoo.com User-Agent : Mozilla/5.0 (Linux i686) Accept : text/html, application/xml, image/ jpeg
HEAD

http://www.yahoo.com HTTP/1.0 POST /somepage.php HTTP/1.1


Host: example.com Content-Type: application/x-www-formurlencoded Content-Length: 19 name=Duval&sexe=masculin
5

PROTOCOLE HTTP RPONSE


Schma : Titre de la rponse

VERSION du protocole CODE derreur LIBELLE correspondant au code derreur Options dentte supplmentaires Type MIME du contenu Date/heure du serveur Taille du message Instructions de mise en cache Dpt de cookies etc Ligne blanche Corps du messages (donnes transmettre

Prof. zytoune

EXEMPLE DE RPONSE HTTP

HTTP/1.1 302 Found


Date: Sun, 05 Nov 2006 10:47:52 GMT Content-Length: 30 Content-Type: text/html; charset=iso-8859-1 <html><body>test</body></html>
Prof. zytoune

EXEMPLE DE RPONSE HTTP


HTTP/1.0 200 OK
Date: Thu, 14 May 2009 10:08:21 GMT Server: Apache Last-Modified: Fri, 21 Apr 2006 01:04:14 GMT Accept-Ranges: bytes Content-Length: 318 Content-Type: image/x-icon Age: 37 Connection: close

Prof. zytoune

54a8422f61023d4c4545ef445ac4555b732242a5478754a8422f61023 d4c4545ef445ac4555b732242a5478754a8422f61023d4c4545ef445a c4555b732242a5478754a8422f61023d4c4545ef445ac4555b732242a 5478754a8422f61023d4c4545ef445ac4555b732242a5478754a8422f 61023d4c4545ef445ac4555b732242a5478754a8422f61023d4c4545e f445ac4555b732242a5478754a8422f61023d4c4545ef445ac4555b73 2242a5478754a8422f61023d4c4545ef445ac4555b732242a54787

PROTOCOLE HTTP MTHODES

: obtenir une ressource EAD : obtenir des informations sur H une ressource OST : envoi de donnes par P formulaire
ET G
: dpt dun fichier sur le serveur DELETE : suppression dun fichier sur le serveur
PUT TRACE

Prof. zytoune

: retourne les donnes envoys dans la requte

: permet dobtenir des informations sur les options de communication dune ressource CONNECT : permet dutiliser un proxy
OPTIONS

PROTOCOLE HTTP CODES DERREUR

Familles de codes derreur


1xx : Information

2xx : Succs

100 Continue : Attente de la suite de la requte

Prof. zytoune

3xx : Redirection

200 OK : Requte traite avec succs 202 Accepted : Requte traite mais sans garantie de rsultat 301 Moved Permanently : Document dplac de faon permanente 302 Moved Temporarily : Document dplac de faon temporaire 403 Forbidden : Refus de traitement de la requte 404 Not Found : Document non trouv

4xx : Erreur imputable au client 5xx : Erreur du serveur

500 Internal Server Error : Erreur interne du serveur 505 HTTP Version not supported : Version HTTP non gre par le serveur
10

PROTOCOLE HTTP VERSIONS

HTTP 0.9

Trs simple Pas dentte Pas de type MIME Une seule mthode : GET Enttes Gestion des types MIME Multiples mthodes Gestion des htes virtuels (Host: ) Entte Host: obligatoire Gestion du cache Connexions persistantes (Connexion: keep-alive) Ngociation du contenu (types MIME, langue)

Prof. zytoune

HTTP 1.0 (mai 1996)


HTTP 1.1 (juin 1999)


11

URL RAPPELS

URL : Uniform Ressource Locator Identifiant unique de toute ressource sur Internet RFC1738 Compose des lments :

Prof. zytoune

Protocole Machine Nom de domaine TLD (Top Level Domain) Chemin Nom de la ressource Paramtres (liste de couples cl/valeur) ftp://noemie.siteweb.com/images/logo.jpg http://www.site.fr/appli/script.do?param=valeur

Exemples :

12

GNRALITS SERVEUR HTTP


logiciel

servant les requtes clientes conforme au protocoles HTTP 1.1 et 1.0 journalisation des requtes pour analyse statistiques coute des ports standards 80 (HTTP) et 443 (HTTPS) types de contenus retourns :

Prof. zytoune

statique (fichier du systme de fichiers) dynamique (gnr par un programme ou un script appel par le serveur HTTP)

authentification

des utilisateurs
13

GNRALIT LES SERVEURS DU MARCH


De Dcembre 1995 Septembre 2010

2.1, 1.3
Prof. zytoune

2.0

Apache : 56% 2.2

Microsoft : 25%

1.0

14
Source : http://news.netcraft.com/

APACHE
Dnomination : Apache HTTP Server Dveloppeurs : Apache Software Foundation Site : http://httpd.apache.org

Prof. zytoune

Cr en 1995 sur la base du NCSA HTTPd daemon (sur lequel ont t invents les CGI) Dernire version : 2.2.16 Serveur HTTP open source Multi-plateforme (Unix, Windows, NetWare)

Trs rpandu Performant

15

ASF : APACHE SOFTWARE FOUNDATION


Association

but non lucratif amricaine Cre en 1999 Dveloppement de logiciels libres Communaut de dveloppeurs dcentralise Dveloppement collaboratif bas sur le consensus Offre la protection juridique pour :

Prof. zytoune

la marque Apache les logiciels dvelopps


16

LICENCE APACHE
Licence logicielle gratuite crite par lASF Sapplique tous les logiciels quelle publie

Prof. zytoune

Dernire version : 2.0 Compatible GPL Elle permet :

Rutilisation du code dans des projets libres ou commerciaux Modification du code Inclusion de code protg

Lien : http://www.apache.org/licenses/
17

INSTALLATION
Un

serveur "LAMP" est un exemple de serveur web. Linux: le systme d'exploitation constituant la base du systme. Apache: le serveur HTTP qui gre la communication avec le client. MySQL: le systme de gestion de base de donnes. PHP: le langage de script utilis pour gnrer les pages dynamiques. Sous linux Ubuntu:

Prof. zytoune

apt-get install lamp-server Permet dinstaller Apache, mySQL et PHP;


18

INSTALLATION
Installation En

directe des paquets ncessaires:


Prof. zytoune

apache2, mysql-server, php5, php5-mysql

ligne de commande : des paquets :

sudo apt-get install apache2 mysql-server php5 php5-mysql


Le paquet apache2 installe le serveur Apache 2. Le paquet mysql-server installe le serveur MySQL. Le paquet php5 installe le langage PHP 5 mais aussi, grce aux dpendances, le module d'intgration dans Apache (paquet libapache2-mod-php5). Le paquet php5-mysql installe les mcanismes de communication entre PHP 5 et MySQL.

Description

19

CONFIGURATION DAPACHE
Toutes les configurations se font dans le rprtoire: /etc/apache2. La structure de configuration est clate sur plusieurs fichiers;

20

Prof. zytoune

CONFIGURATION DAPACHE
Paramtres

gnraux se trouvant apache2.conf:


Prof. zytoune

User www-data: fixe lutilisateur qui peut possder des scripts et des donnes sensibles; Group www-data: fixe le groupe qui peut possder des scripts et donnes sensibles. Si on veut ajouter un utilisateur possder des scripts CGI on ajoute lutilisateur au groupe www-data par adduser; AccessFileName .htaccess: fixe le nom du fichier (par dfaut .htaccess) trouver dans un rpertoire pour que laccs de ce rpertoire soit protg, en imposant lutilisateur une authentification par nom et mot de passe. Ces comptes sont spcifiques Apache et ninterfrent pas avec les comptes Linux.

21

CONFIGURATION DAPACHE
ServerRoot

/etc/apache2:
Prof. zytoune

Il sagit du rpertoire o le serveur trouvera son rpertoire de conguration. On trouve dans /etc/ apache2, un lien vers /var/log/httpd/access_log, le fichier-journal des accs aux ressources, russis ou non (le consulter)

PidFile

/var/run/httpd.pid

Cest le fichier o le serveur en excution stocke son premier numro de processus (PID), ce qui peut tre utile dautres processus.

ErrorLog

/var/log/apache2/error.log
22

Cest le fichier qui contient lhistorique des erreurs qui se sont produites (exemple : script cgi qui na pas march...).

CONFIGURATION DAPACHE: PARAMTRES


SPCIFIQUES CHAQUE SERVEUR

Les paramtres (en gnral) spcifiques chaque serveur (qui se trouvent dans sites-enabled sont (liste non exhaustive) :

DocumentRoot /var/www/html

Prof. zytoune

xe la racine du serveur Web, cest--dire le rpertoire de base o sont cherches par dfaut les pages html, lorsque lURL ne comporte pas de chemin de rpertoire Il est courant domettre le nom du fichier de la page daccueil dun site ou de lun de ses sous-rpertoires. Pour ne pas retourner systmatiquement une erreur 404 signalant une adresse errone, le serveur possde une liste standard de noms de fichiers quil sefforce de trouver dans le rpertoire. Cette liste ordonne est indique par la clause Directory Index

DirectoryIndex index.html index.php index.htm...

ServerAdmin webmaster@localhost

Sil a un problme, le serveur crit un message cette adresse Dfinit le fichier qui contient lhistorique des connections, des clients, des dates, de lorigine (referer site) de la connexion, ainsi que le format pour mmoriser ces informations (ici le format combined). 23

CustomLog /var/log/apache2/access.log combined

CONTRLE DES ACCS UN RPERTOIRE


Chaque

rpertoire auquel Apache accde peut tre configur, et root peut permettre certaines fonctionnalits dapache pour ces rpertoires, et en interdire dautres. Cela permet, en fonction des besoin et de la confiance accorde chaque webmaster, de grer les problmes de scurit. En gnral, root cherche donner tout juste les permissions qui sont requises en fonction des besoins. Le paramtrage dun rpertoire se prcise dans un conteneur not :

<Directory /chemin/vers/le/rpertoire/> </Directory>

24

Prof. zytoune

EXEMPLE DE CONTENEUR

NameVirtualHost * <VirtualHost *> DocumentRoot /home/monRepertoire/ # racine du site

Prof. zytoune

<Directory /> # droits du rpertoire racine


Options FollowSymLinks AllowOverride None

</Directory> du site

<Directory /home/monRepertoire/> # droits sur lensemble


Options Indexes FollowSymLinks MultiViews AllowOverride None # interdit les .htaccess Order allow,deny # donne lordre des permissions allow from all # autorise tous les clients # avec la directive suivante, il faut mettre la # page dacueil dans /home/monRepertoire/apache2-default/

</Directory>
25

etc...

</VirtualHost>

LES OPTIONS
Les

principales options dun rpertoire peuvent tre les suivantes :


None : Dsactive toutes les options.

serveur. Cest dire si lindex du rpertoire (index.htm le + souvent) est manquant, cela autorise le serveur a lister le contenu du rpertoire (dangereux suivant les fichiers contenu dans ce rpertoire).

All : Active toutes les options SAUF Multiviews. Indexes : Permet aux utilisateurs davoir des indexes gnr par le

Prof. zytoune

Includes).

FollowSymLinks : Autorise suivre les liens symboliques. ExecCGI : Autorise excuter des scripts CGI dans ce rpertoire. Includes : Autorise des fichiers include cot serveur SSI(Server Side IncludesNOEXEC : Permet les includes mais empche la commande Multiviews : Autorise les vue multiples suivant un contexte. Par SymLinksIfOwnerMatch : Autorise suivre les liens seulement si

EXEC (qui permet dexecuter du code).

exemple permet dafficher les pages dans un langage suivant la configuration du langage du client.

luser ID du fichier (ou rpertoire) sur lequel le lien pointe est le mme que celui du lien.

26

DONNER LES DROITS


Avec Order allow,deny, on peut permettre un accs tous sauf quelques-uns. Par exemple,

Prof. zytoune

Order allow,deny allow from all # autorise tous les clients deny from 192.168.0.67 # interdit laccs par une IP

permet tous daccder sauf lhte 192.168.0.67.

Avec Order deny, allow, on peut permettre laccs seulement par un sous-rseau. Par exemple,

Order deny,allow Deny from all Allow from 192.168.0 Allow from .mydomain.com

permet laccs seulement partir du rseau local 192.168.0 et du domaine mydomain.com

27

DIRECTIVE ALLOWOVERRIDE
La

directive AllowOverride permet au webmaster de redfinir par lui-mme certains droits ou certaines options spcifiquement dans certains rpertoires. Pour cela, le webmaster cre dans un rpertoire un fichier .htaccess dans lequel il dfinit les options et les droits quil souhaite. Par exemple, si root a mis dans les permissions dun rpertoire

Prof. zytoune

AllowOverride Options Limit le webmaster peut mettre les droits suivants dans un chier .htaccess dun rpertoire contenant des fichiers de lintranet de son entreprise : Options ExecCGI Order deny,allow Deny from all Allow from 192.168.0

28

TYPES DE DIRECTIVES POUR ALLOWOVERRIDE


None

: nautorise aucun contrle par le webmaster au niveau du .htaccess. Apache ne lis pas le fichier .htaccess et laisse les permissions "Linux" de ce rpertoire et les droits donns par root dans la balise <Directory> dans la configuration dapache. webmaster dans le .htaccess dun rpertoire. le .htaccess.

Prof. zytoune

All : toutes les permissions et options peuvent tre grs dans par le Limit : Active la directive dautorisation order, allow, deny dans Options : Active la directive Options dans le .htaccess. AuthCong : permet au webmaster de configurer dans le .htaccess

les directives dautentification pour les sites scuriss (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile AuthName, AuthType, AuthUserFile, Require). AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority. DirectoryIndex.

FileInfo : Active les directives dautorisations AddEncoding,

Indexes : permet de dfinir dans .htaccess des directives comme

29

VIRTUAL HOSTS
Une machine peut en gnral avoir plusieurs noms dhte. One peut en dclarer plusieurs pour la mme adresse IP dans les DNS, et une machine peut aussi avoir plusieurs adresses IP si elle a plusieurs interfaces rseaux. Si une machine a plusieurs noms dhte, on peut alors mettre plusieurs sites HTTP sur le mme serveur. Pour cela, on cre plusieurs fichiers de configuration diffrents dans le rpertoire /etc/apache2/sites-enabled Dans la dclaration du virtual host, on peut mettre :

Prof. zytoune

NameVirtualHost * <VirtualHost *> ServerName mon_nom_d_hote ... suivi de la dclaration du rpertoire racine du site.
30

CONFIGURATION DU SERVEUR
# Apache doit couter sur le port 80 Listen 80 # Toutes les adresses IP doivent rpondre aux requtes sur les serveurs virtuels NameVirtualHost *:80 <VirtualHost *:80>

Prof. zytoune

DocumentRoot /www/example.com ServerName www.example1.com # Autres directives ici

</VirtualHost> <VirtualHost *:80>


DocumentRoot /www/example.org ServerName www.example2.org


31

# Autres directives ici </VirtualHost>

CONFIGURATION DU SERVEUR
Les

astrisques correspondent toutes les adresses, Comme www.example.com se trouve en premier dans le fichier de configuration, il a la plus grande priorit et peut tre vu comme serveur par dfaut ou primaire ; ce qui signifie que toute requte reue ne correspondant aucune des directives ServerName sera servie par ce premier VirtualHost.

32

Prof. zytoune

CONFIGURATION DU SERVEUR

On peut remplacer * par l'adresse IP du systme. Dans ce cas, l'argument de VirtualHost doit correspondre l'argument de NameVirtualHost :

NameVirtualHost 172.20.30.40 <VirtualHost 172.20.30.40> # etc ...

Prof. zytoune

En gnral, il est commode d'utiliser * sur les systmes dont l'adresse IP n'est pas constante - par exemple, pour des serveurs dont l'adresse IP est attribue dynamiquement par le FAI, et o le DNS est gr au moyen d'un DNS dynamique quelconque. Comme * signifie n'importe quelle adresse, cette configuration fonctionne sans devoir tre modifie quand l'adresse IP du systme est modifie. Cette configuration est en pratique utilise dans la plupart des cas pour les serveurs virtuels par nom. En fait, le seul cas o cette configuration ne fonctionne pas est lorsque diffrents contenus doivent tre servis en fonction de l'adresse IP et du port contacts par le client.

33

SERVEURS VIRTUELS PAR NOM SUR PLUS D'UNE SEULE ADRESSE IP


Le

serveur a deux adresses IP. Sur l'une (172.20.30.40), le serveur "principal" server.domain.com doit rpondre, et sur l'autre (172.20.30.50), deux serveurs virtuels (ou plus) rpondront. Configuration du serveur
Listen 80 # Serveur "principal" sur 172.20.30.40 ServerName server.domain.com DocumentRoot /www/mainserver # l'autre adresse NameVirtualHost 172.20.30.50 <VirtualHost 172.20.30.50> DocumentRoot /www/example.com ServerName www.example.com # D'autres directives ici ... </VirtualHost> <VirtualHost 172.20.30.50> DocumentRoot /www/example.org ServerName www.example.org # D'autres directives ici ... </VirtualHost>

Toute

requte arrivant sur une autre adresse que 172.20.30.50 sera servie par le serveur principal. Les requtes vers 172.20.30.50 avec un nom de serveur inconnu, ou sans en-tte Host:, seront servies par www.example.com.

34

Prof. zytoune

AJOUT DUN SITE


Dans

/etc/apache2/sites-available, crer un fichier "myself.lan Activer le VirtualHost :


Prof. zytoune

sudo a2ensite myself.lan redmarrer Apache,

Un

VirtualHost (site) ajout peut ensuite tre retir comme suit : commande
sudo a2dissite nom_du_site ou en retirant le lien symbolique dans /etc/apache2 / sites-enabled, redmarrer Apache.
35

CRER UN ALIAS

Un alias permet de stocker les pages d'un utilisateur dans son rpertoire "home" et les faire servir par Apache avec une URL simplifie. Exemple : on suppose un utilisateur "myself" et on souhaite faire pointer l'URL "http://localhost/mien/" vers "/home/myself/ htdocs/.

Prof. zytoune

il faut s'assurer que le groupe de scurit du serveur Apache ("wwwdata") puisse accder au rpertoire "/home/myself/htdocs", en vrifiant les droits et en autorisant au moins la lecture. Il suffit alors d'ajouter le fichier "mien" suivant dans /etc/apache2/conf. # Users's pages Alias /mien/ "/home/myself/htdocs/" <Directory "/home/myself/htdocs/">
Options Indexes MultiViews AllowOverride All Order allow,deny Allow from all

</Directory>

36

FICHIERS HTACCESS
Les

fichiers .htaccess peuvent tre utiliss dans n'importe quel rpertoire virtuel ou sousrpertoire. Les principales raisons d'utilisation des fichiers .htaccess sont :

Prof. zytoune

Grer l'accs certains fichiers. Ajouter un mime-type. Protger l'accs un rpertoire par un mot de passe. Protger l'accs un fichier par un mot de passe. Dfinir des pages d'erreurs personnalises.
37

PRINCIPE DES FICHIERS HTACCESS


Le

fichier .htaccess est plac dans le rpertoire dans lequel il doit agir. Il agit ainsi sur les permissions du rpertoire qui le contient et de tous ses sous-rpertoires. Vous pouvez placer un autre fichier .htaccess dans un sous-rpertoire d'un rpertoire dj contrl par un fichier .htaccess. Le fichier .htaccess du rpertoire parent reste en activit tant que les fonctionnalits n'ont pas t rcrites.

38

Prof. zytoune

EMPCHER L'ACCS DES RESSOURCES


Un

fichier .htaccess est compos de deux sections :


Prof. zytoune

Une premire section contient les chemins vers les fichiers contenant les dfinitions de groupes et d'utilisateurs :
AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse AuthGroupFile /repertoire/de/votre/fichier/.FichierDeGroupe AuthName "Accs protg AuthType Basic

AuthUserFile dfinit le chemin d'accs absolu vers le fichier de mot de passe. AuthGroupFile dfinit le chemin d'accs absolu vers le fichier de groupe. AuthName entrane l'affichage dans le navigateur Internet de : Tapez votre nom d'utilisateur et votre mot de passe. Domaine: "Accs protg AuthType Basic prcise qu'il faut utiliser AuthUserFile pour l'authentification.

39

EMPCHER L'ACCS DES RESSOURCES

Une seconde section contient la dfinition des conditions d'accs :


Prof. zytoune

Require valid-user {instruction d'accs satisfaire }

require valid-user prcise que l'on autorise uniquement les personnes identifies. Il est galement possible de prciser explicitement le nom des personnes autorises s'identifier :

require user {username}


40

PROTGER UN RPERTOIRE PAR UN MOT DE


PASSE
Il

s'agit d'une des applications les plus utiles du fichier .htaccess car elle permet de dfinir de faon sre ( l'aide d'un login et d'un mot de passe) les droits d'accs des fichiers par certains utilisateurs. La syntaxe est la suivante :

Prof. zytoune

AuthUserFile {emplacement du fichier de mot de passe} AuthGroupFile {emplacement du fichier de groupe} AuthName "Accs protg" AuthType Basic Require valid-user
41

PROTGER UN RPERTOIRE PAR UN MOT


DE PASSE
AuthUserFile: permet de dfinir l'emplacement du fichier contenant les logins et les mots de passe des utilisateurs autoriss accder une ressource donne. AuthGroupFile : permet de dfinir l'emplacement du fichier contenant les groupes d'utilisateurs autoriss s'identifier. Il est possible d'outrepasser cette dclaration en dclarant le fichier suivant : /dev/null. Voici un exemple de fichier .htaccess :

Prof. zytoune

ErrorDocument 403 http://www.commentcamarche.net/ accesrefuse.php3 AuthUserFile /repertoire/de/votre/ fichier/.FichierDeMotDePasse AuthGroupFile /dev/null AuthName "Accs scuris au site CCM" AuthType Basic Require valid-user

42

CRATION DES MOTS DE PASSE


Apache

fournit un outil permettant de gnrer facilement des mots de passe crypts (aussi bien sous Windows que sous Unix), il s'agit de l'utilitaire htpasswd accessible dans le sousrpertoire bin d'Apache. La syntaxe de cet utilitaire est la suivante :

Prof. zytoune

Pour crer un nouveau fichier de mots de passe :

htpasswd -c {chemin du fichier de mot de passe} utilisateur

Pour ajouter un nouvel utilisateur/mot de passe un fichier existant :

htpasswd {chemin du fichier de mot de passe} utilisateur


43

TP
On

veut crer et hberger deux sites web sur un serveur apache: www.exemple1.com et www1.exemple1.com. Le contenu des deux sites va tre limit une page daccueil index.html lmentaire. Crer et hberger ces deux sites. Vrifier le fonctionnement.

44

Prof. zytoune

Вам также может понравиться