Infograb logo
Active Directory 수동 접근 구성

이 가이드는 Active Directory 도메인에 연결하고 연결된 도메인에서 Windows 데스크탑에 로그인하는 방법을 보여줍니다.

Teleport는 Active Directory에 대해 인증서 기반 인증을 지원하기 위해 Kerberos 인증 프로토콜을 요구합니다. Azure Active Directory는 Kerberos를 사용하지 않기 때문에 Azure Active Directory에 대해 Teleport Windows Desktop Service를 사용할 수 없습니다.

전제 조건

이 가이드의 단계를 완료하려면 환경이 다음 요구 사항을 충족하는지 확인하세요:

  • 실행 중인 Teleport 클러스터, tctl 관리자 도구 및 tsh 클라이언트 도구의 버전 >= 16.2.0.

    설치된 도구를 확인하려면 다음 명령을 실행하세요:

    tctl version

    Teleport Enterprise v16.2.0 go1.22


    tsh version

    Teleport v16.2.0 go1.22

    사용 중인 Teleport 에디션에 대한 적절한 설치 지침을 따라 이러한 도구를 다운로드할 수 있습니다.

  • Teleport Windows Desktop Service를 실행할 Linux 서버. 다른 리소스에 대해 Teleport 에이전트를 실행 중인 기존 서버를 사용할 수 있습니다.

  • LDAPS에 대해 구성된 Active Directory 도메인. Teleport는 암호화된 LDAP 연결이 필요하므로 도메인이 Active Directory 인증서 서비스 또는 Microsoft가 아닌 인증 기관(CA)을 사용하여 LDAPS 인증서를 발급하는지 확인해야 합니다.

  • 도메인 컨트롤러에 대한 관리 권한.

  • 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면, tsh login으로 로그인한 다음 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

    예를 들어:

    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 16.2.0

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결하고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속 tctl 명령어를 실행할 수 있습니다.

    자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

옵션 1: 자동 구성

비교적 간단한 Active Directory 환경에서는 tctl이 생성한 구성 스크립트를 사용하여 Active Directory 도메인을 Teleport와 함께 사용하도록 부트스트랩할 수 있습니다. 전체적으로 이 스크립트는 다음을 수행합니다:

  1. SAM 계정 이름이 svc-teleport인 제한적인 서비스 계정인 Teleport Service Account를 생성하고 필요한 LDAP 컨테이너를 만듭니다.
  2. Block teleport-svc Interactive Login이라는 그룹 정책 개체(GPO)를 생성하고 연결하여 서비스 계정이 대화형 로그인을 수행하지 못하도록 방지합니다.
  3. Teleport 연결을 허용하기 위해 Teleport Access Policy라는 GPO를 구성합니다. 여기에는:
    • Teleport CA 인증서를 가져옵니다.
    • 방화벽 규칙을 구성합니다.
    • 원격 RDP 연결을 허용합니다.
    • 원격 데스크탑 성능 향상을 위해 RemoteFX를 활성화합니다.
  4. LDAP CA 인증서를 읽습니다(보안 LDAPS 연결에 필요함).
  5. Windows Desktop Service용 Teleport 구성 파일을 생성합니다.

보다 복잡한 Active Directory 환경에서는 생성된 스크립트를 특정 요구 사항에 맞게 수정해야 할 수도 있습니다. 아래의 수동 구성 단계를 따르면 스크립트의 작동 방식을 이해하는 데 더 쉬울 수 있습니다.

tctl이 생성한 구성 스크립트를 사용하려면 다음 명령을 실행하세요:

# 스크립트를 생성하고 configure-ad.ps1이라는 파일에 저장합니다.
tctl desktop bootstrap > configure-ad.ps1

스크립트를 생성한 후 이를 Windows 도메인 컨트롤러로 전송하고 PowerShell 콘솔에서 실행합니다.

옵션 2: 수동 구성

1단계/7. 제한적인 서비스 계정 생성

Teleport는 Active Directory 도메인에 연결하기 위해 서비스 계정이 필요합니다. 최대 보안을 위해 제한적 권한을 가진 전용 서비스 계정을 생성해야 합니다.

