Vous êtes sur la page 1sur 28

INSA - ASI

TechnoWeb : Serveur Http Apache

1/28

Technologie Web
Serveur Http Apache Alexandre Pauchet
INSA Rouen - Dpartement ASI
BO.B.RC.18, pauchet@insa-rouen.fr

INSA - ASI

TechnoWeb : Serveur Http Apache

2/28

Plan

Description Conguration gnrale Conguration des accs et oprations Rpertoires et authentication Serveurs virtuels Optimisation et scurit

INSA - ASI

TechnoWeb : Serveur Http Apache

3/28

Description

(1/3)

Prsentation : A PAtCHy sErver

Bas sur du code existant et une srie de patchs Serveur open source : http://httpd.apache.org Conforme au protocole HTTP/1.1 (rfc2616) Serveur le plus utilis au monde 2 versions actuelles : 1.3.X et 2.X (rcrit et multi-threads) Multi-plateformes (Unix, Windows, Novell Netware) Trs congurable et modulaire

INSA - ASI

TechnoWeb : Serveur Http Apache

4/28

Description

(2/3)

Installation par paquets

Le serveur Apache Http peut sinstaller directement par paquets (apt-get ou via le gestionnaire de paquets) Paquets installer : libapr1, apache2, apache2.2-common, apache2-utils et apache2-mpm-worker Modules complmentaires :
PHP5 : php5-common, php5, php5-gd et libapache2-mod-php5 + modules optionnels php5 SQLite : php5-sqlite et sqlite3 MySQL : php5-mysql, mysql-server et libapache2-mod-auth-mysql POSTGRESQL : postgresql libapache2-mod-auth-pgsql

INSA - ASI

TechnoWeb : Serveur Http Apache

5/28

Description

(3/3)

Installation par compilation des sources

Rcupration des dernires versions Apache et PHP sur http://www.apache.org et http://www.php.net Conguration et compilation dApache Http
$ . / c o n f i g u r e p r e f i x =ApachePath w i t h i n c l u d e d a p r $ make $ make i n s t a l l

Conguration, compilation et installation du module PHP


$ . / c o n f i g u r e p r e f i x =PHP Path w i t h a p x s 2=ApachePath / b i n / a p x s $ make $ make i n s t a l l

Prise en compte des chiers .php dans Apache Ajouter AddType application/xhttpdphp .php dans le httpd.conf

INSA - ASI

TechnoWeb : Serveur Http Apache

6/28

Conguration gnrale
Systmes de chiers

(1/5)

Version classique (VC)


Principal chier de conguration : httpd.conf Ajout de modules par inclusion de sous-chiers de conguration dans httpd.conf : Include conf/extra/fichier--ajouter.conf

Version Debian/Ubuntu (VDU)


Principal chier de conguration : apache2.conf Ajout de modules par cration de liens symboliques du rpertoire mods-available vers mods-enabled. Pour chaque module, 2 chiers lier : .conf et .load. Ajout de sous-chiers de conguration dans httpd.conf : Include fichier--ajouter.conf

INSA - ASI

TechnoWeb : Serveur Http Apache

7/28

Conguration gnrale

(2/5)

Identication du serveur et emplacement des chiers

Conguration gnrale (VC : httpd.conf, VDU : sites-enabled/000-default)


ServerName : nom du serveur (VDU : apache2.conf) Ex : ServerName 127.0.0.1, ServerName localhost:8080, ServerName www.example.com:80 ServerRoot : spcie le rpertoire o est install le serveur (VDU : apache2.conf) Ex : ServerRoot "/tmp/apache2" ServerAdmin : adresse mail de ladministrateur DocumentRoot : spcie le rpertoire racine dApache ErrorLog : spcie le chier de log des erreurs CustomLog : spcie le chier de log contenant les requtes au serveur

Types MIME reconnus : directive TypesConfig dans mime.types (VDU : chier prsent dans mods-enabled)

INSA - ASI

TechnoWeb : Serveur Http Apache

8/28

Conguration gnrale
Conguration rseau

(3/5)

