2015-03-04 11 views
8

Gdzie mogę uzyskać listę wszystkich domyślnych procedur obsługi HTTP IIS? Potrzebuję dokumentacji! Przeczytałem kilka blogów, które zalecają usunięcie wielu nieużywanych procedur obsługi HTTP ze względów wydajnościowych i bezpieczeństwa.Usuwanie nieużywanych procedur obsługi HTTP w celu zwiększenia wydajności i bezpieczeństwa

E.g. Zalecane jest usunięcie TraceHandler-Integrated i TraceHandler-Integrated-4.0, ponieważ w przeciwnym razie nawigacja do /trace.axd powoduje błąd 500 serwera wewnętrznego zamiast 404 Not Found i nie powinieneś mieć śledzenia w środowisku produkcyjnym.

Niektóre z obsługą HTTP że projekt GitHub (Teraz Usunięto) zaleca usunięcie ze swojej strony:

<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

Wygląda na to, że nie ma pełnej dokumentacji na temat wszystkich handlerów (jeszcze). Sugeruję, aby nie usuwać wszystkich powyższych programów obsługi, które mogą spowodować więcej luk w zabezpieczeniach niż to naprawia. Naprawdę chcesz zrozumieć, co robi każdy handler i czy tego potrzebujesz. –

+0

Całkowicie się zgadzam, stąd to pytanie. Próbuję ulepszyć mój projekt płyty 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'*** ** nie znaleziono ** – Kiquenet

Odpowiedz

0

anwer do tego

Gdzie mogę znaleźć listę, że wszystkie domyślnych procedur obsługi HTTP IIS?

Otwórz IIS, CMD -> inetmgr, a następnie kliknij mapowania programu obsługi, zobacz poniżej zrzut ekranu.

enter image description here

Kliknij, że pokaże wszystkie domyślne włączone programy obsługi HTTP dla tego serwera WWW.

enter image description here

Uwaga: Po wybraniu katalogu wirtualnego, a następnie zrobić ten proces, to kliknij mapowania procedur obsługi i usuń jedną z mapowaniem, doda tę linię w pliku web.config.

E.g. Usunąłem aspq-ISAPI-4.0_64bit, więc zmienił on web.config dla tego katalogu wirtualnego, tj. Dodał następującą linię do pliku web.config.

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

Aktualizacja: Ta procedura obsługi jest wywoływana, gdy przychodzi określone żądanie typu pliku, do tego czasu pozostaje bezczynna. Tak więc nie wystąpią żadne problemy z wydajnością dla tych procedur obsługi.

Przykład, że masz removing handler for *.axd will improve security, moja odpowiedź na to, niektóre DLL może potrzebować tych plików do renderowania js i css, a jeśli to usuniesz, to nie zadziała. Na przykład. - HTTP Handler cannot find axd file in nested web application folder: Telerik RadScriptManager cannot find WebResource.axd in ~/admin/ folder

+0

To mówi mi, gdzie mogę uzyskać listę z nich, ale nie to, co jest celem każdego z tych procedur obsługi HTTP. –

+0

Myślę, że zadałeś to pytanie tylko, starałem się jak najlepiej odpowiedzieć na to pytanie, ale mogę odpowiedzieć na pytanie, które zadałeś - cel każdej obsługi do obsługi tego żądania dla tego konkretnego typu pliku. –

12

Jeśli naprawdę chcesz minimalny zestaw odwzorowań procedur obsługi, proponuję zacząć czyste, w web.config usunąć wszystko Wózki i wystarczy użyć StaticFile one:

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

teraz dodać wszystkie programy obsługi trzeba z powrotem, tylko dla bitness i trybu jesteś uruchomiony w.

Na podstawowym projektem MVC może być wystarczający, aby dodać

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

Czego wszyscy koparki zrobić?

nie mogłem znaleźć żadnej dokumentacji albo, więc oto moja próba:

odwzorowania Wózek określa %SystemRoot%\System32\inetsrv\config\applicationHost.config - system.webServer/handlers

W moim przypadku było 87 odwzorowania.

50 z nich to modules="IsapiModule" scriptProcessor="...aspnet_isapi.dll" dla ASP.NET. Obejmują one wszystkie różne rozszerzenia asp.net i mogą istnieć dla wersji CLR 2.0 i 4.0 oraz dla wersji 32-bitowej i 64-bitowej. Większość z nich dotyczy trybu klasycznego.

Zwykle obsługiwać następujące rozszerzenia:

*.  = 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 

Jeśli projekt nie korzysta z niektórych rozszerzeń, można usunąć te programy obsługi.

Większość odwzorowań obsługi ma wartość preCondition, podobnie jak w 32-bitowych aplikacjach lub w trybie klasycznym. Jeśli kiedykolwiek uruchomisz tylko 64Big tryb zintegrowany, możesz usunąć wszystkie mapowania klasyczne i 32-bitowe procedury obsługi.

