System Center 2012 R2의 원격 콘솔

 

적용 대상: System Center 2012 R2 Virtual Machine Manager

원격 콘솔은 System Center 2012 R2에 도입된 기능입니다. 다른 원격 도구(또는 원격 데스크톱)를 사용할 수 없는 경우에는 원격 콘솔이 가상 컴퓨터의 콘솔에 액세스할 수 있는 기능을 테넌트에 제공합니다. 가상 컴퓨터가 격리된 네트워크, 신뢰할 수 없는 네트워크 또는 인터넷에 있는 경우 테넌트는 원격 콘솔을 사용하여 가상 컴퓨터에 액세스할 수 있습니다.

원격 콘솔을 실행하려면 다음 항목이 필요합니다.

  • Microsoft® Hyper-V® Server 2012 R2

  • System Center 2012 R2 Virtual Machine Manager

  • System Center 2012 R2 Service Provider Foundation

  • Windows Server용 Windows Azure 팩

참고

테넌트에는 원격 데스크톱 프로토콜 8.1을 지원하는 클라이언트 컴퓨터가 필요합니다. 예를 들어 Windows 8을 실행하는 사용자는 Windows 8.1로 업그레이드해야 합니다. 또한 Windows 7 SP1을 사용 중인 클라이언트는 KB2830477을 설치해야 합니다.

이 버전에서 원격 콘솔은 제한된 기능을 지원합니다. 클립보드, 소리, 프린터 리디렉션 및 드라이브 매핑과 같은 기능은 지원되지 않습니다. 원격 콘솔 기능은 실제 컴퓨터에 사용되는 KVM(키보드, 비디오 및 마우스) 연결과 비슷한 방식으로 작동합니다.

사용자 인증

Windows Server 2012 R2의 Hyper-V는 인증서 기반 인증을 지원합니다. 인증서 기반 인증은 테넌트가 해당 테넌트에 할당된 가상 컴퓨터에만 액세스할 수 있도록 사용됩니다.Windows Server용 Windows Azure 팩 웹 포털, Service Provider Foundation 및 Virtual Machine Manager(VMM)는 가상 컴퓨터에 대한 액세스를 인증하고 권한을 부여하며, Hyper-V 호스트에서 단일 가상 컴퓨터에 대한 액세스 권한을 부여하는 데 사용하는 토큰을 제공합니다.

다음 그림에는 테넌트가 인터넷 등 신뢰할 수 없는 네트워크를 통해 가상 컴퓨터에 액세스할 때 원격 콘솔 액세스에 필요한 구성 요소가 나와 있습니다. 이 환경이 회사 네트워크에 배포된 경우 RD 게이트웨이(원격 데스크톱 게이트웨이)가 생략됩니다.

원격 콘솔 인증서 기반 인증

인증서용 개인 및 공개 키는 트러스트 관계를 설정하는 데 사용됩니다. 다음 섹션에서는 필수 인증서를 만드는 방법을 설명합니다.

원격 액세스용 인증서 만들기

인증서는 RD 게이트웨이 서버, Hyper-V 호스트 및 VMM 간의 트러스트 관계를 만드는 데 사용됩니다. 인증서를 통해 RD 게이트웨이 및 Hyper-V 호스트는 VMM RD 게이트웨이에서 발급된 클레임 토큰을 허용할 수 있습니다. RD 게이트웨이 및 Hyper-V 호스트에 대한 유효성 검사에 동일한 인증서를 사용할 수도 있고 다른 인증서를 사용할 수 있습니다. 유효한 인증서는 다음 요구 사항을 충족해야 합니다.

  1. 인증서는 만료되지 않아야 합니다.

  2. 키 사용 필드는 디지털 서명을 포함해야 합니다.

  3. 확장된 키 사용 필드는 다음과 같은 클라이언트 인증 개체 ID를 포함해야 합니다. (1.3.6.1.5.5.7.3.2)

  4. 인증서를 발급한 CA(인증 기관)의 루트 인증서를 신뢰할 수 있는 루트 인증 기관 인증서 저장소에 설치해야 합니다.

  5. 인증서용 암호화 서비스 공급자에서 SHA256을 지원해야 합니다.

