Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Apache2, site default encore desservi après désactivation

28 réponses
Avatar
Francois Lafont
Bonjour,

J'ai rencontré des comportements d'Apache2 par rapport aux choix
du vhost desservi que je ne comprenais pas. Après pas mal de
tâtonnements, voici la manipulation minimale qui aboutit à quelque
chose que je n'arrive pas à m'expliquer et qui est, je pense,
le cœur de mon problème.

Soit une Debian Wheezy out ouf the box après une netinstall (pas
d'interface graphique installée, juste le minimum à savoir
openssh-server et basta). Je fais alors :

root@server-1:~# apt-get update && apt-get install -y apache2
[...]

root@server-1:~# a2dissite default # je désactive le site default, je n'ai plus de vhost.
Site default disabled.
To activate the new configuration, you need to run:
service apache2 reload

root@server-1:~# service apache2 reload
[....] Reloading web server config: apache2[Sat Dec 07 15:58:40 2013]
[warn] NameVirtualHost *:80 has no VirtualHosts
. ok

Et bien, à ma grande surprise, lorsque sur une autre machine je me
rends à l'adresse http://ip-de-server-1 avec un navigateur, ça
m'affiche bien le fameux :

It works!

et donc le vhost "default", bien que désactivé, est toujours desservi
par Apache2.

Avez-vous une explication ?

On est d'accord que la conf mise en place ici n'a aucun intérêt, mais
ça montre que potentiellement le site "default" peut être desservi même
quand il est désactivé et c'est ce problème là que j'ai rencontré dans
un cas moins stupide que celui que je donne ci-dessus.

Enfin, la même manip sous Debian Squeeze donne le comportement que
personnellement j'attendais à savoir un :

Not Found
The requested URL / was not found on this server.

Merci d'avance pour votre aide.

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/l7vdrt$sae$1@ger.gmane.org

8 réponses

1 2 3
Avatar
Bzzz
On Sat, 14 Dec 2013 17:36:28 +0100
"Sylvain L. Sauvage" wrote:


Justement ! Il est dans sites-*available* mais pas dans
sites-*enabled*. Donc il ne devrait pas être servi, comme




Oops, my bad ; comme d'hab, ça m'apprendra à faire +sieurs
choses à la fois.

Je pense que tu as raison, ça se rapproche du bug.

…

<Mode fanboy>
D’t’façon, Apache, c’est tout pourri, ç a bouffe plein de CPU et
de RAM, lighty c’est ’achement mieux.
</>



<mode vendredi>'façon y sont tous pourris et y'a que nginx qui soit
bien</>

--
<Yunzo> J'imagine, un Père Noël juif.
<Yunzo> "Bonjour les enfants qu'est-ce que je vous vends ?"

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Francois Lafont
Le 14/12/2013 17:36, Sylvain L. Sauvage a écrit :

less /tmp/TST/apache2/sites-available/default […]


^^^^^^^^^

Justement ! Il est dans sites-*available* mais pas dans
sites-*enabled*. Donc il ne devrait pas être servi, comme
c’était bien le cas dans Squeeze.



Voilà. Merci encore Sylvain. :)

Ça ressemble à une régression de sécurité.


Questions :

1. Est-ce que default est toujours servi quand il y a un autre
site « enabled » ?



Je viens de faire le test et la réponse est non je pense. Si
effectivement j'ajoute un nouveau site "test" et bien il semble
(autant que puisse en juger) que le site "default" n'est plus
accessible du tout.

En revanche, le « nouveau » vhost "test" est toujours desservi
même si l'on joue avec l'instruction « ServerName www.truc.fr »
par exemple et que l'on fait une requête via l'IP alors
on tombe quand même sur le « nouveau » vhost "test".

Mais j'imagine que ça c'est normal, non ? Le paramètre
"ServerName" sert à apache pour trouver le meilleur vhost
à desservir en fonction de la requête, mais si rien ne
matche, il va quand même prendre un vhost (activé) pour
desservir des pages. J'ai bon ?

2. Est-ce qu’il y a quelque chose à ce propos dans le(s)
changelog ? dans le BTS ?



