Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/07/2008, 11h45   #1
Membre à l'essai
 
Inscription : mai 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 92
Points : 23
Points : 23
Par défaut Win Server2008/Apache (Zend)

Bonjour,

Je suis débutant en administration de serveur et encore plus sur de l'hébergement Windows. Or ma société m'impose d'héberger du PHP sur un Windows Server 2008/IIS 7.

J'ai donc opté pour la solution Zend qui optimise les performances d'un serveur APACHE/PHP sur windows avec FastCGI.

La plateforme fonctionne très bien, mes tests en local sont concluants.

Par contre, j'essaie maintenant de rendre accessible le serveur depuis l'extérieur et je suis toujours en train de me demander si je fais bien, surtout niveau sécurité

J'ai créé l'arbo suivante :

D:/Zend/
---Apache2
---Core

D:/website/
---logs
---www

D:/website/www/ :
---dossiers sites
---dossiers librairies partagées par tous les sites

Et pour un site j'ai prévu :

D:/website/www/nom-du-site/
---stats
---fichiers du site


Par défaut (par Zend) mon fichier de conf apache2 contient ces lignes :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Listen 80

Servername localhost:80

DocumentRoot "D:/Zend/Apache2/htdocs"

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

<Directory "D:/Zend/Apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Directory "D:/Zend/Apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

<Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location> 

LoadModule zend_enabler_module "D:/Zend/Core/modules/apache2.2/zend_fcgi.dll"
FastCgiConfig "D:/Zend/Core/etc/fastcgi.conf"
AddHandler fastcgi-script .php 
AddType application/x-httpd-php .php 
<Location /ZendCore>
  Order deny,allow
  Allow from all
</Location>
Alias /ZendCore "D:/Zend/Core/GUI"

Maintenant je souhaite rendre le serveur accessible via l'extérieur, et je ne sais pas si cette configuration est idéale.
Déjà, j'ai évidemment transformé certaines lignes en :
Code :
1
2
3
4
Listen 80

Servername monip:80
Mais quel "DocumentRoot" dois-je configurer ?
"D:/website/www/" ?

Si c'est le cas, comment est-ce que je peux rendre visible quand même mes GUI Zend qui sont actuellement accessible via "D:/Zend/Core/GUI" ?

Je suppose que chaque site ne doit surtout pas être accessible via : http://ip-du-serveur/nom-du-rep/

Mais comment faire ?

J'ai lu pas de mal de chose sur Apache, mais il y a certaines choses qui m'échappent encore. Il s'agit d'un serveur de production et je ne veux surtout pas faire n'importe quoi

Si certains peuvent m'éclairer ce serait super !

En gros mon vrai problème ici est de savoir à quoi devrait ressembler la configuration d'Apache pour un serveur de production sécurisé qui contiendrait des sites indépendants dans le répertoire "D:/website/www/" chacun accessible au final par un nom de domaine propre.

Merci beaucoup !

Benjamin.
Delprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 13h38   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
Déjà, c'est quoi un site et avec quel URL ou hostname as-tu prévu d'y accéder ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 13h47   #3
Membre à l'essai
 
Inscription : mai 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 92
Points : 23
Points : 23
je vais avoir des sites clients stockés dans des dossiers portant leur nom de sous-domaine s'il s'agit d'un groupe de clients ou domaine sinon.

Exemple dans "D:/website/www/" j'aurai des dossiers :

truc
bidule/toto
bidule/titi
machin/toto
machin/titi

Ces sites seront accessibles respectivement via :

www.truc.com
toto.bidule.com
titi.bidule.com
toto.machin.com
titi.machin.com

Mais quel importance ? Tout sera hébergé sur le même serveur.
Delprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 19h03   #4
Membre à l'essai
 
Inscription : mai 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 92
Points : 23
Points : 23
Je m'auto-répond pour une partie de ma question

Pour les domaines et les sous-domaines je suppose que je vais faire des Virtual Hosts dans un fichier vhost.conf que j'incluerai ensuite dans le httpd.conf du type :

Code :
1
2
3
4
5
6
7
8
9
NameVirtualHost www.nom-de-domaine.truc
<VirtualHost www.nom-de-domaine.truc> 
  ServerAdmin mon-email@nom-de-domaine.truc
  DocumentRoot D:/website/www/nom-du-rep/
  ServerName www.nom-de-domaine.truc
  ErrorLog D:/website/logs/nom-de-domaine.truc_errors
  TransferLog D:/website/logs/nom-de-domaine.truc_access
