Apache
Transcription
Apache
Apache Page 1 sur 5 Apache Pacôme Massol Néotech III Cité scolaire du Butor, Sainte-Clotilde Copyright © 2003 Néotech III La reproduction exacte et la distribution intégrale de ce document sont permises sur n'importe quel support d'archivage, pourvu que cette notice soit préservée. Historique des versions Version 0.10 27 octobre 2003 PM 30 octobre 2003 PM 6 novembre 2003 PM Création du document. Version 0.11 Ajout d'un lien vers la version PDF. Version 0.15 Diverses modifications et corrections de coquilles. Développement de la partie SSL. 1. Introduction 2. Installation 3. Configuration 3.1. Le fichier de configuration 3.2. Les sites perso 3.3. Protéger l'accès à un répertoire 3.4. Les serveurs virtuels 3.5. Le serveur https 4. Surveillance 5. Exercices 6. Lectures conseillées Résumé Dans ce chapitre, nous allons présenter l'installation du serveur Web Apache. Pour me joindre : <[email protected]> Ce fichier existe également au format PDF. 1. Introduction Apache, le serveur Web le plus répandu, met en oeuvre le protocole HTTP (Hyper Text Transfer Protocol). Le port TCP standard est le port 80. Tout comme les autres protocoles abordés jusqu'ici, c'est un protocole ASCII. Il n'offre donc aucune sécurité, toutes les informations circulant en clair. Heureusement, Apache met également en oeuvre le protocole HTTPS (HTTP+SSL) sur le port TCP 443 afin d'authentifier le client et/ou le serveur et de chiffrer l'échange de données. 2. Installation 06/11/2003 Apache Page 2 sur 5 Plusieurs paquetages composent Apache : # dpkg -l apache* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii apache 1.3.26-0woody3 Versatile, high-performance HTTP server ii apache-common 1.3.26-0woody1 Support files for all Apache webservers un apache-doc <none> (no description available) un apache-modules <none> (no description available) pn apache-perl <none> (no description available) un apache-ssl <none> (no description available) Nous installerons les paquetages apache, apache-common, apache-module, apache-ssl et apachedoc. L'installation des paquetages apache et apache-ssl se termine par l'exécution d'un script de configuration. Ces scripts sont accessibles à tout moment par l'exécution des commandes apacheconfig et apache-sslconfig. Pour vérifier l'accessibilité de votre serveur, vous pouvez immédiatement vous connecter avec votre navigateur via http et https au serveur. Une page d'accueil doit s'afficher. Il faut considérer apache et apache-ssl comme deux serveurs distincts avec leurs propres fichiers de configuration. 3. Configuration 3.1. Le fichier de configuration Le principal fichier de configuration d'Apache (ou d'Apache-ssl) se trouve dans /etc/apache/httpd.conf (ou /etc/apache-ssl/httpd.conf). Ce fichier est architecturé en quatre grandes sections : Tableau 1. Sections de httpd.conf 1. Environnement global du serveur 2. Serveur principal 3. Serveurs virtuels 4. SSL (uniquement pour apache-ssl) Parmi les nombreuses directives de ce fichier, on peut citer : Tableau 2. Principales directives de httpd.conf ServerSignature Désactiver ou activer l'affichage d'informations sur le serveur Web ServerAdmin Email du Webmaster ServerRoot Emplacement des fichiers de configuration DocumentRoot Emplacement du site Web par défaut À chaque modification, on peut tester la syntaxe du fichier : # apache -t (ou apache-ssl -t) Syntax OK 06/11/2003 Apache Page 3 sur 5 Ensuite, on relance le serveur : # apachectl restart (ou apache-sslctl restart) /usr/sbin/apachectl restart: httpd restarted 3.2. Les sites perso Pour que les utilisateurs du système puissent posséder leur site personnel dans leur compte, ils doivent simplement disposer d'un répertoire public_html dans leur répertoire personnel avec les droits adéquats : util1@srv001:/$ util1@srv001:/$ util1@srv001:/$ drwxr-xr-x 2 cd mkdir public_html ls -ld public_html util1 users 4096 Oct 22 23:30 public_html/ Le site est maintenant accessible via : http://srv001.domaine.com/~util1 (adaptez l'URL en conséquence). 3.3. Protéger l'accès à un répertoire Il faut créer dans le répertoire que l'on veut protéger un fichier .htaccess contenant : AuthUserFile /etc/apache/.htpasswd AuthName domaine.com AuthType Basic Require valid-user # à adapter Il faut ensuite créer un utilisateur et un mot de passe dans un fichier : # htpasswd -c -m /etc/apache/.htpasswd util1 New password: Re-type new password: Adding password for user util1 Enfin, éditez le fichier /etc/apache/httpd.conf et recherchez le texte suivant : <Directory "/var/www/html"> # # This may also be "None", "All", or any combination of "Indexes", # "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # Options Indexes FollowSymLinks # # This controls which options the .htaccess files in directories can # override. Can also be "All", or any combination of "Options", "FileInfo", # "AuthConfig", and "Limit" # AllowOverride None Remplacez AllowOverride None par AllowOverride AuthConfig et relancez httpd. Maintenant, lorsque vous tentez de rentrer dans le répertoire protégé avec votre navigateur, une boîte de dialogue vous demande un nom d'utilisateur et un mot de passe. 3.4. Les serveurs virtuels Apache peut héberger plusieurs sites Web de différents domaines internet. A la fin du fichier /etc/apache/httpd.conf, vous trouverez un squelette de déclaration : ### Section 3: Virtual Hosts # # VirtualHost: If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. 06/11/2003 Apache Page 4 sur 5 # # # # Please see the documentation at <URL:http://www.apache.org/docs/vhosts/> for further details before you try to setup virtual hosts. You may use the command line option '-S' to verify your virtual host configuration. # # If you want to use name-based virtual hosts you need to define at # least one IP address (and port number) for them. # #NameVirtualHost 12.34.56.78:80 #NameVirtualHost 12.34.56.78 # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # #<VirtualHost ip.address.of.host.some_domain.com> # ServerAdmin [email protected]_domain.com # DocumentRoot /www/docs/host.some_domain.com # ServerName host.some_domain.com # ErrorLog logs/host.some_domain.com-error.log # CustomLog logs/host.some_domain.com-access.log common #</VirtualHost> Supposons que nous hébergions un site foo.com avec une adresse IP 36.14.9.74 : NameVirtualHost 36.14.9.74 <VirtualHost 36.14.9.74> ServerAdmin [email protected] DocumentRoot /var/www/foo.com ServerName www.foo.com ErrorLog logs/foo.com-error.log CustomLog logs/host.foo.com-access.log common </VirtualHost> Le répertoire /var/www/foo.com contiendra les fichiers du site. 3.5. Le serveur https Lors de l'installation de apache-ssl, celui-ci a créé un couple de clés publique et privée qui seront utilisées par le serveur pour chiffrer les données échangées avec le client. Lorsque le client tente de se connecter au serveur, un certificat est envoyé : Figure 1. Téléchargement du certificat par le client Ce certificat est stocké dans /etc/apache-ssl/apache.pem et peut être regénéré par la commande sslcertificate --force. 06/11/2003 Apache Page 5 sur 5 4. Surveillance Il faut surveiller les fichiers /var/log/apache/access.log et /var/log/apache/error.log. 5. Exercices 1. Installez les paquetages mentionnés au début. 2. Modifiez la configuration d'Apache afin que celui-ci n'affiche plus sa signature et indique l'email de l'administrateur (root@...). 3. Activez les sites web perso. 4. Créez à la racine du site web principal un dossier nommé "secret", que vous protègerez pour un accès autorisé pour l'utilisateur "prive". 5. Configurez une interface réseau virtuelle avec une IP dans un réseau quelconque (192.168.0.0 par exemple). Vous prendrez soin de créer une ligne dans le fichiers /etc/hosts établissant le lien entre cette IP et le nom du site virtuel. 6. Créez un serveur virtuel pour cette adresse avec un fichier index.html d'accueil. 7. Consultez la documentation de Apache au format HTML installée en local sur votre poste et interdisez l'accès à votre site web principal à un poste de la salle "Flamboyants" de votre choix. 6. Lectures conseillées La documentation installée sur votre poste : http://localhost/doc/apache/manual/index.html. Un document sur la sécurisation du serveur Apache sur le site du magazine MISC. 06/11/2003