Listen dtermine le port de connexion au serveur (classiquement 80 pour http, parfois 8080) VC : httpd.conf / VDU : ports.conf KeepAlive spcie si les connexions persistantes sont autorises VC : httpd-default.conf / VDU : apache2.conf KeepAliveTimeout temps partir duquel la connexion est coupe VC : httpd-default.conf / VDU : apache2.conf Timeout temps de rception dune requte ou dune rponse VC : httpd-default.conf / VDU : apache2.conf

Remarque
Cest le serveur qui dnit le mode de connexion par dfaut La rfc2616 prconise une connexion persistante

INSA - ASI

TechnoWeb : Serveur Http Apache

9/28

Conguration gnrale
Conguration des processus

(4/5)

StartServer, MaxSpareServers, MinSpareServers dnissent le nombre de processus ls VC : httpd-mpm.conf / VDU : apache2.conf MaxRequestsPerChild nombre de requtes traites par ls VC : httpd-mpm.conf / VDU : apache2.conf

INSA - ASI

TechnoWeb : Serveur Http Apache

10/28

Conguration gnrale
Dmon Http

(5/5)

User/Group : utilisateur et groupe sous lesquels est excut le dmon Http. Dans httpd.conf pour VC
<I f M o d u l e ! mpm_netware_module> U s e r daemon Group daemon </I f M o d u l e >

Dans apache2.conf (et envvars par dlgation) pour VDU

INSA - ASI

TechnoWeb : Serveur Http Apache

11/28

Conguration des accs et oprations


Fichier par dfaut

(1/7)

DirectoryIndex : le(s) chier(s) par dfaut (index.html index.htm index.xhtml index.cgi index.php ...) VC : httpd.conf / VDU : dir.conf

INSA - ASI

TechnoWeb : Serveur Http Apache

12/28

Conguration des accs et oprations


Systme de chiers

(2/7)

INSA - ASI

TechnoWeb : Serveur Http Apache

13/28

Conguration des accs et oprations


Systme de chiers

(3/7)

UserDir spcie le nom du rpertoire web des utilisateurs (usuellement public_html) VC : httpd-userdir.conf / VDU : userdir.conf Alias : association dune URL un rpertoire local VC : httpd.conf / VDU : alias.conf ScriptAlias : idem, mais uniquement pour les CGI VC : httpd.conf / VDU : alias.conf AccessFileName : chier de contrle daccs (.htaccess) VC : httpd-default.conf / VDU : apache2.conf

INSA - ASI

TechnoWeb : Serveur Http Apache

14/28

Conguration des accs et oprations


Le contrle des traitements

(4/7)

Redirect : redirection dune URL sur une autre Exemple : Redirect /google http://www.google.fr VC : httpd.conf / VDU : apache2.conf AddHandler : association dune extension un gestionnaire Exemple : AddHandler cgi-script .cgi VC : httpd.conf / VDU : mime.conf ErrorDocument : spcie le document renvoyer si erreur Exemple : ErrorDocument 404 /doc_missing.html VC : httpd.conf / VDU : apache2.conf

INSA - ASI

TechnoWeb : Serveur Http Apache

15/28

Conguration des accs et oprations

(5/7)

Le contrle des oprations : conguration des rpertoires

Encapsulation de directives lies un rpertoire :


<D i r e c t o r y r p e r t o i r e > Options . . . AllowOverride . . . <L i m i t GET POST . . . > ... </ L i m i t > ... </ D i r e c t o r y >

Options : options du rpertoire


None/All ExecCGI FollowSymLinks/SymLinksIfOwnerMatch Indexes ...

AllowOverride : ce que le .htaccess peut outrepasser


All/None AuthConfig FileInfo Indexes Limit ...

sappliquent aux rpertoires du serveur et aux rpertoires utilisateurs.

INSA - ASI

TechnoWeb : Serveur Http Apache

16/28

Conguration des accs et oprations


Le contrle sur les mthodes daccs un rpertoire

(6/7)

Limitation de laccs dun rpertoire


<L i m i t GET POST . . . > ... </ L i m i t >

<Limit> est (souvent) associ avec les directives :


de type require :
require [group|user] nom1 , . . . , nomn require valid-user

AuthName : Information transmise lutilisateur AuthType : Basic|Digest AuthUserFile : chemin absolu vers le .htpasswd AuthGroupFile : chemin absolu vers le .htgroup

INSA - ASI

TechnoWeb : Serveur Http Apache

17/28

Conguration des accs et oprations


