DetailPage-MSS-KB

기술 자료

기술 자료: 2698981 - 마지막 검토: 2012년 6월 7일 목요일 - 수정: 1.0

이 페이지에서

소개

ASP.NET에서 관리자는 보통 신뢰와 같은 부분 신뢰 모드에서 응용 프로그램을 호스팅할 수 있습니다. 또한 사용자 지정 정책 파일을 통해 사용자 지정 부분 신뢰 수준을 구성할 수 있습니다. ASP.NET 2.0에서 보통 신뢰를 사용하는 방법에 대한 자세한 내용은 다음 MSDN(Microsoft 개발자 네트워크) 웹 페이지로 이동하십시오.
방법: ASP.NET 2.0에서 보통 신뢰 사용 (http://msdn.microsoft.com/ko-kr/library/ff648344.aspx)
앞서 여러 다른 신뢰 수준을 갖는 다중 응용 프로그램이 동일한 웹 서버에 호스팅되어 있는 공유 호스팅 환경에서 응용 프로그램 격리를 적용하는 메커니즘을 ASP.NET 부분 신뢰로 설명했습니다. 부분 신뢰 모드로 ASP.NET 페이지 프레임워크 응용 프로그램을 실행할 경우 동일한 프로세스나 동일한 컴퓨터에서 실행되는 다른 응용 프로그램에서의 완전한 격리가 보장되지 않는다는 사실을 반영하기 위해 이에 대한 지침을 업데이트하려고 합니다.

별도의 더 낮은 권한 프로세스로 실행되도록 ASP.NET 페이지 프레임워크 응용 프로그램을 구성하는 것은(개별 응용 프로그램 풀 사용) 동일한 웹 서버에 있는 다른 ASP.NET 페이지 프레임워크 응용 프로그램의 격리를 확인하는 데 권장되는 절차입니다. 다음 절에서는 격리를 위해 응용 프로그램을 구성하는 방법을 자세히 설명합니다. 이 문서에 설명된 정책 변경 내용을 반영하도록 다른 설명서도 업데이트하고 있습니다.

추가 정보

서버 관리자는 이 문서의 지침을 적용하여 응용 프로그램이 공유 호스팅 환경에서 격리되도록 해야 합니다. 이러한 지침은 Windows Server 2003 SP2 이상 버전에서 ASP.NET을 호스팅하는 데 적용됩니다. 이러한 지침은 IIS(인터넷 정보 서비스) 6.0 ~ 7.5에 해당합니다.

여기에 설명된 많은 작업은 IIS 7 및 7.5의 AppCmd.exe (http://learn.iis.net/page.aspx/114/getting-started-with-appcmdexe) IIS 명령줄 도구와 IIS 6.0의 IIS 관리 스크립트 (http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/1805162e-6ac5-4a98-9a08-919c4c10827d.mspx?mfr=true) 를 사용하여 자동으로 수행될 수 있습니다.

응용 프로그램을 별도의 IIS 사이트에 두는 방법

공유 호스팅 환경에서는 응용 프로그램을 별도의 IIS 사이트에 두어야 합니다. 별도의 사이트에 호스팅하면 응용 프로그램 간에 구성이 보다 잘 격리됩니다. 또한 .NET Framework CLR 호스트는 분리됩니다. 이를 통해 해당 수준에서 추가적인 격리가 이루어집니다.

각 응용 프로그램을 별도의 사이트에 두려면 다음 단계를 따르십시오.

인터넷 정보 서비스 6.0(Windows Server 2003 SP2)

  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.
  2. 왼쪽 창에서 현재 서버에 대한 노드를 확장합니다.
  3. 웹 사이트 노드를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 클릭한 다음 웹 사이트를 클릭합니다.
  4. 다음을 클릭합니다.
  5. 새 웹 사이트의 고유한 이름을 입력하고 다음을 클릭합니다.
  6. 호스팅 환경에 대한 사이트 바인딩을 구성합니다.
  7. 응용 프로그램 파일이 저장된 폴더의 실제 경로를 입력합니다.
  8. 스크립트 실행(예: ASP) 확인란을 선택하고 다음을 클릭합니다.
  9. 마침을 클릭합니다. 새 사이트가 웹 사이트 노드 아래에 나타납니다.

인터넷 정보 서비스 7(Windows Vista SP2 및 Windows Server 2008 SP1), 인터넷 정보 서비스 7.5(Windows 7 및 Windows Server 2008 R2)

  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.
  2. 연결 창에서 현재 서버에 대한 노드를 확장합니다.
  3. 사이트 노드를 선택하고 작업 창에서 웹 사이트 추가 링크를 클릭합니다.
  4. 웹 사이트 추가 대화 상자에서 새 웹 사이트의 고유한 이름을 입력하고 응용 프로그램 파일이 저장된 폴더의 실제 경로를 입력합니다. 기본적으로 사이트와 동일한 이름을 갖는 새 응용 프로그램 풀이 만들어지고 이 사이트는 이 응용 프로그램 풀을 사용하도록 구성됩니다. (이것이 권장되는 구성입니다.)
  5. 호스팅 환경에 대한 사이트 바인딩을 구성합니다.
  6. 웹 사이트 즉시 시작 확인란을 선택 취소하여 여기에 설명된 격리 지침을 완료할 때까지 사이트를 사용할 수 없도록 합니다.
  7. 확인을 클릭합니다. 구성된 사이트가 연결 창의 사이트 노드 아래에 나타납니다.

사이트를 별도의 응용 프로그램 풀에 두는 방법

공유 호스팅 환경에서는 응용 프로그램을 별도의 응용 프로그램 풀에 두어야 합니다. 이렇게 하면 응용 프로그램이 고유한 ID를 갖는 별도의 운영 체제 프로세스에 격리될 수 있습니다. 이를 통해 사이트 사이에 격리 수준이 추가됩니다. (다음 절에서는 격리를 위해 응용 프로그램 풀 ID를 구성하는 방법을 설명합니다.)

인터넷 정보 서비스 6.0(Windows Server 2003 SP2)

  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.
  2. 왼쪽 창에서 현재 서버에 대한 노드를 확장합니다.
  3. 응용 프로그램 풀을 마우스 오른쪽 단추로 클릭하고 새로 만들기를 클릭한 다음 응용 프로그램 풀을 클릭합니다.
  4. 새 응용 프로그램 풀의 고유한 이름을 입력하고 확인을 클릭합니다.
  5. 웹 사이트 노드를 확장합니다.
  6. 대상 웹 사이트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
  7. 홈 디렉터리 탭을 클릭합니다.
  8. 대화 상자 아래쪽의 응용 프로그램 풀 필드에서 새 응용 프로그램 풀을 선택합니다.
  9. 확인을 클릭합니다.

인터넷 정보 서비스 7(Windows Vista SP2 및 Windows Server 2008 SP1) 및 인터넷 정보 서비스 7.5(Windows 7 및 Windows Server 2008 R2)

"응용 프로그램을 별도의 IIS 사이트에 두는 방법" 절의 단계를 진행하면 새 사이트가 자동으로 별도의 새 응용 프로그램 풀에 추가됩니다. 그러나 새로운 별도의 응용 프로그램 풀을 사용하도록 기존 사이트를 구성해야 할 경우 다음 단계를 따르십시오.
  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.
  2. 연결 창에서 현재 서버에 대한 노드를 확장합니다.
  3. 응용 프로그램 풀 노드를 선택합니다.
  4. 작업 창에서 응용 프로그램 풀 추가 링크를 클릭합니다.
  5. 새 응용 프로그램 풀의 고유한 이름을 입력하고 대상 .NET Framework 버전과 파이프라인 모드를 선택합니다.
  6. 확인을 클릭합니다. 새 응용 프로그램 풀이 목록에 표시됩니다.
  7. 연결 창에서 사이트 노드를 확장합니다.
  8. 이 절차 앞에서 만든 응용 프로그램 풀로 이동할 사이트를 선택합니다.
  9. 작업 창에서 기본 설정 링크를 클릭합니다.
  10. 사이트 편집 대화 상자에서 선택을 클릭합니다.
  11. 응용 프로그램 풀 목록에서 앞서 선택한 응용 프로그램 풀을 선택합니다.
  12. 확인을 클릭합니다.
사이트 편집 대화 상자에서 확인을 클릭합니다.

격리를 위해 응용 프로그램 풀을 구성하는 방법(프로세스 ID)

응용 프로그램 풀은 Windows 프로세스의 응용 프로그램 및 사이트를 호스팅합니다. 프로세스가 실행되는 ID는 구성 가능합니다. 공유 호스팅 환경에는 각 응용 프로그램에 대한 별도의 ID가 있어야 합니다. 이를 통해 각 응용 프로그램은 고유한 계정의 컨텍스트에서 실행되게 됩니다. 따라서 기본 운영 체제의 파일 시스템 DACL(임의 액세스 제어 목록) 및 기본 제공 프로세스 격리 기능을 사용하여 올바른 격리가 가능해집니다. 사용자 계정을 만든 다음 해당 계정을 사용하도록 응용 프로그램 풀을 할당하려면 다음 단계를 따르십시오.

인터넷 정보 서비스 6.0(Windows Server 2003 SP2)

응용 프로그램 풀 ID로 사용할 로컬 사용자 계정 만들기
  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.
  2. 왼쪽 창에서 로컬 사용자 및 그룹을 확장합니다.
  3. 사용자를 마우스 오른쪽 단추로 클릭하고 새 사용자를 클릭합니다.
  4. 새 사용자 계정에 대한 고유한 이름과 강력한 암호를 입력합니다.
  5. 다음 로그온할 때 반드시 암호 변경 확인란 선택을 취소합니다.
  6. 암호 변경할 수 없음 확인란을 선택합니다.
  7. 만들기를 클릭한 다음 닫기를 클릭합니다.
  8. 왼쪽 창에서 사용자 노드를 선택합니다. 새 계정이 목록에 나타납니다.
새 로컬 사용자 계정을 사용하도록 응용 프로그램 풀 구성
  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.
  2. 왼쪽 창에서 현재 서버에 대한 노드를 확장합니다.
  3. 응용 프로그램 풀 노드를 확장합니다.
  4. 대상 응용 프로그램 풀을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
  5. ID 탭을 클릭합니다.
  6. 보안 계정 구성 옵션 단추를 선택합니다.
  7. 새 계정의 사용자 이름과 암호를 입력합니다.
  8. 확인을 클릭합니다.
  9. 암호 확인 대화 상자에 암호를 다시 입력하고 확인을 클릭합니다.

인터넷 정보 서비스 7 및 7.5(Windows Vista SP2, Windows Server 2008 SP1, Windows 7 및 Windows Server 2008 R2)

  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.
  2. 연결 창에서 현재 서버에 대한 노드를 확장합니다.
  3. 응용 프로그램 풀 노드를 선택합니다.
  4. 대상 응용 프로그램 풀을 선택합니다.
  5. 작업 창에서 고급 설정 링크를 클릭합니다.
  6. 프로세스 모델 섹션에서 ID 속성을 ApplicationPoolIdentity로 설정합니다. 이렇게 설정하면 이 응용 프로그램 풀에 대한 고유한 ID가 자동으로 만들어집니다. 다음 섹션에서는 이러한 고유한 ID를 사용하여 응용 프로그램이 액세스해야 하는 파일 위치에 대해 DACL(임의 액세스 제어 목록)을 설정할 수 있습니다.
  7. 확인을 클릭합니다.

응용 프로그램 콘텐츠 위치에 대해 DACL을 구성하는 방법

DACL(임의 액세스 제어 목록)은 개체와 연결되고 해당 개체에 대한 액세스를 제어하는 데 사용할 수 있는 사용 권한 목록입니다. DACL을 사용하여 응용 프로그램 콘텐츠에 대한 액세스를 제한하면 동일한 웹 서버에 호스팅되는 사이트들이 분명하게 격리될 수 있습니다. ACL 및 IIS ID에 대한 자세한 내용은 파일 시스템 ACL을 통해 IIS의 콘텐츠 보호 (http://learn.iis.net/page.aspx/583/secure-content-in-iis-through-file-system-acls) (영문)를 참조하십시오.

모든 버전의 IIS

  1. 명령 프롬프트나 Windows 탐색기에서 사이트 콘텐츠에 대한 루트 폴더를 엽니다.
  2. 다음 방법 중 하나를 사용하여 이 위치에 대해 관리자 액세스 권한 이외의 액세스 권한 항목을 제거합니다. (여기에는 사용자 그룹이 포함됩니다.)
    • Windows 탐색기에서 폴더를 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 보안 탭을 클릭한 다음 액세스 제어 목록을 변경합니다.
    • 명령 프롬프트에서 icacls.exe (http://technet.microsoft.com/nl-nl/library/cc753525(WS.10).aspx) 유틸리티(또는 이전 Windows 운영 체제 버전의 경우 cacls.exe)를 사용하여 액세스 제어 목록을 변경합니다.
  3. 사이트에 대해 선택한 프로세스 ID에 대한 새 항목을 추가합니다.
  4. 새 ID에 폴더에 대한 읽기 및 실행 액세스 권한을 부여합니다.
응용 프로그램에 대한 쓰기 사용 권한을 필요로 하는 특정 폴더(예: "Uploads" 폴더)가 있는 경우 다음 단계를 따르십시오.

인터넷 정보 서비스 6.0(Windows Server 2003 SP2)

  1. Windows 탐색기에서 폴더를 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 보안 탭을 클릭하고 프로세스 ID에 대해 수정 액세스 권한을 추가합니다.
  2. 정적 콘텐츠(그림, 텍스트 파일 등)가 포함될 폴더의 경우 다음 단계를 수행하십시오.
    1. IIS(인터넷 정보 서비스) 관리자를 엽니다.
    2. 왼쪽 창에서 해당 폴더 이름을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
    3. 디렉터리 탭을 클릭합니다.
    4. 실행 권한 목록에서 없음을 선택합니다.

인터넷 정보 서비스 7 및 7.5(Windows Vista SP2, Windows Server 2008 SP1, Windows 7 및 Windows Server 2008 R2)

  1. Windows 탐색기에서 폴더를 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 보안 탭을 클릭하고 프로세스 ID에 대해 수정 액세스 권한을 추가합니다.
  2. 정적 콘텐츠(그림, 텍스트 파일 등)를 포함할 폴더의 경우 accessPolicy 설정에서 스크립트 사용 권한을 허용하지 않는 위치에 대한 "web.config" 파일 항목을 추가합니다.
    <system.webServer> <handlers accessPolicy="Read,Write" /> </system.webServer>

임시 ASP.NET 파일 폴더 위치를 구성하는 방법 및 사이트당 DACL을 설정하는 방법

ASP.NET의 경우 서버에 컴파일된 파일과 같은 임시 데이터를 저장하기 위한 위치가 필요합니다. 일반적으로는 임시 ASP.NET 파일 폴더입니다. 기본적으로 이 폴더는 .NET Framework가 설치된 폴더 아래에 있습니다. 각 사이트에 대해 다른 임시 위치를 할당하고 개별적으로 폴더 보안을 유지하면 동일한 웹 서버에 호스팅되는 사이트가 좀 더 잘 격리될 수 있습니다. 임시 ASP.NET 파일 폴더에 대한 자세한 내용은 ASP.NET 동적 컴파일의 이해 (http://msdn.microsoft.com/ko-kr/library/ms366723.aspx) (영문)를 참조하십시오.

사이트별로 다른 임시 ASP.NET 파일 폴더 위치를 구성하는 방법

  1. 각 사이트에 대해 해당 사이트의 임시 ASP.NET 파일을 저장할 새 폴더를 만듭니다. 비 시스템 드라이브를 사용하여 임시 파일을 저장하는 것이 좋습니다.
  2. 서버의 root web.config 또는 applicationHost.config 파일에 다음과 같이 <location> 요소를 사용하여 해당 특정 사이트에 대한 새 폴더 위치를 가리키는 설정을 포함합니다.
    <configuration> <location path="path"> <system.web> <compilation tempDirectory="temp-files-path" /> </system.web> </location> <!-- and so on --> </configuration>

임시 ASP.NET 파일 폴더 위치에 대해 적절한 DACL을 설정하는 방법

  1. 명령 프롬프트 또는 Windows 탐색기를 사용하여 이 위치에 대한 관리자 이외의 액세스 권한을 제거합니다. (여기에는 사용자 그룹이 포함됩니다.)
  2. 이전에 이 사이트에 대해 선택한 프로세스 ID에 대한 새 항목을 추가한 다음 이 ID에 폴더에 대한 수정 액세스 권한을 부여합니다.

루트 구성 파일에서 중요한 구성 데이터를 제거하는 방법

Application web.config 파일은 처리 중인 응용 프로그램에 대한 콘텐츠 폴더에 있습니다. ASP.NET은 application web.config 파일을 처리하지 않게 되지만 실질적으로는 응용 프로그램 위치 밖에 있는 구성 파일에 시스템 키 설정 및 연결 문자열과 같은 보안이 중요한 정보를 넣는 것이 더 바람직합니다. 이렇게 하면 정보가 유출되지 않도록 보호됩니다.

인터넷 정보 서비스 6.0(Windows Server 2003 SP2)

root web.config 파일에 보안이 중요한 구성 정보를 보관하는 것은 사이트 간에 데이터를 격리하기 위해서는 바람직한 방법이 아닙니다. 모든 사이트에서 이 파일을 읽을 수 있기 때문입니다. 따라서 IIS 6에서는 중요한 구성을 application web.config 파일에 저장해야 합니다. 이렇게 하면 사이트 간에 중요한 구성이 격리될 수 있습니다. 이 경우 응용 프로그램은 application web.config 파일이 처리되지 않고 중요한 정보가 유출되지 않도록 하기 위해 ASP.NET 방어 기전에 의존하게 됩니다.

인터넷 정보 서비스 7 및 7.5(Windows Vista SP2, Windows Server 2008 SP1, Windows 7 및 Windows Server 2008 R2)

IIS 7 이상 버전의 경우 IIS applicationHost.config 파일에 있는 중요한 구성을 <location> 요소로 이동합니다. 이 요소는 해당 구성의 범위를 적용되는 사이트로 지정합니다. 자세한 내용은 IIS 7.0 구성에서 잠금을 사용하는 방법 (http://learn.iis.net/page.aspx/145/how-to-use-locking-in-iis-configuration/) 을 참조하십시오. Microsoft는 고객을 보호하기 위해 협력해주신 다음 분들께 감사드립니다 (http://technet.microsoft.com/nl-nl/security/gg309157.aspx) .
참고 이것은 Microsoft 기술 지원 서비스 내에서 직접 작성한 “빠른 게시” 문서입니다. 여기에 포함된 정보는 발생한 문제에 대해 있는 그대로 제공됩니다. 이 문서는 즉시 참조할 수 있도록 빠르게 작성되어서 표기상의 오류가 포함되어 있을 수 있고 언제든지 예고 없이 수정될 수 있습니다. 기타 고려 사항은사용 약관 (http://go.microsoft.com/fwlink/?LinkId=151500) 을 참조하십시오. 정보

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 3
키워드: 
atdownload kbinfo kbexpertiseinter kbsecurity KB2698981
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
중소기업이 아닙니까?
소셜 채널로 문의하기