http://support.microsoft.com/kb/326444/ko


URLScan 도구를 구성하는 방법

기술 자료 ID : 326444
마지막 검토 : 2007년 3월 14일 수요일
수정 : 5.3
이 문서는 이전에 다음 ID로 출판되었음: KR326444

요약

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

위로 가기

URLScan 설치

URLScan을 설치하려면 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오.
http://msdn2.microsoft.com/en-us/library/aa302368.aspx (http://msdn2.microsoft.com/en-us/library/aa302368.aspx)
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
307608 (http://support.microsoft.com/kb/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 (http://support.microsoft.com/kb/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 (http://support.microsoft.com/kb/325965/) URLScan 도구로 인해 Outlook Web Access에 문제가 발생할 수 있다

위로 가기

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

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

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

위로 가기

참조

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

+ Recent posts