Windows Server 2008이 나오면... (58) - SSTP VPN

Windows Server 2003까지 PPTP, L2TP VPN을 라우팅 및 원격 액세스 서비스(RRAS)를 통해서 쓰실 수 있다는 건 잘 아시죠? 이 RRAS 기반를 확장한 백오피스 서버 제품이 바로 ISA(Internet Security Acceleration) Server 입니다.

Microsoft도 모바일 오피스 컨셉으로 회사 외부에서 VPN을 통해서 내부로 접근할 수 있고, 이를 통해 제 경우에는 외부 세미나에서 데모나 업무를 보곤 합니다.

Hotspot이나 일반 공개 인터넷 환경에서 PPTP, L2TP VPN에 접속하는 것은 그리 큰 문제가 아닙니다만, 외부 회사를 방문하여 세미나를 할 경우.... PPTP GRE 포트가 막혀있거나, L2TP ESP 포트가 막혀있으면, 최초에 연결에 대한 포트만 가지고는 내부 VPN에 접속할 수가 없었습니다. 참으로 당황스러운 경우죠. 다행히 제가 가진 스마트폰으로 인터넷이 연결되는 지역이라면 대체아닌 대체가 가능하지만, 조금만 지방으로 가도, 잘 안되는 경우가 많았습니다. 최근 평택의 사이트에 나가서는 아예 데모를 못하는 사태도 발생했죠. 이러한 이유로 SSL VPN 솔루션이 각광 받고 있습니다. Microsoft의 IAG 2007도 이러한 SSL VPN 기술의 일환입니다.

SSL VPN 솔루션이 물론 더 뛰어난 기능과 가치를 제공하지만, Windows Server 2008내 RRAS를 이용하여 SSTP VPN을 이용할 수 있습니다. SSTP는 Secure Socket Tunneling Protocol의 약자입니다. 포트는 SSL VPN과 마찬가지로 443을 사용합니다.

SSTP VPN 연결 아키텍쳐는 간단히 아래와 같습니다.

1. 클라이언트가 포트 번호 443을 이용하여 서버로 접근을 하게 됩니다. 클라이언트의 IP는 100.1.1.100, 서버의 IP는 200.1.1.200이라고 가정하겠습니다.
2. TCP 세션 연결시 최초로, SSL이 연결 협상을 시작합니다. 클라이언트가 서버의 인증서를 받아와서, 이에 대한 유효성을 검사합니다. 유효성 검사에 실패하면, 해당 연결은 종결되게 됩니다. SSL 협상 레벨에서는 클라이언트 인증은 일어나지 않습니다.
3. 클라이언트는 HTTPS 요청을 암호화된 SSL 세션에 실어서 서버로 전송합니다.
4. 그 이후, 클라이언트는 SSTP 제어 패킷을 HTTPS 세션에 실어서 전송합니다. 양단에서 SSTP에 대한 연결이 설정되면, PPP 협상을 시작합니다.
5. PPP 협상에서 바로 인증이 시작됩니다. 클라이언트는 서버로 인증 정보를 보내게 되고, 인증 알고리즘의 선택에 따라, 클라이언트도 서버를 인증하게 될 수도 있습니다.
6. PPP 인증이 종료되면, 이제서야 양단에 IP 인터페이스가 나타나게 됩니다. 이 때, 클라이언트는 외부 IP 주소외, VPN 내부에서 사용할 내부 IP 주소(예를 들어 192.168.1.2)를 가지게 되고, 서버의 VPN 인터페이스의 IP 주소(192.168.1.1)와 교신하게 됩니다.
7. IP 주소 설정이 완료되면, 이제 VPN 채널을 통해 IP 패킷이 움직이게 되죠.

자.. 그러면 이제 IP 패킷이 어떻게 상호 송수신되는지 알아보죠?

1. PING 패킷이 IP 인터페이스 over PPP over SSTP를 통해 전송됩니다. 클라이언트의 VPN IP 192.168.1.2에서 목적지 IP 192.168.1.1로 가는 것입니다.
2. SSTP가 암호화를 담당하고 있는 SSL 계층으로 이를 전송합니다. SSL 계층은 TCP over IP over 인터넷 인터페이스(100.1.1.100)에 있습니다. 헷갈리세요? 다시 정리해볼까요?

하나의 IP 패킷은 아래의 데이터 형태로 계층화되어져 있습니다.

clip_image001