상용 인증 기관 또는 엔터프라이즈 인증 기관에서 또는 자체 서명된 인증서를 사용하여 유효한 인증서를 가져올 수 있습니다.

참고

상용 인증 기관 또는 엔터프라이즈 인증 기관에서 또는 자체 서명된 인증서를 사용하여 유효한 인증서를 가져올 수 있습니다. 자체 서명된 인증서를 사용하는 경우 RD 게이트웨이 및 Hyper-V 호스트의 신뢰할 수 있는 루트 인증 기관 인증서 저장소에 인증서의 공개 키를 저장해야 합니다.

MakeCert 도구를 사용하여 테스트 인증서 만들기

테스트를 위해 MakeCert 도구를 사용하여 자체 서명된 인증서를 만들 수 있습니다. MakeCert는 Windows SDK의 한 구성 요소입니다.

  • SDK를 다운로드하려면 Windows 7용 Windows SDK를 참조하십시오.

  • 자세한 내용은 Windows 개발자 센터에서 MakeCert를 참조하십시오.

다음 코드는 자체 서명된 인증서를 만드는 방법에 대한 예를 제공합니다.

makecert -n "CN=Remote Console Connect" -r -pe -a sha256 -e <mm/dd/yyyy> -len 2048 -sky signature -eku 1.3.6.1.5.5.7.3.2 -ss My -sy 24 "<CertificateName>.cer"  

여기서

-sky signature 서명에 사용
-r 자체 서명된 인증서 생성
-n "CN=원격 콘솔 연결" 주체 이름(원격 콘솔 연결)
-pe 개인 키를 내보낼 수 있음
-a sha256 알고리즘
-len 2048 키 길이
-e <mm/dd/yyyy> 만료 날짜
-eku 1.3.6.1.5.5.7.3.2 향상된 키 사용(클라이언트 인증 개체 ID)
-ss My 인증서 저장소 My에 개인 키 저장
-sy 24 암호화 공급자 종류(SHA256 지원)
“<CertificateName>.cer” 공개 키의 이름

인증 기관 사용

인증 기관에서 인증서를 요청한 경우 Certreq 도구에 다음과 비슷한 인증서 템플릿 .inf 파일을 사용할 수 있습니다. 자세한 내용은 Certreq를 참조하십시오.

[Version]  
Signature="$Windows NT$"  
[NewRequest]  
; Change to your,country code, company name and common name  
Subject = "C=US, O=Contoso, CN=wap-rdg.contoso.com"  
; Indicates both encryption and signing  
KeySpec = 1   
; Length of the public and private key, use 2048 or higher  
KeyLength = 2048  
; Certificate will be put into the local computer store  
MachineKeySet = TRUE   
PrivateKeyArchive = FALSE  
RequestType = PKCS10  
UserProtected = FALSE  
; Allow the key to be shared between multiple computers  
Exportable = TRUE  
SMIME = False  
UseExistingKeySet = FALSE   
; ProviderName and ProviderType must be for a CSP that supports SHA256  
ProviderName = "Microsoft Enhanced RSA and AES Cryptographic Provider"  
ProviderType = 24  
; KeyUsage must include DigitalSignature. 0xA0 also includes Key Encipherment  
KeyUsage = 0xa0  
[EnhancedKeyUsageExtension]  
OID=1.3.6.1.5.5.7.3.2  
  

다음과 같은 Windows PowerShell 스크립트를 실행하여 .pfx 파일의 인증서가 알고리즘 및 향상된 키 사용 요구 사항을 충족하는지 확인할 수 있습니다.

$cert = Get-PfxCertificate <cert.pfx>  
if ($cert.PrivateKey.CspKeyContainerInfo.ProviderName -ne "Microsoft Enhanced RSA and AES Cryptographic Provider")  
{  
       Write-Warning "CSP may not support SHA256"  
}  
if (! (Test-Certificate $cert -EKU "1.3.6.1.5.5.7.3.2") )  
{  
       Write-Warning "Certificate is not valid"  
}  
  

인증서 설치

