Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

웹서버 정보 노출 방지

4,859 views

Published on

HTTP응답에 포함되는 웹 서버(IIS) 정보를 제거하는 방법을 정리했다.
UrlScan 툴에 대한 내용도 포함하고 있다.

Published in: Software
  • Be the first to comment

웹서버 정보 노출 방지

  1. 1. 웹 서버 정보 노출 방지 2015. 10.13 기술지원 황인균 UrlScan 유의사항
  2. 2. 2 보안 요구사항 TTP 응답에는 아래 박스처럼 HTTP 헤더에 서버 환경에 대한 정보를 포함하고 있는 항목들이 있다. 요구사항은 보안과 관련된 이 헤더 항 목들을 제거하라는 것. 제거 대상 헤더 : Server, X-ASPNet-Version, X-Powered-By, X-AspNetMvc-Version
  3. 3. 3 첨부) HTTP응답 헤더 제거하기 ■ IIS6.0 http://www.4guysfromrolla.com/articles/120209-1.aspx 헤더 例 방법 Server Server: Microsoft-IIS/6.0 UrlScan 툴 사용 http://aspdotnet.tistory.com/1282 1) UrlScan 인스톨 2) Global Filter에서 제거(*) 3) IIS관리자 > 사이트 > “ISAPI 필터” 3.1) 필터 추가 "UrlScan 3.1 - C:WindowsSystem32inetsrvurlscanurlscan.dll“ 3.2) IIS 7.x 경우 C:WindowsSystem32inetsrvconfigapplicationHost.config 수정 preCondition="bitness64" preCondition="bitness32" 3.3) UrlScan.ini 설정 - RemoveServerHeader=1 - AllowDotInPath=1 X-Powered-By X-Powered-By: ASP.NET 1) IIS 관리자 > 사이트 속성 > HTTP Headers에서 제거 2) 또는 web.config 수정 <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> </system.webServer> X-AspNet-Version X-AspNet-Version: 2.0.50727 <httpRuntime enableVersionHeader="false" /> X-AspNetMvc- Version X-AspNetMvc-Version: 1.0 * ASP.NET MVC 사용하는 경우 추가됨 Application_Start 이벤트 핸들러에 아래 코드 추가 MvcHandler.DisableMvcResponseHeader = true; HTTP 응답 헤더에서 불필요한 값을 제거하는 방법은 “IIS 버전별, 그리고 문제 헤더별로 제거하는 방법이 다르다. (*) Global Filter에서 제거 – “첨부) UrlScan 인스톨 유의사항” 참조
  4. 4. 4 첨부) HTTP응답 헤더 제거하기 ■ IIS7.x 클래식 모드 - 앞에서와 같은 방식으로 제거 ■ IIS7.x 통합 모드 HTTP 모듈을 사용하면 one point에서 관리 가능 1) 직접 제작 가능( 아래 코드 참조) https://blogs.technet.microsoft.com/stefan_gossner/2008/03/12/iis-7-how-to-send-a-custom-server-http-header/ 2) 이미 만들어진 HTTP 모듈도 제공한다. https://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85 3) URLRewrite 유틸을 사용할 수도 있다. http://blogs.msdn.com/b/varunm/archive/2013/04/23/remove-unwanted-http-response-headers.aspx /// <summary> /// IIS7.0 이상, Integration 모드에서만 사용가능 /// </summary> public class HttpHeaderModule : System.Web.IHttpModule { public void Init(HttpApplication context) { context.PreSendRequestHeaders += OnPreSendRequestHeaders; // 이 이벤트는 IIS7.0 통합 모드에서만 발생 } void OnPreSendRequestHeaders(object sender, EventArgs e) { HttpContext.Current.Response.Headers.Remove("Server"); HttpContext.Current.Response.Headers.Remove("X-Powered-By"); HttpContext.Current.Response.Headers.Remove("X-AspNet-Version"); HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version"); } public void Dispose() { } }
  5. 5. 5 첨부) UrlScan ISAPI 필터 기능 ■ UrlScan 기능 - 파일 설정( urlscan.ini)을 통해서 웹 서버로의 요청과 응답에 대한 규칙을 정의해서 제어할 수 있음. %WINDIR%System32InetsrvURLscan 응답 제거 예 ) RemoveServerHeader = 1 설정을 하면, Server 헤더는 HTTP 응답에 포함되지 않음. 요청 체크 예 ) AllowDotInPath=1을 설정하면, URL에 dot(.)가 포함되면 요청을 거부하게 됨. 클라이언트 웹서버 ScanUrl 룰 UrlScan ISAPI 필터 ② RemoveServerHeader 값 체크 ① ③ RemoveServerHeader =1이면 Server 헤더 포함시키지 않고 응답 클라이언트 웹서버 룰 UrlScan ISAPI 필터 ② AllowDotInPath=0 ( Url에 dot가 포함되어도 OK) ① http://~/PEC.Launcher.exe.manifest [ Server 응답 헤더 없애기 ] [ 요청 URL 필터링 ]
  6. 6. 6 첨부) UrlScan 인스톨 유의사항  IIS7.x이상에서는 UrlScan 툴을 설치하면 해당 서버에 포함된 모든 사이트에 UrlScan용 ISAPI 필터가 추가됨.  IIS 관리자를 통해서 보면, 최상위 노드 즉 로컬 머신 노드의 ISAPI 필터로 등록이 되어 있어서 하위의 모든 사이트에 상속되기 때문 이다.  IIS 관리자의 로컬 머신 노드에서 UrlScan 필터를 제거하고 필요한 사이트에서만 수작업으로 추가한다. Update – 2015.10.16(금)  UrlScan (urlscan_xxx.msi)을 인스톨하면 IIS의 Global Filter로 등록되는 것은 v7.x이상만은 아니다. v6.0에서도 마 찬가지다. IIS 관리 툴에서 확인하는 노드 위치가 다를 뿐이다. : IIS7.x - “로컬 머신 노드”의 속성 창 : IIS6.0 - “웹 사이트” 노드의 속성창  보안상 Global Filter로 등록되어서 전체 사이트에 적용되는 것이 맞겠지만, 1) 만약 하나의 서버에 공개된 사이트와 내부에서 사용되는 사이트가 혼재되어 있는 상황이고, 2) UrlScan 설정이 일부 사이트에 영향을 줄 수 있는 상황이라면,  Global Filter에서 제거하고 특정 사이트의 필터로만 등록해야 할 수 있다.  그런 경우에는 Global Filter에서 UrlScan 필터를 제거하고 필요한 사이트에서만 수작업으로 추가한다.

×