Skip to content

Apache 2 : Configuration de base

Cette documentation a été écrite il y a bien longtemps et n'est plus mise à jour. Comprenez que les informations que vous y trouverez peuvent avoir changé de manière conséquente !

I- Présentation d'Apache :

Apache est un serveur Web. Il permet d'héberger un ou plusieurs sites Web. Pour visiter ces sites Web, on a besoin d'un client Web (Internet Explorer ou Mozilla Firefox, par exemple) auquel on indique l'adresse du serveur.

Par exemple si mon serveur Apache héberge le site www.adminrezo.fr , vous devrez

taper dans votre navigateur ce nom pour pouvoir l'atteindre. Nous allons voir comment se configure ce serveur sous Linux.

Apache fonctionne sur tous les systèmes (Unix, Linux, BSD, Windows, MacOS).

II- Configuration :

La configuration se fait pour chaque site virtuel gràce au(x) fichier(s) du répertoire /etc/apache2/sites-available/

Si vous n'avez qu'un site à héberger, le fichier à éditer est /etc/apache2/sites-available/default

### Configuration globale :

NameVirtualHost www.adminrezo.fr
<VirtualHost www.adminrezo.fr>

    # Adresse de l'administrateur du site
    ServerAdmin webmaster@adminrezo.fr
    # Nom DNS du serveur. Vous devez utiliser bind ou /etc/hosts
    ServerName www.adminrezo.fr
    # Répertoire dans lequel se trouvent les fichiers du site
    DocumentRoot /var/www
    # Droits sur ce répertoire :
    <Directory /var/www >
        AllowOverRide All
        Order Allow, Deny
        Allow from all
    </Directory>

</VirtualHost>

Exemples de paramètres sur un répertoire particulier :

Pour configurer des options sur un répertoire particulier on met toutes les options que l'on veut

entre les balises Directory :

<Directory /repertoire >
    Options Indexes (1)
    AllowOverride All (2)
    Order allow, deny (3)
    Allow from 192.168.0.1 (4)
    Deny from all (4)
</Directory>

(1) Indexes : Si un répertoire ne contient pas de index.html, cette directive permet de montrer au client les fichiers du répertoire.

(2) : Permet d'utiliser des options particulières mises dans un fichier .htaccess Si vous ne voulez pas de fichiers .htaccess, indiquez AllowOverRide None

(3) : Ordre dans lequel les directives sont analysées :

  • allow, deny : D'abord les règles allow, puis les règles deny

  • deny, allow : D'abord les règles deny, puis les règles allow

(4) : Spécifie quel demandeur est (n'est pas) authorisé à accéder au répertoire :

  • from all : Tout le monde / Personne (n')a accès au répertoire.

  • IP ou IP partielle ou masque ou nom : Cette @ (n')a (pas) accès au répertoire.

Aliases :

On utilise les alias pour que les clients aient des noms plus simples à taper dans leur navigateur ou pour les diriger vers un répertoire qui n'est pas en dessous de la racine de votre hôte.

Par exemple, cet alias permet à l'utilisateur de n'avoir qu'à taper http://www.adminrezo.fr/modx alors que le vrai répertoire est /var/www/modx-0.9.2.1 :

Alias /modx "/var/www/modx-0.9.2.1/"
<Directory /var/www/modx-0.9.2.1/>
    Order Allow, Deny
    Allow from All
</Directory>

Autre exemple qui permet de taper http://www.adminrezo.fr/nico pour accéder au répertoire /home/nico :

Alias /nico «/home/nico/» Order Allow, Deny Allow from All

III- Sécuriser Apache :

Faire un serveur Web c'est déjà pas mal mais ne pas autoriser tout le monde à accéder à n'importe quel répertoire de votre site, c'est encore mieux.

Il y a deux systèmes de sécurité de base en HTTP :

  • Méthode basique : Demande un login et un mot de passe à l'utilisateur. Cette authentification passe en clair sur le réseau.
  • Méthode Digest : Utilise la méthode de mot de passe par challenge : Le serveur envoie une phrase chiffrée au client, celui-ci pourra la déchiffrer uniquement s'il possède le même mot de passe que le serveur. Les échanges de mots de passes sont chiffrés.

Méthode « Basic » : Fichiers .htaccess :

Dans le répertoire à protéger, vous allez créer un fichier qui s'appellera .htaccess et qui limitera l'accès à certaines personnes dont la liste des noms et des mots de passe se trouvera autre part.

Exemple :

# fichier contenant logins et mdp
AuthUserFile /var/www/prive/.htpasswd
# Texte qui sera affiché dans la boite de dialogue
AuthName "Accès Restreint"
# Type d'authentification
AuthType Basic
# Pas d'accès sans utilisateur correctement connecté
require valid-user

Ce fichier .htaccess limite l'accès aux utilisateurs qui figureront avec leur mot de passe dans

le fichier .htpasswd

Méthode Basic : Fichiers de comptes et mots de passes :

Pour créer un fichier .htpasswd avec tous les login et les mots de passe, on va utiliser une commande :

htpasswd -c /var/www/prive/.htpasswd toto
New password: ******

Une fois que vous avez créé un premier utilisateur vous recommencez pour tous les autres utilisateurs mais sans l'option -c (qui sert à créer le fichier s'il n'existe pas.

htpasswd /var/www/prive/.htpasswd titi

Une fois les comptes et mots de passe entrés, le fichier est créé avec des mots de passe chiffrés :

titi:tSmUv./Bh0iZQ
toto:ZRKmsvT/IDoDU

Méthode Digest : Fichiers de comptes et mots de passes :

La méthode Digest donne un accès à un royaume uniquement, identifié par un nom (ici Intranet). L'algorithme de chiffrement utilisé est MD5. C'est mieux que pas de chiffrement du tout mais MD5 a des failles de sécurité connues.

Dans mon exemple, le fichier s'appelle /etc/apache2/.digest

Pour créer un fichier /etc/apache2/.digest avec tous les logins et les mots de passe, on va utiliser une commande :

htdigest -c /etc/apache2/.digest *"*Intranet*"* toto
New password: ******

Une fois les comptes et mots de passe entrés, le fichier est créé avec des mots de passe chiffrés :

nico:Intranet:d35521f93bffb2aebf7b397314c8e05e
stagiaire:Intranet:2491ec19248e80f46d298711457e87ba

Pour demander à Apache d'authentifier un répertoire par la méthode Digest, on va dans l'hôte virtuel et on définit les paramètres suivants :

<Location /prive >
    AuthType Digest
    AuthName *"*Intranet*"*
    AuthDigestDomain /prive
    AuthDigestProvider file
    AuthUserFile /etc/apache2/.digest
    Require valid-user
</Location>