서비스 계정을 생성하려면 다음을 수행합니다:

  1. Windows 도메인 컴퓨터에서 PowerShell을 엽니다.

  2. PowerShell 콘솔에 다음 스크립트를 복사하여 붙여넣어 무작위로 생성된 비밀번호의 서비스 계정을 만듭니다:

    $Name="Teleport Service Account"
    $SamAccountName="svc-teleport"
    
    # "비밀번호 복잡성 요구 사항을 충족해야 합니다." 보안 정책 설정을 충족하는 무작위 비밀번호를 생성합니다.
    # 주의: 최소 복잡성 요구 사항이 Windows 기본값에서 변경되었다면 이 스크립트 부분을 수정해야 할 수도 있습니다.
    Add-Type -AssemblyName 'System.Web'
    do {
       $Password=[System.Web.Security.Membership]::GeneratePassword(15,1)
    } until ($Password -match '\d')
    $SecureStringPassword=ConvertTo-SecureString $Password -AsPlainText -Force
    
    New-ADUser `
      -Name $Name `
      -SamAccountName $SamAccountName `
      -AccountPassword $SecureStringPassword `
      -Enabled $true
    

    서비스 계정을 위해 생성된 비밀번호는 즉시 폐기됩니다. Teleport는 LDAP 인증을 위해 x509 인증서를 사용하므로 비밀번호가 필요하지 않습니다. 비밀번호 인증을 수행해야 하는 경우 서비스 계정의 비밀번호를 재설정할 수 있습니다.

  3. PowerShell 콘솔에서 다음 스크립트를 실행하여 서비스 계정에 부여해야 하는 최소 권한을 설정합니다:

    # 귀하의 도메인 구별 이름을 변수에 저장합니다.
    $DomainDN=$((Get-ADDomain).DistinguishedName)
    
    # CDP/Teleport 컨테이너를 생성합니다.
    # 명령이 "New-ADObject : Add is already in use." 오류로 실패할 경우, 해당 객체가 이미 존재하므로 다음 단계로 넘어갑니다.
    New-ADObject -Name "Teleport" -Type "container" -Path "CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,$DomainDN"
    
    # Teleport가 CDP 컨테이너에서 LDAP 컨테이너를 생성할 수 있도록 허용합니다.
    dsacls "CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,$DomainDN" /I:T /G "$($SamAccountName):CC;container;"
    
    # Teleport가 CDP/Teleport 컨테이너에 cRLDistributionPoint 객체를 생성 및 삭제할 수 있도록 허용합니다.
    dsacls "CN=Teleport,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,$DomainDN" /I:T /G "$($SamAccountName):CCDC;cRLDistributionPoint;"
    
    # Teleport가 CDP/Teleport 컨테이너에서 certificateRevocationList 속성을 쓸 수 있도록 허용합니다.
    dsacls "CN=Teleport,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,$DomainDN " /I:T /G "$($SamAccountName):WP;certificateRevocationList;"
    
    # Teleport가 NTAuthCertificates 컨테이너에서 cACertificate 속성을 읽을 수 있도록 허용합니다.
    dsacls "CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,$DomainDN" /I:T /G "$($SamAccountName):RP;cACertificate;"
    
  4. 새 서비스 계정의 보안 식별자를 가져옵니다. 예를 들어, 다음 명령을 실행합니다:

    Get-AdUser -Identity $SamAccountName | Select SID
    

    명령은 지정된 계정의 보안 식별자를 반환합니다:

    SID
    ---
    S-1-5-21-209875886-835680547-4265310078-1113
    
  5. 반환된 전체 보안 식별자(S-로 시작)를 복사합니다.

    이 값을 나중에 ldap 설정 구성 시 sid 필드에 사용합니다.

2단계/7. 서비스 계정의 대화형 로그인 방지

다음 단계에서는 그룹 정책 개체(GPO)를 수정합니다. 그룹 정책 변경 사항은 모든 호스트에 전파되는 데 시간이 걸릴 수 있습니다. 현재 호스트에서 변경 사항이 즉시 반영되도록 하려면 PowerShell을 열고 gpupdate.exe /force를 실행하면 됩니다. 그러나 변경 사항은 여전히 도메인의 다른 호스트로 전파되는 데 시간이 걸릴 수 있습니다.

Teleport 서비스 계정은 LDAP를 통해 인증하는 데만 필요합니다. 이 계정은 일반 사용자처럼 Windows 컴퓨터에 로그온할 필요가 없습니다. 새 그룹 정책 개체(GPO)를 도메인 전체에 연결하여 대화형 로그인을 거부함으로써 서비스 계정이 로그온되는 것을 방지할 수 있습니다.

GPO 생성

  1. PowerShell을 열고 $GPOName 변수에 새 그룹 정책 개체의 이름을 지정합니다:

    $GPOName="Block teleport-svc Interactive Login"
    
  2. PowerShell 콘솔에서 다음 명령을 실행하여 새 GPO를 생성합니다:

    New-GPO -Name $GPOName | New-GPLink -Target $((Get-ADDomain).DistinguishedName)
    

대화형 로그인 거부

  1. 그룹 정책 관리를 열고 **Forest > Domains > $YOUR_DOMAIN > Group Policy Objects**를 확장하여 방금 생성한 그룹 정책 개체를 찾습니다.

  2. 그룹 정책 개체를 선택하고 작업을 클릭한 다음 편집을 선택합니다.

  3. **Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > User Rights Assignment**를 확장합니다.

  4. Deny log on locally를 두 번 클릭한 다음 정의된 정책 설정을 선택합니다.

  5. 사용자 또는 그룹 추가를 클릭한 다음 찾아보기를 클릭합니다.

  6. 서비스 계정 이름의 일부 또는 전체를 입력합니다. 예: svc-teleport를 입력한 다음 이름 확인을 클릭합니다.

  7. Teleport Service Account가 선택되었는지 확인하고 모든 대화상자에서 확인을 클릭합니다.

    대화형 로그인을 거부합니다.
  8. 원격 데스크톱 서비스를 통한 로그인 거부에 대해서도 동일한 단계를 반복합니다.

