Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

이 글에서는 신뢰할 수 있는 SSL/TLS 인증서를 사용하여 Active Directory 도메인 환경의 Windows 컴퓨터 또는 서버로의 RDP(원격 데스크톱) 연결을 보호하는 방법을 소개합니다. 기본값인 자체 서명(self-signed) RDP 인증서 대신 기업 인증 기관(CA)에서 발급한 신뢰할 수 있는 인증서를 적용하면, 사용자가 호스트에 접속할 때마다 '인증서를 신뢰할 수 없음' 경고가 더 이상 표시되지 않습니다. 이 예제에서는 인증 기관(CA)에 RDP 전용 인증서 템플릿을 구성하고, 그룹 정책(GPO)을 통해 Remote Desktop Services에 SSL/TLS 인증서를 자동으로 발급·바인딩하는 전체 과정을 단계별로 설명합니다.

RDP 자체 서명 인증서 경고 문제

기본적으로 Windows는 RDP 세션을 보호하기 위해 자체 서명 인증서를 생성합니다. mstsc.exe 클라이언트로 RDP/RDS 호스트에 처음 연결하면 다음과 같은 경고 메시지가 표시됩니다.

보안 인증서에 문제가 있어 원격 컴퓨터를 인증할 수 없습니다. 계속 진행하면 안전하지 않을 수 있습니다.
인증서 오류: 인증서가 신뢰할 수 있는 인증 기관에서 발급된 것이 아닙니다.

연결을 계속하려면 사용자가 를 클릭해야 하며, 매번 경고가 나타나는 것이 번거롭다면 '이 컴퓨터에 대한 연결 시 다시 묻지 않음' 옵션을 체크하면 됩니다.
신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

이 경우 RDP 인증서의 지문(thumbprint)은 클라이언트의 RDP 연결 기록 레지스트리 키(HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\)의 CertHash 값에 저장됩니다. 이미 숨김 처리한 경고를 초기화하려면 해당 레지스트리에서 인증서 지문 값을 삭제하면 됩니다.

신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

참고로 자체 서명 인증서를 사용하더라도 RDP 세션 자체는 안전하게 보호되며, 트래픽은 암호화됩니다. 다만 사용자 입장에서 매번 경고를 확인해야 하는 불편함이 있을 뿐입니다.

인증 기관(CA)에서 RDP 인증서 템플릿 만들기

이제 기업 인증 기관에서 발급한 신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결을 보호해 보겠습니다. 이 인증서를 사용하면 사용자가 연결 시 RDP 서버를 인증할 수 있습니다. 도메인에 Microsoft 인증 기관이 이미 배포되어 있다고 가정하며, 이 경우 도메인 내 모든 Windows 컴퓨터와 서버에 인증서를 자동으로 발급·적용하도록 구성할 수 있습니다.

CA에서 RDP/RDS 호스트용 새 인증서 템플릿을 다음 순서로 생성합니다.

  1. 인증 기관 콘솔을 실행하고 인증서 템플릿 섹션으로 이동합니다.
  2. Computer 인증서 템플릿을 복제합니다(인증서 템플릿 관리 → Computer → 템플릿 복제).
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기
  3. 일반 탭에서 새 템플릿 이름을 RDPTemplate으로 지정합니다. 이때 템플릿 이름 필드와 템플릿 표시 이름이 일치하는지 반드시 확인하세요.
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기
  4. 호환성 탭에서 도메인에서 사용 중인 최소 클라이언트 버전을 지정합니다(예: CA는 Windows Server 2008 R2, 클라이언트는 Windows 7). 이렇게 하면 더 강력한 암호화 알고리즘이 적용됩니다.
  5. 확장 탭의 응용 프로그램 정책 섹션에서 인증서 용도를 원격 데스크톱 인증(Remote Desktop Authentication)으로만 제한합니다. 다음 개체 식별자(OID)를 추가하세요 — 1.3.6.1.4.1.311.54.1.2. [추가 → 새로 만들기]로 새 정책을 생성한 뒤 선택합니다.
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기
  6. 템플릿 설정(응용 프로그램 정책 확장)에서 원격 데스크톱 인증을 제외한 나머지 정책은 모두 삭제합니다.
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기
  7. 도메인 컨트롤러에서도 이 RDP 인증서 템플릿을 사용하려면 보안 탭에서 Domain Controllers 그룹을 추가하고 등록(Enroll)자동 등록(Autoenroll) 옵션을 활성화합니다.
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기
  8. 인증서 템플릿을 저장합니다.
  9. 인증 기관 MMC 스냅인에서 인증서 템플릿 폴더를 마우스 오른쪽 버튼으로 클릭한 뒤 새로 만들기 → 발급할 인증서 템플릿을 선택하고, 앞서 만든 템플릿(RDPTemplate)을 지정합니다.
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

그룹 정책(GPO)으로 RDP SSL/TLS 인증서 배포하는 방법

이제 도메인 GPO를 구성하여 설정된 템플릿에 따라 컴퓨터/서버에 RDP 인증서를 자동으로 할당해야 합니다.