Là j'sais pas.

<Mode fanboy>
D’t’façon, Apache, c’est tout pourri, ça bouffe plein de CPU et
de RAM, lighty c’est ’achement mieux.
</>



Connais pas l'autre (lighty). Perso, je vais éviter le troll. :)


--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/l8i3ou$698$
Avatar
Bzzz
On Sat, 14 Dec 2013 18:16:25 +0100
Francois Lafont wrote:

En revanche, le « nouveau » vhost "test" est toujours desservi
même si l'on joue avec l'instruction « ServerName www.truc.fr »
par exemple et que l'on fait une requête via l'IP alors
on tombe quand même sur le « nouveau » vhost "test".

Mais j'imagine que ça c'est normal, non ? Le paramètre
"ServerName" sert à apache pour trouver le meilleur vhost
à desservir en fonction de la requête, mais si rien ne
matche, il va quand même prendre un vhost (activé) pour
desservir des pages. J'ai bon ?



Justement non, un server http digne de ce nom _devrait_ bloquer
toutes les requêtes ne concernant pas un vhost désigné (et d °
pour l'accès par adresse IP).

Je viens de faire le test avec nginx en virant tous les symlinks
de site-enabled: aucun accès possible; et pour cause, les ports
utilisés se trouvent dans les *.conf de site-available et pas
ailleurs.

Alors ton PB ne viendrait-il pas du contenu de ports.conf, qui
contient des directives qui, sans doute, ne devraient pas s'y
trouver? (enfin bon, la logique d'apache2 lui reste propre).

--
<Chris> Parce que toi tu connais un mot avec trois voyelles qui se
suivent peut-être !!
<Christophe> oui...

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Francois Lafont
Le 14/12/2013 18:56, Bzzz a écrit :

En revanche, le « nouveau » vhost "test" est toujours desservi
même si l'on joue avec l'instruction « ServerName www.truc.fr »
par exemple et que l'on fait une requête via l'IP alors
on tombe quand même sur le « nouveau » vhost "test".

Mais j'imagine que ça c'est normal, non ? Le paramètre
"ServerName" sert à apache pour trouver le meilleur vhost
à desservir en fonction de la requête, mais si rien ne
matche, il va quand même prendre un vhost (activé) pour
desservir des pages. J'ai bon ?



Justement non, un server http digne de ce nom _devrait_ bloquer
toutes les requêtes ne concernant pas un vhost désigné (et d°
pour l'accès par adresse IP).



Je ne suis pas aussi sûr que toi. On parle bien d'Apache2 ici
(par d'un autre serveur Web) et j'ai bien l'impression que sur
Apache2 la directive "ServerName" permet simplement d'aider
Apache2 à trouver le bon vhost à desservir en fonction de la
requête qu'il reçoit mais je ne crois pas qu'on puisse considérer
que ce soit une mesure de sécurité et, en dernier recours, si une
requête ne matche avec aucun "ServerName" d'aucun vhost et bien je
crois bien qu'Apache2 va quand même desservir un vhost (et je me
demande si ce ne sera pas le premier dans son ordre de lecture de
la conf).

Je peux me tromper bien sûr, mais il me semble que c'est
comme cela que Apache2 fonctionne. Bien sûr, n'hésitez pas à
rectifier si j'ai faux.

Je viens de faire le test avec nginx en virant tous les symlinks
de site-enabled: aucun accès possible; et pour cause, les ports
utilisés se trouvent dans les *.conf de site-available et pas
ailleurs.



nginx et apache2 sont 2 logiciels distincts. Ce n'est pas parce
que l'un se comporte d'une certaine manière que l'autre doit
faire de même. Si on commence à partir sur des comparaisons,
on est mal barré. :-)

Dans ce fil, je parle d'Apache2 uniquement.

Alors ton PB ne viendrait-il pas du contenu de ports.conf, qui
contient des directives qui, sans doute, ne devraient pas s'y
trouver?



Ce sont les directives par défaut sur une Wheezy et rien ne
me choque là dedans. Je ne pense pas que le problème soit là
de toute façon.

(enfin bon, la logique d'apache2 lui reste propre).



Et c'est justement cette logique là (celle d'apache2) que
je cherche à comprendre.


--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/l8i73s$8t3$
Avatar
Bzzz
On Sat, 14 Dec 2013 19:13:27 +0100
Francois Lafont wrote:

si une
requête ne matche avec aucun "ServerName" d'aucun vhost et bien je
crois bien qu'Apache2 va quand même desservir un vhost (et je me
demande si ce ne sera pas le premier dans son ordre de lecture de
la conf).



…

nginx et apache2 sont 2 logiciels distincts. Ce n'est pas parce
que l'un se comporte d'une certaine manière que l'autre doit
faire de même. Si on commence à partir sur des comparaisons,
on est mal barré. :-)