추가 보안을 위해 사용자 이름과 비밀번호 인증을 완전히 비활성화할 수 있습니다. 사용자 이름과 비밀번호 인증을 비활성화하면 Teleport 가상 스마트 카드를 통해서만 도메인 내 Windows 컴퓨터에 접근할 수 있습니다.

3단계/7. Teleport 연결을 허용하는 GPO 구성

Teleport를 통해 Windows 데스크탑 세션에 대한 액세스를 가능하게 하려면 Windows 컴퓨터가 Teleport 인증서 발급 기관(기관)을 신뢰하고 인증서 기반 스마트 카드 인증을 수락하도록 허용하는 그룹 정책 개체를 구성해야 합니다.

다음 단계를 따라 그룹 정책 개체를 구성할 수 있습니다:

  • 기존 Teleport 클러스터에 대해 서명된 인증서를 내보냅니다.
  • 서명된 Teleport 인증서를 가져오기 위해 새 그룹 정책 개체를 생성합니다.
  • Active Directory 도메인에 서명된 Teleport 인증서를 게시합니다.
  • NTAuth Store에 서명된 Teleport 인증서를 게시합니다.
  • 스마트 카드 인증을 활성화합니다.
  • 원격 데스크톱 연결을 허용합니다.

Teleport 사용자 인증서 발급 기관을 회전하는 경우 이 단계를 반복해야 합니다.

Teleport 인증서 내보내기

Teleport 사용자 CA 인증서를 내보내려면:

  1. 그룹 정책 관리에 접근할 수 있는 Windows 도메인 컨트롤러에 로그인합니다.

  2. PowerShell을 열고 다음 명령을 실행하여 Teleport 사용자 인증서를 다운로드합니다. teleport.example.com을 Teleport 클러스터의 주소로 대체합니다:

    curl.exe -fo user-ca.cer https://teleport.example.com/webapi/auth/export?type=windows
  3. 나중에 사용할 user-ca.cer 파일의 경로를 기록해 둡니다.

Teleport 인증서용 GPO 생성

그룹 정책 개체를 구성하려면:

  1. 다음 명령을 실행하여 Teleport Access Policy라는 이름의 새 그룹 정책 개체를 생성합니다:

    $GPOName="Teleport Access Policy"
    New-GPO -Name $GPOName | New-GPLink -Target $((Get-ADDomain).DistinguishedName)
    

    이 명령은 GPO를 전체 Active Directory 도메인에 적용합니다. 도메인 내의 특정 컴퓨터 하위 집합만 보호하려면 해당 컴퓨터만 포함된 특정 조직 단위(OU)에 GPO를 적용할 수 있습니다.

    AWS 관리 Microsoft Active Directory를 사용하는 경우 AWS 위임 도메인 관리자 계정은 도메인 수준에서 GPO를 적용할 권한이 없습니다. 대신, 도메인의 루트 내에 ComputersUsers가 한 수준 내에 중첩된 자동 생성된 OU에 이 GPO를 적용해야 합니다.

    AWS 관리 AD OU 위치
  2. 그룹 정책 관리를 열고 Forest, Domains, 도메인 및 Group Policy Objects를 확장하여 방금 생성한 GPO를 찾습니다.

  3. 새 GPO를 선택하고 오른쪽 클릭한 다음 편집을 선택합니다.

  4. 그룹 정책 편집기에서 **Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies**를 확장합니다.

  5. 신뢰할 수 있는 루트 인증 기관을 오른쪽 클릭한 다음 가져오기를 클릭합니다.

  6. 마법사를 사용하여 Teleport 인증서를 선택하고 가져옵니다.

    Teleport CA 가져오기
  7. 해당 호스트에서 GPO 업데이트가 즉시 효과를 보려면 PowerShell을 열고 다음 명령을 실행합니다(선택 사항):

    gpupdate.exe /force
    

Active Directory 도메인에 Teleport CA 게시

Active Directory 도메인에 Teleport 인증서를 게시하려면:

  1. 도메인 관리자 또는 AWS 위임 도메인 관리자 그룹의 멤버로서 Active Directory 도메인에 조인된 Windows 컴퓨터에 로그인합니다.

  2. PowerShell을 열고 Teleport에서 내보낸 user-ca.cer 파일의 경로를 사용하여 다음 명령을 실행합니다:

    certutil -dspublish -f user-ca.cer RootCA
    

    이 명령은 도메인 컨트롤러가 Teleport CA를 신뢰하도록 하여 Teleport를 통한 인증서 기반 스마트 카드 인증이 성공하도록 합니다.

Teleport CA를 NTAuth Store에 게시

Teleport에서 발행한 인증서로 인증이 성공하려면 Teleport CA를 엔터프라이즈 NTAuth 스토어에 게시해야 합니다. Teleport는 인증할 수 있을 때 CA를 주기적으로 게시하지만, LDAP 접근을 위해 Teleport가 처음 수동으로 수행해야 합니다.

LDAP에 Teleport CA를 게시하려면:

  1. PowerShell을 열고 다음 명령을 실행합니다. user-ca.cer 파일의 경로를 사용하여:

    certutil -dspublish -f user-ca.cer NTAuthCA
    
  2. 다음 명령을 실행하여 LDAP에서 CA를 업데이트합니다:

    certutil -pulse
    

    이 단계는 엄격하게 필요하지는 않습니다. 그러나 인증서가 전파되지 않고 다음 단계로 진행할 수 있습니다.