Le contrle de laccs certaines machines

(7/7)

Dans les <Directory> comme dans les <Limit>, il est possible de contrler laccs de certaines machines :
Deny from nom |nom partiel |IP |IP partiel idem Allow from ... Order Deny,Allow ou Order Allow,Deny

Exemple
<D i r e c t o r y / d o c r o o t > O r d e r Deny , A l l o w A l l o w from 1 9 2 . 1 Deny from a p a c h e . o r g . n e t </ D i r e c t o r y >

INSA - ASI

TechnoWeb : Serveur Http Apache

18/28

Rpertoires et authentication
.htaccess & AllowOverride

(1/4)

AllowOverride autorise la rednition de directives locales un rpertoire dans un chier .htaccess situ dans ce dernier : None : les chiers .htaccess sont ignors All : tout type de rednition est autoris dans le .htaccess AuthConfig : autorise lauthentication dutilisateurs FileInfo : autorise les directives lies aux types de documents Indexes : autorise lindexation des rpertoires Limit : autorise les directives de gestion daccs Options : autorise les directives se rapportant aux fonctionnalits des rpertoires

INSA - ASI

TechnoWeb : Serveur Http Apache

19/28

Rpertoires et authentication
Exemples de <Directory>

(2/4)

Dclaration dauthentication ncessaire


< D i r e c t o r y /home/ o f r a i s / p u b l i c _ h t m l / t e c h n o w e b > A u t h U s e r F i l e /home/ o f r a i s / l o g i n / . h t p a s s w d AuthGroupFile / dev / . groups AuthName " A c c e s R e s t r e i n t " AuthType B a s i c <L i m i t GET POST> r e q u i r e v a l i d u s e r </ L i m i t > </ D i r e c t o r y >

Dlgation au .htaccess avec AllowOverride


Exemple, dans userdir.conf de technoweb :
< D i r e c t o r y /home // p u b l i c _ h t m l > AllowOverride F i l e I n f o AuthConfig Limit Options MultiViews I n d e x e s SymLinksIfOwnerMatch I n c l u d e s N o E x e c </ D i r e c t o r y >

INSA - ASI

TechnoWeb : Serveur Http Apache

20/28

Rpertoires et authentication
Le chier .htaccess

(3/4)

Le chier .htaccess
AuthName TEXTE AuthType B a s i c A u t h U s e r F i l e <chemin a b s o l u >/. h t p a s s w d A u t h G r o u p F i l e <chemin a b s o l u >/. h t g r o u p <L i m i t GET POST> r e q u i r e g r o u p g r o u p e 1 . . . groupeN require user u t i l i s a t e u r 1 . . . utilisateurN </ L i m i t >

Remarque : la directive require valid-user accepte tout utilisateur dclar

INSA - ASI

TechnoWeb : Serveur Http Apache

21/28

Rpertoires et authentication
Utilisateur et mots de passe

(4/4)

Fichier .htgroup
groupe1 u t i l i s a t e u r 1 ... groupeN u t i l i s a t e u r 1 ... ... utilisateurN utilisateurN

Fichier .htpasswd
u t i l i s a t e u r 1 : mot de p a s s e c r y p t ... u t i l i s a t e u r N : mot de p a s s e c r y p t

chier cr laide de la commande htpasswd fourni avec Apache

Remarque
Attention : tous ces chiers doivent tre inaccessibles ! ! !

INSA - ASI

TechnoWeb : Serveur Http Apache

22/28

Serveurs virtuels

(1/3)

Principe des serveurs virtuels

Plusieurs serveurs web sur une mme machine Deux possibilits de serveurs virtuels bass sur les IP : une adresse IP pour chaque serveur virtuel bass sur les noms : mme adresse IP, mais nom pour chaque serveur virtuel

Pour VC : httpd-vhosts.conf Pour VDU : ports.conf et sites-enabled/000-default

Remarque
Host: dans len-tte Http est indispensable en cas de serveur virtuel

INSA - ASI

TechnoWeb : Serveur Http Apache

23/28

Serveurs virtuels
Directive

(2/3)

Serveurs virtuels bass sur les IPs

<VirtualHost nom|IP > ...</VirtualHost>

