URLScan 도구를 구성하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 326444 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR326444
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 웹 서버가 공격받거나 악용되지 않도록 보호하기 위해 URLScan 도구를 구성하는 방법을 단계별로 설명합니다.

URLScan 설치

URLScan을 설치하려면 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오.
http://msdn2.microsoft.com/en-us/library/aa302368.aspx
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
307608 INFO: IIS에서 URLScan 사용

URLScan.ini 파일 수정

URLScan의 모든 구성은 %WINDIR%\System32\Inetsrv\URLscan 폴더에 있는 URLScan.ini 파일을 통해 수행됩니다. URLScan을 구성하려면 메모장과 같은 텍스트 편집기에서 이 파일을 열고 적절히 변경한 후 파일을 저장합니다.

참고 변경 사항을 적용하려면 인터넷 정보 서비스(IIS)를 다시 시작해야 합니다. 이 작업을 신속히 수행하는 한 가지 방법은 명령 프롬프트에서 IISRESET 명령을 실행하는 것입니다.

URLScan.ini 파일에는 다음과 같은 구역이 포함되어 있습니다.
  • [Options]: 이 구역에서는 일반 URLScan 옵션을 설명합니다.
  • [AllowVerbs] 및 [DenyVerbs]: 이 구역에서는 URLScan이 허용하는 동사(HTTP 메서드라고도 함)를 정의합니다.
  • [DenyHeaders]: 이 구역에서는 HTTP 요청에 허용되지 않는 HTTP 헤더 목록을 제공합니다. 이 절에 나열된 HTTP 헤더 중 하나가 HTTP 요청에 들어 있는 경우 URLScan은 해당 요청을 거부합니다.
  • [AllowExtensions] 및 [DenyExtensions]: 이 구역에서는 URLScan이 허용하는 파일 확장명을 정의합니다.
  • [DenyURLSequences]: 이 구역에서는 HTTP 요청에서 허용되지 않는 문자열 목록을 제공합니다. URLScan은 이 구역에 있는 문자열이 포함된 HTTP 요청을 거부합니다.
이 문서에서는 각 구역을 자세히 설명합니다.

[Options] 구역