인증서를 만든 후에는 해당 인증서를 설치하고 Virtual Machine Manager에서 인증서를 사용해 클레임 토큰을 발급하도록 구성해야 합니다. 그런 다음 인증서의 개인 키를 Virtual Machine Manager 데이터베이스로 가져옵니다. 그렇게 하려면 Set-SCVMMServer Windows PowerShell cmdlet을 사용합니다. 예를 들면 다음과 같습니다.

PS C:\> $mypwd = ConvertTo-SecureString "password" -AsPlainText -Force  
PS C:\> $cert = Get-ChildItem .\RemoteConsoleConnect.pfx   
PS C:\> $VMMServer = VMMServer01.Contoso.com  
PS C:\> Set-SCVMMServer -VMConnectGatewayCertificatePassword $mypwd -VMConnectGatewayCertificatePath $cert -VMConnectHostIdentificationMode FQDN -VMConnectHyperVCertificatePassword $mypwd -VMConnectHyperVCertificatePath $cert -VMConnectTimeToLiveInMinutes 2 -VMMServer $VMMServer  
  

이 예제에서는 같은 인증서를 RD 게이트웨이 및 Hyper-V 호스트에 사용하며 토큰의 수명은 2분입니다. 토큰의 수명은 1~60분 사이로 선택할 수 있습니다.

FQDN(정규화된 도메인 이름)으로 호스트 서버를 식별합니다. 또는 IPv4 주소, IPv6 주소 및 호스트 이름으로 호스트를 구분할 수도 있습니다. 호스트 ID는 테넌트로 전송되는 RDP(원격 데스크톱 프로토콜) 파일에 포함됩니다.

참고

VMMServer01.Contoso.com은 예제 호스트 서버 이름으로 사용되며 실제 서버 이름으로 변경해야 합니다.

‎%%78%%% ‎

Virtual Machine Manager은 각 호스트를 새로 고칠 때 Hyper-V 호스트의 개인 인증서 저장소에 인증서를 설치하고, 해당 인증서를 사용하여 토큰 유효성을 검사하도록 Hyper-V 호스트를 구성합니다. 다음과 같은 Windows PowerShell 명령을 사용하여 모든 Hyper-V 호스트의 복구를 강제할 수 있습니다.

PS C:\> Get-SCVMHost -VMMServer "VMMServer01.Contoso.com" | Read-SCVMHost  

Hyper-V 호스트

토큰을 인증할 때 Hyper-V는 특정 인증서 및 해시 알고리즘을 사용하여 서명된 토큰만 허용합니다. Virtual Machine Manager가 Hyper-V 호스트의 필요한 구성을 수행합니다.Windows Server 2012 R2의 Hyper-V만 원격 콘솔 기능을 지원합니다.

자체 서명된 인증서를 사용하는 경우 Hyper-V 호스트의 신뢰할 수 있는 루트 인증 기관 인증서 저장소로 인증서의 공개 키를 가져와야 합니다. 다음과 같은 스크립트는 Windows PowerShell을 사용하여 공개 키를 가져오는 방법에 대한 예를 제공합니다.

PS C:\> Import-Certificate -CertStoreLocation cert:\LocalMachine\Root -Filepath "<certificate path>.cer"  

Virtual Machine Manager를 구성한 후 인증서를 설치한 경우 Hyper-V Virtual Machine 관리 서비스를 다시 시작해야 합니다.

다음과 같이 Hyper-V 호스트가 원격 콘솔용으로 올바르게 구성되었는지 확인할 수 있습니다.

  1. 인증서가 Hyper-V 호스트의 개인 인증서 저장소에 있으며 신뢰할 수 있는지 확인합니다.

  2. 신뢰할 수 있는 발급자 인증서의 해시 구성을 확인합니다.

다음 스크립트는 Windows PowerShell을 사용하여 인증서가 Hyper-V 호스트의 개인 인증서 저장소에 설치되어 있는지 확인하는 방법에 대한 예를 제공합니다.

PS C:\> dir cert:\localmachine\My\ | Where-Object { $_.subject -eq "CN=Remote Console Connect" }  

다음 스크립트는 Windows PowerShell을 사용하여 신뢰할 수 있는 발급자 인증서의 해시 구성을 확인하는 방법의 예를 제공합니다.

