다음을 통해 공유


요청 필터링을 사용하여 WebDAV를 구성하는 방법

작성자: 로버트 맥머레이

소개

Microsoft는 Windows Server® 2008에서 인터넷 정보 서비스 7.0(IIS 7.0)을 위해 완전히 다시 작성된 새 WebDAV 확장 모듈을 출시했습니다. 이 새로운 WebDAV 확장 모듈에는 웹 작성자가 이전보다 더 나은 콘텐츠를 게시할 수 있는 많은 새로운 기능이 통합되었으며 웹 관리자에게 더 많은 보안 및 구성 옵션을 제공합니다. Microsoft는 덮어쓰기로 인한 업데이트 손실을 방지하기 위해 공유 및 배타적 잠금 지원을 제공하는 Windows Server® 2008용 WebDAV 확장 모듈에 대한 업데이트를 릴리스했습니다.

IIS 7.0은 IIS 7.0 새 요청 필터링을 포함하여 몇 가지 훌륭한 새로운 보안 기능을 제공합니다. 이전 버전의 IIS에서 UrlScan에 익숙한 IIS 사용자의 경우 IIS 7.0의 요청 필터링 기능은 URLScan을 기본으로 사용하는 것과 같습니다.

새 WebDAV 모듈 및 요청 필터링은 함께 작동하도록 설계되었으며, 이 문서에서는 안전한 게시 환경을 설정하기 위해 WebDAV 관련 요청 필터링 설정을 WebDAV 설정과 함께 구성하는 방법을 안내합니다. IIS 관리자 UI를 사용하여 WebDAV를 구성하는 경우 요청 필터링 설정이 자동으로 업데이트되며 이 문서의 단계를 따를 필요가 없습니다.

필수 조건

이 문서의 절차를 완료하려면 다음 항목이 필요합니다.

  • IIS 7.0은 서버에 설치해야 하며 다음을 구성해야 합니다.

    • IIS 7.0 설치에서 만든 기본 웹 사이트는 여전히 존재해야 합니다.
    • 요청 필터링 기능을 설치해야 합니다.
  • 새 WebDAV 확장 모듈을 설치해야 합니다. 새 WebDAV 모듈의 설치에 대한 자세한 내용은 다음 문서를 참조하세요.

  • AppCmd를 사용하는 방법에 대한 지식이 유용합니다. 요청 필터링 사용에 대한 자세한 내용은 다음 문서를 참조하세요.

참고 항목

전체 관리 권한을 사용하여 이 문서의 단계를 수행해야 합니다. 이 작업은 다음 두 가지 방법 중 하나를 사용하여 수행하는 것이 가장 좋습니다.

  • 로컬 "관리자" 계정을 사용하여 컴퓨터에 로그인합니다.
  • 로컬 "관리자" 계정이 아닌 관리 권한이 있는 계정을 사용하여 로그인한 경우 "실행 관리주체" 옵션을 사용하여 IIS 관리자 및 모든 명령 프롬프트 세션을 엽니다.

Windows Server 2008의 UAC(사용자 계정 컨트롤) 보안 구성 요소로 인해 IIS 7.0의 구성 설정에 대한 관리 액세스가 차단되므로 위의 조건이 필요합니다. UAC에 대한 자세한 내용은 다음 설명서를 참조하세요.

기본 요청 필터링 개념

IIS 7.0의 요청 필터링은 다음 매개 변수에 따라 요청을 필터링하는 것으로 구성됩니다.

  • 파일 확장자
  • 숨겨진 세그먼트
  • HTTP 동사
  • 요청 제한
  • URL 시퀀스

이러한 모든 요청 필터링 기능은 WebDAV를 통해 업로드되거나 다운로드되는 콘텐츠에 영향을 줄 수 있지만 일부 기능은 WebDAV와 협력하여 작동하도록 구성할 수 있습니다.

다음 목록에서는 WebDAV를 사용하도록 구성할 수 있는 기능을 설명합니다.

  • 다음 기능은 항상 WebDAV 요청에 영향을 줍니다.

    • 요청 제한
    • URL 시퀀스
  • 다음 기능은 기본적으로 WebDAV 요청에 영향을 주지만 WebDAV 요청을 무시하도록 구성할 수 있습니다.

    • 파일 확장자
    • 숨겨진 세그먼트
    • HTTP 동사

예를 들어 ".mdb" 및 ".config" 파일에 대한 액세스를 차단하는 동시에 ".htm" 및 ".php" 파일에 대해 WebDAV가 아닌 요청을 허용하도록 서버를 구성할 수 있지만 WebDAV 요청이 차단된 콘텐츠에 액세스하도록 허용할 수 있습니다.

