Rendre apache uniquement accessible via 127.0.0.1, est-ce possible?


19

J'ai configuré mon serveur Apache et le PHP / MySQL fonctionne bien!

Mais le problème est, comment puis-je garder cela privé, car il s'agit d'un serveur de développement uniquement ? La seule raison de garder le contenu privé est que si un script a mal tourné, je ne veux pas que des erreurs Apache s'affichent s'il devient un site public (et le fait que d'autres partagent également le même réseau!), Et je suis moins susceptibles d'utiliser mon PC comme hébergeur - je suis plus susceptible de descendre en utilisant la route du fournisseur d'hébergement Web pour un site réel réel.

Actuellement, je peux y accéder de trois manières:

  • http: // localhost (ou http://127.0.0.1 , l'autre moyen et l'adresse IP de localhost mais l'un ou l'autre est acceptable avec moi!)

  • http 192.168.0.1 (IP de mon routeur)

  • http pc-name-here (nom de mon PC, cela varie évidemment entre les PC Windows!)

[note, impossible de publier des liens, donc pour les deux autres, vous devrez insérer le signe deux-points / avant comme dans le premier].

Cependant, je veux seulement y accéder via le premier. Il écoute sur le port 80 (et je ne veux pas changer cela). N'est-ce pas possible, ou je me trompe? J'en connais un peu plus sur PHP / webdesign que sur le côté réseau, c'est donc une première pour moi!

Fondamentalement, je veux qu'il soit uniquement accessible via localhost sur cette machine, et non l'adresse IP externe, ou 192.168.0.1.

Aurais-je besoin de modifier httpd.conf et d'utiliser le refus sur chaque site de banc d'essai, ou existe-t-il une autre solution?

Exemple:

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    order allow,deny
    allow from 127.0.0.1
            deny from 192.168.0.1
            deny from my-pc-name
</Directory>
  • c'est un exemple mais je ne sais pas ce qui est bien ou mal ici!

Mon système d'exploitation est Windows 7 Ultimate.

J'ai jeté un coup d'œil sur le net, mais certains me semblaient un peu techniques.

Que recommanderais-tu?

Réponses:


34

La manière la plus simple de le faire consiste à utiliser la Listendirective. Par défaut, il y a une ligne dans notre httpd.conf qui lit:

Listen *:80

Cela signifie qu'il répondra aux requêtes ro sur le port 80 sur toutes les adresses réseau de votre ordinateur. Le changer en:

Listen 127.0.0.1:80

Dit à apache que de ne répondre qu'aux requêtes sur l'adaptateur local, ignorant ainsi toute autre chose.


12

L'option d'écoute est probablement la meilleure, mais tout comme pour info, vous pouvez le faire en utilisant allow / deny comme ceci

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

Order deny,allowindique à Apache de "Refuser toutes les demandes sauf autorisation spécifique" ( Order allow,denyc'est le contraire, IE autorise toutes les demandes sauf si elles sont spécifiquement bloquées)
Deny from allfait la même chose Order deny,allowen ce qu'il bloquera toutes les demandes de toutes les adresses IP à moins que vous ne les ouvriez spécifiquement. Il semble être une pratique générale d'utiliser les deux Order deny,allow, Deny from allmais je ne suis pas sûr à 100% pourquoi, quand ils font tous les deux la même chose,
Allow from 127.0.0.1dit "Autoriser toutes les demandes depuis 127.0.0.1". 127.0.0.1 sera mappé sur localhost afin que vous puissiez utiliser http://127.0.0.1/ ou http: // localhost / et il sera autorisé

Cela servira une erreur 403 (interdite) à toute personne qui demande le site non sur localhost

Quelques autres trucs utiles;
Allow from 192.168.0.permettra la demande de n'importe qui sur votre réseau (à condition que votre réseau soit 192.168.0.0-192.168.0.255) Les
règles d' autorisation / refus sont traitées dans l'ordre, donc

Deny from 192.168.0.2
Allow from 192.168.0.2

permettrait les demandes et

Allow from 192.168.0.2
Deny from 192.168.0.2

refuserait les demandes de 192.168.0.2

Donc

Deny from 192.168.0.2
Allow from all

Autoriserait les demandes de 192.168.0.2, même si elles avaient été spécifiquement refusées.

Vous pouvez également utiliser les règles Autoriser / Refuser dans les fichiers .htaccess ou par répertoire


Il s'agit bien de "Ordre refuser, autoriser", et non "Ordre autoriser, refuser". Une petite erreur fréquente que les gens font constamment.
Scott Chu

3

J'ai apporté des modifications à ports.conf dans / etc / apache2 afin que chaque référence à Listen to a port n'écoute que localhost. Aucun autre fichier ne semble avoir de commande listen. Après le redémarrage d'apache, ces modifications semblent avoir l'effet souhaité.

/etc/apache2/ports.conf

NameVirtualHost *:80
########################## Listen 80
Listen 127.0.0.1:80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
###############################Listen 443
Listen 127.0.0.1:443
</IfModule>

<IfModule mod_gnutls.c>
##################################Listen 443
Listen 127.0.0.1:443
</IfModule>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.