Hem, qu'un svr http se permette de renvoyer une page par
défaut alors qu'il n'a aucune conf de vhost me paraît
_extrêmement_ plus inquiétant que de se lancer sans ouvrir
aucun port comme le fait sainement nginx; parce que si
je suis bien ton raisonnement,
cela veut dire qu'il va falloir analyser _en détail_
apache2, ses plugins et addons pour savoir ce qu'il fait
_exactement_, et ce quelque soient les circonstances.

Je conçois que quelqu'un reste attaché à un daemon, surtout si
cet attachement est lié au pro (difficile de migre rapidement)
mais si apache2 fait effectivement comme tu le décris, je
trouve ça très dangereux.

> (enfin bon, la logique d'apache2 lui reste propre).

Et c'est justement cette logique là (celle d'apache2) que
je cherche à comprendre.



Bon, là ça devient stérile parce qu'on suppute (de luxe,
mais on suppute qd même), alors ne reste plus qu'à analyser
le(s) source(s), ou plus exactement tracer ce qu'il fait
avec un debugger.

Je n'ajouterais rien d'autre, mais je n'en penserais pas moins.

--
* phob|Work se nourrit d'amour et d'eau fraiche
<Bafomet> moi dans l'eau fraiche faut que je mette du ricard...
sinon ça passe ma

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Francois Lafont
Le 14/12/2013 19:37, Bzzz a écrit :

si une
requête ne matche avec aucun "ServerName" d'aucun vhost et bien je
crois bien qu'Apache2 va quand même desservir un vhost (et je me
demande si ce ne sera pas le premier dans son ordre de lecture de
la conf).





[couic]

Hem, qu'un svr http se permette de renvoyer une page par
défaut alors qu'il n'a aucune conf de vhost me paraît
_extrêmement_ plus inquiétant que... [re-couic]



Vu ici : http://httpd.apache.org/docs/2.2/vhosts/name-based.html

Je me des « *** » sur la partie importante pour nous ici.

<debut de citation>
Maintenant, lorsqu'une requête arrive, le serveur va d'abord
tester si elle utilise une adresse IP qui correspond à NameVirtualHost.
Si c'est le cas, il regardera chaque section <VirtualHost> avec
l'adresse correspondante et essaiera d'en trouver une où le nom de
domaine requis correspond à ServerName ou ServerAlias. S'il en
trouve une, il utilisera sa configuration pour le serveur.
***Si aucun serveur virtuel ne correspond, alors le premier serveur
virtuel listé dont l'adresse IP correspond sera employé.***

En conséquence, le premier serveur virtuel listé est le serveur
virtuel par défaut. La directive DocumentRoot du serveur principal ne sera
jamais employée lorsqu'une adresse IP correspond à la directive
NameVirtualHost. ***Si vous souhaitez avoir une configuration spéciale
pour les requêtes qui ne correspondent pas à un serveur virtuel en
particulier, mettez cette configuration dans une section <VirtualHost>
que vous placerez en premier dans le fichier de configuration. *** »
<fin de citation>

Donc ça correspond globalement à ce que je dis il me semble, non ?

Le seul truc que je pige pas dans ce texte, c'est l'histoire du
serveur principal :

« La directive DocumentRoot du serveur principal ne sera jamais
employée lorsqu'une adresse IP correspond à la directive NameVirtualHost. »

