안녕하세요.
계사년(癸巳年) 새해가 밝았습니다. 새해 인사가 너무 늦었죠,,, 제가 1월도 포스팅이 너무 늦었네요,, 늘 반성하고 다시 각오를 다져봅니다.^-^
오늘 말씀드릴 주제는 바로 “RDP 프로토콜의 보안 강화 방안”입니다. 사실 이 주제는 예전부터 제가 정리를 한 번 할려고 했는데, 제 주변의 동료가 문의를 해 와서 이번 기회에 정리를 하게 되었네요….
RDP는 Windows Server 2000 이후로 제공되는 윈도우 서버의 원격 접근을 가능하게 해 주는 프로토콜입니다. 그런데, RDP 클라이언트와 RDP 서버 사이의 네트워크 트래픽 보안성이 사용자 입장에서 늘 걱정이었습니다. 대표적으로 RDP 프로토콜은 “MITM(Man-In-The-Middle)” 공격에 취약한 부분이 존재하고 있는 것이 사실입니다. 아래 그림은 MITM 공격의 한 예제 그림입니다.
즉, 위 그림과 같이 공격자가 원본 연결이 아닌 가공의 연결을 중간에 설정하여 RDP 클라이언트와 RDP 서버 사이의 데이터를 위변조 할 수 있는 취약성이 존재합니다.
이러한 MITM 공격으로 부터 RDP 프로토콜을 보호하기 위한 방안은 대표적으로 아래와 같이 총 4개 정도의 방법이 존재합니다.
위 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의 특징은 아래와 같습니다.
실제 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 항목은 약간의 영어가 존재함을 양해해 주세용 ^-^