Jeśli spojrzymy na * .cshtml dla pliku podglądu maszynki do golenia, znajdziemy trzy mapowania, dwa dla klasy ClassicMode w 32/64 bitach, które wskazują na moduły ISAPI ASP.NET, ale trzecia dotyczy tylko trybu zintegrowanego i mapuje do HttpForbiddenHandler, ponieważ routing MVC działa inaczej w trybie zintegrowanym i nigdy nie chcesz zezwolić na bezpośredni dostęp do plików widoku.

Może istnieć IsapiModules dla klasycznego asp lub CGI, podobnie jak mapowanie ASP.NET są tam, aby obsłużyć żądania dotyczące plików z pewnymi rozszerzeniami.

Drugą największą grupę stanowią type="System. koparki, pozwala spojrzeć na nich:

System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory

Uchwyty *.rem i *.soap plików w trybie zintegrowanym. Może zostać usunięty, jeśli nie używasz zdalnego dostępu.

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

Uchwyty pewne żądania WCF z *.rules,*.xoml,*.svc rozszerzeń.

System.Web.Handlers.AssemblyResourceLoader

Uchwyty WebResource.axd wnioski te mogą być wykorzystywane w WebForms, ale zazwyczaj nie w projekty MVC.

System.Web.Handlers.ScriptResourceHandler, System.Web.Rozszerzenia

Do obsługi ScriptResource.axd, która udostępnia zasoby JavaScript i CSS w WebForms.

System.Web.Handlers.TraceHandler

Handler dla trace.axd aby wyświetlić informacje śledzenia ASP.NET. W witrynie produkcyjnej chcesz usunąć ten moduł obsługi.

System.Web.Handlers.TransferRequestHandler

używany do obsługi bez rozszerzeń żądania w trybie zintegrowanym. Przekazuje to żądanie do silnika routingu, aby zdecydować, w jaki sposób obsłużyć te żądania. More Info

System.Web.Handlers.WebAdminHandler

Uchwyty WebAdmin.axd aby wyświetlić ASP.NET Website Administration Toolkit można usunąć tę opcję, jeśli nie korzystają z tego wbudowaną funkcję.

System.Web.HttpForbiddenHandler

pozwala, aby uniemożliwić dostęp do plików z określonymi rozszerzeniami. Jednak zwraca stan HTTP 500 i faktycznie zgłasza wyjątek System.Web.HttpException na serwerze. Moim zdaniem istnieją lepsze sposoby na blogowanie niektórych rozszerzeń, takich jak IIS Request Filtering.

System.Web.HttpMethodNotAllowedHandler

myślę, że ten nie jest już wykorzystywana w nowoczesnych IIS, to zwraca stan 405 HTTP, a także rzuty i HttpException

System.Web.HttpNotFoundHandler

Również nie w mojej obecnej konfiguracji. Zgłasza wyjątek HTTP 404.

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

Uchwyty *.asmx i *_AppService.axd wspieranie połączeń usług internetowych za pośrednictwem AJAX.

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

również uchwyty *.asmx żądań usług internetowych w trybie zintegrowanym dla DOT.NET 2

System.Web.StaticFileHandler

Powraca plik statyczny, nie jest już używany?

System.Web.UI.PageHandlerFactory

Uchwyty ASP.NET stron Webform .aspx w trybie zintegrowanym.

System.Web.UI.SimpleHandlerFactory

Uchwyty ASP.NET Custom Wozy .ashx w trybie zintegrowanym.

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

Uchwyty usługi Windows Workflow Foundation .xamlx w trybie zintegrowanym.


więcej teleskopowe:

moduły = "StaticFileModule, DefaultDocumentModule, DirectoryListingModule"

Jest to zazwyczaj bardzo ostatnio mapowanie obsłużyć wszystkie żądania, które nie zostało obsługiwane przez któregokolwiek z poprzednich obsługuje path="*" verb="*". W rzeczywistości używa trzech różnych modułów. Plik StaticFileMode szuka fizycznego pliku pasującego do żądanego adresu URL, jeśli nie zostanie znaleziony, DefaultDocumentModule szuka dokumentu domyślnego w tym samym folderze co żądany adres URL, a jeśli nie zostanie znaleziony, DirectoryListingModule może wyświetlić zawartość katalogu, jeśli włączony.

moduły = „ProtocolSupportModule”

ten obsługuje wszystkie żądania czasowników HTTP TRACE i OPTIONS, jeśli usunąć to mapowanie, wszystkie żądania ślad i opcje zwróci „405 Niedozwolona metoda”

+0

Nie mogę uwierzyć, że nie ma dokumentacji Microsoft na ten temat. Zwykle są dość dobre z dokumentacją. Niestety, wygląda na to, że jest to najlepsza odpowiedź, jaką otrzymamy na razie. –

Powiązane problemy