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