URLScan은 IIS 웹 서버로 보내는 모든 요청을 검열하여 관리자가 정의한 규칙을 기준으로 필터링한다. 이것은 유효한 요청에만 응답하도록 함으로써 서버의 보안성을 향상시킴 

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 디버깅이 수행되지 않는다

출처 : http://support.microsoft.com/kb/326444/
2010/03/12 15:46 2010/03/12 15:46

Trackback Address :: https://youngsam.net/trackback/1030