Dans l'épisode précédent
2 Le réseau SERVEURS POSTE CLIENT POSTE CLIENT wifi SERVEURS POSTE CLIENT switch Borne Wifi SERVEURS routeur POSTE CLIENT? SERVEURS SERVEURS SERVEURS POSTE CLIENT SERVEURS
3 Les modèles en couches Modèle TCP/IP Modèle OSI Protocoles Applicatifs (Services) HTTP,FTP, DNS PROTOCOLES DE TRANSPORT (Routage et Adressage) IP Normes Matérielles Adresses MAC (Ethernet, Wifi, Adsl,..) Application Transport Internet Accès Réseau Application Présentation Session Transport Réseau Liaison Physique
4 Le Transport Comment associer une machine (identifiée par une adresse IP) et le protocole applicatif utilisé? Protocoles Applicatifs (Services) HTTP,FTP, DNS PROTOCOLES DE TRANSPORT (Routage et Adressage) IP Normes Matérielles Adresses MAC (Ethernet, Wifi, Adsl,..) C'est un des rôles des protocoles de TRANSPORT : UDP : Mode non connecté TCP : Mode Connecté On identifie chaque applicatif grâce à des n de ports. HTTP:80 FTP:21 SMTP:25 DNS:53.
UTILISATION DES PORTS CLIENT 172.16.2.2 SERVEUR 172.16.100.1 CLIENT 172.16.3.2 CLIENT 172.16.4.2 SERVEUR 172.16.0.1 Chaque Session est identifiée par le couple (ou Socket) : Adresse IP-N de Port
Entête Ethernet Entête IP Entête transport Message Applicatif Entête transport TCP Quelques Applicatifs utilisant de préférence TCP : FTP - Port 21 - Transfert de Fichiers SSH - Port 22 - Terminal Distant Sécurisé TELNET - Port 23 - Terminal Distant Non Sécurisé SMTP - Port 25 - Envoi des Messages POP - Port 110 - Réception des Messages HTTP - Port 80 - Transport des pages HTML NNTP - Port 119 - Serveur de Temps IMAP - Port 143 - Réception des Messages LDAP - Port 389 - Service d annuaire Réseau HTTPS - Port 443 - HTTP Sécurisé (Chiffré) FTPS - Port 990 - FTP Sécurisé (Chiffré) MYSQL - Port 3306 - Moteur de Bases de Données RDP - Port 3389 - Bureau à Distance Windows VNC - Port 5900 - Serveur de Contrôle à distance
Configuration IP d'une machine : Adresse IP Masque de Sous-Réseaux Adresse(s) de passerelle(s) Adresse(s) de Serveur(s) DNS Nom et Domaine DNS de la machine
Adresse IPv4 - Exemple Adresse IPv4 : 172.16. 0. 1 Masque : 255.255.0. 0 Cette adresse désigne la machine 0.1 sur le réseau 172.16.0.0 Elle ne peut communiquer directement qu avec une machine dont l adresse commence par 172.16 et utilisant le même masque de sous-réseau.
Classes d adresses IPv4 Les adresses IP sont rangées par Classe d adresses. La classe de l adresse permet de déterminer le masque par défaut. Class e Masque Premier Réseau Dernier Réseau Nb de Réseaux Nb de Postes par Réseau A 255.0.0.0 1.0.0.0 126.0.0.0 126 16 777 214 B 255.255.0.0 128.0.0.0 191.254.0.0 16383 65534 C 255.255.255. 0 192.0.0.0 223.254.254. 0 2 097151 254
Adresses Privées / Publiques Afin de différencier les réseaux privés du réseau Internet, on distingue deux catégories d adresses : Les adresses publiques (visibles sur Internet) Les adresses privées (non routées sur Internet) Préfixe Plage IP Nombre d'adresses 10.0.0.0/8 172.16.0.0/16 192.168.0.0/24 10.0.0.0 10.255.255.255 172.16.0.0 172.31.255.255 192.168.0.0 192.168.255.255 16 777 216 1 048 576 65 536
Impossible d afficher l image. DNS : Domain Name System Racine Domaines Premier Niveau arpa fr edu org com zw Domaines Second Niveau novell univ-reims linux Domaines Troisième Niveau support iut-troyes Domaines quatrième Niveau ftp src www Nom de domaine pleinement qualifié src.iut-troyes.univ-reims.f r.
Le protocole http Mise en Œuvre du Serveur Web Apache
HTTP : Historique Inventé par Tim Berners-Lee Première Version publique en 1990 : http/0.9 Premier Navigateur Web MOSAIC en 1993 sous X-Windows 1994 : Netscape Navigator 1995 : Internet Explorer Première Version standardisée par l'ietf en 1996 : http/1.0 (RFC 1945) Version actuelle finalisée en 1999 : http/1.1 (RFC 1068, RFC 2616) 2004 : Mozilla Firefox 2008 : Google Chrome
HTTP: Communication Client/Serveur Le client et le serveur communique sur le port TCP 80 Envoi des en-têtes http Localisation du fichier Requête http Client Envoi des en-têtes http de réponse Réponse http Serveur Web Stockage des fichiers Création des en-têtes Formatqge des données
HTTP : requêtes / réponses L URL saisie dans la barre d adresse du navigateur : http://www.dom99.net/demo.html Par défaut HTTP utilise le port TCP 80 Exemple de requête émise par le client (le navigateur, ici IE8 sous Windows Seven) : GET /demo.html HTTP/1.0 Host: www.dom99.net Referer: http://www.dom99.net User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1) Exemple de réponse émise par le serveur (ici Apache ) HTTP/1.0 200 OK Date: Fri, 31 Jan 2014 08:30:00 GMT Server: Apache/2.2.3(Debian) Content-Type: text/html Content_Lenght: 59 Expires: Sat, 31 Jan 2014 08:30:00 GMT Last-Modified: Fri, 09 Aug 2013 14:25:21 GMT
HTTP : Méthodes Les plus utilisées dans la pratique : GET : récupération du contenu du document (passage d'arguments dans l'url) POST : envoi de données au serveur (données traitées coté serveur) HEAD : récupération des entêtes de la réponse uniquement Il en existe d'autres : PUT, DELETE, CONNECT
HTTP: En-têtes coté client (requête) Extrait de la RFC 2616 Host : Nom de l hôte virtuel interrogé Referer : Site de provenance de la requête (provenance des visiteurs) User-Agent : Navigateur qui effectue la requête Accept : Types de fichiers acceptés en réponse Accept-Language : Langue souhaitée en réponse Authorization : Informations d authentification Connection : Gestion des connexions persistantes en http/1.1
HTTP: En-têtes coté serveur (réponse) Extrait de la RFC 2616 Date : Date de génération de la réponse Server : Nom et Version du logiciel serveur qui a répondu Content-Type : Format de la donnée retournée (text/html) Content-Length : Taille totale des données retournées Expires : Date d expiration du fichier Last-Modified : Date de dernière modification du fichier
HTTP : Les codes réponses Les plus courants : 200 : OK 301 : Document déplacé de manière permanente 307 : Déplacement temporaire 401 : Unauthorized (Forbidden) Ressource protégée 404 : Not Found Document non trouvé 405 : Méthode (GET,POST ou HEAD) incorrecte 500 : Internal Server Error Le serveur rencontre un problème interne 503 : Service Unavailable Le server est temporairement indisponible
La fondation Apache Apache Software Foundation : www.apache.org Organisation à but non lucratif Fondée en 1999 (le serveur HTTP a été créé en 1995) Supporte aujourd hui plus de 100 projets dont : Apache HTTP Server Apache Directory (annuaire LDAP) OpenOffice.org (depuis 2011) SpamAssassin Subversion (Logiciel de gestion de versions) Tomcat (Serveur Web écrit en Java) Tous les développeurs et administrateurs sont bénévoles. Les logiciels sont protégés par le licence Apache compatible GNU GPL v3.
Le projet Apache HTTP Server Créé en 1995 pour améliorer le serveur HTTP du NCSA (Mosaïc) 8 développeurs forment : The Apache Group En 1999, la fondation Apache est formée pour mieux gérer le projet. Depuis 1996, Apache HTTP Server est le serveur web le plus populaire. En 2012, il dessert plus de 60% des sites webs. Ses principaux concurrents : Microsoft IIS (15%), Nginx (16%) Evolution des Versions : 1995 : Version 1.0 1999 : Version 1.3 2002 : Version 2.0 2005 : Version 2.2 2012 : Version 2.4
Apache HTTP Server Structure modulaire Toutes les fonctionnalités de base ou complémentaires sont développées sous forme de modules. Quelques exemples : Les hôtes virtuels (module core). Un seul serveur Apache peut desservir de nombreux sites différents. Chiffrement (module mod_ssl). Support du protocole sécurisé HTTPS (port 443) Authentification. De nombreux modules proposent des fonctionnalités en termes d authentification des utilisateurs. Alias et Redirection De nombreuses approches permettent de choisir les pages à afficher en fonction de leurs emplacements (mod_alias) ou en fonction de l URL (mod_rewrite) Apache peut être utilisé comme Proxy (mod_proxy) ou Reverse Proxy. Il permet aussi de faire de la répartition de charges. WedDAV (mod_dav). Le protocole WebDAV permet d implémenter des méthodes http supplémentaires. Journalisation. Apache peut enregistrer des journaux (logs) afin de tracer d éventuels problèmes mais aussi les requêtes faites par les clients. Sécurité. Il est possible de mettre en œuvre des processus de filtrage de requêtes afin d empêcher certains types d attaques comme le Cross-Site Scripting ou les injections SQL.
Apache HTTP Server Installation Apache est fourni sous forme de paquets dans la majorité des distributions. Par exemple sous Debian, l installation de base se limite à un simple : apt-get install apache2 Un choix peut tout de même être fait lors de l installation, celui du MPM (Multi-Processing Modules) gérant la manière dont les connexions au serveur sont gérées. Par défaut le MPM Worker est installé, mais d autres choix sont proposés : mpm-prefork mpm-event mpm-itk
Apache HTTP Server mpm-worker Module installé par défaut avec Apache2. Il utilise les «threads» qui partagent tous le même espace mémoire. La configuration de base : StartServers : Nombre de processus à lancer au démarrage (défaut : 3) ServerLimit : Nombre de processus maximum pouvant être lancés. ThreadsPerChild: Nombre de threads créés au sein de chaque processus. ThreadsLimit: Nombre de threads maximum par processus. MaxClients: Nombre total de requêtes traitées simultanément. MaxRequestsPerChild: Nombre de requêtes traitées par un processus.
Apache HTTP Server mpm-prefork Mode de fonctionnement d Apache 1.3 Les connexions sont traitées par des «forks». Les processus et leurs espaces mémoires sont complétement isolés les uns des autres. La configuration de base : StartServers : Nombre de processus à lancer au démarrage (défaut : 5) MaxClients: Nombre total de requêtes traitées simultanément. ServerLimit : Nombre de processus maximum pouvant être lancés. MinSpareServers: Nombre minimum de processus en attente de requêtes. MaxSpareServes: Nombre maximum de processus en attente de requêtes. MaxRequestsPerChild: Nombre maximal de requêtes traitées par processus.
Apache HTTP Server Configuration Dossier /etc/apache2 Fichier de configuration principal: apache2,conf (Il appelle les autres fichiers de configuration avec l instruction : Include) Les autres fichiers sont répartis dans différents sous-dossiers : httpd.conf : compatibilité vers apache 1.3 ports.conf : ports TCP en écoute (80 pour http, 443 pour https) conf.d: Eléments de configuration complémentaires (alias par exemple) mods-enabled : Modules activés (liens symboliques vers mods-availables) sites-enabled: Liens vers les fichiers de configuration des sites actifs
Apache HTTP Server Les modules Les modules disponibles et installés sont dans /etc/apache2/mods-available. Chaque module est composé de deux fichiers :.load qui regroupent les directives de chargement du module.conf qui contient la configuration du module Lorsqu un module est activé, des liens symboliques vers les deux fichiers sont créés dans le dossier /etc/apache2/mods-enabled Pour activer un module : a2enmod NomDuModule Pour désactiver un module : a2dismod NomDuModule
Apache HTTP Server Les sites La configuration de chacun des sites gérés sur le serveur est stockée dans : /etc/apache2/sites-available. Lorsqu un site est actif, un lien symbolique vers son fichier de configuration est créé dans /etc/apache2/sites-enabled Pour activer un site : a2ensite NomDuSite Pour désactiver un site : a2dissite NomDuSite Lors de l installation le site default est créé. Il indique notamment que les pages web de ce site doivent être enregistrées dans le dossier /var/www La page index.html de ce site affiche simplement : it works!!!
Apache HTTP Server Résumé de l'arborescence apache.conf httpd.conf ports.conf conf.d phpmyadmin.conf sites-available default /etc/apache2 sites-enabled Lien vers default mods-available mod_php5 mods-enabled Liens vers mod_php5 /var/www Index.html.
Les hôtes virtuels Permettent de gérer plusieurs sites web avec des noms de domaines différents sur un seul serveur Apache (avec une ou plusieurs IP) Les noms de domaine doivent au préalable avoir été correctement déclarés sur les serveurs DNS. La valeur de host placée dans l'en-tête de la requête http permet à Apache de déterminer les fichiers à utiliser pour la réponse. Chaque hôte virtuel doit être décrit dans un fichier de configuration séparé. Ce fichier doit être dans /etc/apache2/sites-available Les sites sont ensuite activés avec la commande a2ensite
Les hôtes virtuels Configuration Exemple de fichier de configuration : <VirtualHost *:80> ServerName www.dom99.net ServerAlias dom99.net DocumentRoot /var/www/dom99 DirectoryIndex index.php [ ] </virtualhost> nom attendu dans l'url alias du nom (CNAME) Emplacement des pages web Page web par défaut du site Remarque : pour les hôtes virtuels soit pris en compte la Directive NameVirtualHost doit être définie dans le fichier ports.conf
Configuration d'un site Contextes Chaque paramètre (ou Directive) peut être défini dans un ou plusieurs contextes: Le contexte global (tout le serveur). Exemple : NameVirtualHost dans le fichier ports.conf Le contexte de l'hôte virtuel. Exemple : DocumentRoot entre les balises <VirtualHost> </VirtualHost> Le contexte d'un répertoire. Il suffit de placer les Directives entre des balises <Directory> Les fichiers.htaccess permettent aussi de définir des contextes. Les Directives de ces fichiers ne sont actifs que dans les dossiers (et sous-dossiers) où ils sont placés.
Configuration d'un site Directives DocumentRoot : Le répertoire de stockage des pages DirectoryIndex : La page par défaut du site Options : None : aucune options d'activées dans le contexte All : toutes les options sauf MultiViews FollowSymLinks : permet au serveur de suivre les liens symboliques Indexes : permet d'afficher le contenu d'un répertoire si aucune page index ne s'y trouve. Active le mécanisme de multivues (Négociation http 1.1) ExecCGI autoris l'exécution de scripts CGI Order, Allow, Deny : Autorisations d'accès Exemple : Order allow, deny Allow from 192.168.99.3 Deny from all Alias : Permet de faire pointer une adresse Web vers un autre dossier Exemple : Alias /phpmyadmin /usr/share/phpmyadmin
Références Les guides de Linux magazine H.S n 66 APACHE Le site www.apache.org