인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
Active Directory 수동 액세스 구성
이 가이드는 Active Directory 도메인을 연결하고 연결된 도메인에서 Windows 데스크탑에 로그인하는 방법을 보여줍니다.
Teleport는 Active Directory의 인증서 기반 인증을 지원하기 위해 Kerberos 인증 프로토콜이 필요하다는 점에 유의해야 합니다. Azure Active Directory는 Kerberos를 사용하지 않기 때문에 Azure Active Directory를 위해 Teleport Windows Desktop Service를 사용할 수 없습니다.
전제 조건
이 가이드의 단계를 완료하려면 환경이 다음 요구 사항을 충족하는지 확인하십시오:
-
실행 중인 Teleport 클러스터,
tctl
관리 도구 및tsh
클라이언트 도구 버전 >= 17.0.0-dev.설치된 도구를 확인하려면 다음 명령을 실행하십시오:
tctl versionTeleport Enterprise v17.0.0-dev go1.22
tsh versionTeleport v17.0.0-dev go1.22
사용 중인 Teleport 에디션에 대한 적절한 설치 지침을 따라 이러한 도구를 다운로드할 수 있습니다.
-
Teleport Windows Desktop Service를 실행할 Linux 서버. 다른 리소스를 위한 Teleport 에이전트를 실행하고 있는 기존 서버를 사용할 수 있습니다.
-
LDAPS로 구성된 Active Directory 도메인. Teleport는 암호화된 LDAP 연결이 필요하므로, 도메인이 Active Directory 인증서 서비스 또는 비Microsoft 인증 기관(CA)을 사용하여 LDAPS 인증서를 발급하는지 확인해야 합니다.
-
도메인 컨트롤러에 대한 관리자 액세스.
-
연결이 가능한지 확인하기 위해
tsh login
으로 로그인한 다음, 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오.예를 들어:
tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
클러스터에 연결할 수 있고
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속tctl
명령어를 실행할 수 있습니다.
자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다.
옵션 1: 자동 구성
상대적으로 간단한 Active Directory 환경의 경우, tctl
생성 구성 스크립트를 사용하여 Teleport와 함께 사용할 Active Directory 도메인을 부트스트랩할 수 있습니다. 고수준에서 스크립트는 다음을 수행합니다:
- 이름이
Teleport Service Account
인 제한적인 서비스 계정을 생성하고 SAM 계정 이름은svc-teleport
로 설정하며, 필요한 LDAP 컨테이너를 생성합니다. Block teleport-svc Interactive Login
라는 그룹 정책 개체(GPO)를 생성하고 연결하여 서비스 계정의 대화형 로그인을 방지합니다.- Teleport 연결을 허용하는
Teleport Access Policy
라는 GPO를 구성하며, 여기에는:- Teleport CA 인증서 가져오기.
- 방화벽 규칙 구성.
- 원격 RDP 연결 허용.
- 원격 데스크탑 성능 향상을 위한 RemoteFX 활성화.
- LDAP CA 인증서를 읽습니다(보안 LDAPS 연결에 필요).
- Windows Desktop Service용 Teleport 구성 파일을 생성합니다.
더 복잡한 Active Directory 환경의 경우, 생성된 스크립트를 수정하여 특정 요구 사항을 충족해야 할 수도 있습니다. 아래의 수동 구성 단계를 따르면 스크립트가 수행하는 작업을 이해하기 쉬울 수 있습니다.
tctl
에서 생성된 구성 스크립트를 사용하려면 다음 명령을 실행하십시오:
스크립트를 생성하고 configure-ad.ps1이라는 파일에 저장합니다.
tctl desktop bootstrap > configure-ad.ps1
스크립트를 생성한 후, 이를 Windows 도메인 컨트롤러로 전송하고 PowerShell 콘솔에서 실행하십시오.
옵션 2: 수동 구성
1/7단계. 제한적인 서비스 계정 생성
Teleport는 Active Directory 도메인에 연결하기 위해 서비스 계정이 필요합니다. 최대 보안을 위해 제한적인 권한을 가진 전용 서비스 계정을 생성해야 합니다.
서비스 계정을 생성하려면:
-
Windows 도메인 컴퓨터에서 PowerShell을 엽니다.
-
다음 스크립트를 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 인증서를 사용하므로 비밀번호가 필요하지 않습니다. 비밀번호 인증을 수행해야 하는 경우 서비스 계정의 비밀번호를 재설정할 수 있습니다.
-
PowerShell 콘솔에서 다음 스크립트를 실행하여 서비스 계정에 부여해야 할 최소 권한을 설정합니다:
# 도메인의 구분 이름을 변수에 저장합니다. $DomainDN=$((Get-ADDomain).DistinguishedName) # CDP/Teleport 컨테이너를 생성합니다. # 명령이 "New-ADObject: 이미 사용 중인 이름으로 디렉토리에 개체를 추가하려고 했습니다." 오류와 함께 실패하면, 개체가 이미 존재하는 것이므로 다음 단계로 진행할 수 있습니다. 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;"
-
새 서비스 계정의 보안 식별자를 가져옵니다. 예를 들어, 다음 명령을 실행합니다:
Get-AdUser -Identity $SamAccountName | Select SID
명령은 지정된 계정의 보안 식별자를 반환합니다:
SID --- S-1-5-21-209875886-835680547-4265310078-1113
-
반환된 보안 식별자(
S-
로 시작하는 전체 값)를 복사합니다.이 값을 나중에
ldap
설정을 구성할 때sid
필드에 사용할 것입니다.
2/7단계. 서비스 계정의 대화형 로그인 방지
다음 단계에서는 그룹 정책 객체(GPO)를 수정합니다. 그룹 정책의 변경 사항은 모든 호스트에 전파되는 데 시간이 걸릴 수 있습니다. PowerShell을 열고 gpupdate.exe /force
를 실행하여 현재 호스트에서 변경 사항을 즉시 적용할 수 있습니다. 그러나 이 변경 사항은 여전히 도메인의 다른 호스트에 전파되는 데 시간이 걸릴 수 있습니다.
Teleport 서비스 계정은 LDAP를 통해 인증하는 데만 필요합니다. 이 계정은 일반 사용자처럼 Windows 컴퓨터에 로그인할 필요가 없습니다. 전체 도메인에 새 그룹 정책 객체(GPO)를 연결하고 대화형 로그인을 거부함으로써 서비스 계정이 로그온되는 것을 방지할 수 있습니다.
GPO 생성
-
PowerShell을 열고
$GPOName
변수에 새 그룹 정책 객체의 이름을 지정합니다:$GPOName="Block teleport-svc Interactive Login"
-
PowerShell 콘솔에서 다음 명령을 실행하여 새 GPO를 생성합니다:
New-GPO -Name $GPOName | New-GPLink -Target $((Get-ADDomain).DistinguishedName)
대화형 로그인 거부
-
그룹 정책 관리를 열고 **
Forest > Domains > $YOUR_DOMAIN > Group Policy Objects
**를 확장하여 방금 생성한 그룹 정책 객체를 찾습니다. -
그룹 정책 객체를 선택하고 작업을 클릭한 다음 편집을 선택합니다.
-
**
컴퓨터 구성 > 정책 > Windows 설정 > 보안 설정 > 로컬 정책 > 사용자 권한 할$1
**을 확장합니다. -
로컬로 로그인 거부를 두 번 클릭한 다음 이 정책 설정 정의를 선택합니다.
-
사용자 또는 그룹 추가를 클릭한 다음 찾아보기를 클릭합니다.
-
서비스 계정 이름의 일부 또는 전체를 입력합니다—예:
svc-teleport
—그런 다음 이름 확인을 클릭합니다. -
Teleport 서비스 계정이 선택되었는지 확인한 후 모든 대화 상자에서 확인을 클릭합니다.
대화형 로그인 거부 -
원격 데스크톱 서비스로 로그인 거부에 대해서도 이 단계를 반복합니다.
보안을 더욱 강화하려면 사용자 이름 및 비밀번호 인증을 완전히 비활성화할 수 있습니다. 사용자 이름 및 비밀번호 인증을 비활성화하면 Teleport 가상 스마트 카드만 도메인 내 Windows 컴퓨터에 접근하는 데 사용될 수 있습니다.
3/7단계. Teleport 연결을 허용하는 GPO 구성
Teleport를 통해 Windows 데스크톱 세션에 대한 액세스를 활성화하려면 Windows 컴퓨터가 Teleport 인증서를 신뢰하고 인증서 기반 스마트 카드 인증을 수락하도록 허용하는 그룹 정책 객체를 구성해야 합니다.
그룹 정책 객체를 구성하려면 다음을 수행해야 합니다:
- 기존 Teleport 클러스터의 Teleport 인증서 기관에 의해 서명된 인증서를 내보냅니다.
- 새로운 그룹 정책 객체를 생성하고 서명된 Teleport 인증서를 가져옵니다.
- 서명된 Teleport 인증서를 Active Directory 도메인에 배포합니다.
- 서명된 Teleport 인증서를 NTAuth 저장소에 배포합니다.
- 스마트 카드 인증을 활성화합니다.
- 원격 데스크톱 연결을 허용합니다.
Teleport 사용자 인증서 기관을 회전할 경우 이 단계를 반복해야 합니다.
Teleport 인증서 내보내기
Teleport 사용자 CA 인증서를 내보내려면:
-
그룹 정책 관리에 접근할 수 있는 Windows 도메인 컨트롤러에 로그인합니다.
-
PowerShell을 열고 다음 명령을 실행하여 Teleport 사용자 인증서 기관을 다운로드합니다. 이때
teleport.example.com
을 Teleport 클러스터의 주소로 바꿉니다:curl.exe -fo user-ca.cer https://teleport.example.com/webapi/auth/export?type=windows -
나중에 사용할
user-ca.cer
파일의 경로를 기록해 둡니다.
Teleport 인증서에 대한 GPO 생성
그룹 정책 개체를 구성하려면:
-
다음 명령을 실행하여
Teleport Access Policy
라는 이름의 새 그룹 정책 개체를 만듭니다:$GPOName="Teleport Access Policy" New-GPO -Name $GPOName | New-GPLink -Target $((Get-ADDomain).DistinguishedName)
이 명령은 GPO를 전체 Active Director 도메인에 적용합니다. 도메인의 특정 컴퓨터 하위 집합만 보호하려는 경우, GPO를 해당 컴퓨터만 포함하는 특정 조직 단위(OU)에 적용할 수 있습니다.
AWS Managed Microsoft Active Directory를 사용하는 경우 AWS 위임 도메인 관리자 계정은 도메인 수준에서 GPO를 적용할 수 있는 권한이 부여되지 않습니다. 대신,
Computers
및Users
가 도메인 루트에 하나의 수준 하위로 중첩된 NetBIOS 도메인 이름을 포함하는 자동으로 생성된 OU에 이 GPO를 적용해야 합니다.AWS Managed AD OU 위치 -
Group Policy Management를 열고 Forest, Domains, 도메인, Group Policy Objects를 확장하여 방금 만든 GPO를 찾습니다.
-
새 GPO (
Teleport Access Policy
를 예로) 를 선택하고 마우스 오른쪽 버튼을 클릭한 후 Edit를 선택합니다. -
그룹 정책 편집기에서 **
Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies
**을 확장합니다. -
Trusted Root Certification Authorities를 마우스 오른쪽 버튼으로 클릭하고 Import를 클릭합니다.
-
마법사를 사용하여 Teleport 인증서를 선택하고 가져옵니다.
Teleport CA 가져오기 -
이 호스트에서 GPO 업데이트가 즉시 적용되도록 하려면 PowerShell을 열고 다음 명령을 실행합니다(선택 사항):
gpupdate.exe /force
Active Directory 도메인에 Teleport CA 게시
Active Directory 도메인에 Teleport 인증서를 게시하려면:
-
도메인 관리자로 또는 Domain Administrators 또는 AWS Delegated Domain Administrators 그룹의 구성원인 계정으로 Active Directory 도메인에 가입된 Windows 컴퓨터에 로그인합니다.
-
PowerShell을 열고 Teleport에서 내보낸
user-ca.cer
파일의 경로를 사용하여 다음 명령을 실행합니다:certutil -dspublish -f user-ca.cer RootCA
이 명령은 도메인 컨트롤러가 Teleport CA를 신뢰할 수 있도록 하여 인증서를 기반으로 한 스마트 카드 인증이 Teleport를 통해 성공할 수 있도록 합니다.
NTAuth 저장소에 Teleport CA 게시
Teleport에서 발급한 인증서로 인증이 성공하려면 Teleport CA가 기업 NTAuth 저장소에 게시되어야 합니다. Teleport는 인증할 수 있을 때 주기적으로 CA를 게시하지만, LDAP 접근을 갖기 위해 첫 번째로 이 단계를 수동으로 수행해야 합니다.
LDAP에 Teleport CA를 게시하려면:
-
PowerShell을 열고
user-ca.cer
파일의 경로를 사용하여 다음 명령을 실행합니다:certutil -dspublish -f user-ca.cer NTAuthCA
-
다음 명령을 실행하여 LDAP에서 CA를 강제로 검색합니다:
certutil -pulse
이 단계는 엄격히 요구되지 않습니다. 그러나 인증서가 전파되는 것을 기다리지 않고 다음 단계로 진행할 수 있게 해줍니다.
스마트 카드 인증 활성화
Teleport는 스마트 카드를 에뮬레이션하여 인증서를 기반으로 한 인증을 수행합니다.
그룹 정책 개체에 스마트 카드 인증을 추가하려면:
-
그룹 정책 편집기에서
Teleport Access Policy
그룹 정책 개체가 열려 있는지 확인합니다. -
Computer Configuration > Policies > Windows Settings > Security Settings > System Services
를 확장합니다. -
Smart Card를 두 번 클릭하고 이 정책 설정 정의를 선택합니다.
-
Automatic을 선택한 다음 확인을 클릭합니다.
스마트 카드 서비스 활성화 -
이 호스트에서 GPO 업데이트가 즉시 적용되도록 하려면 PowerShell을 열고 다음 명령을 실행합니다 (선택 사항):
gpupdate.exe /force
원격 데스크톱 연결 허용
다음으로 도메인 컴퓨터에 대한 원격 연결을 허용하는 정책을 구성해야 합니다.
-
그룹 정책 편집기에서
Teleport Access Policy
그룹 정책 개체가 열려 있는지 확인합니다. -
Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Connections
를 확장합니다. -
사용자가 원격 데스크톱 서비스 사용하여 원격으로 연결할 수 있도록 허용을 마우스 오른쪽 버튼으로 클릭하고, 편집을 선택한 후 활성화를 선택하고 확인을 클릭합니다.
-
원격 데스크톱 세션 호스트 아래에서 보안을 선택합니다.
-
네트워크 수준 인증을 사용하여 원격 연결에 대한 사용자 인증 필요를 마우스 오른쪽 버튼으로 클릭하고, 편집을 선택한 후 비활성화를 선택하고 확인을 클릭합니다.
NLA 지원Teleport 16.2.0 이상 버전은 NLA를 지원합니다. 지원되는 버전을 실행 중이고 NLA를 활성화하면 이 단계를 건너뛸 수 있습니다. 자세한 내용은 NLA 섹션을 참조하십시오.
사용자 인증 필요 비활성화 -
연결할 때 항상 암호를 입력하라는 메시지 표시를 마우스 오른쪽 버튼으로 클릭하고, 편집을 선택한 후 비활성화를 선택하고 확인을 클릭합니다.
Teleport에서 인증서를 기반으로 하는 스마트 카드 인증은 각 데스크톱 세션에 대해 무작위 스마트 카드 PIN을 생성하여 RDP 연결을 설정할 때 데스크톱에 PIN을 제공합니다.
PIN은 Teleport 사용자에게 제공되지 않으므로, 인증이 성공하도록 하려면 연결할 때 항상 암호를 입력하라는 메시지 표시 정책이 비활성화되어야 합니다. -
컴퓨터 구성, 정책, Windows 설정, 보안 설정을 확장하여 고급 보안이 포함된 Windows 방화벽을 선택합니다.
-
수신 규칙을 마우스 오른쪽 버튼으로 클릭하고, 새 규칙을 선택합니다.
- 미리 정의된 항목에서 원격 데스크톱을 선택한 다음 다음을 클릭합니다.
- **사용자 모드 (TCP-in)**을 선택한 다음 다음을 클릭합니다.
- 연결 허용을 선택한 다음 마침을 클릭합니다.
방화벽 열기 -
이 호스트에서 GPO 업데이트가 즉시 적용되도록 하려면 PowerShell을 열고 다음 명령을 실행합니다 (선택 사항):
gpupdate.exe /force
RemoteFX 활성화
Teleport Access Policy
그룹 정책 개체 구성을 마무리 하려면 RemoteFX를 활성화해야 합니다. RemoteFX는 원격 데스크톱 연결의 성능을 크게 향상시키는 압축 기술입니다.
-
그룹 정책 편집기에서
Teleport Access Policy
그룹 정책 개체가 열려 있는지 확인합니다. -
Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment > RemoteFX for Windows Server 2008 R2
를 확장합니다. -
RemoteFX 구성을 마우스 오른쪽 버튼으로 클릭하고, 편집을 선택한 후 활성화를 선택하고 확인을 클릭합니다.
RemoteFX 활성화 (단계 1) -
이제 왼쪽 패널에서 원격 세션 환경을 클릭하고, 오른쪽 패널의 항목 중 Windows Server 2008 R2 SP1을 위해 설계된 RemoteFX 클라이언트에 대한 RemoteFX 인코딩 활성화를 마우스 오른쪽 버튼으로 클릭하고, 편집을 선택한 후 활성화를 선택하고 확인을 클릭합니다.
RemoteFX 활성화 (단계 2) -
왼쪽 패널에서 원격 세션 환경을 다시 클릭하고, 오른쪽 패널의 항목 중 최대 색 깊이 제한을 마우스 오른쪽 버튼으로 클릭하고, 편집을 선택한 후 활성화를 선택하고 확인을 클릭합니다.
RemoteFX 활성화 (단계 3) -
PowerShell을 열고 Teleport 그룹 정책 개체를 업데이트하기 위해 다음 명령을 실행합니다:
gpupdate.exe /force
4/7단계. RDP 연결을 위한 인증서 구성
Teleport RDP 클라이언트는 TLS 연결을 만들기 위해 안전한 암호화 알고리즘이 필요합니다. 그러나 Windows Server 2012 R2는 기본적으로 이러한 알고리즘을 지원하지 않습니다.
Windows Server 2012 R2를 구성하여 필요한 알고리즘을 지원하려면 다음과 같은 작업을 수행해야 합니다:
- 타원 곡선 암호화(elliptic curve cryptography)를 사용하는 새로운 인증서 템플릿을 생성합니다.
- 원격 데스크톱 연결을 위해 인증서를 발급할 때 새 인증서 템플릿을 사용하도록 Teleport 그룹 정책 객체를 업데이트합니다.
호스트가 필요한 알고리즘을 지원하는 경우, 이 단계를 건너뛰고 LDAP CA 인증서 내보내기로 진행할 수 있습니다.
인증서 템플릿 생성
타원 곡선 P-384 및 SHA384를 서명 알고리즘으로 사용하는 인증서 템플릿을 생성하려면:
-
시작, 제어판, 관리 도구를 클릭한 후 **인증 기관(Certificate Authority)**을 선택합니다.
-
CA 컴퓨터를 열고, **인증서 템플릿(Certificate Templates)**을 마우스 오른쪽 버튼으로 클릭한 후 **관리(Manage)**를 선택합니다.
-
컴퓨터(Computer) 템플릿을 선택하고 마우스 오른쪽 버튼을 클릭한 후 **템플릿 복제(Duplicate Template)**를 선택합니다.
-
호환성(Compatibility) 탭을 선택합니다:
- **인증 기관(Certification Authority)**을 Windows Server 2012 R2로 변경한 후 **확인(OK)**을 클릭합니다.
- **인증서 수신자(Certificate recipient)**를 Windows Server 2012 R2로 변경한 후 **확인(OK)**을 클릭합니다.
-
일반(General) 탭을 선택합니다:
- **템플릿 표시 이름(Template display name)**을 RemoteDesktopAccess로 변경합니다.
- **템플릿 이름(Template name)**도 RemoteDesktopAccess인지 확인합니다.
-
암호화(Cryptography) 탭을 선택합니다:
- **제공자 범주(Provider Category)**를 Key Storage Provider로 변경합니다.
- **알고리즘 이름(Algorithm name)**을 ECDH_P384로 변경합니다.
- **요청 해시(Request hash)**를 SHA384로 변경합니다.
-
확장(Extensions) 탭을 선택합니다:
- **응용 프로그램 정책(Application Policies)**을 선택한 후 **편집(Edit)**을 클릭합니다.
- 목록에서 모든 항목을 제거합니다.
-
보안(Security) 탭을 선택합니다:
- **도메인 컴퓨터(Domain Computers)**를 선택하고 그룹에 읽기(Read) 및 등록(Enroll) 권한을 부여합니다.
-
템플릿을 생성하려면 **확인(OK)**을 클릭합니다.
-
인증 기관 콘솔로 돌아가서 **인증서 템플릿(Certificate Templates)**을 마우스 오른쪽 버튼으로 클릭합니다.
-
**새로 만들기(New)**를 클릭하고 **발급할 인증서 템플릿(Certificate Template to Issue)**을 선택한 후 RemoteDesktopAccess를 선택합니다.
-
**확인(OK)**을 클릭합니다.
새 인증서 템플릿을 사용하도록 GPO 업데이트
Teleport 그룹 정책 객체를 새 인증서 템플릿을 사용하도록 업데이트하려면:
-
그룹 정책 편집기에서
Teleport Access Policy
그룹 정책 객체를 엽니다. -
**
컴퓨터 구성(Computer Configuration) > 정책(Policies) > 관리 템플릿(Administrative Templates) > Windows 구성 요소(Windows Components) > 원격 데스크톱 서비스(Remote Desktop Services) > 원격 데스크톱 세션 호스트(Remote Desktop Session Host) > 보안(Security)
**을 확장합니다. -
**서버 인증서 템플릿(Server authentication certificate template)**을 마우스 오른쪽 버튼으로 클릭하고 **편집(Edit)**을 선택한 후 **사용(Enabled)**을 선택하고 인증서 템플릿 이름을 RemoteDesktopAccess로 설정합니다.
RDP 인증서 템플릿 -
컴퓨터 구성, 정책 및 Windows 설정을 확장하여 **공개 키 정책(Public Key Policies)**을 선택합니다.
-
**인증서 서비스 클라이언트 - 자동 등록(Certificate Services Client - Auto-Enrollment)**을 두 번 클릭한 후 구성 모델(Configuration Model)에서 **사용(Enabled)**을 선택합니다.
-
PowerShell을 열고 Teleport 그룹 정책 객체를 업데이트하려면 다음 명령을 실행합니다:
gpupdate.exe /force
5/7단계. LDAP CA 인증서 내보내기
Teleport는 LDAPS를 사용하여 도메인 컨트롤러에 연결합니다. 이는 도메인 컨트롤러가 초기 연결 시 보내는 인증서가 신뢰된다는 것을 Teleport에 알려야 함을 의미합니다. 도메인 컨트롤러의 인증서가 Teleport를 실행하는 시스템의 시스템 리포지토리에서 신뢰받는 경우, 이 단계를 건너뛸 수 있습니다.
LDAP CA 인증서를 획득할 수 없는 경우, insecure_skip_verify: true
를 설정하여 TLS 검증을 건너뛸 수 있습니다. 그러나 운영 환경에서는 TLS 검증을 건너뛰어서는 안 됩니다.
CA 인증서를 내보내려면:
- 시작을 클릭하고, 제어판 및 관리 도구에서 인증 기관을 선택합니다.
- CA 컴퓨터를 선택하고 오른쪽 클릭한 후 속성을 선택합니다.
- 일반 탭에서 인증서 보기를 클릭합니다.
- 세부 정보를 선택한 후 파일로 복사를 클릭합니다.
- 인증서 내보내기 마법사에서 다음을 클릭하고 DER 인코딩된 이진 X.509 (.CER) 가 선택되었는지 확인합니다.
- 인증서를 위한 이름과 위치를 선택하고 마법사를 진행합니다.
- 내보낸 파일을 Teleport를 실행하는 시스템으로 전송합니다. 이 인증서를 시스템의 신뢰할 수 있는 리포지토리에 추가하거나
der_ca_file
설정 변수에 파일 경로를 제공할 수 있습니다.
6/7단계. Teleport 구성하기
Windows 데스크탑에 대한 접근을 보호하도록 Teleport를 구성하려면:
-
Teleport Windows Desktop Service를 실행할 리눅스 호스트에 Teleport를 설치합니다:
Linux 서버에 Teleport 설치하기:
-
Teleport 에디션에 따라 edition를 다음 중 하나로 할당합니다:
에디션 값 Teleport Enterprise Cloud cloud
Teleport Enterprise (자가 호스팅) enterprise
Teleport Community Edition oss
-
설치할 Teleport 버전을 가져옵니다. 클러스터에서 자동 에이전트 업데이트가 활성화된 경우, 최신 Teleport 버전을 쿼리하여 업데이트된 내용과의 호환성을 확인합니다:
TELEPORT_DOMAIN=example.teleport.comTELEPORT_VERSION="$(curl https://$TELEPORT_DOMAIN/v1/webapi/automaticupgrades/channel/default/version | sed 's/v//')"그렇지 않으면, Teleport 클러스터의 버전을 가져옵니다:
TELEPORT_DOMAIN=example.teleport.comTELEPORT_VERSION="$(curl https://$TELEPORT_DOMAIN/v1/webapi/ping | jq -r '.server_version')" -
Linux 서버에 Teleport를 설치합니다:
curl https://cdn.teleport.dev/install-v15.4.11.sh | bash -s ${TELEPORT_VERSION} edition설치 스크립트는 Linux 서버에서 패키지 관리자를 감지하고 이를 사용하여 Teleport 바이너리를 설치합니다. 설치를 사용자 정의하려면 설치 가이드에서 Teleport 패키지 리포지토리에 대해 알아보세요.
-
-
관리 작업소에서 Teleport 클러스터에 로그인합니다.
-
다음 명령으로 클러스터에 대한 초대 토큰을 생성합니다:
tctl tokens add --type=windowsdesktop -
초대 토큰을 Windows Desktop Service를 실행할 리눅스 호스트의 파일에 복사합니다.
-
리눅스 호스트의
/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
구성 필드에 대한 자세한 설명은 데스크탑 구성 참조를 참조하십시오.
-
호스트가 부팅될 때 Teleport Desktop Service가 자동으로 시작되도록 systemd 서비스를 생성하여 구성합니다. 지침은 Teleport Desktop Service를 설치한 방법에 따라 다릅니다.
Teleport Desktop Service를 실행할 호스트에서 Teleport를 활성화하고 시작합니다:
sudo systemctl enable teleportsudo systemctl start teleportTeleport Desktop Service를 실행할 호스트에서 Teleport의 systemd 서비스 구성을 만들고, Teleport 서비스를 활성화한 후 Teleport를 시작합니다:
sudo teleport install systemd -o /etc/systemd/system/teleport.servicesudo systemctl enable teleportsudo systemctl start teleportsystemctl status teleport
로 Teleport Desktop Service의 상태를 확인하고,journalctl -fu teleport
로 로그를 볼 수 있습니다.
7/7단계. Teleport로 로그인하기
Teleport 사용자는 원격 Windows 데스크탑에 접근하기 위한 적절한 권한을 가져야 합니다. 예를 들어, 모든 Windows 데스크탑 레이블과 로컬 "Administrator" 사용자에 대한 접근 권한을 부여하는 역할을 생성할 수 있습니다.
Windows 데스크탑에 접근하기 위한 역할을 생성하려면:
-
다음 내용을 가진
windows-desktop-admins.yaml
라는 파일을 생성합니다:kind: role version: v5 metadata: name: windows-desktop-admins spec: allow: windows_desktop_labels: "*": "*" windows_desktop_logins: ["jsmith"]
도메인 사용자와 로컬 사용자가 공유하는 사용자 이름은 로그인 충돌을 발생시킵니다.
-
역할을 생성합니다:
tctl create -f windows-desktop-admins.yaml -
windows-desktop-admins
역할을 Teleport 사용자에게 할당하려면, 인증 제공자에 맞는 적절한 명령어를 실행하십시오:-
로컬 사용자의 역할을 쉼표로 구분된 목록으로 가져옵니다:
ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")') -
새로운 역할을 추가하기 위해 로컬 사용자를 수정합니다:
tctl users update $(tsh status -f json | jq -r '.active.username') \ --set-roles "${ROLES?},windows-desktop-admins" -
Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.
-
텍스트 편집기에서
github
인증 커넥터를 엽니다:tctl edit github/github -
github
커넥터를 수정하여teams_to_roles
섹션에windows-desktop-admins
을 추가합니다.이 역할에 매핑해야 하는 팀은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 팀은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 팀이어야 합니다.
예시는 다음과 같습니다:
teams_to_roles: - organization: octocats team: admins roles: - access + - windows-desktop-admins
-
파일을 편집하고 저장하여 변경 사항을 적용합니다.
-
Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.
-
saml
구성 리소스를 가져옵니다:tctl get --with-secrets saml/mysaml > saml.yaml--with-secrets
플래그는spec.signing_key_pair.private_key
의 값을saml.yaml
파일에 추가합니다. 이 키는 민감한 값을 포함하므로, 리소스를 업데이트한 후 즉시saml.yaml
파일을 삭제해야 합니다. -
saml.yaml
을 수정하여attributes_to_roles
섹션에windows-desktop-admins
을 추가합니다.이 역할에 매핑해야 하는 속성은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 그룹은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 그룹이어야 합니다.
예시는 다음과 같습니다:
attributes_to_roles: - name: "groups" value: "my-group" roles: - access + - windows-desktop-admins
-
변경 사항을 적용합니다:
tctl create -f saml.yaml -
Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.
-
oidc
구성 리소스를 가져옵니다:tctl get oidc/myoidc --with-secrets > oidc.yaml--with-secrets
플래그는spec.signing_key_pair.private_key
의 값을oidc.yaml
파일에 추가합니다. 이 키는 민감한 값을 포함하므로, 리소스를 업데이트한 후 즉시oidc.yaml
파일을 삭제해야 합니다. -
oidc.yaml
을 수정하여claims_to_roles
섹션에windows-desktop-admins
을 추가합니다.이 역할에 매핑해야 하는 클레임은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 그룹은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 그룹이어야 합니다.
예시는 다음과 같습니다:
claims_to_roles: - name: "groups" value: "my-group" roles: - access + - windows-desktop-admins
-
변경 사항을 적용합니다:
tctl create -f oidc.yaml -
Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.
이제 Windows Desktop Service를 실행하는 리눅스 호스트와 Teleport 사용자가 Windows 컴퓨터에 연결할 수 있도록 허용하는 역할이 있으므로,
windows-desktop-admins
역할이 부여된 Teleport 사용자를 사용하여 Teleport 웹 UI에서 Windows 데스크탑에 연결할 수 있습니다. -
Windows 데스크탑에 연결하려면:
-
windows-desktop-admins
역할이 부여된 계정을 사용하여 Teleport 클러스터에 로그인합니다. -
리소스를 선택합니다.
-
유형을 클릭한 후 데스크탑을 선택합니다.
-
접속하고자 하는 Windows 컴퓨터에서 연결을 클릭한 후, 접속에 사용할 로그인을 선택합니다.
Teleport가 원격 데스크탑 연결을 열고 데스크탑 세션 녹화를 시작합니다. Windows 데스크탑에서 작업을 마친 후, 추가 항목 메뉴를 클릭하고 연결 종료를 클릭합니다.
녹화를 보려면 Teleport 웹 UI에서 관리를 선택하고 활동 섹션에서 세션 녹화를 클릭하십시오.
보안 강화
기본적으로 기본 도메인 정책은 도메인에 워크스테이션 추가 사용자 권한을 모든 인증된 사용자에게 부여합니다. 보안 모범 사례로, Teleport는 이 권한을 관리자 또는 기타 특권 그룹에게만 부여할 것을 권장합니다.
기본 도메인 정책을 변경하려면:
- 그룹 정책 관리를 열고 Forest, 도메인, 귀하의 도메인 및 그룹 정책 객체를 확장하십시오.
- 기본 도메인 컨트롤러 정책을 마우스 오른쪽 버튼으로 클릭한 후 편집을 선택합니다.
- 그룹 정책 편집기에서 컴퓨터 구성, 정책, Windows 설정, 보안 설정, 로컬 정책 및 사용자 권한 할당을 확장하여 도메인에 워크스테이션 추가를 선택합니다.
- 도메인에 워크스테이션 추가 정책을 두 번 클릭하고 인증된 사용자 그룹이 존재하지 않음을 확인합니다.
여러 도메인
각 windows_desktop_service
는 단일 Active Directory 도메인에 있는 호스트에 연결하도록 설계되었습니다. 여러 독립된 도메인이 있는 경우 이러한 도메인에 서비스를 제공하기 위해 여러 Teleport 에이전트를 배포할 수 있습니다.
신뢰 관계가 있는 여러 도메인이 있는 경우, Teleport를 구성하여 하나의 도메인에 대해 PKI 작업을 수행하는 동시에 다른 도메인의 사용자에게 인증서 생성을 수행할 수 있습니다.
이렇게 하려면, 연결하려는 호스트와 연결하려는 AD 사용자가 동일한 도메인에 있어야 합니다.
예를 들어, example.com
에 루트 도메인이 있고 dev.example.com
에 개발자를 위한 자식 도메인이 있다고 가정해 보십시오. 루트에서 PKI가 구성되어 있지만 자식 도메인에 있는 사용자가 자식 도메인에 있는 호스트에 연결할 수 있도록 하려면 다음과 같이 합니다:
- Teleport의 CA 인증서를 루트 도메인의 그룹 정책에서 신뢰할 수 있는 루트 인증서로 가져오고, 위 섹션에서 설명한 대로 NTAuth 저장소에 인증서를 추가합니다.
- 루트 도메인에 대해 PKI를 수행하도록 Teleport를 구성하면서 자식 도메인 내 사용자 및 호스트에 대한 인증서를 발급합니다:
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
의 사용자에게 인증서를 생성하지만, example.com
에 CA 및 CRL을 게시합니다.
네트워크 수준 인증 (NLA)
Teleport 16.2.0 이상에서는 windows_desktop_service
를 구성하여 Windows 호스트에 연결할 때 네트워크 수준 인증(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 도메인의 일부인 호스트에 연결할 때만 지원됩니다. Teleport는 로컬 Windows 사용자로서 호스트에 연결할 때 NLA를 수행하지 않습니다.
컴퓨터 이름
성공적인 인증 흐름을 완료하기 위해 Teleport는 대상 Windows 서버의 호스트 이름을 알아야 합니다. Teleport의 LDAP 기반 검색을 사용하는 경우 아무 작업도 필요하지 않습니다. Teleport는 자동으로 채워지는 teleport.dev/computer_name
레이블을 사용합니다. 이 레이블이 없으면 Teleport는 데스크톱의 addr
필드를 사용합니다.
구성 파일이나 Teleport의 API를 통해 Windows 호스트를 등록하고 NLA를 활성화하려는 경우, 다음 중 하나를 수행해야 합니다:
teleport.dev/computer_name
레이블을 적절한 호스트 이름으로 수동 설정- 호스트의
addr
가 실제 호스트 이름인지 확인
다음 단계
문제가 발생하는 경우, 일반적인 문제와 해결책에 대해서는 문제 해결을 참조하십시오. Windows 전용 역할 권한 구성에 대한 정보는 데스크톱에 대한 역할 기반 액세스 제어를 참조하십시오.