PS C:\> $TSData = Get-WmiObject -computername $Server -NameSpace "root\virtualization\v2" -Class "Msvm_TerminalServiceSettingData"  

TrustedIssuerCertificateHashes 배열에는 원격 콘솔에 연결하는 데 사용되는 인증서 지문을 포함해야 합니다.AllowedHashAlgorithms 배열은 비어 있거나 SHA256 알고리즘을 포함해야 합니다. 배열이 비어 있는 경우 기본값은 SHA256 또는 SHA512로 지정됩니다.

참고

Virtual Machine Manager에서 SHA256 토큰을 생성합니다.

원격 데스크톱 게이트웨이

RD 게이트웨이(원격 데스크톱 게이트웨이)는 가상 컴퓨터에 대한 콘솔 액세스에만 사용할 수 있습니다. RD 게이트웨이를 구성할 때 구성 변경이 발생하여 다른 용도로는 게이트웨이를 사용할 수 없게 됩니다. 다음 작업은 RD 게이트웨이를 구성할 때 완료됩니다.

  1. RD 게이트웨이를 배포하고 인증 플러그 인을 설치합니다.

  2. 인증서를 설치합니다.

  3. WMI를 사용하여 신뢰할 수 있는 발급자 인증서를 구성합니다.

  4. RD 게이트웨이용 인증서를 만듭니다.

페더레이션된 인증을 지원하려면 Microsoft System Center Virtual Machine Manager 콘솔 연결 게이트웨이를 RD 게이트웨이 서버에 설치해야 합니다. 먼저 가상 컴퓨터를 만든 후 원격 데스크톱 서비스를 사용하도록 설정합니다.

그런 다음 System Center Virtual Machine Manager 콘솔 연결 게이트웨이 구성 요소를 설치합니다. Virtual Machine Manager 설치 미디어 폴더 CDLayout.EVAL\amd64\Setup\msi\RDGatewayFedAuth에서 이 구성 요소의 설치 이진을 찾아볼 수 있습니다. 고가용성 구성을 위해서는 부하 분산 장치 다음에 RD 게이트웨이 여러 개와 콘솔 연결 게이트웨이 구성 요소를 설치해야 합니다.

그런 다음 각 RD 게이트웨이 서버의 개인 인증서 저장소에 인증서의 공개 키를 가져옵니다. 다음 예와 같이 Windows PowerShell을 사용하여 이 작업을 완료할 수 있습니다.

PS C:\> Import-Certificate -CertStoreLocation cert:\LocalMachine\My -Filepath "<certificate path>.cer"  

자체 서명된 인증서를 사용하는 경우 컴퓨터 계정용 신뢰할 수 있는 루트 인증 기관 인증서 저장소에 인증서의 공개 키를 가져와야 합니다. 다음 예와 같이 Windows PowerShell을 사용하여 이 작업을 완료할 수 있습니다.

PS C:\> Import-Certificate -CertStoreLocation cert:\LocalMachine\Root -Filepath "<certificate path>.cer"  

토큰을 인증할 때 RD 게이트웨이는 특정 인증서 및 해시 알고리즘을 사용하여 서명된 토큰만 허용합니다. 이 구성은 WMI FedAuthSettings 클래스에서 TrustedIssuerCertificateHashesAllowedHashAlgorithms 속성을 설정하여 수행합니다. 이러한 설정을 지정할 수 있는 관리자 자격 증명을 보유해야 합니다.

TrustedIssuerCertificateHashes 속성은 RD 게이트웨이 서버에 저장된 인증서 지문의 배열입니다. 다음 Windows PowerShell 명령을 사용하여 TrustedIssuerCertificateHashes 속성을 설정할 수 있습니다.

$Server = "rdgw.contoso.com"  
$Thumbprint = "95442A6B58EB5E443313C1B4AFD2665991D354CA"  
$TSData = Get-WmiObject -computername $Server -NameSpace "root\TSGatewayFedAuth2" -Class "FedAuthSettings"  
$TSData.TrustedIssuerCertificates = $Thumbprint  
$TSData.Put()  