</VirtualHost>
pour un nom de domaine

et :
Code :
1
2
3
4
5
6
7
8
9
NameVirtualHost bidule.nom-de-domaine.truc
<VirtualHost bidule.nom-de-domaine.truc> 
  ServerAdmin mon-email@nom-de-domaine.truc
  DocumentRoot D:/website/www/nom-du-rep/
  ServerName bidule.nom-de-domaine.truc
  ErrorLog D:/website/logs/bidule.nom-de-domaine.truc_errors
  TransferLog D:/website/logs/bidule.nom-de-domaine.truc_access
</VirtualHost>
pour les sous-domaines...

Arrêtez moi si je me trompe

Mais pour le reste de ma question ? Que dois-je faire du "DocumentRoot" déjà présent dans le fichier de conf et des autres paramètres que j'ai indiqué dans mon premier message ?

Et dois-je configurer mes GUI Zend et PhpMyadmin comme des virtual hosts ? Même s'ils ne sont accessibles qu'en local ?

Merci.
Delprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 20h15   #5
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
C'est bien ça, il faut passer par les virtual hosts. Pour info, il y a une notion de document root virtuel qui pourra t'être d'une grande aide : http://httpd.apache.org/docs/2.2/vhosts/mass.html

A propos de la conf de VH que tu donnes, il faut éviter les noms dans les directives NameVirtualHost et <VirtualHost> : plutôt passer par les IP ou même carrément *, ce sera plus sûr et surtout plus simple. Ce qu'il faut indiquer à ces endroits-là, c'est soit une IP locale au serveur par laquelle les requêtes pour les VH arrivent, soit * pour dire "quelque soit l'IP par laquelle on arrive". Concrètement, mettre une IP n'a d'intérêt que pour les serveurs équipés de plusieurs interfaces réseau. Le plus simple reste toujours de mettre *. Ensuite, il est préférable également de mettre un numéro de port, et là idem que pour *, il faut que ce soit le port d'écoute d'Apache par lequel les requêtes arrivent. Donc, le plus simple, si ton Apache écoute sur le port 80, c'est de mettre *:80 partout (NameVirtualHost et <VirtualHost>).

Citation:
Envoyé par Delprog Voir le message
Mais pour le reste de ma question ? Que dois-je faire du "DocumentRoot" déjà présent dans le fichier de conf et des autres paramètres que j'ai indiqué dans mon premier message ?

Et dois-je configurer mes GUI Zend et PhpMyadmin comme des virtual hosts ? Même s'ils ne sont accessibles qu'en local ?
Il y a un risque évident à indiquer le répertoire parent de tous tes VH dans le DocumentRoot général, car dans ce cas, en faisant http://IP/bidule/toto, on tombera sur un site, et si tes scripts ne sont pas prévus pour supporter des accès de la sorte, y aura des bugs et des risques d'exploit. Donc, j'indiquerais un autre répertoire, par exemple placé à côté des autres, mais pas le répertoire parent commun à tous.

