È possibile rendere parte di un sito su IIS visualizzabile solo da localhost?

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

  •  06-07-2019
  •  | 
  •  

Domanda

Abbiamo un server web che esegue IIS. Vorremmo pubblicare forse un blog condiviso o qualcosa per tenere traccia delle informazioni. A causa di problemi di sicurezza, vorremmo che quella parte fosse visualizzabile solo da localhost in modo che le persone debbano connettersi in remoto per usarlo.

Quindi, per ripetere la mia domanda, una parte di un sito Web può essere visualizzata solo da localhost?

È stato utile?

Soluzione

In IIS6 è possibile visualizzare le proprietà per il Web e fare clic sulla scheda Protezione directory. Fare clic sul pulsante al centro della scheda per modificare le restrizioni IP e Dominio. In questa scheda impostare tutti i computer come negati, quindi aggiungere un'eccezione per gli IP a cui si desidera consentire l'accesso a questo sito.

Non sono sicuro di come configurarlo su IIS7. Ho guardato ma non sono riuscito a trovarlo, se lo trovo modificherò questa risposta.

Modifica: Configurazione di IIS7

  • Josh

Altri suggerimenti

Per qualcuno che lo fa in IIS 8 / Windows 2012

1) In Server Manager , vai a Gestisci, Aggiungi ruoli e funzionalità , Avanti, Avanti (vai a Ruoli server ), scorri fino a Web Server (IIS) , espandi quella riga, quindi Web Server e infine Sicurezza . Assicurati che Restrizioni IP e dominio siano installate.

2) In Gestione IIS , scorrere fino alla cartella che si desidera proteggere e fare clic con il tasto sinistro del mouse per selezionarla. Nella Visualizzazione funzionalità di quella cartella seleziona Restrizioni IP e dominio In Azioni scegli Modifica impostazioni funzionalità . Modifica 'Accesso per client non specificati:' in 'Nega' quindi OK.

3) Infine vai su 'Aggiungi consenti immissione' nel menu Azione . Digita l'indirizzo IP specifico del tuo server.

Ora sarà consentito l'accesso solo alle richieste provenienti dal tuo server. O qualsiasi server che condivide quell'indirizzo IP. Quindi, in una piccola rete, l'ufficio potrebbe condividere l'indirizzo IP tra tutti i PC in quegli uffici, così tutti quei PC potrebbero accedere a quella cartella.

Ultimo ma non meno importante è ricordare che se la tua rete ha un indirizzo IP dinamico, quindi se quell'IP cambia, esporrai la cartella di amministrazione del tuo blog a chiunque stia usando quell'IP ora. Inoltre, tutti quelli su quel nuovo indirizzo IP perderanno l'accesso alla tua cartella ...

Se qualcuno desidera farlo sulla riga di comando, questo sembra funzionare su 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

Riferimento

Inizialmente volevo farlo in web.config per facilitare la distribuzione, e sembrava che potesse funzionare il seguente:

<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>

ma poiché è necessario sbloccare la funzione nella configurazione IIS centrale, non è stato comunque vantaggioso apportare la modifica direttamente utilizzando i primi comandi.

Puoi anche usare i bind invece delle restrizioni IP. Se si modificano i binding per il sito Web a cui si desidera limitare l'accesso, è possibile selezionare a quale indirizzo IP è disponibile il sito. Se si imposta l'indirizzo IP su 127.0.0.1, il sito risponde solo a questo indirizzo IP e questo indirizzo IP funzionerà ovviamente solo localmente sulla macchina.

Ho provato questo usando IIS 8.5.

Dipende esattamente da cosa vuoi che accada se un utente non autorizzato prova a visitarlo.

Potresti provare a configurare la sezione specifica come directory virtuale, quindi negare la visualizzazione agli utenti anonimi. Tuttavia, verrà richiesto loro l'accesso e, se possono accedere, potrebbero vederlo.

A giudicare dalle opzioni presenti in IIS MMC, puoi anche avere una directory virtuale accessibile solo da determinati intervalli IP. Potresti bloccare tutti tranne 127.0.0.1. Non ho provato questo, tuttavia.

È possibile concedere o negare l'accesso a un sito o una cartella da determinati IP a un sito o una cartella. In IIS, vai nelle proprietà del sito o della cartella in questione.

(1) Fai clic su " Diectory Security " Tab

(2) Fai clic su Modifica in " Indirizzo IP e Limitazione nome dominio " telaio.

(3) Fai clic su " Accesso negato " (Questo dice a IIS di bloccare ogni IP eccetto quelli che elenchi)

(4) Fai clic su " Aggiungi ... "

(5) Fai clic su " Single Computer "

(6) Immettere 127.0.0.1 (l'IP di localhost)

Nota che è meglio usare un IP qui (come ho descritto) piuttosto che un nome di dominio perché i domini possono essere facilmente falsificati usando un file hosts.

Accetto le raccomandazioni per utilizzare IIS "Sicurezza directory" per bloccare tutti gli indirizzi IP tranne 127.0.0.1 (localhost).

Detto questo, mi chiedo come questa strategia di richiedere agli utenti di accedere in remoto possa essere più sicura. Non sarebbe più sicuro (oltre che molto più semplice) utilizzare meccanismi di autenticazione IIS standard piuttosto che dover gestire ruoli e autorizzazioni di Windows sul computer server?

Puoi semplicemente aggiungere questo .NET nella parte superiore della pagina.

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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top