스마트 카드 인증 활성화

Teleport는 스마트 카드의 인증서를 에뮬레이션하여 인증서 기반 인증을 수행합니다.

그룹 정책 개체에 스마트 카드 인증을 추가하려면:

  1. 그룹 정책 편집기에서 Teleport Access Policy 그룹 정책 개체를 열어야 합니다.

  2. **Computer Configuration > Policies > Windows Settings > Security Settings > System Services**를 확장합니다.

  3. 스마트 카드를 두 번 클릭하고 이 정책 설정 정의를 선택합니다.

  4. 자동을 선택한 다음 확인을 클릭합니다.

    스마트 카드 서비스 활성화
  5. 해당 호스트에서 GPO 업데이트가 즉시 효과를 보려면 PowerShell을 열고 다음 명령을 실행합니다(선택 사항):

    gpupdate.exe /force
    

원격 데스크톱 연결 허용

다음으로 도메인 컴퓨터에 대한 원격 연결을 허용하는 정책을 구성해야 합니다.

  1. 그룹 정책 편집기에서 Teleport Access Policy 그룹 정책 개체를 열어야 합니다.

  2. **Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Connections**를 확장합니다.

  3. 원격 데스크톱 서비스를 사용하여 원격으로 연결할 수 있는 사용자 허용을 오른쪽 클릭하여 편집을 선택합니다. 가능을 선택한 다음 확인을 클릭합니다.

  4. 원격 데스크톱 세션 호스트에서 보안을 선택합니다.

  5. 네트워크 수준 인증을 사용하여 원격 연결에 대한 사용자 인증 요구를 오른쪽 클릭하여 편집을 선택합니다. 비활성화를 선택한 다음 확인을 클릭합니다.

    NLA 지원

    Teleport 16.2.0 이상은 NLA를 지원합니다. 지원되는 버전을 실행 중이고 NLA를 활성화하면 이 단계를 건너뛸 수 있습니다. NLA 섹션에서 자세히 읽어보세요.

    사용자 인증 요구 비활성화
  6. 연결 시 항상 비밀번호 입력을 오른쪽 클릭하여 편집을 선택합니다. 비활성화를 선택한 다음 확인을 클릭합니다.

    Teleport 인증서 기반 스마트 카드 인증은 각 데스크탑 세션에 대한 무작위 스마트 카드 PIN을 생성하고 RDP 연결을 설정할 때 해당 PIN을 데스크탑에 제공합니다. PIN은 Teleport 사용자에게 제공되지 않기 때문에 연결 시 항상 비밀번호를 요구 정책은 인증이 성공하기 위해 비활성화돼야 합니다.

  7. Computer Configuration, Policies, Windows Settings, Security Settings를 반복하여 Windows Firewall with Advanced Security를 선택합니다.

  8. 수신 규칙을 오른쪽 클릭하고 새 규칙을 선택합니다.

    • 미리 정의된 항목에서 원격 데스크톱을 선택한 다음 다음을 클릭합니다.
    • **사용자 모드(TCP-in)**을 선택한 다음 다음을 클릭합니다.
    • 연결 허용을 선택하고 마침을 클릭합니다.
    방화벽 열기
  9. 해당 호스트에서 GPO 업데이트가 즉시 효과를 보려면 PowerShell을 열고 다음 명령을 실행합니다(선택 사항):

    gpupdate.exe /force
    

RemoteFX 활성화

Teleport Access Policy 그룹 정책 개체를 설정을 완료하려면 RemoteFX를 활성화해야 합니다. RemoteFX는 원격 데스크탑 연결의 성능을 크게 향상시키는 압축 기술입니다.

  1. 그룹 정책 편집기에서 Teleport Access Policy 그룹 정책 개체를 열어야 합니다.

  2. **Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment > RemoteFX for Windows Server 2008 R2**를 확장합니다.

  3. RemoteFX 구성을 오른쪽 클릭하여 편집을 선택합니다. 가능을 선택한 다음 확인을 클릭합니다.

    RemoteFX 활성화 (1단계)
  4. 이제 왼쪽 창의 원격 세션 환경 (Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment)을 클릭하고 오른쪽 창의 항목에서 Windows Server 2008 R2 SP1을 위한 RemoteFX 클라이언트를 위해 RemoteFX 인코딩을 활성화를 오른쪽 클릭하여 선택합니다. 편집을 선택하고 가능을 선택한 후 확인을 클릭합니다.

    RemoteFX 활성화 (2단계)
  5. 왼쪽 창에서 원격 세션 환경을 다시 클릭하고 오른쪽 창의 항목에서 최대 색상 깊이 제한을 오른쪽 클릭하여 편집을 선택하고 가능을 선택한 다음 확인을 클릭합니다.

    RemoteFX 활성화 (3단계)
  6. PowerShell을 열고 다음 명령을 실행하여 Teleport 그룹 정책 개체를 업데이트합니다:

    gpupdate.exe /force
    

4단계/7. RDP 연결을 위한 인증서 구성