여기서는 모든 도메인 컴퓨터가 기업 인증 기관을 신뢰한다고 가정합니다. 즉, GPO를 통해 루트 인증서가 이미 신뢰할 수 있는 루트 인증 기관 저장소에 배포되어 있어야 합니다.

  1. 그룹 정책 관리 콘솔(gpmc.msc)을 열고 새 GPO를 생성한 뒤, RDP/RDS 서버나 대상 컴퓨터가 포함된 OU에 연결하여 TLS 인증서가 자동 발급되도록 합니다.
  2. GPO의 컴퓨터 구성 → 정책 → 관리 템플릿 → Windows 구성 요소 → 원격 데스크톱 서비스 → 원격 데스크톱 세션 호스트 → 보안 섹션으로 이동합니다. 서버 인증 인증서 템플릿(Server Authentication Certificate Template) 정책을 사용으로 설정하고, 앞서 만든 CA 템플릿 이름(RDPTemplate)을 입력합니다.
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기
  3. 같은 GPO 섹션에서 원격(RDP) 연결에 특정 보안 계층 사용 필요(Require use of specific security layer for remote (RDP) connections) 정책을 사용으로 설정하고 값을 SSL로 지정합니다.
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기
  4. RDP 인증서를 자동 갱신하려면 GPO의 컴퓨터 구성 → Windows 설정 → 보안 설정 → 공개 키 정책 섹션에서 인증서 서비스 클라이언트 – 자동 등록 속성(Certificate Services Client – Auto-Enrollment Properties) 정책을 사용으로 설정합니다. '만료된 인증서 갱신, 보류 중인 인증서 업데이트 및 해지된 인증서 제거'와 '인증서 템플릿을 사용하는 인증서 업데이트' 옵션을 모두 체크합니다.
    신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기
  5. 클라이언트가 항상 RDP 서버 인증서를 검증하도록 하려면 Configure Authentication for Client = 인증 실패 시 경고(Warn me if authentication fails) 정책을 구성합니다(컴퓨터 구성 → 정책 → 관리 템플릿 → Windows 구성 요소 → 원격 데스크톱 연결 설정 → 원격 데스크톱 연결 클라이언트).
  6. 필요한 경우 방화벽 정책에서 RDP 수신 포트인 TCP/UDP 3389를 개방합니다.
  7. 클라이언트 컴퓨터에서 그룹 정책을 갱신(gpupdate /force)한 후 컴퓨터 인증서 콘솔(certlm.msc)을 실행하여, 개인 → 인증서 섹션에 CA가 발급한 원격 데스크톱 인증 인증서가 표시되는지 확인합니다.

새 그룹 정책 설정이 적용되지 않았다면 gpresult 도구를 사용해 원인을 진단할 수 있습니다.

신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

새 RDP 인증서를 적용하려면 원격 데스크톱 서비스를 재시작합니다.

Get-Service TermService -ComputerName mun-dc01| Restart-Service –force –verbose

이후 RDP로 서버에 접속하면 인증서 신뢰 확인 요청이 더 이상 나타나지 않습니다(참고로 FQDN 대신 IP 주소로 접속하면 여전히 확인 창이 표시됩니다). 인증서 보기를 클릭하고 세부 정보 탭으로 이동한 뒤 지문(Thumbprint) 필드의 값을 복사해 둡니다.
신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

인증 기관 콘솔의 발급된 인증서 섹션에서 특정 Windows 서버/컴퓨터에 대해 RDPTemplate 인증서가 실제로 발급되었는지 확인할 수 있습니다. 이때 인증서 지문 값도 함께 확인합니다.

신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

그다음 이 지문을 Remote Desktop Service가 실제로 사용 중인 인증서 지문과 비교합니다. RDS 인증서 지문은 레지스트리(HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations 키의 TemplateCertificate 매개 변수)에서 확인하거나, 다음 PowerShell 명령으로 조회할 수 있습니다.

Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices|select SSLCertificateSHA1Hash
신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

모든 설정이 완료되면 이후 어떤 Windows 호스트의 원격 데스크톱에 접속하더라도 신뢰할 수 없는 RDP 인증서 경고가 표시되지 않습니다.

신뢰할 수 있는 TLS 인증서 지문으로 .RDP 파일 서명하기

사내 CA가 없는 환경에서도 사용자에게 RDP/RDS 호스트 접속 경고를 표시하고 싶지 않다면, 해당 인증서를 사용자 컴퓨터의 신뢰 목록에 직접 추가하는 방법을 사용할 수 있습니다.

먼저 앞서 설명한 방법으로 RDP 인증서 지문 값을 조회합니다.

Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices|select SSLCertificateSHA1Hash

조회한 지문을 사용해 RDPSign.exe 도구로 .RDP 파일에 서명합니다.

rdpsign.exe /sha256 25A27B2947022CC11BAFF261234567DEB2ABC21 "C:\ps\mun-dc01.rdp"

그런 다음 GPO를 통해 이 지문을 사용자 컴퓨터의 신뢰할 수 있는 게시자 목록에 추가합니다. 컴퓨터 구성 → 정책 → 관리 템플릿 → Windows 구성 요소 → 원격 데스크톱 연결 설정 → 원격 데스크톱 연결 클라이언트 경로의 신뢰할 수 있는 .rdp 게시자를 나타내는 인증서의 SHA1 지문 지정(Specify SHA1 thumbprints of certificates representing trusted .rdp publishers) 정책에 지문 값을 세미콜론(;)으로 구분하여 입력하면 됩니다.

신뢰할 수 있는 SSL/TLS 인증서로 RDP 연결 보안 강화하기

추가로 비밀번호 입력 없이 RDP 로그온(RDP Single Sign-On)을 구성하려면 기본 자격 증명 위임 허용(Allow delegation defaults credential) 정책을 설정하고 RDP/RDS 호스트 이름을 지정하면 됩니다.