마지막 단계는 RD 게이트웨이용 자체 서명된 인증서를 선택하거나 만드는 것입니다. 그렇게 하려면 RD 게이트웨이 관리자를 열고, 원격 데스크톱 게이트웨이를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.속성 대화 상자에서 SSL 인증서 탭을 클릭합니다.

이 인증서는 테넌트 클라이언트 컴퓨터에서 RD 게이트웨이 서버의 ID를 확인하는 데 사용됩니다. 인증서의 CN 이름은 RD 게이트웨이 서버의 FQDN과 일치해야 합니다. RD 게이트웨이 관리자를 열고 자체 서명된 인증서를 할당하거나 만듭니다.

참고

자체 서명된 인증서는 테스트용으로만 사용하고, 프로덕션 배포에 사용해서는 안 됩니다. 자체 서명된 인증서를 사용하려면 RD 게이트웨이를 통해 연결되는 모든 테넌트 컴퓨터에도 인증서를 설치해야 합니다.

다음과 같은 단계를 수행하여 RD 게이트웨이의 구성을 확인할 수 있습니다.

  1. 인증 및 권한 부여를 위해 콘솔 연결 게이트웨이를 사용하도록 RD 게이트웨이를 구성해야 합니다. 다음 예와 같이 Windows PowerShell을 사용하여 이 작업을 완료할 수 있습니다.

    PS C:\> Get-WmiObject -Namespace root\CIMV2\TerminalServices -Class Win32_TSGatewayServerSettings  
    

    AuthenticationPluginAuthorizationPlugin 속성이 FedAuthorizationPlugin으로 설정되었는지 확인합니다.

  2. 컴퓨터 계정용 개인 인증서 저장소에 인증서가 설치되어 있는지 확인합니다. 다음 예와 같이 Windows PowerShell을 사용하여 이 작업을 완료할 수 있습니다.

    PS C:\> dir cert:\localmachine\My\ | Where-Object { $_.subject -eq "CN=Remote Console Connect" }  
    
  3. 콘솔 연결 게이트웨이의 구성을 확인합니다. 다음 예와 같이 Windows PowerShell을 사용하여 이 작업을 완료할 수 있습니다.

    PS C:\> Get-WmiObject -computername $Server -NameSpace "root\TSGatewayFedAuth2" -Class "FedAuthSettings"  
    

    TrustedIssuerCertificates 배열은 콘솔 연결 게이트웨이용 인증서 지문을 포함해야 합니다.

원격 콘솔의 Windows Server용 Microsoft Azure 팩

Windows Server용 Windows Azure Pack에서 가상 컴퓨터 클라우드 서비스를 통해 요금제별로 원격 콘솔에 대한 액세스를 사용하도록 설정할 수 있습니다. 요금제의 대시보드에서 요금제 서비스 아래의 가상 컴퓨터 클라우드를 선택하고, 추가 설정에서 가상 컴퓨터의 콘솔에 연결을 선택합니다.

원격 데스크톱 게이트웨이를 설치한 경우 원격 데스크톱 게이트웨이를 사용하여 Microsoft Azure 팩을 구성하는 방법 절차를 확인하세요.

보안 권장 사항

다음 작업을 수행하여 보안을 개선하는 것이 좋습니다.

Name 위협 권장 사항
토큰 액세스 My 인증서 저장소에 대한 액세스를 사용하여 임의의 가상 컴퓨터용 액세스 토큰을 생성할 수 있습니다. Active Directory 보안 그룹을 사용하여 토큰을 생성하는 Virtual Machine Manager 서버로 액세스를 제한합니다.
토큰 수명 RDP(원격 데스크톱 프로토콜) 파일에는 EndpointFedAuth 토큰이 포함되며, RDP 파일이 있으면 특정 가상 컴퓨터용 콘솔에 액세스할 수 있습니다. 토큰의 짧은 만료 시간을 구성합니다. 1분이 권장된 만료 시간입니다.SetSCVMMServer Windows PowerShell cmdlet을 사용하여 토큰 수명을 설정합니다.
공유 액세스 다른 사용자가 기존 세션을 종료하는 콘솔 세션을 요청하고 액세스합니다. 여기에는 로그인된 사용자의 콘솔에 액세스한 후 테넌트 리소스에 대한 액세스를 부여하는 호스트가 포함됩니다.