Exemples
<V i r t u a l H o s t 193.254.105.78 > ServerAdmin c a n a r i @ t i t i . f r DocumentRoot / t i t i / d o c u m e n t s S e r v e r N a m e www . t i t i . f r ErrorLog / t i t i / logs / error_log TransferLog / t i t i / logs / access_log </ V i r t u a l H o s t > <V i r t u a l H o s t 193.254.105.79 > S e r v e r A d m i n matou@grosm i n e t . f r DocumentRoot / g r o s m i n e t / d o c u m e n t s S e r v e r N a m e www . g r o s m i n e t . f r E r r o r L o g / g r o s m i n e t / l o g s / e r r o r _ l o g T r a n s f e r L o g / g r o s m i n e t / l o g s / a c c e s s _ l o g </ V i r t u a l H o s t >

Conguration des serveurs par ajout de directives internes. Chaque serveur virtuel doit connatre la fois son IP et son nom.

INSA - ASI

TechnoWeb : Serveur Http Apache

24/28

Serveurs virtuels
Directives

(3/3)

Serveurs virtuels bass sur les noms

NameVirtualHost IP[:Port] <VirtualHost nom|IP > ...</VirtualHost>

Exemple
NameVirtualHost 193.254.105.78 <V i r t u a l H o s t 193.254.105.78 > ServerAdmin c a n a r i @ t i t i . f r DocumentRoot / t i t i / d o c u m e n t s S e r v e r N a m e www . t i t i . f r ErrorLog / t i t i / logs / error_log TransferLog / t i t i / logs / access_log </ V i r t u a l H o s t > <V i r t u a l H o s t 193.254.105.78 > S e r v e r A d m i n matou@grosm i n e t . f r DocumentRoot / g r o s m i n e t / d o c u m e n t s S e r v e r N a m e www . g r o s m i n e t . f r E r r o r L o g / g r o s m i n e t / l o g s / e r r o r _ l o g T r a n s f e r L o g / g r o s m i n e t / l o g s / a c c e s s _ l o g </ V i r t u a l H o s t >

INSA - ASI

TechnoWeb : Serveur Http Apache

25/28

Optimisation et scurit
Droits sur la racine du serveur

(1/3)

Remarque
Les rpertoires bin, conf, logs sont des rpertoires trs sensibles Le propritaire du rpertoire du serveur et lutilisateur User doivent tre dirents Seul le propritaire du serveur peut modier les chiers (chmod 755) Il faut faire particulirement attention la conguration des SSI (Server Side Includes) et des CGI (Common Gateway Interface)

INSA - ASI

TechnoWeb : Serveur Http Apache

26/28

Optimisation et scurit
Scurisation des SSI et des CGI

(2/3)

Scurisation des SSI :


Extension des chiers SSI direntes des chiers HTML Dsactivation de la commande exec (IncludesNOEXEC)

Scurisation des CGI : Non ScriptAlias versus ScriptAlias CGI


Non ScriptAlias (faille de scurit importante)
appel de type http://<serveur>/~user/cgi-bin/script.cgi conance envers les utilisateurs aucun contrle sur les scripts des utilisateurs

ScriptAlias (solution la plus utilise)


appel de type http://<serveur>/cgi-bin/<user>/script.cgi conance envers les utilisateurs centralisation des scripts CGI contrle relativement ais

Problme : tous les CGI sexcutent sous le mme utilisateur


solution : congurer Apache en suexec (CGI et SSI sous des UID dirents de lutilisateur)

INSA - ASI

TechnoWeb : Serveur Http Apache

27/28

Optimisation et scurit

(3/3)

Protection des chiers de conguration et des chiers du serveur

Dispositifs de scurit minimums


Interdire lutilisation des .htaccess partir de la racine Interdire laccs la racine du serveur
<D i r e c t o r y /> A l l o w O v e r r i d e None O r d e r Deny , A l l o w Deny from a l l </ D i r e c t o r y >

INSA - ASI

TechnoWeb : Serveur Http Apache

28/28

Rfrences

http://www.apache.org : Apache software foundation http://doc.ubuntu-fr.org/apache2 : Documentation Ubuntu sur Apache Http http://apachetoday.com : site dinformations sur Apache Http http://www.jalix.org/ressources/reseaux/apache/_fiches_ httpd/HTTPD.PS : cours de Maurice Szmurlo http://www.php.net/ : site ociel PHP