참고 항목

WebDAV 요청에는 인증이 필요합니다.

다음 방법 중 하나를 사용하여 요청 필터링 설정을 편집할 수 있습니다.

  • IIS 7.0용 관리istration Pack의 일부로 제공되는 사용자 인터페이스 사용
  • 명령줄에서 AppCmd 사용
  • applicationHost.config 파일 편집
  • Microsoft.Web 사용. .NET 애플리케이션 또는 Windows PowerShell의 관리istration

이 연습의 다시 기본 정보는 명령줄에서 AppCmd를 사용하는 방법을 보여 주는 동시에 applicationHost.config 파일의 결과 구성 설정이 어떻게 표시되는지 보여 줍니다.

참고 항목

이 문서에서는 요청 필터링을 사용하여 구성할 수 있는 모든 기능을 다루지 않습니다. 추가 요청 필터링 옵션을 구성하는 방법에 대한 자세한 내용은 다음 항목을 참조하세요.

요청 필터링 및 WebDAV 구성

파일 확장자 필터링

".config" 및 ".asax"와 같은 특정 파일 확장명은 기본 요청 필터링 fileExtensions 컬렉션에 의해 보호됩니다. HTTP 요청을 허용하거나 차단하기 위해 파일 확장명 목록에 항목을 더 추가할 수 있으며 이 목록이 WebDAV 요청에 적용되는지 여부를 제어할 수 있습니다. 이 예제에서는 일반적으로 액세스할 수 있더라도 AppCmd 블록 ".txt" 파일에 액세스하지 못하게 하고 WebDAV 요청이 차단된 모든 파일 확장 프로그램에 액세스할 수 있도록 지정합니다.

  1. 전체 관리 권한으로 명령 프롬프트를 열고 디렉터리를 InetSrv 폴더로 변경합니다.

    cd "%WinDir%\System32\InetSrv"
    
  2. 기존 요청 필터링 규칙을 보려면 다음 구문을 사용합니다.

    AppCmd list config "Default Web Site/" /section:system.webServer/security/requestFiltering
    
  3. fileExtensions 컬렉션에 특정 파일 확장자를 추가하고 다음 구문을 사용하여 허용된 특성에 대해 false를 지정하여 ".txt" 파일에 대한 액세스를 차단합니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+fileExtensions.[fileExtension='.txt',allowed='false'] /commit:apphost
    
  4. 다음 구문을 사용하여 fileExtensions 컬렉션에 대한 applyToWebDAV 특성을 false로 설정하여 WebDAV가 차단된 모든 파일 형식에 액세스할 수 있도록 허용합니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:false /commit:apphost
    

위의 단계를 완료한 후 applicationHost.config 파일의 fileExtensions 섹션에 있는 결과 코드는 다음 예제와 유사해야 합니다.

<requestFiltering>
   <fileExtensions applyToWebDAV="false">
      <add fileExtension=".txt" allowed="false" />
   </fileExtensions>
</requestFiltering>

참고:

  • 위의 단계를 사용하여 fileExtensions 컬렉션에 추가 파일 확장명 액세스를 차단하거나 허용된 특성에 true 를 지정하여 특정 파일을 허용하도록 구문을 수정할 수 있습니다.

  • 다음 구문을 사용하여 fileExtensions 컬렉션의 allowUnlisted 특성을 false로 설정하여 알 수 없는 파일 확장자를 모두 차단할 수 있습니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.allowUnlisted:false /commit:apphost
    

    참고 항목

    이 옵션을 설정하려면 WebDAV가 아닌 요청으로 액세스하기 전에 각 파일 확장자를 특별히 추가해야 합니다.

  • 위의 단계를 사용하여 applyToWebDAV 특성에 true를 지정하여 WebDAV 요청에 대한 액세스를 차단할 수 있습니다.

숨겨진 세그먼트 필터링