Teleport RDP 클라이언트는 TLS 연결을 위한 보안 암호화 알고리즘이 필요합니다. 그러나 Windows Server 2012 R2는 기본적으로 이러한 알고리즘을 지원하지 않습니다.

Windows Server 2012 R2에서 필요한 알고리즘을 지원하도록 하려면 다음을 수행합니다:

  • 타원 곡선 암호화(ECC)를 사용하는 새로운 인증서 템플릿을 생성합니다.
  • 원격 데스크탑 연결을 위한 인증서를 발급할 때 새로운 인증서 템플릿을 사용하도록 Teleport 그룹 정책 개체를 업데이트합니다.

호스트가 필요한 알고리즘을 지원하는 경우 이 단계를 건너뛰고 LDAP CA 인증서 내보내기로 진행할 수 있습니다.

인증서 템플릿 생성

타원 곡선 P-384 및 SHA384를 서명 알고리즘으로 사용하는 인증서 템플릿을 생성하려면:

  1. 시작, 제어판 및 관리 도구를 클릭하여 Certificate Authority를 선택합니다.

  2. CA 컴퓨터를 열고, Certificate Templates를 오른쪽 클릭한 다음 Manage를 선택합니다.

  3. Computer 템플릿을 선택하고 오른쪽 클릭한 다음 Duplicate Template을 선택합니다.

  4. Compatibility 탭에서:

    • Certification AuthorityWindows Server 2012 R2로 변경한 후 확인을 클릭합니다.
    • Certificate recipientWindows Server 2012 R2로 변경한 후 확인을 클릭합니다.
  5. General 탭에서:

    • Template display nameRemoteDesktopAccess로 변경합니다.
    • Template nameRemoteDesktopAccess인지를 확인합니다.
  6. Cryptography 탭에서:

    • Provider CategoryKey Storage Provider로 변경합니다.
    • Algorithm nameECDH_P384로 변경합니다.
    • Request hashSHA384로 변경합니다.
  7. Extensions 탭에서:

    • Application Polices를 선택하고 편집을 클릭합니다.
    • 목록에서 모든 항목을 제거합니다.
  8. Security 탭에서:

    • Domain Computers를 선택하고 해당 그룹에 ReadEnroll 권한을 부여합니다.
  9. 확인을 클릭하여 템플릿을 생성합니다.

  10. 인증서 관리 콘솔로 돌아가서 Certificate Templates를 오른쪽 클릭합니다.

  11. 새로 만들기를 클릭하고 인증서 템플릿을 발급을 선택한 다음 RemoteDesktopAccess를 선택합니다.

  12. 확인을 클릭합니다.

GPO를 새 인증서 템플릿 사용으로 업데이트

새 인증서 템플릿을 사용하도록 Teleport 그룹 정책 개체를 업데이트하려면:

  1. 그룹 정책 편집기에서 Teleport Access Policy 그룹 정책 개체를 엽니다.

  2. **Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Security**로 이동합니다.

  3. 서버 인증서 템플릿을 오른쪽 클릭하여 편집을 선택하고 가능을 선택한 후 인증서 템플릿 이름을 RemoteDesktopAccess로 설정합니다.

    RDP 인증서 템플릿
  4. Computer Configuration, Policies 및 Windows Settings를 확장하여 Public Key Policies를 선택합니다.

  5. Certificate Services Client - Auto-Enrollment를 두 번 클릭한 다음 설정 모델에서 가능을 선택합니다.

  6. PowerShell을 열고 다음 명령을 실행하여 Teleport 그룹 정책 개체를 업데이트합니다:

    gpupdate.exe /force
    

5단계/7. LDAP CA 인증서 내보내기

Teleport는 LDAPS를 사용하여 도메인 컨트롤러에 연결합니다. 따라서 Teleport는 초기 연결 동안 도메인 컨트롤러에서 보낸 인증서를 신뢰해야 합니다. 도메인 컨트롤러의 인증서가 Teleport를 실행하는 시스템의 신뢰할 수 있는 저장소에 신뢰되는 경우 이 단계를 건너뛸 수 있습니다.

LDAP CA 인증서를 찾을 수 없는 경우 insecure_skip_verify: true를 설정하여 TLS 확인을 건너뛸 수 있습니다. 그러나 운영 환경에서는 TLS 확인을 건너뛰지 않아야 합니다.

CA 인증서를 내보내려면:

  1. 시작, 제어판 및 관리 도구를 클릭하여 Certificate Authority를 선택합니다.
  2. CA 컴퓨터를 선택하고 오른쪽 클릭한 다음 속성을 선택합니다.
  3. 일반 탭에서 인증서 보기를 클릭합니다.
  4. 세부정보를 선택한 다음 파일로 복사를 클릭합니다.
  5. 인증서 내보내기 마법사에서 다음을 클릭하고 **DER 인코딩 바이너리 X.509 (.CER)**가 선택되어 있는지 확인합니다.
  6. 인증서의 이름과 위치를 선택하고 마법사를 완료합니다.
  7. 내보낸 파일을 Teleport가 실행되는 시스템으로 전송합니다. 이 인증서를 시스템의 신뢰할 수 있는 저장소에 추가하거나 der_ca_file 구성 변수에 파일 경로를 제공할 수 있습니다.

