2015-03-04 14 views
8

Dove posso ottenere un elenco di ciò che fanno tutti i gestori HTTP IIS predefiniti? Ho bisogno di documentazione !! Ho letto alcuni blog che raccomandano la rimozione di dozzine di gestori HTTP inutilizzati per motivi di prestazioni e sicurezza.Rimozione di gestori HTTP inutilizzati per prestazioni e sicurezza migliori

E.g. La rimozione di TraceHandler-Integrated e TraceHandler-Integrated-4.0 è consigliata poiché in caso contrario la navigazione in /trace.axd causa un errore interno di 500 server anziché un 404 non trovato e non è necessario eseguire la traccia in un ambiente di produzione.

Alcuni dei gestori HTTP che un progetto GitHub (stato eliminato) consiglia di rimuovere dal tuo sito:

<system.webServer> 
    <handlers> 
    <remove name="TraceHandler-Integrated-4.0" /> 
    <remove name="TraceHandler-Integrated" /> 
    <remove name="AssemblyResourceLoader-Integrated-4.0" /> 
    <remove name="AssemblyResourceLoader-Integrated" /> 
    <remove name="WebAdminHandler-Integrated-4.0" /> 
    <remove name="WebAdminHandler-Integrated" /> 
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" /> 
    <remove name="svc-ISAPI-4.0_32bit" /> 
    <remove name="ScriptHandlerFactoryAppServices-Integrated-4.0" /> 
    <remove name="ScriptResourceIntegrated-4.0" /> 
    <remove name="svc-ISAPI-4.0_64bit" /> 
    <remove name="svc-Integrated-4.0" /> 
    <remove name="vbhtm-ISAPI-4.0_32bit" /> 
    <remove name="vbhtm-ISAPI-4.0_64bit" /> 
    <remove name="vbhtm-Integrated-4.0" /> 
    <remove name="vbhtml-ISAPI-4.0_32bit" /> 
    <remove name="vbhtml-ISAPI-4.0_64bit" /> 
    <remove name="vbhtml-Integrated-4.0" /> 
    <remove name="xamlx-ISAPI-4.0_32bit" /> 
    <remove name="xamlx-ISAPI-4.0_64bit" /> 
    <remove name="xamlx-Integrated-4.0" /> 
    <remove name="xoml-ISAPI-4.0_32bit" /> 
    <remove name="xoml-ISAPI-4.0_64bit" /> 
    <remove name="xoml-Integrated-4.0" /> 
    <remove name="HttpRemotingHandlerFactory-rem-Integrated-4.0" /> 
    <remove name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" /> 
    <remove name="rules-ISAPI-4.0_32bit" /> 
    <remove name="rules-Integrated-4.0" /> 
    <remove name="HttpRemotingHandlerFactory-soap-Integrated" /> 
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" /> 
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" /> 
    <remove name="HttpRemotingHandlerFactory-soap-Integrated-4.0" /> 
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" /> 
    <remove name="rules-ISAPI-4.0_64bit" /> 
    <remove name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" /> 
    <remove name="HttpRemotingHandlerFactory-rem-Integrated" /> 
    <remove name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" /> 
    <remove name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" /> 
    <remove name="AXD-ISAPI-2.0-64" /> 
    <remove name="cshtml-ISAPI-4.0_64bit" /> 
    <remove name="cshtml-Integrated-4.0" /> 
    <remove name="cshtm-Integrated-4.0" /> 
    <remove name="cshtml-ISAPI-4.0_32bit" /> 
    <remove name="cshtm-ISAPI-4.0_64bit" /> 
    <remove name="cshtm-ISAPI-4.0_32bit" /> 
    <remove name="AXD-ISAPI-4.0_64bit" /> 
    <remove name="AXD-ISAPI-2.0" /> 
    <remove name="AXD-ISAPI-4.0_32bit" /> 
    <remove name="PageHandlerFactory-ISAPI-2.0-64" /> 
    <remove name="PageHandlerFactory-ISAPI-2.0" /> 
    <remove name="PageHandlerFactory-ISAPI-4.0_64bit" /> 
    <remove name="PageHandlerFactory-ISAPI-4.0_32bit" /> 
    <remove name="aspq-ISAPI-4.0_64bit" /> 
    <remove name="aspq-Integrated-4.0" /> 
    <remove name="WebServiceHandlerFactory-ISAPI-2.0" /> 
    <remove name="aspq-ISAPI-4.0_32bit" /> 
    <remove name="WebServiceHandlerFactory-Integrated-4.0" /> 
    <remove name="WebServiceHandlerFactory-Integrated" /> 
    <remove name="SimpleHandlerFactory-ISAPI-4.0_64bit" /> 
    <remove name="SimpleHandlerFactory-Integrated-4.0" /> 
    <remove name="SimpleHandlerFactory-Integrated" /> 
    <remove name="SimpleHandlerFactory-ISAPI-2.0" /> 
    <remove name="SimpleHandlerFactory-ISAPI-2.0-64" /> 
    <remove name="WebServiceHandlerFactory-ISAPI-4.0_32bit" /> 
    <remove name="WebServiceHandlerFactory-ISAPI-4.0_64bit" /> 
    <remove name="WebServiceHandlerFactory-ISAPI-2.0-64" /> 
    <remove name="SimpleHandlerFactory-ISAPI-4.0_32bit" /> 
    <remove name="ISAPI-dll" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
    <remove name="OPTIONSVerbHandler" /> 
    <remove name="TRACEVerbHandler" /> 
    </handlers> 
