Vous êtes sur la page 1sur 40

Le serveur web APACHE

Pourquoi Apache est-il devenu un standard ?


 Coût nul
 Peu gourmand en ressources matérielles
 Code source disponible et modifiable permet un développement
rapide du serveur, la création de modules spécifiques et une
très grande réactivité dans la correction de tout bogue identifié.
 Très grande flexibilité du serveur grâce à sa structure
modulaire l'ajout d'un nouveau module permet d'ajouter de
nouvelles fonctionnalités.
 C'est le standard comme serveur Web sous linux, mais aussi le
serveur Web le plus utilisé sur Internet avec plus de 60% des sites
d'Internet (contre environ 20% pour IIS).
Gestion d’Apache
 Un serveur web attend des instructions sur le port HTTP
(port tcp 80).
 Le serveur web APACHE est configuré pour fonctionner en
permanence et non pas pour être démarré à la demande par
l’intermédiaire du programme XINETD.
 httpd est le démon qui implémente le serveur web Apache.
 Lancement / arrêt d’apache

# service  httpd  start|stop|restart|status

 Il existe également un outil nommé apachectl qui propose de


lancer et d’arrêter le serveur plus facilement ainsi que de le
redémarrer.
Gestion d’Apache : apachectl
 Principales options de la commande apachectl
 stop : arrête httpd
 restart : relance httpd en envoyant un signal SIGHUP
 fullstatus : permet d’obtenir le descriptif de l’état du serveur
 status : permet de vérifier l’état du serveur
 graceful : effectue un redémarrage complet en envoyant un signal
SIGUSR1
 configtest : effectue un test de la syntaxe de configuration
 help : fournit une aide sur les options
Configuration  d’Apache
 Le fichier de configuration du service Apache se nomme
httpd.conf et est placé dans le répertoire /etc/httpd/conf.
 Le fichier de configuration httpd.conf est structuré en directives
 Principales directives
 ServerType : indique si apache se lance en 'autonome' (standalone) ou via
inetd. ServerType Standalone

 ServerRoot : définit le répertoire de configuration du serveur. Les


chemins d'accès relatifs pour d'autres fichiers de configuration seront
considérés relativement à ce répertoire. ServerRoot /etc/httpd

 Timeout : Duré d’attente en secondes avant que le serveur ne retourne une


erreur. Timeout 120

 Listen : définit le port réseau que le serveur écoute. Listen 80


Configuration  d’Apache
 Principales directives
 DocumentRoot : définit l’emplacement par défaut des pages html. Le
serveur ajoute le chemin relatif mentionné dans l'URL présentée à cette
racine pour établir le chemin complet jusqu'au document.
DocumentRoot /var/www/html

 DirectoryIndex : Définit l’ordre de recherche de la page par défaut à


afficher. DirectoryIndex index.htm index.html index.php index.php4

 MaxClients : Contrôle le nombre maximum de serveurs pouvant etre lancés


simultanément. MaxClients 150

 StartServers : définit le nombre de serveurs à démarrer au lancement


d'apache. StartServers 5
Mise en correspondance des URLs : Répertoires des utilisateurs

 Pour des raisons de sécurité, il est déconseillé de permettre un


accès direct à un répertoire home d'utilisateur depuis le web.
 La directive UserDir spécifie un répertoire où sont situés les
fichiers accessibles depuis le web dans le répertoire home de
l'utilisateur.
 Avec la configuration par défaut : Userdir public_html

l'URL http://www.exemple.com/~student sera dirigé vers


/home/student/public_html/index.html.
 Pour permettre à seulement certains usagers d’avoir UserDir :
UserDir disabled

UserDir enabled user1 user2 user3


Mise en correspondance des URLs : Les alias

 Il existe de nombreuses circonstances pour lesquelles il est nécessaire


d'autoriser l'accès web à des portions du système de fichiers qui ne se
trouvent pas dans l'arborescence DocumentRoot.
 la directive Alias permet de rattacher toute portion du système de
fichiers à l'arborescence du site web.
 La directive Alias permet de créer un raccourci entre l’arborescence
logique du site Web et un chemin du système de fichiers.
 Exemple : Alias /docs /var/web

 L’URL http://www.example.com/docs/dir/file.html correspondra au


fichier /var/web/dir/file.html.
Mise en correspondance des URLs : Redirection d'URL
 Les directives de configuration décrites dans les sections précédentes