[Options] 구역에서는 많은 URLScan 옵션을 구성할 수 있습니다. 이 구역의 각 줄은 다음 형식으로 되어 있습니다.
OptionName=OptionValue
사용 가능한 옵션과 기본값은 다음과 같습니다.
  • UseAllowVerbs=1

    기본적으로 이 옵션은 1로 설정됩니다. 이 옵션을 1로 설정하면 URLScan은 [AllowVerbs] 구역에 나열된 동사를 사용하는 HTTP 요청만 허용합니다. URLScan은 이러한 동사를 사용하지 않는 요청은 차단합니다. 이 옵션을 0으로 설정하면 URLScan은 [AllowVerbs] 구역을 무시하고 대신 [DenyVerbs] 구역에 나열된 동사를 사용하는 요청만 차단합니다.
  • UseAllowExtensions=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 0으로 설정하면 URLScan은 [DenyExtensions] 구역에 나열된 파일 확장명에 대한 요청은 차단하지만 다른 모든 파일 확장명에 대한 요청은 허용합니다. 이 옵션을 1로 설정하면 URLScan은 [AllowExtensions] 구역에 나열된 확장명을 가진 파일에 대한 요청만 허용하고 다른 모든 파일에 대한 요청은 차단합니다.
  • NormalizeUrlBeforeScan=1

    IIS는 URL이 인코딩된 요청을 받습니다. 즉, 이것은 바로 뒤에 특정 숫자가 오는 % 기호로 특정 문자를 대체할 수 있다는 의미입니다. 예를 들어, %20은 공백에 해당하므로 http://myserver/My%20Dir/My%20File.htm에 대한 요청은 http://myserver/My Dir/My File.htm에 대한 요청과 동일합니다. 정규화는 URL 인코딩된 요청을 디코딩하는 프로세스입니다. 기본적으로 이 옵션은 1로 설정됩니다. NormalizeUrlBeforeScan 옵션이 1로 설정된 경우 URLScan은 디코딩된 요청을 분석합니다. 0으로 설정된 경우 URLScan은 디코딩되지 않은 요청을 분석합니다. 이 옵션을 0으로 설정하면 URLScan은 특정한 종류의 공격을 차단하는 기능을 수행할 수 없습니다.
  • VerifyNormalization=1

    % 기호 자체가 URL이 인코딩될 수 있기 때문에 공격자는 기본적으로 이중 인코딩된 정교하게 만든 요청을 서버에 제출할 수 있습니다. 이런 일이 발생하면 IIS는 유효하지 않은 것으로 거부될 요청을 받아 들일 수도 있습니다. 기본적으로 이 옵션은 1로 설정됩니다. VerifyNormalization 옵션이 1로 설정된 경우 URLScan은 URL을 두 번 정규화합니다. 첫번째 정규화 후의 URL이 두번째 정규화 후의 URL과 다를 경우 URLScan은 요청을 거부합니다. 이렇게 하면 이중 인코딩된 요청에 따른 공격을 막을 수 있습니다.
  • AllowHighBitCharacters=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 0으로 설정하면 URLScan은 비 ASCII 문자를 포함하고 있는 요청을 거부합니다. 이렇게 하면 특정 종류의 공격을 방지할 수는 있지만 정규 파일(예: 영문 이름이 아닌 파일)에 대한 요청도 차단할 수 있습니다.
  • AllowDotInPath=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 0으로 설정하면 URLScan은 마침표(.)가 여러 개 있는 모든 요청을 거부합니다. URL의 경로 정보나 쿼리 문자열 부분에 안전한 파일 확장명을 넣어 위험한 파일 확장명에 대한 요청을 가장하려는 시도가 방지됩니다. 예를 들어, 이 옵션을 1로 설정한 경우 PATH_INFO 영역에 HTML 페이지의 이름을 가진 실행 파일(.exe)에 대한 요청이 있으면 URLScan은 HTML 페이지에 대한 요청으로 간주하기 때문에 http://servername/BadFile.exe/SafeFile.htm에 대한 요청을 허용할 수 있습니다. 이 옵션을 0으로 설정하면 URLScan은 마침표가 포함된 디렉터리에 대한 요청도 거부할 수 있습니다.
  • RemoveServerHeader=0

    기본적으로 웹 서버는 모든 응답에서 어떤 웹 서버 소프트웨어를 실행 중인지 나타내는 헤더를 반환합니다. 이렇게 하면 공격자는 서버에서 IIS가 실행 중임을 확인한 다음 다른 웹 서버를 위해 설계된 방법을 사용하여 IIS 서버를 공격하는 대신 알려진 IIS 문제를 공격할 수 있기 때문에 서버의 보안 문제가 증가할 수 있습니다. 기본적으로 이 옵션은 0으로 설정됩니다. RemoveServerHeader 옵션을 1로 설정하면 서버에서는 IIS 서버로 식별하는 헤더를 보내지 않게 됩니다. RemoveServerHeader를 0으로 설정하면 이 헤더가 보내집니다.
  • AlternateServerName=(기본적으로 지정되지 않음)

    RemoveServerHeader를 0으로 설정하면 AlternateServerName 옵션에서 문자열을 지정하여 서버 헤더에서 전달되는 내용을 지정할 수 있습니다. RemoveServerHeader를 1로 설정하면 이 옵션이 무시됩니다.
  • EnableLogging=1

    기본적으로 URLScan은 %WINDIR%\System32\Inetsrv\URLScan에 차단되는 모든 요청의 전체 로그를 저장합니다. 이 로그를 저장하지 않으려면 EnableLogging을 0으로 설정합니다.
  • PerProcessLogging=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 1로 설정하면 URLScan은 URLScan.dll을 호스트하는 각 프로세스에 대해 별도의 로그를 만들고 0으로 설정하면 모든 프로세스가 같은 파일에 기록됩니다.
  • PerDayLogging=1

    기본적으로 이 옵션은 1로 설정됩니다. 이 값을 1로 설정하면 URLScan은 매일 새 로그 파일을 만들고 각 로그 파일 이름은 Urlscan.MMDDYY.log가 됩니다. 여기서 MMDDYY는 로그 파일의 날짜입니다. 이 값을 0으로 설정하면 날짜에 관계없이 모든 로깅이 같은 파일에 저장됩니다.
  • AllowLateScanning=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 0으로 설정하면 URLScan은 높은 우선 순위의 필터로 실행됩니다. 즉, 서버에 설치되어 있는 다른 ISAPI(Internet Server Application Programming Interface) 필터보다 먼저 실행됩니다. 이 옵션을 1로 설정하면 URLScan은 낮은 우선 순위의 필터로 실행되므로 URLScan이 분석을 수행하기 전에 다른 필터가 URL을 수정할 수 있습니다. FrontPage Server Extensions(FPSE)에서는 이 옵션을 1로 설정해야 합니다.
  • RejectResponseUrl=(기본적으로 지정되지 않음)

    이 옵션은 URLScan이 요청을 차단할 때 실행되는 파일에 대한 가상 경로를 지정합니다. 이 옵션을 사용하면 차단된 요청에 대해 클라이언트에 보내는 응답을 사용자 지정할 수 있습니다. RejectResponseUrl을 /Path/To/RejectResponseHandler.asp처럼 해당 파일에 대한 가상 경로로 지정해야 합니다. Active Server Pages(ASP) 페이지와 같이 URLScan이 일반적으로 차단하는 파일을 지정할 수 있습니다. 해당 페이지에서 다음 서버 변수를 사용할 수도 있습니다.
    • HTTP_URLSCAN_STATUS_HEADER: 요청을 차단한 이유를 지정합니다.
    • HTTP_URLSCAN_ORIGINAL_VERB: 차단된 요청의 원래 동사(예: GET, POST, HEAD 또는 DEBUG)를 지정합니다.
    • HTTP_URLSCAN_ORIGINAL_URL: 차단된 요청의 원래 URL을 지정합니다.
    RejectResponseUrl/~*의 특수한 값으로 설정하면 URLScan은 로깅 전용 모드를 사용합니다. 따라서 IIS는 모든 요청을 제공할 수 있지만 일반적으로 차단되는 요청에 대해 URLScan 로그에 항목을 추가합니다. 이것은 URLScan.ini 파일을 테스트하려는 경우 유용합니다.

    RejectResponseUrl의 값을 지정하지 않으면 URLScan은 /<Rejected-By-UrlScan>의 기본값을 사용합니다.

  • UseFastPathReject=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 1로 설정하면 URLScan은 RejectResponseUrl 설정을 무시하고 즉시 404 오류 메시지를 브라우저로 반환합니다. 이것은 RejectResponseUrl을 처리하는 것보다 빠르지만 많은 로깅 옵션으로 허용되지 않습니다. 이 옵션을 0으로 설정하면 URLScan은 RejectResponseUrl 설정을 사용하여 요청을 처리합니다.