</system.webServer> 
+0

Sembra che non ci sia una documentazione completa su tutti i gestori là fuori (ancora). Suggerisco di non rimuovere tutti i gestori sopra, che potrebbero aprire più falle di sicurezza di quanto non risolva. Vuoi davvero capire cosa fa ogni gestore e se ne hai bisogno. –

+0

Sono assolutamente d'accordo, quindi questa domanda. Sto cercando di migliorare il mio progetto ASP.NET MVC Boilerplate https://visualstudiogallery.msdn.microsoft.com/6cf50a48-fc1e-4eaf-9e82-0b2a6705ca7d –

+0

*** 'https: //github.com/pingfu/notes /blob/master/Security%20-%20IIS%20-%20Hardening%20the%20web.config.md'*** ** non trovato ** – Kiquenet

risposta

0

Anwer a questo

Dove posso trovare un elenco di che tutti dei gestori HTTP IIS di default fanno?

Aprire IIS, CMD -> inetmgr, quindi fare clic su mappature del gestore, vedere di seguito screenshot.

enter image description here

Click che, vi mostrerà tutti i gestori HTTP abilitato di default per il server web.

enter image description here

Nota: Quando si seleziona una directory virtuale e quindi fare questo processo, vale a dire fare clic su mapping di gestore, e rimuovere uno di mappatura, si aggiungerà quella linea nel web.config.

E.g. Ho rimosso aspq-ISAPI-4.0_64bit, quindi ha cambiato web.config per quella directory virtuale, cioè ha aggiunto la seguente riga a web.config.

<remove name="aspq-ISAPI-4.0_64bit" /> sotto system.webServer\handlers.

Aggiornamento: Questi gestori vengono richiamati quando viene inoltrata una richiesta di tipo di file particolare, fino a che non rimane inattiva. Quindi non ci saranno problemi di prestazioni per questi gestori.

Esempio: che hai removing handler for *.axd will improve security, la mia risposta a questa, alcune DLL potrebbero aver bisogno di quei file per il rendering di js e css, e se lo rimuovi, non funzionerà. Per esempio. - HTTP Handler cannot find axd file in nested web application folder: Telerik RadScriptManager cannot find WebResource.axd in ~/admin/ folder

+0

Questo mi dice dove posso ottenere un elenco di essi ma non quale sia lo scopo di ciascuno di questi gestori HTTP. –

+0

Penso che tu abbia fatto solo questa domanda, ho fatto del mio meglio per rispondere a questa domanda, ma posso rispondere a quella che mi hai chiesto, scopo di ogni gestore di gestire quella richiesta per quel particolare tipo di file. –

12

Se si vuole veramente un insieme minimo di mapping di gestore, vi suggerisco di iniziare pulita, nel web.config rimuovono tutto gestori e basta usare la StaticFile uno:

<system.webServer> 
    <handlers> 
     <clear /> 
     <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> 
    </handlers> 
</system.webServer> 

Ora aggiungere tutti i gestori di cui avete bisogno nel, solo per il numero di bit e la modalità che si sta eseguendo in.

Per un progetto MVC di base può essere sufficiente per aggiungere

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" /> 

Cosa tutti i gestori fanno?

non ho potuto trovare alcuna documentazione sia, ecco il mio tentativo:

I mapping di gestore sono definiti in %SystemRoot%\System32\inetsrv\config\applicationHost.config - system.webServer/handlers

Nel mio caso ci sono stati 87 mappature.

50 di questi sono modules="IsapiModule" scriptProcessor="...aspnet_isapi.dll" per ASP.NET. Questi coprono tutte le varie estensioni di asp.net e possono esistere per le versioni CLR 2.0 e 4.0 e per 32 bit e 64 bit. Molti di questi sono per la modalità classica.

Di solito gestire le seguenti estensioni:

*.  = ExtensionlessUrlHandler-ISAPI 
*.ashx = SimpleHandlerFactory-ISAPI 
*.asmx = WebServiceHandlerFactory-ISAPI 
*.aspq = aspq-ISAPI 
*.aspx = PageHandlerFactory 
*.axd = AXD-ISAPI 
*.cshtm = cshtm-ISAPI 
*.cshtml = cshtml-ISAPI 
*.rem = HttpRemotingHandlerFactory-rem-ISAPI 
*.rules = rules-ISAPI 
*.soap = HttpRemotingHandlerFactory-soap 
*.svc = svc-ISAPI 
*.vbhtm = vbhtm-ISAPI 
*.vbhtml = vbhtml-ISAPI 
*.xamlx = xamlx-ISAPI 
*.xoml = xoml-ISAPI 