demandent à Apache d'extraire un contenu depuis un emplacement
spécifique du système de fichiers et de la retourner au client.
 la directive Redirect informe le client que le contenu demandé est
localisé à une URL différente, et demande au client d'élaborer une
nouvelle requête avec la nouvelle URL.
 Exemple : Redirect /foo/ http://www.example.com/bar/

 Ceci aura pour effet de rediriger tout chemin d'URL commençant par /foo/ vers
le même chemin d'URL sur le serveur www.example.com en remplaçant /foo/
par /bar/.

 Vous pouvez rediriger les clients non seulement sur le serveur d'origine, mais
aussi vers n'importe quel autre serveur.
Les hôtes virtuels
 Le mécanisme des sites virtuels permet à un serveur Web
d’héberger de multiples sites.
 Les fournisseurs d’accès ont souvent recours à cette technique, car
ils ne souhaitent pas gérer une machine différente pour
chacun des domaines.
 Apache distingue deux types d’hôtes virtuels :
 Ceux qui se basent sur l’adresse IP : cette méthode nécessite une adresse IP
différente pour chaque site.
 Ceux qui reposent sur le nom DNS du serveur web : cette méthode n’emploie
qu’une adresse IP et différencie les sites par le nom d’hôte communiqué par le
client HTTP.
 La rareté des adresses IPv4 fait en général privilégier cette deuxième
méthode.
Hôtes virtuels basés sur adresses ip
 le serveur doit disposer de différentes adresses IP pour chaque serveur
virtuel.
 Il faut ensuite modifier le fichier httpd.conf afin d’y ajouter une
section VirtualHost pour chacun des serveurs à créer contenant, au
minimum, une directive DocumentRoot.
<VirtualHost 192.168.100.10:80 > <VirtualHost 192.168.100.120:80>

DocumentRoot /home/exemple1 DocumentRoot /home/exemple2

</VirtualHost> </VirtualHost>

 Le serveur doit pouvoir résoudre les noms de domaine, il faut les rajouter
dans le DNS ou bien dans /etc/hosts.

192.168.100.10 www.exemple1.ca

192.168.100.20 www.exemple2.ca
Hôtes virtuels nommés
 Avec un hébergement virtuel par nom, le serveur s'appuit sur les
informations transmises par le client dans les en-têtes HTTP de ses
requêtes.
 Pour utiliser des serveurs virtuels par nom, vous devez désigner l'adresse
IP (et si possible le port) sur le serveur devant accepter les requêtes pour
des domaines. Cette configuration utilise la directive NameVirtualHost.

NameVirtualHost 192.168.100.20

 Il faut ensuite modifier le fichier httpd.conf (ou apache2.conf) afin d’y


ajouter une section VirtualHost pour chacun des serveurs à créer
contenant, au minimum, une directive ServerName pour désigner le
serveur concerné et une directive DocumentRoot pour préciser
l'emplacement sur le système de fichiers du contenu de ce serveur.
Hôtes virtuels nommés
 Par exemple, supposez que vous hébergez le domaine www.domain.com
et que vous souhaitez ajouter le serveur virtuel www.otherdomain.com
qui pointe sur la même adresse IP. Il vous suffit d'ajouter la configuration
suivante à httpd.conf 
NameVirtualHost 192.168.100.20
<VirtualHost 192.168.100.20 >
ServerName www.domain.com
DocumentRoot /www/domain
</VirtualHost>
<VirtualHost 192.168.100.20 >
ServerName www.otherdomain.com
DocumentRoot /www/otherdomain
</VirtualHost>

 Pour que cela fonctionne, il faut bien sur qu'un serveur DNS soit configuré
pour faire pointer www.domain.com et www.otherdomain.com sur l'IP
192.168.100.20.
Protection par .htaccess
 Le principe consiste à créer dans le répertoire à protéger un fichier nommé
.htaccess (commençant par un point donc caché) et qui va en limiter les
droits d'accès.
 Le fichier .htaccess va renvoyer vers un fichier contenant les logins et mots
de passe des utilisateurs autorisés.
 Ce fichier doit être hors de portée des visiteurs, en clair ne doit pas faire
partie de l'arborescence /var/www/html/...
 A noter que le fichier .htaccess peut être nommé différemment en utilisant la
directive AccessFileName
 Par défaut, l’utilisation des fichiers .htaccess est désactivée. Il faudrait donc