C'est quoi le "serveur principal" ?
J'ai compris la notion de serveur par défaut (celui sur lequel
on tombe quand rien de matche) mais la notion de "serveur principal",
je ne vois pas.

Je conçois que quelqu'un reste attaché à un daemon, surtout si
cet attachement est lié au pro (difficile de migre rapidement)
mais si apache2 fait effectivement comme tu le décris, je
trouve ça très dangereux.



Ça veut juste dire qu'il faut bien prendre la peine de
définir un site par défaut qui attraper tout ce qui
ne s'adressera pas aux vhosts qu'on a définis.

Bon, là ça devient stérile parce qu'on suppute (de luxe,
mais on suppute qd même), alors ne reste plus qu'à analyser
le(s) source(s), ou plus exactement tracer ce qu'il fait
avec un debugger.



Avant, je préfère lire la doc personnellement.


--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/l8ibds$jtq$
Avatar
Bzzz
On Sat, 14 Dec 2013 20:27:03 +0100
Francois Lafont wrote:


C'est quoi le "serveur principal" ?
J'ai compris la notion de serveur par défaut (celui sur lequel
on tombe quand rien de matche) mais la notion de "serveur
principal", je ne vois pas.



D'après
http://www.linux-france.org/prj/edu/archinet/systeme/ch16s02.html
c'est 'default'.

Ça veut juste dire qu'il faut bien prendre la peine de
définir un site par défaut qui attraper tout ce qui
ne s'adressera pas aux vhosts qu'on a définis.



C'est (en partie) là que nous ne sommes plus d'accord,
un peu comme la policy par défaut d'un firewall.
Pour ma part , je préfère (et de loin) le tout interdit
et on ne laisse passer que ce dont on a besoin, au on
laisse tout passer et on interdit le cas échéant.

Te coller une ouverture sur "un site par défaut" me
semble un manque flagrant de liberté autant qu'un
risque de sécurité si tu ne le sais pas.

Sans compter que
http://httpd.apache.org/docs/current/fr/suexec.html
dans la Sion "Utilisation de suEXEC" indique que si
tu n'as pas de directive 'SuexecUserGroup' , ce sont
les droits par défaut dudit 'server Pal' qui sont
utilisés (et s'il n'est pas présent, ce sont les droits
de root???)

Comprenons nous bien, je me tape que tu t'accroches à
apache2 comme un perdu, ce que je conteste (entre autres)
c'est qu'il impose le passage par un 'server Pal' obligatoire.
(un peu comme si ton garagiste exigeait d'être payé en
avance, uniquement en cash et en coupures de €5).

--
<Mixi> c'est quoi ton processeur ?
<Coquine> win xp

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Francois Lafont
Le 14/12/2013 20:56, Bzzz a écrit :

C'est quoi le "serveur principal" ?
J'ai compris la notion de serveur par défaut (celui sur lequel
on tombe quand rien de matche) mais la notion de "serveur
principal", je ne vois pas.



D'après
http://www.linux-france.org/prj/edu/archinet/systeme/ch16s02.html
c'est 'default'.



Non.

En fait, après quelques recherches, je crois avoir compris ce
qu'est ce fameux "site principal" et ça tombe bien parce c'est
justement la clé de mon problème et je crois bien que la chose
est résolue.

