Est-il possible de rendre une partie d'un site sur IIS uniquement visible à partir de localhost?

StackOverflow https://stackoverflow.com/questions/270284

  •  06-07-2019
  •  | 
  •  

Question

Nous avons un serveur Web exécutant IIS. Nous aimerions peut-être lancer un blog partagé ou quelque chose pour garder une trace des informations. En raison de problèmes de sécurité, nous aimerions que cette partie ne soit visible que par localhost, de sorte que les utilisateurs doivent se déplacer à distance pour l'utiliser.

Donc, pour répéter ma question, une partie d’un site Web peut-elle être rendue visible uniquement à partir de localhost?

Était-ce utile?

La solution

Dans IIS6, vous pouvez afficher les propriétés du Web et cliquer sur l’onglet Sécurité du répertoire. Cliquez sur le bouton au milieu de l'onglet pour modifier les restrictions IP et domaine. Dans cet onglet, définissez tous les ordinateurs comme refusés, puis ajoutez une exception pour les adresses IP pour lesquelles vous souhaitez autoriser l'accès à ce site.

Je ne suis pas sûr de savoir comment configurer cela sur IIS7. J'ai cherché mais je ne l'ai pas trouvée. Si je le trouve, je modifierai cette réponse.

Modifier: Configuration de IIS7

  • Josh

Autres conseils

Pour ceux qui le font dans IIS 8 / Windows 2012

1) Dans Gestionnaire de serveur , accédez à Gérer, ajouter des rôles et des fonctionnalités , suivant, suivant (pour accéder à des rôles de serveur ), faites défiler jusqu'à Serveur Web (IIS) , développez cette ligne, puis développez Serveur Web , puis développez Sécurité . Assurez-vous que les restrictions IP et de domaine sont installées.

2) Dans Gestionnaire IIS , accédez au dossier que vous souhaitez protéger et cliquez dessus pour le sélectionner. Dans la vue Fonctionnalités de ce dossier, sélectionnez Restrictions IP et de domaine Dans Actions , choisissez Modifier les paramètres de fonctionnalité . Modifiez 'Accès pour les clients non spécifiés:' à 'Refuser' , puis OK.

3) Enfin, accédez à 'Ajouter une entrée autorisée' dans le menu Action . Saisissez l'adresse IP spécifique de votre serveur.

Désormais, seules les demandes provenant de votre serveur seront autorisées. Ou n'importe quel serveur qui partage cette adresse IP. Ainsi, dans un petit réseau, le bureau pourrait partager l'adresse IP entre tous les ordinateurs de ce bureau, afin que tous ces ordinateurs puissent accéder à ce dossier.

Enfin, rappelez-vous que si votre réseau a une adresse IP dynamique, si cette adresse IP change, vous exposerez le dossier administrateur de votre blog à la personne qui utilise cette adresse maintenant. De plus, tous les utilisateurs de cette nouvelle adresse IP perdront l'accès à votre dossier.

Si quelqu'un souhaite le faire sur la ligne de commande, cela semble fonctionner sous IIS 7 +

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='0',allowed='False']" /commit:apphost
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='127.0.0.1',allowed='True']" /commit:apphost

Référence

Au départ, je voulais faire cela dans web.config pour faciliter la distribution, et il semblait que ce qui suit pourrait fonctionner:

<security>
    <ipSecurity allowUnlisted="false">    <!-- this line blocks everybody, except those listed below -->                
        <clear/> <!-- removes all upstream restrictions -->
        <add ipAddress="127.0.0.1" allowed="true"/>    <!-- allow requests from the local machine -->
    </ipSecurity>
</security>

mais comme vous devez déverrouiller la fonction dans la configuration IIS centrale, il n’était aucun avantage à effectuer la modification directement à l’aide des premières commandes.

Vous pouvez également utiliser des liaisons au lieu de restrictions IP. Si vous modifiez les liaisons du site Web auquel vous souhaitez limiter l'accès, vous pouvez sélectionner l'adresse IP à laquelle le site est disponible. Si vous définissez l'adresse IP sur 127.0.0.1, le site ne répond que sur cette adresse IP, qui ne fonctionnera évidemment que localement sur la machine.

J'ai testé cela avec IIS 8.5.

En fonction de ce que vous voulez exactement si un utilisateur non autorisé essaie de le visiter.

Vous pouvez essayer de configurer la section spécifique en tant que répertoire virtuel, puis de refuser la vue aux utilisateurs anonymes. Cependant, ils seront invités à se connecter et s'ils le peuvent, ils pourront le voir.

À en juger par les options présentes dans IIS MMC, vous pouvez également n’avoir un répertoire virtuel accessible que par certaines plages IP. Vous pouvez bloquer tout le monde sauf 127.0.0.1. Je n'ai toutefois pas essayé cela.

Vous pouvez accorder ou refuser l'accès à un site ou à un dossier depuis certaines adresses IP vers un site ou un dossier. Dans IIS, accédez aux propriétés du site ou du dossier en question.

(1) Cliquez sur le lien "Diectory Security". Onglet

(2) Cliquez sur Modifier dans la section "Restriction d'adresse IP et de nom de domaine". cadre.

(3) Cliquez sur "Accès refusé". (Cela indique à IIS de bloquer toutes les adresses IP à l'exception de celles que vous avez répertoriées.)

(4) Cliquez sur "Ajouter ..."

.

(5) Cliquez sur "Ordinateur unique"

.

(6) Entrez 127.0.0.1 (l'adresse IP de localhost)

Notez qu'il est préférable d'utiliser une adresse IP ici (comme je l'ai décrit) plutôt qu'un nom de domaine car les domaines peuvent être facilement forgés à l'aide d'un fichier hosts.

Je suis d'accord avec les recommandations d'utilisation d'IIS "Sécurité du répertoire". bloquer toutes les adresses IP sauf 127.0.0.1 (localhost).

Cela étant dit, je me demande en quoi cette stratégie consistant à obliger les utilisateurs à se connecter à distance pourrait être plus sécurisée. Ne serait-il pas plus sûr (et beaucoup plus simple) d'utiliser les mécanismes d'authentification IIS standard plutôt que de gérer des rôles et des autorisations Windows sur le serveur?

Vous pouvez simplement ajouter ce .NET en haut de la page.

string MyWebServerName = currentContext.Request.ServerVariables["SERVER_NAME"];

if ( MyWebServerName == "127.0.0.1" || MyWebServerName == "localhost" )
{
  // the user is local 
}
else
{
  // the user is NOT local
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top