6단계/7. Teleport 구성

Windows 데스크탑 접근을 보호하기 위해 Teleport를 구성하려면:

  1. Teleport를 실행할 Linux 호스트에 Teleport를 설치합니다:

    Linux 서버에 Teleport 설치하기:

    1. Teleport 에디션에 따라 edition을(를) 다음 중 하나로 지정합니다:

      에디션
      Teleport Enterprise Cloudcloud
      Teleport Enterprise (자체 호스팅)enterprise
      Teleport Community Editionoss
    2. 설치할 Teleport의 버전을 확인합니다. 클러스터에서 자동 에이전트 업데이트가 활성화되어 있는 경우, 업데이터와 호환되는 최신 Teleport 버전을 쿼리합니다:

      TELEPORT_DOMAIN=example.teleport.com
      TELEPORT_VERSION="$(curl https://$TELEPORT_DOMAIN/v1/webapi/automaticupgrades/channel/default/version | sed 's/v//')"

      그렇지 않으면, Teleport 클러스터의 버전을 확인합니다:

      TELEPORT_DOMAIN=example.teleport.com
      TELEPORT_VERSION="$(curl https://$TELEPORT_DOMAIN/v1/webapi/ping | jq -r '.server_version')"
    3. Linux 서버에 Teleport를 설치합니다:

      curl https://cdn.teleport.dev/install-v16.2.0.sh | bash -s ${TELEPORT_VERSION} edition

      설치 스크립트는 Linux 서버에서 패키지 관리자를 감지하고 이를 사용하여 Teleport 바이너리를 설치합니다. 설치를 사용자 지정하려면 설치 가이드에서 Teleport 패키지 리포지토리에 대해 알아보세요.

  2. 관리 작업 공간에서 Teleport 클러스터에 로그인합니다.

  3. 다음 명령을 실행하여 클러스터에 대한 초대 토큰을 생성합니다:

    tctl tokens add --type=windowsdesktop
  4. Windows 데스크탑 서비스를 실행할 Linux 호스트에 초대 토큰을 파일로 복사합니다.

  5. Linux 호스트의 /etc/teleport.yaml에 Windows Desktop Service 구성 추가합니다.

    /etc/teleport.yaml은 다음과 유사한 구성 설정을 포함해야 합니다:

    version: v3
    teleport:
      auth_token: path-to-token
      proxy_server: teleport.example.com # 프록시 주소로 변경
    windows_desktop_service:
      enabled: yes
      ldap:
        # Addr에 포트가 포함되어야 합니다.
        # LDAPS 포트는 기본적으로 636입니다(예: example.com:636)
        addr: "$LDAP_SERVER_ADDRESS"
        domain: "$LDAP_DOMAIN_NAME"
        username: "$LDAP_USERNAME"
        sid: "$LDAP_USER_SID"
        # 내보낸 인증서의 경로입니다.
        der_ca_file: path-to-exported-cert
      discovery:
        base_dn: "*"
    auth_service:
      enabled: no
    proxy_service:
      enabled: no
    ssh_service:
      enabled: no
    

    구성 필드에 대한 자세한 설명은 데스크탑 구성 참조를 참조하세요.

  6. 호스트가 부팅될 때 Teleport Desktop Service가 자동으로 시작되도록 시스템 데몬 서비스를 생성하여 구성합니다. 지침은 Teleport Desktop Service를 설치한 방법에 따라 다릅니다.

    Teleport Desktop Service를 실행할 호스트에서 Teleport를 활성화하고 시작하십시오:

    sudo systemctl enable teleport
    sudo systemctl start teleport

    Teleport Desktop Service를 실행할 호스트에서 Teleport에 대한 시스템 데몬 서비스 구성을 생성하고, Teleport 서비스를 활성화한 후 Teleport를 시작하십시오:

    sudo teleport install systemd -o /etc/systemd/system/teleport.service
    sudo systemctl enable teleport
    sudo systemctl start teleport

    Teleport Desktop Service의 상태는 systemctl status teleport로 확인할 수 있으며, 로그는 journalctl -fu teleport로 볼 수 있습니다.

7단계/7. Teleport 사용하여 로그인

Teleport 사용자에게는 원격 Windows 데스크탑에 접근할 적절한 권한이 있어야 합니다. 예를 들어, 모든 Windows 데스크탑 레이블과 로컬 "Administrator" 사용자에 대한 접근을 부여하는 역할을 만들 수 있습니다.

