Apache : deux Virtualhosts pour une seule IP

Résolu/Fermé
Lynow - 31 août 2022 à 09:29
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 31 août 2022 à 17:34

Bonjour,

Je suis en train de configurer un serveur chez OVH, sur lequel est installé un outil fonctionnant sur Apache. J'ai également installé un deuxième "Virtualhost", permettant d'accéder à une page Web.

J'ai donc configuré deux Virtualhosts, un fonctionnant sur le port 80 et l'autre sur le port 443, pour l'instant, car je n'ai pas de noms de domaines définis.

Le premier outil, accessible par l'adresse du type https://IP, n'a pour l'instant pas besoin de noms de domaines car il sera disposé à ma simple utilisation. Par contre le deuxième outil, lui, sera accessible au public, j'aimerais donc acheter un nom de domaine pour celui-ci.

Bref, j'ai donc une IP, pour deux hôtes différents. Je voulais donc savoir, s'il était possible de configurer un premier Virtualhosts fonctionnant sur 80 et 443 et requêtable par l'adresse IP, et de configurer le deuxième en indiquant son nom de domaine ? (sous 80 et 443)

Par exemple, comme ceci :

<VirtualHost example.dom>
  ServerName example.dom
  DocumentRoot "/www/example"
</VirtualHost>

Et pour celui qui n'a pas de noms, tout simplement :

<VirtualHost IP:80>
DocumentRoot /www/example1.com
ServerName www.example1.com

</VirtualHost>

<VirtualHost IP:443>
DocumentRoot /www/example1.com
ServerName www.example1.com

</VirtualHost>

Je ne sais pas si c'est possible, je me pose la question de la sécurité également ...

1 réponse

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
Modifié le 31 août 2022 à 12:27

Bonjour,

<VirtualHost example.dom>

Il faut éviter ceci autant que possible, comme suggéré par la documentation :
https://httpd.apache.org/docs/2.4/mod/core.html#virtualhost

Dans ce cas, example.com est résolu afin d'en obtenir l'IP lors du démarrage d'Apache.
Ça influence donc uniquement l'IP pour laquelle le VirtualHost est valide, mais ça ne détermine toujours pas le nom de la même façon que ServerName.

Je t'invite à lire/comprendre cette partie de la documentation :

When a request is received, the server first maps it to the best matching <VirtualHost> based on the local IP address and port combination only. Non-wildcards have a higher precedence. If no match based on IP and port occurs at all, the "main" server configuration is used.

If multiple virtual hosts contain the best matching IP address and port, the server selects from these virtual hosts the best match based on the requested hostname. If no matching name-based virtual host is found, then the first listed virtual host that matched the IP address will be used. As a consequence, the first listed virtual host for a given IP address and port combination is the default virtual host for that IP and port combination.

Tes VirtualHost doivent donc ressembler à ceci :

<VirtualHost *:80>
   DocumentRoot /www/site-par-defaut
</VirtualHost>

<VirtualHost *:443>
   DocumentRoot /www/site-par-defaut
</VirtualHost>

<VirtualHost *:80>
   ServerName example.com
   DocumentRoot /www/example.com
</VirtualHost>

<VirtualHost *:443>
   ServerName example.com
   DocumentRoot /www/example.com
</VirtualHost>

De cette manière, http://ip/ ou https://ip/ afficheront /www/site-par-defaut.
Et http://example.com et https://example.com afficheront /www/example.com.

Voir aussi : https://httpd.apache.org/docs/2.4/vhosts/examples.html

Je ne saisis pas très bien ta question concernant la « sécurité ». La configuration des VirtualHost ne joue pas de rôle de sécurité. Si c'est concernant le HTTPS, il faut évidemment penser à l'utiliser. Si tu veux restreindre l'accès, ça peut se faire au niveau de l'application Web (authentification). Tu peux aussi faire du contrôle d'accès au niveau de Apache. https://httpd.apache.org/docs/2.4/howto/access.html

0

Merci beaucoup pour ta réponse rapide. Je comprends mieux et cela me semble logique.

Lorsque j'ai parlé de "sécurité" (très vague de ma part), je parlais surtout de la syntaxe

<VirtualHost example.dom>

qui posait quelques problèmes au niveau sécurité, d'après certaines informations relevées sur internet. J'avoue ne plus savoir sur quel forum j'ai vu ceci ...

Pour les accès, j'ai configuré avec

<Directory /var/directory/>
...
</Directory>

les accès restreints en fonction de mes répertoires.

J'avais déjà lu les liens que tu as donné, cependant il me manquait quelques éclaircissements.

Merci encore.

0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497 > Lynow
Modifié le 31 août 2022 à 17:34

J'ai du mal à voir à quel niveau ça pourrait constituer un risque de sécurité. Dans le cas d'un éventuel "DNS hijjacking", le résultat sera que le VirtualHost s'applique à une IP différente et donc, au pire, ça ne fonctionne pas, et surtout, la définition du VirtualHost n'impacte pas les interfaces et ports qui sont réellement écoutées par Apache, lesquels sont définis via l'instruction « Listen ».

La question initiale est-elle résolue ou rencontres-tu toujours des difficultés avec les VirtualHost ?

0