콘솔 세션은 실제 호스트의 KVM 세션과 비슷합니다. 권한 부여 정책에서 콘솔 읽기 또는 콘솔 읽기/쓰기 작업 권한을 부여받은 모든 사용자가 가상 컴퓨터 세션을 사용할 수 있습니다. 기본적으로 이 권한은 모든 관리자에게 부여됩니다.
테넌트 사용자:

작업하지 않을 때에는 콘솔 세션에 로그인하지 마십시오.

짧은 비활성 기간 이후 운영 체제가 잠겼는지 확인하십시오.

호스트 서비스 공급자:

권한 부여 정책을 사용하여 읽기 및 쓰기 권한으로 제한합니다.
악의적인 사용자 악의적인 사용자는 권한이 없는 경우 RD 게이트웨이를 통해 포트에 연결하려고 할 수 있습니다. 예를 들어, 악의적인 사용자는 Hyper-V 호스트의 RDP 포트에 연결하여 사용자 이름 및 암호 조합을 시도할 수 있습니다. 사용자가 Hyper-V 서버의 3389 포트로 직접 연결하지 못하도록 RD 게이트웨이 서버에서 원격 데스크톱 리소스 권한 부여 정책을 구성합니다. 연결이 포트 2179에 대해서만 필요합니다. 자세한 내용은 RD RAP(원격 데스크톱 리소스 권한 부여 정책) 관리를 참조하세요.
Man-in-the-middle 공격 Hyper-V는 "Man-in-the-middle" 공격(또는 MITM)을 방지하는 보안 문제를 더 효율적으로 해결하도록 설계되었습니다. Hyper-V 호스트를 식별하는 데 신뢰할 수 있는 인증서를 사용하면 MITM 공격을 방지하는 데 도움이 됩니다. Hyper-V에서는 서버 인증에 신뢰할 수 있는 인증서를 활용하는 단일 포트 수신기를 사용합니다. 특정 상황에서 Hyper-V는 서버 인증에 사용할 자체 서명된 인증서를 발급합니다. 이러한 접근 방식의 대안으로, CA(인증 기관)에서 발급한 인증서와 같은 다른 인증서를 사용하도록 Hyper-V를 구성할 수 있습니다. 신뢰할 수 있는 루트 인증서에 연결된 올바른 인증서 체인과 함께 Hyper-V 호스트 인증서를 사용하십시오. 그러면 원격 컴퓨터의 ID를 확인할 수 없다는 오류 메시지를 방지할 수 있습니다. 자세한 내용은 Configuring Certificates for Virtual Machine Connection(가상 컴퓨터 연결을 위한 인증서 구성)을 참조하십시오.
세션 스누핑 콘솔 연결이 활성 상태인 경우 호스트 담당자가 가상 컴퓨터의 스냅숏을 만들어 가상 컴퓨터를 다른 서버로 내보내거나 콘솔의 미리 보기 이미지를 수집할 수 있습니다. 권한 부여 정책을 사용하여 읽기 및 쓰기 권한으로 제한합니다. 담당자가 콘솔 세션에 액세스할 수 있는 상황을 테넌트에 공개합니다.
네트워크 구성 악의적인 사용자는 RDP 파일의 속성을 사용하여 네트워크 구성에 대한 정보를 수집할 수 있습니다. Hyper-V를 실행하는 서버에 연결하는 데 호스트 이름을 사용해야 하는지 아니면 IP 주소를 사용해야 하는지를 결정합니다. 이 정보는 서비스 고객에게 보내는 RDP 파일에 포함되어 있습니다. 또한 콘솔 연결을 시작하는 경우 Hyper-V를 실행하는 서버에서 제시하는 인증서에도 있습니다.

인터넷 또는 사용자의 가상 컴퓨터에서 Hyper-V를 실행하는 서버에 직접 액세스할 수 없도록 네트워크 구성을 설정합니다. IP 주소(특히, IPv6 주소)는 공개되는 정보의 양을 줄입니다.

참고 항목

원격 데스크톱 게이트웨이를 사용하여 Microsoft Azure 팩을 구성하는 방법