[AllowVerbs] 및 [DenyVerbs] 구역

[AllowVerbs][DenyVerbs] 구역은 URLScan이 허용하는 HTTP 동사(메서드라고도 함)를 정의합니다. 일반적인 HTTP 동사로는 GET, POST, HEAD 및 PUT 등이 있습니다. FPSE와 WebDAV(Web Distributed Authoring and Versioning) 같은 다른 응용 프로그램은 추가 동사를 사용합니다.

[AllowVerbs][DenyVerbs] 구역은 모두 같은 구문을 사용합니다. 이들은 HTTP 동사 목록으로 구성되어 있으며 각 동사는 자체 줄에 나타납니다.

URLScan은 [Options] 구역의 UseAllowVerbs 옵션 값에 따라 어느 구역을 사용할지 결정합니다. 기본적으로 이 옵션은 1로 설정됩니다. UseAllowVerbs를 1로 설정하면 URLScan은 [AllowVerbs] 구역에 나열된 동사를 사용하는 요청만 허용합니다. 이 동사 중 하나를 사용하지 않는 요청은 거부됩니다. 이 경우에 [DenyVerbs] 구역은 무시됩니다.

UseAllowVerbs를 0으로 설정하면 URLScan은 [DenyVerbs] 구역에 명시적으로 나열된 동사를 사용하는 요청을 거부합니다. 이 구역에 나타나지 않는 동사를 사용하는 요청은 허용됩니다. 이 경우에 URLScan은 [AllowVerbs] 구역을 무시합니다.

[DenyHeaders] 구역

클라이언트가 웹 서버에서 페이지를 요청하면 일반적으로 요청에 대한 추가 정보가 들어 있는 일부 HTTP 헤더를 보냅니다. 일반적인 HTTP 헤더는 다음과 같습니다.
  • Host:

    이 헤더는 웹 서버의 이름을 포함하고 있습니다.
  • Accept:

    이 헤더는 클라이언트가 처리할 수 있는 파일 형식을 정의합니다.
  • User-Agent:

    이 헤더는 페이지를 요청하는 브라우저 이름을 포함하고 있습니다.
  • Authorization:

    이 헤더는 클라이언트가 지원하는 인증 방법을 정의합니다.
클라이언트는 추가 정보를 지정하기 위해 서버에 다른 헤더를 보낼 수 있습니다.

[DenyHeaders] 구역에서는 URLScan이 거부할 HTTP 헤더를 정의합니다. URLScan은 이 구역에 나열된 헤더를 포함하고 있는 요청을 받으면 요청을 거부합니다. 이 구역은 HTTP 헤더 목록으로 구성되어 있으며 각 헤더는 자체 줄에 나타납니다. 헤더 이름 다음에는 콜론(:)이 와야 합니다(예: Header-Name:).