PPTP, L2TP와 무엇이 틀리냐고 물으신다면.. 바로 SSTP, SSL이 다르다는 것이죠. PPP가 SSTP에 의해서 캡슐화되고, HTTPS 세션을 통해서 암호화되서 전송되게 됩니다. 나머지 부분은 다 똑같습니다.

SSTP VPN을 사용하기 위해서는 Windows Vista SP1, Windows Server 2008 RC0 이상이 필요합니다.

이제 어떻게 구성하는지 간단히 보겠습니다. 해당 SSTP 구성과 관련된 Step-By-Step 가이드는 영문이지만, 여기에 있습니다.

image

SSTP를 사용하시기 위해서는, 먼저 SSL 세션에서 사용하는 SSL 인증서가 필요합니다. 이를 만들기 위해, CA 서버에서 인증서 템플릿을 하나 복제합니다. 가장 간단한 방법은 바로 웹 서버 인증서를 복제하여서 사용하는 것입니다. SSTP RRAS 서버만 인증서를 받게 하려면, 등록 권한을 해당 서버에만 주면 됩니다.

image

image  image

매우 중요한 것중 하나는 SSTP VPN은 인증서를 사용하기 때문에, 인증서에 대한 해지 정보를 외부에서 접근할 수 있어야 합니다. 바로 CRL에 대한 접근이죠. 이에 대한 속성을 제공하기 위해서 CA의 확장 탭에서 이에 대한 정보를 명시에 줘야 합니다. CRL에 대한 서비스는 IIS 웹 서비스를 이용하실 수 있고요. 해당 포스팅에서는 IIS 웹 서비스와, SSTP RRAS를 Koalra-SRV-02에서 같이 서비스할 것입니다.

image image

SSTP RRAS를 제공할 서버에서 SSL 인증서를 요청합니다. 당연히 외부에서 접근할 URL을 인증서의 일반 이름에 명시해줘야 합니다.

image

image 

IIS나 기타 여러 이유로 SSTP VPN을 서비스할 서버에 인증서가 2장 이상 있는 경우엔, 이에 대한 작업이 추가로 필요합니다. 즉, RRAS가 어떤 인증서를 쓸지에 대해서 설정해줘야 합니다만, 이 포스팅에서는 기타 인증서는 모두 삭제하는 걸로 설명하겠습니다. 시간이 허락할 때, 이에 대한 TIP을 올리죠.

image

위의 그림과 같이 인증서가 2장 이상이라면, SSTP VPN용을 제외하고는 모두 삭제합니다.

이제 RRAS 서비스를 설치합니다. Windows Server 2008부터는 RRAS 서비스가 NPS의 하위 서비스로 배치되어져 있습니다.

image image

RRAS에서 VPN 설정은 기존 L2TP, PPTP와 동일합니다. 동일 설정을 하고 나면, 수신 대기 포트에 PPTP, L2TP, 그리고 SSTP가 배치되게 됩니다.

image

image

SSL 인증서는 SSTP VPN에 아래와 같이 바인딩되어져 있습니다.

image 

이제 서버 작업은 모두 다 되었습니다. 클라이언트에서 VPN 클라이언트를 어떻게 생성하느냐? PPTP, L2TP VPN 클라이언트 생성과 역시 동일합니다. 다만 SSTP를 사용할 설정 한가지와 SSL 인증서가 로컬 컴퓨터 인증서 저장소내 신뢰할 수 있는 루트 인증 기관에 등록되어져 있는지 확인합니다. 안되어져 있다면, 이를 등록합니다.

image

image

VPN 클라이언트 생성 후, 속성에서 네트워킹 종류를 SSTP로 변경해주는 것을 꼭 해줘야 합니다.

image 

image image 

RRAS 서버의 포트 속성에서.. 아래의 증거 자료를 보실 수 있습니다.

image

당연히 SSTP VPN도 NAP과 연동이 가능합니다. 클라이언트의 보안 상태에 따라, 이에 대해 격리가 가능하다는 의미입니다.

오랜만에 포스팅이 길어졌네요. 어떻게 보면 작은 기능이라고 볼 수 있는 RRAS에도 SSTP 라는 새로운 가치가 더해졌습니다. L2TP, PPTP VPN의 보안성과 더불어 SSL 포트를 사용하는 접속 편의성까지 가미된 Windows Server 2008 RRAS.. 또하나의 매력이라고 할까요?