Windows 데스크탑에 접근하기 위한 역할을 만들려면:

  1. 다음 내용을 포함하여 windows-desktop-admins.yaml이라는 파일을 생성합니다:

    kind: role
    version: v5
    metadata:
      name: windows-desktop-admins
    spec:
      allow:
        windows_desktop_labels:
          "*": "*"
        windows_desktop_logins: ["jsmith"]
    

    도메인 사용자와 로컬 사용자의 사용자 이름이 충돌이 발생할 수 있습니다.

  2. 역할을 생성합니다:

    tctl create -f windows-desktop-admins.yaml
  3. windows-desktop-admins 역할을 Teleport 사용자에게 할당하려면 인증 제공자에 맞는 적절한 명령어를 실행하세요:

    1. 로컬 사용자의 역할을 콤마로 구분된 목록으로 가져옵니다:

      ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")')
    2. 로컬 사용자를 편집하여 새로운 역할을 추가합니다:

      tctl users update $(tsh status -f json | jq -r '.active.username') \ --set-roles "${ROLES?},windows-desktop-admins"
    3. Teleport 클러스터에서 로그아웃한 후 새로운 역할을 asum 하기 위해 다시 로그인합니다.

    1. github 인증 커넥터를 가져옵니다:

      tctl get github/github --with-secrets > github.yaml

      --with-secrets 플래그는 spec.signing_key_pair.private_key의 값을 github.yaml 파일에 추가합니다. 이 키는 민감한 값을 포함하고 있기 때문에, 리소스를 업데이트한 후 즉시 github.yaml 파일을 제거해야 합니다.

    2. github.yaml을 편집하고 teams_to_roles 섹션에 windows-desktop-admins을 추가합니다.

      이 역할에 매핑할 팀은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 하지만 팀에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 팀이어야 합니다.

      여기에 예시가 있습니다:

        teams_to_roles:
          - organization: octocats
            team: admins
            roles:
              - access
      +       - windows-desktop-admins
      
    3. 변경 사항을 적용합니다:

      tctl create -f github.yaml
    4. Teleport 클러스터에서 로그아웃한 후 새로운 역할을 assum 하기 위해 다시 로그인합니다.

    1. saml 구성 리소스를 가져옵니다:

      tctl get --with-secrets saml/mysaml > saml.yaml

      --with-secrets 플래그는 spec.signing_key_pair.private_key의 값을 saml.yaml 파일에 추가합니다. 이 키는 민감한 값을 포함하고 있기 때문에, 리소스를 업데이트한 후 즉시 saml.yaml 파일을 제거해야 합니다.

    2. saml.yaml을 편집하고 attributes_to_roles 섹션에 windows-desktop-admins을 추가합니다.

      이 역할에 매핑할 속성은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 그러나 그룹에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 그룹이어야 합니다.

      여기에 예시가 있습니다:

        attributes_to_roles:
          - name: "groups"
            value: "my-group"
            roles:
              - access
      +       - windows-desktop-admins
      
    3. 변경 사항을 적용합니다:

      tctl create -f saml.yaml
    4. Teleport 클러스터에서 로그아웃한 후 새로운 역할을 asum 하기 위해 다시 로그인합니다.

    1. oidc 구성 리소스를 가져옵니다:

      tctl get oidc/myoidc --with-secrets > oidc.yaml

      --with-secrets 플래그는 spec.signing_key_pair.private_key의 값을 oidc.yaml 파일에 추가합니다. 이 키는 민감한 값을 포함하고 있기 때문에, 리소스를 업데이트한 후 즉시 oidc.yaml 파일을 제거해야 합니다.

    2. oidc.yaml을 편집하고 claims_to_roles 섹션에 windows-desktop-admins을 추가합니다.

      이 역할에 매핑할 클레임은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 그러나 그룹에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 그룹이어야 합니다.

      여기에 예시가 있습니다:

        claims_to_roles:
          - name: "groups"
            value: "my-group"
            roles:
              - access
      +       - windows-desktop-admins
      
    3. 변경 사항을 적용합니다:

      tctl create -f oidc.yaml
    4. Teleport 클러스터에서 로그아웃한 후 새로운 역할을 asum 하기 위해 다시 로그인합니다.

    이제 Windows Desktop Service를 실행하는 Linux 호스트와 Windows 컴퓨터에 연결할 수 있는 역할이 있습니다. windows-desktop-admins 역할이 할당된 Teleport 사용자를 사용하여 Teleport Web UI에서 Windows 데스크탑에 연결할 수 있습니다.

Windows 데스크탑에 연결하려면:

  1. windows-desktop-admins 역할이 할당된 계정을 사용하여 Teleport 클러스터에 로그인합니다.

  2. 리소스를 선택합니다.

  3. 유형을 클릭한 다음 데스크탑을 선택합니다.

  4. 접근하려는 Windows 컴퓨터에 대해 연결을 클릭하고 사용하려는 로그인을 선택합니다.

    Teleport가 원격 데스크탑 연결을 열고 데스크탑 세션을 기록하기 시작합니다. Windows 데스크탑에서 작업을 마친 후 더 많은 항목 메뉴를 클릭한 다음 연결 해제를 클릭합니다.

    기록을 보려면 Teleport Web UI에서 관리를 선택한 다음 활동 섹션에서 세션 기록을 클릭합니다.

보안 강화

기본적으로 Default Domain Policy는 모든 인증된 사용자에게 도메인에 워크스테이션 추가 권한을 부여합니다. 보안 모범 사례로 Teleport는 이 권한을 관리자 또는 기타 특권 그룹에만 부여할 것을 권장합니다.

기본 도메인 정책을 변경하려면:

  1. 그룹 정책 관리를 열고 Forest, Domains, 도메인 및 Group Policy Objects를 확장합니다.
  2. Default Domain Controller Policy를 오른쪽 클릭한 다음 편집을 선택합니다.
  3. 그룹 정책 편집기에서 Computer Configuration, Policies, Windows Settings, Security Settings, Local Policies, User Rights Assignment를 확장하여 Add workstations to domain 선택합니다.
  4. Add workstations to domain 정책을 두 번 클릭하고, Authenticated Users 그룹이 존재하지 않도록 합니다.

