안녕하세요.

계사년(癸巳年) 새해가 밝았습니다. 새해 인사가 너무 늦었죠,,, 제가 1월도 포스팅이 너무 늦었네요,, 늘 반성하고 다시 각오를 다져봅니다.^-^

오늘 말씀드릴 주제는 바로 “RDP 프로토콜의 보안 강화 방안”입니다. 사실 이 주제는 예전부터 제가 정리를 한 번 할려고 했는데, 제 주변의 동료가 문의를 해 와서 이번 기회에 정리를 하게 되었네요….

RDP는 Windows Server 2000 이후로 제공되는 윈도우 서버의 원격 접근을 가능하게 해 주는 프로토콜입니다. 그런데, RDP 클라이언트와 RDP 서버 사이의 네트워크 트래픽 보안성이 사용자 입장에서 늘 걱정이었습니다. 대표적으로 RDP 프로토콜은 “MITM(Man-In-The-Middle)” 공격에 취약한 부분이 존재하고 있는 것이 사실입니다. 아래 그림은 MITM 공격의 한 예제 그림입니다.

즉, 위 그림과 같이 공격자가 원본 연결이 아닌 가공의 연결을 중간에 설정하여 RDP 클라이언트와 RDP 서버 사이의 데이터를 위변조 할 수 있는 취약성이 존재합니다.

이러한 MITM 공격으로 부터 RDP 프로토콜을 보호하기 위한 방안은 대표적으로 아래와 같이 총 4개 정도의 방법이 존재합니다.

  • Network Level Authentication (NLA)
  • Pure SSL/TLS
  • 네트워크 레벨의 보안 강화 (ex, IPSec)
  • VPN 터널링

위 4가지 방법 중에서 NLA 및 Pure SSL/TLS 방법이 Windows Server 2003 R2, 2008, 2008 R2, 2012 의 RDP 자체에서 구현할 수 있는 가장 최적의 방안입니다. 나머지 IPSec 및 VPN은 별도의 서버 및 구현 기술이 필요하므로, 사실 운영자 입장에서는 고려 대상이 아닐 수도 있지만, 일단 RDP 프로토콜의 MITM 공격을 예방할 수 있는 방안이 될 수도 있습니다.

아래 표는 NLA 및 Pure SSL/TLS의 구성 가능한 서버 범위 및 실제 접근 가능한 클라이언트 OS를 정리한 표입니다.

서버가 Windows Server 2008 이후 버전이라면, NLA를 반드시 사용하는 것이 RDP 프로토콜의 보안 강화의 가장 적합한 방법입니다. NLA의 특징은 아래와 같습니다.

  • 네트워크 수준 인증은 사용자가 세션을 만들기 전에 RD 세션 호스트 서버에 인증하도록 요구함으로써 RD 세션 호스트 서버 보안을 강화하는 데 사용할 수 있는 인증 방법입니다.
  • 네트워크 수준 인증은 원격 데스크톱 연결을 설정하고 로그온 화면이 나타나기 전(前)에 사용자 인증을 완료합니다. 이는 보다 안전한 인증 방법으로, 악의적인 사용자와 악성 소프트웨어로부터 원격 컴퓨터를 보호하는 데 도움이 됩니다. 네트워크 수준 인증의 이점은 다음과 같습니다.
  • 초기에 필요한 원격 컴퓨터 리소스가 더 적습니다. 원격 컴퓨터는 이전 버전에서처럼 전체 원격 데스크톱 연결을 시작하는 대신 사용자를 인증하기 전에 제한된 수의 리소스를 사용합니다.
  • DoS(서비스 거부) 공격의 위험을 줄임으로써 보안 향상에 도움을 줄 수 있습니다.

실제 NLA 인증 방법을 구현하는 프로토콜은 Microsoft CredSSP 입니다. Microsoft CredSSP 프로토콜의 특징은 아래와 같습니다.

CredSSP는 RDP 클라이언트와 RDP 서버 사이의 암호화된 채널을 형성하기 위해 TLS(TransportLayer Security)를 사용합니다. 암호화된 채널로써 TLS 연결을 사용하게 되면, TLS에서 가용한 클라이언트/서버 인증서비스 뿐만 아니라, 신분(Identity)을 검증할 수도 있습니다. CredSSP 프로토콜은 GSS(Generic Security Services) 메커니즘을 협상하기 위해 SPNEGO(Simple and Protected Generic Security Service Application Program Interface Negotiation Mechanism) 프로토콜 확장을 사용합니다. TLS 채널에 안전하게 바인딩 및 RDP 목적 서버의 Credential을 암호화하기 위해, GSS 메커니즘은 상호 인증 및 GSS 비밀 서비스를 수행합니다. 모든 GSS 보안 토큰은 암호화된 TLS 채널을 통하여 전송됩니다. 이러한 토큰의 종류는 NTLM, Kerberos 또는 PKI 인증 등이 있습니다.

NLA는 RDP 서버와 RDP 클라이언트의 상황에 따라, NLA with Kerberos, NLA with NTLM 및 NLA with SSL/TLS 인증 방법이 사용됩니다,  좀 더 자세한 사항은 본문을 참조하시면 될 것 같습니다.

본 문서에서는 Active Directory Certificate Service 인프라를 사용하여, RDP 전용 인증서 구성 및 설치를 그룹 정책을 통해 진행할 수 있는 방법을 step-by-step으로 제공합니다. 데모 환경은 아래와 같습니다.

여러분들,,, 이제 무의식적으로 RDP 프로토콜을 허술하게 사용하지 마시고, NLA 또는 Pure SSL/TLS 를 RDP 프로토콜에 바인당하여 좀 더 안전하게 RDP 프로토콜을 사용하세요…

2월 포스팅에서 다시 찾아뵙겠습니다. 여러분들 건강 조심하세요.

아참 첨부 문서의 Appendix 항목은 약간의 영어가 존재함을 양해해 주세용 ^-^