l’activer pour le répertoire à protéger .
<Directory "/var/www/html/secret">
#AllowOverride None
AllowOverride AuthConfig
</Directory>
Protection par .htaccess
 Création de .htaccess

AuthUserFile /etc/httpd/auth/test.users (1)

AuthName ``Accès restreint'‘ (2)

AuthType Basic (3)

require valid−user (4)

 AuthUserFile : précise le répertoire dans lequel se trouve le fichier contenant


les paires login/mot de passe des visiteurs autorisés.
 AuthName : précise le message qui sera affiché dans la boite de dialogue
 AuthType :détermine le type d’authentification utilisé, dans notre cas
l’authentification HTTP standard.
 Require : signifie littéralement qu’un utilisateur valide est requis.
Protection par .htaccess
 Création du fichier des autorisations d'accès :
 Le fichier d'autorisation se crée (et s'entretient) avec la commande htpasswd
 Pour la création (avec un premier utilisateur salim) :
htpasswd −c /etc/ httpd/auth/test.users salim

 Pour l'ajout d'un utilisateur supplémentaire:


htpasswd /etc/ httpd/auth/test.users ahmed

 Pour supprimer un utilisateur le plus simple est de supprimer la ligne


correspondante dans le fichier d'autorisation !

 Avantage : la nouvelle configuration entre en action immédiatement sans qu'il


soit nécessaire de relancer le serveur Apache pour recharger la nouvelle
configuration.
Serveur Proxy

Un serveur proxy est chargé d’effectuer une requête au nom d’un client vers un
 autre serveur pour un protocole donné.  Le  terme  français  pour  proxy  est
d’ailleurs « mandataire»,  le  serveur étant mandaté pour effectuer  une
action au nom du client.  On dit  qu’un serveur proxy travaille  en rupture de
flux.  La plupart des proxys travaillent avec le protocole HTTP,
et si on parle de proxy sans préciser le protocole applicatif,
il s’agit d’un proxy web (HTTP). 
Mandataire (proxy)

Réseau sans proxy


réseau local

internet
clients

serveur routeur

18
Mandataire (proxy)
Réseau avec proxy

réseau local

internet
clients

serveur routeur

mandataire

19
Mandataire (proxy)
Réseau avec proxy

On doit forcer le passage par le mandataire…


réseau local

internet
clients

serveur routeur

mandataire

...ce qui le rend obligatoire


20
Mandataire (proxy)
Réseau avec proxy

réseau local

internet
clients

serveur routeur

mandataire

Mais pourquoi faire ?


21
Un proxy, pourquoi faire ?

 Pour cacher les requêtes des clients


 diminution du trafic
 accès à des serveurs indisponibles
 Pour surveiller le trafic
 statistiques d’utilisation des ressources
 Pour filtrer les requêtes
 sur différents critères
 partiel ou total
 Pour passer un firewall

22
Fonctionnement d’un proxy

• Le client
– se connecte sur un port du proxy

client serveur
mandataire
Port 3128 HTTP

• Le proxy
– filtre la requête
– effectue la requête à la place du client

 mémorise le résultat de la requête *


– renvoie le résultat de la requête au client

23
Le proxy de référence : Squid

 Caractéristiques
 Multi-plateformes (Unix, Windows, …)
 Libre (GPL)
 Paramétrable
 Performant (cache DNS, garbage collector)
 Évolutif
 Fonctionnalités
 mandataire
 cachant
 filtrant (squidGuard)
 http://www.squid-cache.org

24
Un cache, c’est quoi ?

Cache

Proxy avec
cache client
internet

serveur routeur
mémorisation
(base de données)

 Mémorisation des réponses des serveurs


 Gestion des dates de validité des requêtes

25
Cache : avantages/inconvénients

 Avantages
 clients servis plus rapidement
 réduction du trafic sortant
 accès à des serveurs indisponibles
 masquage des adresses IP

 Inconvénients
 de plus en plus inutile (pages dynamiques)

26
Pourquoi filtrer ?

 Pour améliorer la bande passante

 Pour rationaliser l’utilisation des ressources

 C’est une décision politique (interdire l’accès à certains sites,


interdire l’usage d’un service, …)

27
Critères de filtrage

 L’origine de la requête
 selon le client
 La destination de la requête
 selon le serveur
 Le type de requête
 selon le port, la méthode
 Le contenu
 analyse de mots-clés
 Le temps
 selon l’heure (créneaux différenciés)

28
 configurer un serveur proxy squid
 installation

# apt-get install squid3

 Configuration de base