여러 도메인

windows_desktop_service는 단일 Active Directory 도메인의 호스트에 연결하는 것을 지원하도록 설계되었습니다. 여러 독립 도메인이 있는 경우 이들을 서비스하기 위해 여러 Teleport 에이전트를 배포할 수 있습니다.

다수의 도메인 간에 신뢰 관계가 있는 경우 Teleport를 설정하여 하나의 도메인에서 PKI 작업을 수행하면서 다른 도메인의 사용자에게 인증서를 발급할 수 있습니다.

이 기능이 작동하려면 연결하려는 호스트와 연결하려고 하는 AD 사용자가 동일한 도메인에 있어야 합니다.

예를 들어, example.com에 루트 도메인이 있고 dev.example.com에 개발자를 위한 자식 도메인이 있다고 가정합니다. PKI가 루트에서 구성되어 있지만 자식 도메인의 호스트에 연결할 수 있도록 사용자에게 허용하려면 다음과 같이 진행합니다:

  1. 루트 도메인과 NTAuth 스토어의 신뢰할 수 있는 루트 인증서로 Teleport CA 인증서를 게시합니다.
  2. Teleport가 루트 도메인에 대해 PKI를 수행하면서 자식 도메인의 사용자와 호스트에 대한 인증서를 발급한다고 구성합니다:
windows_desktop_service:
  enabled: yes

  # 자식 도메인으로 향하는 LDAP 설정을 구성합니다.
  ldap:
    addr: dev.example.com:636
    username: 'DEV\svc-teleport'

  # 선택: 자식 도메인에 대한 발견을 구성합니다.
  discovery:
    base_dn: CN=Computers,DC=dev,DC=example,DC=com

  # 루트 도메인에 대해 PKI 수행합니다.
  pki_domain: root.example.com

이 구성을 통해 Teleport는 dev.example.com에서 사용자에 대한 인증서를 생성하지만 CA 및 CRL을 example.com에 게시합니다.

네트워크 수준 인증(NLA)

Teleport 16.2.0 이상에서는 Windows 호스트에 연결할 때 windows_desktop_service가 네트워크 수준 인증(NLA)을 수행하도록 설정할 수 있습니다. NLA는 원격 데스크톱 연결을 설정하기 전에 사용자를 인증하는 보안 기능으로, 원격 Windows 호스트가 인증되지 않은 사용자에게 로그인 화면을 표시하여 시스템 리소스를 소비하지 않도록 합니다.

NLA를 수행하기 위해서는 Teleport의 windows_desktop_service가 키 배포 센터(KDC)에 대한 아웃바운드 Kerberos 연결을 만들 수 있어야 합니다. 이는 일반적으로 TCP 포트 88에서 이루어집니다.

기본적으로 Teleport는 LDAP 구성의 addr 필드에 지정된 호스트에서 KDC를 사용할 수 있다고 가정하고 기본 Kerberos 포트를 사용합니다.

예를 들어, 다음 구성에서 Teleport는 example.com:88에 대해 NLA를 수행합니다.

windows_desktop_service:
    enabled: yes
    ldap:
      addr: example.com:636

또는 Teleport 구성 파일에서 kdc_address를 지정하여 KDC 주소를 재정의할 수 있습니다.

windows_desktop_service:
    enabled: yes
    kdc_address: kdc.example.com   # 지정하지 않으면 기본적으로 포트 88을 사용합니다.

NLA를 활성화하려면 Teleport의 windows_desktop_service가 실행되는 모든 호스트에서 TELEPORT_ENABLE_RDP_NLA 환경 변수를 yes로 설정해야 합니다. NLA는 Active Directory 도메인의 호스트에 연결할 때만 지원되며, 로컬 Windows 사용자로 호스트에 연결할 때는 NLA를 수행하지 않습니다.

컴퓨터 이름

성공적인 인증 흐름을 완료하기 위해 Teleport는 대상 Windows 서버의 호스트 이름을 알아야 합니다. Teleport의 LDAP 기반 발견을 사용하는 경우 조치를 취할 필요가 없습니다. Teleport는 자동으로 채워지는 teleport.dev/computer_name 레이블을 사용하도록 기본 설정되어 있습니다. 이 레이블이 없으면 Teleport는 데스크탑의 addr 필드를 사용합니다.

구성 파일 또는 Teleport API를 통해 Windows 호스트를 등록하고 NLA를 활성화하려면 다음 중 하나를 수행해야 합니다:

  • teleport.dev/computer_name 레이블을 올바른 호스트 이름으로 수동으로 설정합니다.
  • 호스트의 addr이 실제 호스트 이름인지 확인합니다.

다음 단계

문제가 발생하면 일반적인 문제와 솔루션에 대한 문제 해결을 참조하세요. Windows 전용 역할 권한 설정에 대한 정보는 데스크탑에 대한 역할 기반 액세스 제어를 참조하세요.

Teleport 원문 보기