Pour PhpMyAdmin, tu peux passer par alias (configuration standard, d'ailleurs), donc tu peux mettre les fichiers où tu veux, mais une fois de plus, dans un endroit bien précis accessible que par cet alias.

Pour Zend, aucune idée, je ne connais pas. J'imagine que c'est également un alias, donc idem PhpMyAdmin.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 20h34   #6
Membre à l'essai
 
Inscription : mai 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 92
Points : 23
Points : 23
Ok j'ai pigé pour les VHOST.

Citation:
Donc, j'indiquerais un autre répertoire, par exemple placé à côté des autres, mais pas le répertoire parent commun à tous.
Oui donc en gros je crée un dossier vide dans /www et je fais pointer le DocumentRoot dessus. Et je gère tout le reste en VHOST ou en Alias.
J'aurais donc un truc du genre :

Code :
1
2
3
4
5
6
7
8
DocumentRoot "D:/website/www/empty"

<Directory "D:/website/www/empty">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
Mais que dois-je faire de ça :
Code :
1
2
3
4
5
6
7
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>
et ça :
Code :
1
2
3
4
5
6
<Directory "D:/Zend/Apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
Par rapport à mon arborescence ?

Donc pour PhpMyAdmin je vais un truc tout con du genre :
Code :
1
2
3
4
5
<Location /phpmyadmin>
  Order deny,allow
  Allow from all
</Location>
Alias /phpmyadmin "D:\Zend\Core\GUI\phpMyAdmin"
Et j'y accederai en local via http://localhost/phpmyadmin/ c'est bien ça ?
Par contre les Alias c'est bien sécurisé ? Impossible d'avoir accès à autre chose que phpmyadmin dans ce cas là ?

Merci beaucoup ton aide est précieuse

Benjamin.
Delprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2008, 09h44   #7
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
Pour le premier <Directory />, tu le laisses. C'est une sécurité supplémentaire pour dire que tout ton système est protégé par défaut.

Pour le second <Directory "D:/Zend/Apache2/cgi-bin">, je sais pas trop. Ca dépend du répertoire dans lequel tu as installé Zend. Il faut remplacer le répertoire indiqué par le répertoire cgi-bin de Zend, j'imagine. Sinon, le contenu me semble correct.

Pour phpMyAdmin, ça me semble bon, si ce n'est que je mettrais des / à la place des \ dans ton Alias. Faut voir ce qui est indiqué dans la doc d'install. L'alias sera protégé dans la mesure où effectivement, seuls les fichiers de D:\Zend\Core\GUI\phpMyAdmin seront accessibles par cet alias, et comme ce répertoire n'est pas dans le document root, y a pas de risque d'accéder aux fichiers de phpMyAdmin via une URL trafiquée.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2008, 19h18   #8
Membre à l'essai
 
Inscription : mai 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 92
Points : 23
Points : 23
Ok, merci pour tes précisions.

Dernière question (enfin, normalement), qu'est-ce qui peut faire que je ne puisse pas pinger le serveur via son IP alors que j'ai désactivé le pare-feu windows ? D'après mon-ip.org il n'y a pas non plus de proxy...

Merci encore.

Benjamin.
Delprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2008, 21h45   #9
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
C'est ton routeur : pour des raisons de sécurité, il se peut qu'il ne réponde pas au ping. Y a de plus en plus de serveurs comme ça pour se protéger notamment des attaques DoS ICMP. Mais c'est pas pour autant que ça ne marche pas
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 00h27   #10
Membre à l'essai
 
Inscription : mai 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 92
Points : 23
Points : 23
Ok

Alors pourquoi avec la config suivante :

Code :
1
2
3
4
5
6
7
8
9
10
Listen 80

Servername mon-ip-internet:80

<Location /ZendCore>
  Order deny,allow
  Allow from all
</Location>
Alias /ZendCore "D:/Zend/Core/GUI"
J'accède aux GUI via http://mon-ip-internet/ZendCore/ depuis le serveur mais pas depuis un pc distant ? Je suppose qu'il doit falloir faire une redirection du port 80 vers mon serveur ? (on me demande d'administrer le serveur, mais je ne suis pas l'administrateur réseau :p)

On trouve beaucoup de réponses sur le web qui indiquent d'activer le DMZ pour l'IP du serveur. Je ne fais pas de réseau pour 1 sous, mais il me semble que c'est pas tip top de faire ça et que ça exposerait grandement le serveur, me trompeuje ?
Delprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 10h10   #11
Membre à l'essai
 
Inscription : mai 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 92
Points : 23
Points : 23
Auto-réponse :

Il fallait bien forwarder le port 80 sur le serveur.

D'après l'administrateur réseau le DMZ est activé comme sur tous les serveurs mais seul le port 80 et ouvert. Le Serveur est protégé en amont.


Je poserai une ultime question, est-ce que je n'oublie rien ?

- VHOST
- DocumentRoot vers dossier contenant un index bateau.
- CGI
- Alias pour les GUI du serveur
- Stats
- Logs

Tiens d'ailleurs quelle est la meilleure méthode pour gérer les stats de chaque site ? Pour les logs je sais que c'est géré dans le paramétrage du VHOST, mais pour les stats ?

Merci encore.

Benjamin.
Delprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 12h28   #12
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
Je sais pas : c'est quoi les stats ? Comment tu les génères ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h16.


 
 
 
 
Partenaires

Hébergement Web