[AllowExtensions] 및 [DenyExtensions] 구역

대부분의 파일에는 파일 형식을 나타내는 파일 확장명이 있습니다. 예를 들어, 일반적으로 Word 문서의 파일 이름은 .doc, HTML 파일 이름은 .htm이나 .html, 일반 텍스트 파일 이름은 .txt로 끝납니다. [AllowExtensions][DenyExtensions] 구역에서 URLScan이 차단하는 확장명을 정의할 수 있습니다. 예를 들어, 웹 사용자가 시스템에서 응용 프로그램을 실행하는 것을 방지하려면 .exe 파일에 대한 요청을 거부하도록 URLScan을 구성할 수 있습니다.

[AllowExtensions][DenyExtensions] 구역은 모두 같은 구문을 사용합니다. 이들은 파일 확장명 목록으로 구성되어 있으며 각 확장명은 자체 줄에 나타납니다. 확장명은 마침표(.)로 시작합니다(예: .ext).

URLScan은 [Options] 구역의 UseAllowExtensions 값에 따라 어느 구역을 사용할지 결정합니다. 기본적으로 이 옵션은 0으로 설정됩니다. UseAllowExtensions를 0으로 설정하면 URLScan은 [DenyExtensions] 구역에 나열된 파일 확장명을 사용하는 요청만 거부합니다. 이 구역에 나열되지 않은 파일 확장명은 허용됩니다. [AllowExtensions] 구역은 무시됩니다.

UseAllowExtensions를 1로 설정하면 URLScan은 [AllowExtensions] 구역에 명시적으로 나열되지 않은 파일 확장명에 대한 요청을 거부합니다. 이 구역에 나열된 파일 확장명에 대한 요청만 허용됩니다. [DenyExtensions] 구역은 무시됩니다.

확장명이 없는 파일에 대한 요청을 허용하도록 URLScan을 구성하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
312376 HOWTO: IIS에서 Null 확장명을 포함하는 요청을 허용하도록 URLScan 구성

[DenyUrlSequences] 구역

URL에서 특정 문자 시퀀스가 포함된 요청을 차단하도록 URLScan을 구성할 수 있습니다. 예를 들어, 디렉터리 액세스 보안 문제에 자주 사용되는 두 개의 연속된 마침표(..)가 포함된 요청을 차단할 수 있습니다. 문자 시퀀스를 차단하도록 지정하려면 [DenyUrlSequences] 구역의 해당 줄에 이 시퀀스를 넣습니다.

문자 시퀀스를 추가해도 Microsoft Exchange용 Outlook Web Access(OWA)에는 나쁜 영향을 미치지 않습니다. OWA에서 메시지를 열면 서버에서 요청한 URL에 메시지의 제목 줄이 포함되어 있습니다. URLScan.ini 파일은 % 기호와 & 기호가 포함된 요청을 차단하기 때문에 사용자가 "Sales increase by 100%" 또는 "Bob & Sue are coming to town" 같은 제목 줄이 있는 메시지를 열려고 하면 404 오류 메시지가 표시됩니다. 이 문제를 해결하려면 [DenyUrlSequences] 구역에서 이 시퀀스를 제거하면 됩니다. 이렇게 하면 문제를 일으키는 요청이 서버에 도달할 가능성이 있기 때문에 보안이 약화됩니다.

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
325965 URLScan 도구로 인해 Outlook Web Access에 문제가 발생할 수 있다

IIS 종속 응용 프로그램에서 사용하도록 URLScan 구성

Exchange, FPSE 및 Microsoft Visual Studio .NET과 같은 응용 프로그램은 적절한 기능을 수행하기 위해 IIS에 의존합니다. 이러한 응용 프로그램은 URLScan을 올바르게 구성하지 않으면 제대로 작동하지 않을 수 있습니다.

이러한 응용 프로그램에서 제대로 작동하도록 URLScan을 구성하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
309508 XCCC: Exchange 환경의 IIS 잠금 및 URLscan 구성
309394 HOWTO: FrontPage 2000에서 URLScan 사용
318290 HOWTO: FrontPage 2002에서 URLScan 사용
310588 PRB: Security Toolkit로 인해 Visual Studio .NET에서 ASP.NET 디버깅이 수행되지 않는다

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
325864 HOWTO: IIS 보안 잠금 마법사 설치 및 사용




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 326444 - 마지막 검토: 2007년 3월 14일 수요일 - 수정: 5.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
키워드:?
kbhowto kbhowtomaster KB326444

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com