Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

웹서버 정보 노출 방지

4 953 vues

Publié le

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

Publié dans : Logiciels
  • Soyez le premier à commenter

웹서버 정보 노출 방지

  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 필터를 제거하고 필요한 사이트에서만 수작업으로 추가한다.

×