Se il progetto non fa uso di determinate estensioni, è possibile rimuovere questi gestori.

La maggior parte delle mappature di gestori ha un preCondition come si applica in ApplicationPools a 32 bit o in Modalità classica. Se si esegue sempre la modalità integrata 64Big, è possibile rimuovere tutte le mappature di modalità classica e gestore a 32 bit.

Se si guarda * .cshtml per un file di visualizzazione Razor, si troveranno tre mapping, due per ClassicMode in 32/64 bit che puntano ai moduli ISAPI di ASP.NET, ma il terzo si applica solo in modalità integrata e esegue il mapping a HttpForbiddenHandler, poiché il routing MVC funziona in modo diverso in modalità integrata e non si desidera consentire l'accesso per visualizzare direttamente i file.

Ci possono essere IsapiModules per asp classico o CGI, come il mapping ASP.NET ci sono lì per gestire le richieste di file con determinate estensioni.

Il secondo più grande gruppo sono i type="System. gestori, consente di guardare a loro:

System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory

Maniglie *.rem e *.soap file in modalità integrata. Può essere rimosso se non si utilizza il servizio remoto.

System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation

gestisce alcune richieste WCF con *.rules,*.xoml,*.svc estensioni.

System.Web.Handlers.AssemblyResourceLoader

Maniglie WebResource.axd richieste, questi possono essere utilizzati in WebForms, ma di solito non nei progetti MVC.

System.Web.Handlers.ScriptResourceHandler, System.Web.Estensioni

Per la gestione di ScriptResource.axd che fornisce le risorse JavaScript e CSS in WebForms.

System.Web.Handlers.TraceHandler

Handler per trace.axd per visualizzare ASP.NET informazioni di traccia. Su un sito di produzione, si desidera rimuovere questo gestore.

System.Web.Handlers.TransferRequestHandler

Utilizzato per gestire le richieste senza estensione in modalità integrata. Questo inoltra la richiesta al motore di routing per decidere come gestire queste richieste. More Info

System.Web.Handlers.WebAdminHandler

Maniglie WebAdmin.axd per visualizzare la ASP.NET Website Administration Toolkit, è possibile rimuovere questo se non si utilizza questa funzione incorporata.

System.Web.HttpForbiddenHandler

ci consente di impedire l'accesso a tutti i file con determinate estensioni. Tuttavia restituisce uno stato HTTP 500 e in effetti genera un'eccezione System.Web.HttpException sul server. Secondo me ci sono modi migliori per blog su determinate estensioni come IIS Request Filtering.

System.Web.HttpMethodNotAllowedHandler

Penso che questo non è più utilizzato in IIS moderna, restituisce lo stato 405 HTTP e anche tiri liberi e HttpException

System.Web.HttpNotFoundHandler

Inoltre, non più nella mia attuale configurazione. Genera un'eccezione HTTP 404.

System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions

Maniglie *.asmx e *_AppService.axd per supportare le chiamate di servizio Web tramite la tecnologia AJAX.

System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services

occupa anche *.asmx richieste di servizi web in modalità integrata per DOT.NET 2

System.Web.StaticFileHandler

Restituisce un file statico, non più utilizzato?

System.Web.UI.PageHandlerFactory

Maniglie pagine WebForm ASP.NET .aspx in modalità integrata.

System.Web.UI.SimpleHandlerFactory

Maniglie ASP.NET gestori personalizzati .ashx in modalità integrata.

System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting

Maniglie servizi Windows Workflow Foundation .xamlx in modalità integrata.


più gestori:

moduli = "StaticFileModule, DefaultDocumentModule, DirectoryListingModule"

Questo è di solito l'ultima mappatura per gestire qualsiasi richiesta che non è stato trattato da una delle precedenti maniglie path="*" verb="*". In realtà utilizza tre diversi moduli. Lo StaticFileMode cerca un file fisico che corrisponda all'URL richiesto, se non trovato, DefaultDocumentModule cerca un documento predefinito nella stessa cartella dell'URL richiesto e se anche questo non viene trovato, DirectoryListingModule può visualizzare il contenuto della directory se abilitato.

moduli = "ProtocolSupportModule"

Questo gestisce tutte le richieste per i verbi HTTP TRACE e OPTIONS, se si rimuove questa mappatura, tutte le richieste di traccia e opzioni restituirà un "405 Metodo non consentito"

+0

Non posso credere che non ci sia documentazione da Microsoft su questo argomento. Di solito sono abbastanza buoni con la documentazione. Purtroppo, sembra che questa sia la migliore risposta che otterremo per ora. –

Problemi correlati