En fait, le "site principal" est le site qui dessert les pages
données par la directive DocumentRoot ***dans le contexte
global***. En effet, cette directe se trouve en général
dans le contexte d'un vhost (comme dans le site "default"
par exemple), mais elle existe aussi dans le contexte
global (en dehors d'un vhost). Même si, dans la conf par
défaut proposée par Debian, cette directive n'est pas présente
dans le contexte global, elle l'est quand implicitement avec
une valeur par défaut, valeur qui dépend de la manière dont
l'appli a été compilée.

Or, je vous le donne en mille : entre Squeeze et Wheezy, cette
valeur par défaut a changé. On peut le voir dans les sources
du paquet. Dans la version Wheezy, il y a un joli patch
/debian/patches/010_fhs_compliance qui, comme par hasard,
ne se trouve pas dans les sources du paquet pour Squeeze.
Et dans ce patche, on peut lire :

/* Set default for non OS/2 file system */
-#define DOCUMENT_LOCATION HTTPD_ROOT "/htdocs"
+#define DOCUMENT_LOCATION "/var/www"

À cela, s'ajoute l'élément suivant : sans vhost, c'est le
serveur principal qui prend la main. Avec au moins un
vhost, le serveur principal est « masqué » (non desservi
en somme) si l'ip de destination de la requête est une
ip indiquée par les directives NameVirtualHost de la
conf.

Voilà le fin mot de l'histoire.

Ça veut juste dire qu'il faut bien prendre la peine de
définir un site par défaut qui attraper tout ce qui
ne s'adressera pas aux vhosts qu'on a définis.



C'est (en partie) là que nous ne sommes plus d'accord,



Stop. Je t'arrête tout de suite dans cette voie là.

Je ne cherche pas à débattre avec toi, ni à te convaincre
de quoi que ce soit. Je cherche juste à **comprendre** le
mécanisme de fonctionnement d'Apache, c'est tout.

Est-ce que ce mécanisme est bien, mal etc. n'est vraiment
pas mon propos ici, je m'en cogne complètement ic. Et
honnêtement, je ne sais pas trop pourquoi tu tiens tant
à aller dans cette direction qui ne fait vraiment pas
avancer le schmilblick. Mais bon, maintenant que le fil
est résolu c'est pas très grave.

Il n'y a que 2 éléments où je n'étais pas d'accord avec toi :

- quand tu me parlais de index.html etc. alors que ça n'avait
rien à voir avec le sujet;

- lorsque tu disais que je me trompais sur le mécanisme du
choix du vhost desservi par apache2 alors que j'avais raison.

Tu vois, juste des choses purement factuelles donc.
Pour le reste, je te laisse continuer tout seul.

un peu comme la policy par défaut d'un firewall.
Pour ma part , je préfère (et de loin) le tout interdit
et on ne laisse passer que ce dont on a besoin, au on
laisse tout passer et on interdit le cas échéant.

Te coller une ouverture sur "un site par défaut" me
semble un manque flagrant de liberté autant qu'un
risque de sécurité si tu ne le sais pas.

Sans compter que
http://httpd.apache.org/docs/current/fr/suexec.html
dans la Sion "Utilisation de suEXEC" indique que si
tu n'as pas de directive 'SuexecUserGroup' , ce sont
les droits par défaut dudit 'server Pal' qui sont
utilisés (et s'il n'est pas présent, ce sont les droits
de root???)

Comprenons nous bien, je me tape que tu t'accroches à
apache2 comme un perdu



Là, en revanche, je réagis (forcément).

Par « tu t'accroches à apache2 comme un perdu », je ne sais
pas trop ce que tu veux dire. Je m'accroche à essayer
de comprendre le fonctionnement d'Apache2. C'est plutôt
une bonne chose, non ?

Après, vouloir comprendre une techno est une chose, la
défendre coûte que coûte en est une autre. Je suis juste
dans le premier cas. Le reste encore une fois, je m'en
cogne (dans ce fil là en tout cas). Et au final, dans
la compréhension d'Apache2, j'ai l'impression d'être
un peu moins perdu que toi. ;-)

ce que je conteste (entre autres)
c'est qu'il impose le passage par un 'server Pal' obligatoire.



Avant de contester une chose, j'aime bien la comprendre.
Et manifestement, au moment où tu as écrit ces lignes,
tu ne savais pas ce qu'était un serveur principal. Bon, moi
non plus à ce moment là, hein, mais je ne contestais rien
en revanche, je cherchais juste à avancer, à être constructif
et à résoudre un problème.

(un peu comme si ton garagiste exigeait d'être payé en
avance, uniquement en cash et en coupures de €5).



Ben moi je dis qu'entre tes messages où tu pigeais pas
le problème et ceux où tu contestais des trucs complètement
HS sur la base d'éléments mal compris, t'as bien pollué ce
fil inutilement... mais bon le problème est résolu et c'est
le plus important.

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/l8ivt6$lp4$
1 2 3