"web.config" 및 "App_code"와 같은 특정 파일 세그먼트는 기본 요청 필터링 hiddenSegments 컬렉션에 의해 숨겨집니다 . HTTP 요청에 대해 숨기기 위해 파일 세그먼트 목록에 항목을 더 추가할 수 있으며 이 목록이 WebDAV 요청에 적용되는지 여부를 제어할 수 있습니다. 이 예제에서는 일반적으로 표시되더라도 AppCmd를 사용하여 HTTP 요청에서 "include" 세그먼트를 숨기고 WebDAV 요청이 숨겨진 모든 파일 세그먼트에 액세스할 수 있도록 지정합니다.

  1. 전체 관리 권한으로 명령 프롬프트를 열고 디렉터리를 InetSrv 폴더로 변경합니다.

    cd "%WinDir%\System32\InetSrv"
    
  2. 다음 구문을 사용하여 hiddenSegments 컬렉션에 특정 항목을 추가하여 "include" 세그먼트에 대한 액세스를 차단합니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='include'] /commit:apphost
    
  3. 다음 구문을 사용하여 hiddenSegments 컬렉션에 대한 applyToWebDAV 특성을 false로 설정하여 WebDAV가 차단된 모든 파일 형식에 액세스할 수 있도록 허용합니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:false /commit:apphost
    

위의 단계를 완료한 후 applicationHost.config 파일의 hiddenSegments 섹션에 있는 결과 코드는 다음 예제와 유사해야 합니다.

<requestFiltering>
   <hiddenSegments applyToWebDAV="false">
      <add segment="include" />
   </hiddenSegments>
</requestFiltering>

참고:

  • 위의 단계를 사용하여 hiddenSegments 컬렉션에 추가 파일 세그먼트를 추가하여 추가 파일 세그먼트를 숨길 수 있습니다 .
  • 위의 단계를 사용하여 applyToWebDAV 특성에 true를 지정하여 WebDAV 요청에 대한 액세스를 차단할 수 있습니다.

HTTP 동사 필터링

일부 동사가 특정 HTTP 처리기에 매핑되지 않더라도 기본 요청 필터링 동사 컬렉션을 사용하면 목록에 없는 모든 HTTP 동사를 사용할 수 있습니다. 이 목록에 항목을 추가하여 허용하거나 차단해야 하는 HTTP 동사를 지정할 수 있으며 이 목록이 WebDAV 요청에 적용되는지 여부를 제어할 수 있습니다. 이 예제에서는 AppCmd를 사용하여 HTTP 요청에서 "DELETE" 및 "PUT" 동사를 차단하고 WebDAV 요청에서 이러한 동사를 사용할 수 있도록 지정합니다.

  1. 전체 관리 권한으로 명령 프롬프트를 열고 디렉터리를 InetSrv 폴더로 변경합니다.

    cd "%WinDir%\System32\InetSrv"
    
  2. 동사 컬렉션에 특정 항목을 추가하고 다음 구문을 사용하여 허용된 특성에 대해 false를 지정하여 "DELETE" 동사에 대한 액세스를 차단합니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='DELETE',allowed='false'] /commit:appHost
    
  3. 동사 컬렉션에 다른 특정 항목을 추가하고 다음 구문을 사용하여 허용된 특성에 대해 false를 지정하여 "PUT" 동사에 대한 액세스를 차단합니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='PUT',allowed='false'] /commit:appHost
    
  4. 다음 구문을 사용하여 동사 컬렉션에 대한 applyToWebDAV 특성을 false로 설정하여 WebDAV가 모든 HTTP 동사에 액세스할 수 있도록 허용합니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.applyToWebDAV:false /commit:appHost
    

위의 단계를 완료한 후 applicationHost.config 파일의 동사 섹션에 있는 결과 코드는 다음 예제와 유사합니다.

<requestFiltering>
   <verbs applyToWebDAV="false">
      <add verb="DELETE" allowed="false" />
      <add verb="PUT" allowed="false" />
   </verbs>
</requestFiltering>

참고:

  • 위의 단계를 사용하여 동사 컬렉션에 추가 HTTP 동사를 추가하거나 허용된 특성에 대해 true 를 지정하여 특정 동사를 허용하도록 구문을 수정할 수 있습니다.

  • 다음 구문을 사용하여 동사 컬렉션의 allowUnlisted 특성을 false로 설정하여 알 수 없는 모든 HTTP 동사를 차단할 수 있습니다.

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.allowUnlisted:false /commit:appHost
    

    참고 항목

    이 옵션을 설정하려면 WebDAV가 아닌 요청에서 액세스하기 전에 각 HTTP 동사를 특별히 추가해야 합니다.

  • 위의 단계를 사용하여 applyToWebDAV 특성에 true를 지정하여 WebDAV 요청에 대한 액세스를 차단할 수 있습니다.

요약

이 문서에서는 다음과 같은 개념을 보여 줍니다.

추가 정보

WebDAV 사용에 대한 자세한 내용은 다음 문서를 참조하세요.