Squid  est  composé  d’un  service  dont  le  script  de  lancement 
normalisé trouve  sa  configuration  dans  un 
fichier unique squid.conf, généralement situé dans /etc/squid. 
 configurer un serveur proxy squid
 Configuration de base Extrait du fichier /etc/squid/squid.conf

# grep ˆ[ˆ#] /etc/squid/squid.conf 

acl all src all  


acl manager proto cache_object  
acl localhost src 127.0.0.1/32  
acl to_localhost dst 127.0.0.0/8  
acl localnet src 10.0.0.0/8  # RFC1918 possible internal network  acl localnet src 172.16.0.0/12   #
RFC1918 possible internal network  acl localnet src 192.168.0.0/16  # SSL_ports port 873    # rsync  acl
Safe_ports port 80    # http  acl Safe_ports port 21    # ftp  
acl Safe_ports port 443        
acl Safe_ports port 591        
acl CONNECT method CONNECT  
http_access allow manager localhost  http_access deny manager  
http_access allow purge localhost  http_access deny purge  
http_access deny !Safe_ports  
http_access deny CONNECT !SSL_ports  http_access allow localhost  
http_access deny all  
icp_access allow localnet  
icp_access deny all  
http_port 3128  

grep ˆ[ˆ#] : affiche et enlève les commentaires qui se trouvent en début des lignes
 configurer un serveur proxy squid
 Configuration de base

Sans configuration particulière, un serveur proxy squid fait naturellement office de
serveur de cache, et protège les  réseaux  locaux  par  une  rupture  de  flux  (les
requêtes  des  navigateurs  ne  vont  pas  sur  Internet, 
mais s’arrêtent au proxy qui va consulter les serveurs en leur lieu et place). 
 configurer un serveur proxy squid
 Configuration de base
Minimum de configuration

http_port numero_port  
cache_dir ufs repertoire taille rep_niveau_1 rep_niveau_2
visible_hostname nom_serveur
 configurer un serveur proxy squid
  Gestion des accès clients
Il s’agit de préciser qui peut ou ne peut pas accéder à Internet par
l’intermédiaire du serveur proxy. 
La première étape est de définir (dans squid.conf) des hôtes ou ensembles d’hôtes
(groupes, réseaux) auquel on appliquera une autorisation.
Ces groupes sont créés sous le nom d’ACL (Access Control List). 
Définition de listes de contrôle d’accès dans le fichier squid.conf 
La syntaxe :

acl nom_liste type_acl A.B.C.D/M


 configurer un serveur proxy squid
  Gestion des accès clients

Exemple :

acl all src all  


acl reseau_local src 192.168.1.0/24  
acl serveurs_interdits dst 172.11.5.2-172.11.5.5/24
 configurer un serveur proxy squid
  Gestion des accès clients

Deuxième étape : applique la règle (interdire ou autoriser) 

http_access autorisation nom_acl


  Gestion des accès clients

Deuxième étape : applique la règle (interdire ou autoriser) 

Exemple :

acl all src all  


acl reseau_local src 192.168.1.0/24  
acl serveurs_interdits dst 172.11.5.2-172.11.5.5/24

http_access deny serveurs_interdits 


http_access allow reseu_local 
http_access deny all
Coté client

Utiliser un proxy nécessite normalement de configurer les clients de manière à


ce qu'il interroge toujours le proxy, quelle que soit la cible.
Les utilisateurs ont donc généralement la main sur ce paramétrage, et pourront
probablement passer outre le proxy, s'ils le décident, contournant par le fait
toutes les règles du proxy. réseau local

internet clients

serveur routeur

proxy
Coté client

Il existe deux téchniques pour éviter ce problème :

utiliser un firewall pour bloquer les postes clients l'accès direct à


l'Internet par les ports http et https (80, 443, 563…). De cette manière, les
utilisateurs n'auront d'autre possibilité que de passer par le proxy (sauf pour
des serveurs qui utiliseraient un autre port).
Coté client

Deuxième téchnique (proxy transparent):

Rediriger les requêtes sur le port 80 vers le port proxy (3128 par défaut
pour squid), cela se fait sans problèmes sur le routeur NAT avec IPtables,
Configurer correctement squid pour qu'il interprète convenablement les
requêtes HTTP qu'il reçoit.
Coté client
 Configuer internet explorer

Serveur proxy : 192.168.10.90


Port : 3128

Vous aimerez peut-être aussi