Protéger son site selon le HTTP_HOST

 dans Actus, Failles, Linux, Outils, Sécurité, Serveur

 

Hello les amis !

Voyons dans cet article comment interdire ( ou mettre une authentification ) sur un domaine en particulier.
Le point très intéressant est d’avoir un seul fichier de configuration Apache ( donc un VirtualHost ) et le même DocumentRoot.

Présentation du besoin

Je souhaite donc avoir un accès à « www.djerfy.com » mais un accès restreint à « www.djerfy.fr » qui possède le même fichier vhost ( Apache ) et le même DocumentRoot.
Ces deux domaines sont définis comme ServerAlias dans mon fichier.

Configuration dans le vhost

En gros, nous allons interdire ( du moins mettre une authentification ) sur tout ce qui est « www.djerfy.fr », vous me suivez ?

Commençons par notre configuration apache :

<Directory "/datas/web/www.djerfy.com">
    AllowOverride All
    Order Deny,Allow
    Satisfy any
    Deny from all
    Require valid-user
    Allow from env=!DENY_HOST

    # Protection htpasswd
    AuthName "Private HOST"
    AuthType Basic
    AuthUserFile "/datas/web/www.djerfy.com/.htpasswd"
</Directory>
# Définition du HOST refusé
SetEnvIfNoCase HOST ^www\.djerfy\.fr$ DENY_HOST

Et voilà, analysez bien cette configuration, il vous faudra l’adapter sur votre configuration en changeant rapidement quelques paramètres !
Aidez-vous de la documentation officielle si vous ne comprennez pas tout.

Il vous faudra effectuer un rechargement d’Apache pour la prise en charge ( « configtest » & « graceful » )

Chargement du module Apache

Si vous avez eu une erreur lors du rechargement d’Apache, cette étape est pour vous, sinon vous pouvez la passer.
Vérifiez donc bien dans votre configuration d’Apache ( « httpd.conf » généralement ) que le module suivant est activé :

LoadModule setenvif_module modules/mod_setenvif.so

Si ce n’est pas le cas, il vous faudra le charger et refaire le rechargement d’Apache ( « configtest » & « graceful » ).
Si vous avez toujours une erreur, c’est que vous avez mal suivis ma configuration ( ou alors vous êtes trop nul ^_^ ).

Création du htpasswd

Maintenant que notre configuration est faite, vous devez créer votre fichier « .htpasswd » qui comportera vos utilisateurs ( sinon c’est pas possible de faire un accès, un peu normal ).

htpasswd -c /datas/web/www.djerfy.com/.htpasswd administrateur

L’option « -c » est ici UNIQUEMENT pour créer le fichier, si vous voulez faire un rajoute, et bien ne l’utilisez pas.
Le « /datas/web/www.djerfy.com/.htpasswd » permet de définir mon fichier en question, c’est celui que vous avez définie comme « AuthUserFile » dans la configuration Apache.
En enfin le dernier point qui est « administrateur » est simplement votre login d’accès. Le mot de passe est définie quand vous tapez « Entrée ».

Tests & validation

Vous avez bien fait votre configuration Apache ? Le fichier « .htpasswd » est bien présent ? Le module Apache est chargé ?

Si vous avez bien effectué l’ensemble, vous pouvez tester vos accès.
Vous devrez donc avoir un accès normal sur l’un ( www.djerfy.com ) et une authentification sur l’autre ( www.djerfy.fr ).

 

N’hésitez pas à utiliser les commentaires si vous avez des questions / aide !

Articles recommandés
Showing 3 comments
  • jojo
    Répondre

    C’est chaud de mettre le .htpasswd dans le vhost, non ?

  • Djerfy
    Répondre

    Personnellement, je ne recommande pas, c’était pour l’explication dans l’article 🙂
    Il existe une règle dans la configuration générale d’Apache pour interdire les accès sur « ^.ht », donc l’accès ne sera pas possible non plus.

    Sinon il est possible de le mettre à côté du fichier de vhost, il faudra simplement changer la ligne « AuthUserFile » 😉

  • jojo
    Répondre

    Thanks ! 😉

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.