본문 바로가기
Network Infra 쉽게 이해하기/VPN 쉽게 이해하기

SSL VPN 쉽게 이해하기 #1

by 네트워크 엔지니어 환영 2023. 1. 1.
반응형

2020년 초, 코로나 바이러스의 확산은 재택근무의 보편화를 불러왔습니다. 아침 일찍 일어나 출근 준비를 하고 사람이 미어터지는 대중교통을 타고 회사로 가는 수고를 하지 않아도 되었습니다. 상사의 감시(?)가 없으니 느긋하게 할 일을 하며 딴짓도 할 수 있게 되었고 다소 늦게 일어나도 되는 여러 장점들이 있지요. 물론 아이가 있는 분들은 육아를 병행해야 하니 좀 더 힘들 거란 생각을 합니다.

출처 : 가비아 홈페이지(https://company.gabia.com/)

회사에서 사내 네트워크에 접속하여 업무를 보는 것과는 다르게 재택근무를 하게 되면 사내 네트워크에 직접 접근할 수 없습니다. 자택의 공유기 네트워크와 회사의 네트워크는 공인 인터넷을 중간에 두고 있기 때문이지요. 사내에서 사용하는 메일 시스템과 결재 시스템, 갖가지 서비스를 사용할 수 없게 되는 것입니다. 재택근무가 아니더라도 사내 네트워크에 긴급하게 접근해야 하지만 거리상의 문제로 접근할 수 없다면 어떻게 해야 할까요? 매우 곤란한 상황이 올 수 있습니다. 즉 사용자(Client)가 외부 인터넷에 접속한 상황에서 기업의 내부 네트워크(Network)에 접근할 필요성이 생기게 됩니다. 이러한 문제를 해결할 수 있는 VPN이 바로 SSL VPN입니다.

 

SSL VPN이란?

앞서 VPN 쉽게 이해하기에서 언급한 것처럼 SSL VPN은 Client to Site 방식으로 사용되는 VPN입니다. 이를 바꾸어 말하면 Client to Network라고 표현할 수 있습니다. 즉 사용자가 네트워크에 접근하기 위해 사용되는 VPN이라는 뜻입니다. IPSec VPN이 Network to Network, 망과 망을 연결하기 위한 VPN이라는 점에서 확연한 차이점이 있습니다. 기업을 예시로 들면 사용자는 인터넷만 연결되어 있다면 언제, 어디서든 SSL VPN을 통해 사내 네트워크에 접근할 수 있습니다. 

SSL VPN 구성의 예

위 그림에서 볼 수 있듯이 SSL VPN은 '사용자'가 '네트워크'에 접속하는 것이기 때문에 IPSec VPN과는 달리 VPN 장비를 2대 이상 필요로 하지 않습니다. 물론 SSL VPN에 접근하기 위해 공인 인터넷이 필요하다는 것은 동일하지요. 또한 접근하는 사용자가 인가된 사용자인지 확인하고, 인가된 사용자가 암호화 통신을 할 수 있도록 방법을 제공합니다. 여기에 SSL(Secure Socket Layer), 현재에는 TLS(Transport Layer Secure)라 불리는 프로토콜을 사용하여 VPN을 구성합니다. 그래서 SSL VPN이라고 부르는 것이죠.(현재에는 TLS 프로토콜이 사용되지만 편의상 SSL 프로토콜이라고 칭하겠습니다.)

SSL 프로토콜은 사용자로 하여금 접속하고자 하는 SSL VPN이 진짜인지, 접속하려는 사용자가 인가된 사용자인지 검증이 가능하도록 하며, 암호화 프로토콜을 제공해 사용자와 SSL VPN이 암호화 터널을 통한 통신을 할 수 있도록 지원합니다. 이러한 인증/암호화 통신 과정을 거치고 나면 SSL VPN은 PC에 사설 IP와 함께 라우팅 정보를 제공하여 마치 PC가 내부 네트워크에 연결된 것처럼 작동하도록 합니다. VPN 쉽게 이해하기에서 말씀드린 2가지 모두를 구현하는 것입니다. 여담으로 PC의 보안 상태를 점검하고 일정 조건의 보안 사항을 준수하지 않으면 접근할 수 없도록 막을 수도 있습니다.

 1. 비싼 전용 회선이 아닌 공인 인터넷(공인망)을 사용해 사설망과 사설망을 연결할 수 있어야 한다.
 2. 인터넷 프로토콜의 취약점인 데이터 암호화 문제를 해결, 공인 인터넷망을 지나가도 안전이 보장되어야 한다.

위 그림에서는 PC의 IP가 표기되어 있지 않지만 사용자 PC는 SSL VPN에 접속한 후에 공유기가 할당해준 사설 IP를 그대로 유지한 채(외부 인터넷 접근을 위한) SSL VPN으로부터 또 다른 사설 IP를 할당받고 이 IP를 활용해 SSL VPN이 설치된 내부 네트워크와 통신을 실시하게 됩니다. 여기서 SSL VPN은 사용자 PC 할당 목적의 IP 대역을 별도로 운영하여 자신이 Gateway 역할을 맡고 필요한 사용자에게 할당하며 IP Routing(이하 IP 라우팅)을 통해 사용자가 내부 네트워크에 접근할 수 있도록 지원합니다. 사용자는 SSL VPN에 접속만 할 수 있다면 내부 네트워크에 쉽고 안전하게 접속하여 업무를 처리할 수 있습니다. SSL VPN이 제공하는 이점입니다.

 

SSL(Secure Socket Layer)이란?

전송 계층 보안(영어: Transport Layer Security, TLS, 과거 명칭: 보안 소켓 레이어/Secure Sockets Layer, SSL)은
컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약이다. 그리고 '트랜스포트 레이어 보안'이라는 이름은 '보안 소켓 레이어'가 표준화되면서 바뀐 이름이다. 이 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단 간 보안과 데이터 무결성을 확보해 준다.

- 출처 : 위키백과 -

SSL(혹은 TLS) 프로토콜은 TCP/IP 위에서 작동하는 Application(이하 애플리케이션)의 통신에 보안을 제공하기 위한 암호 규약, 프로토콜입니다. 여기서 애플리케이션이란 OSI 7 Layer의 7 계층에 해당하는 애플리케이션 계층을 의미합니다. 즉 사용자가 보내고자 하는 데이터(HTTP, SMTP, TELNET, SNMP 등 Layer 7에서 작동하는 프로토콜의 메시지)를 암호화하고 이를 TCP/IP를 통해 통신하는 것이죠. 

Application Layer의 데이터를 암호화하여 TCP 통신을 실시하는 SSL 프로토콜

위의 그림에서 볼 수 있듯이 SSL 프로토콜은 사용자와 직접 맞닿는 계층의 프로토콜 데이터, HTTP를 이용한 웹 페이지 정보 전송이나 FTP를 이용한 파일 정보 전송 혹은 SMTP를 이용한 메일 정보 전송 등 사용자의 메시지를 암호화하여 TCP와 IP를 사용해 상대방에게 안전하게 전송하도록 지원하는 역할을 합니다. SSL 프로토콜을 통해 데이터를 암호화하는 SSL(TLS) handshake를 보면 좀 더 명확히 이해할 수 있습니다. 아래 그림은 사용자(Client)와 서버(Server)가 신뢰성 있는 연결을 기반으로 HTTP 정보 등을 암호화 통신하기 위해 Conneciton(이하 커넥션)을 생성하는 과정인 3-way handshake, SSL handshake를 그림으로 표현한 것입니다. 

SSL handshake의 과정(출처 : Cloudflare)

위의 그림을 자세히 살펴보겠습니다. 사용자와 서버는 IP를 이용하여 상대방에 접근합니다. 안정적으로 데이터를 주고 받을 수 있도록 TCP도 사용하죠. 그리고 TCP에서 사용하는 커넥션 생성 과정인 3-way handshake를 실시합니다. 안정적인 연결인 커넥션이 생성된 상태에서 이제 암호화 통신을 위한 과정을 시작합니다. 이것이 앞서 언급한 SSL handshake입니다. 사용자와 서버는 상호 사용 가능한 암호화 프로토콜을 확인하고 인증서를 통해 상대방이 진짜임을 확인합니다. 그리고 메시지를 암호화할 수 있는 암호화 키를 서로 주고 받지요. 이 2가지 과정을 거치면 사용자와 서버는 암호화 통신이 가능해집니다.

이번에는 사용자를 Client에, SSL VPN을 Server에 대입하여 보겠습니다. 사용자와 SSL VPN은 IP를 이용하여 상대방에 접근합니다. 그리고 안정적인 통신을 위해 3-way handshake를 실시하여 커넥션을 생성합니다. 커넥션이 생성된 후, SSL handshake를 실시하여 SSL VPN과 사용자가 서로 인증하고 암호화 키를 서로 주고받아 암호화 통신을 가능케 하는 일련의 과정을 거칩니다. 이 과정에서 만들어지는 산물은 암호화 키를 서로 주고 받습니다. 그리고 사용자가 SSL VPN에 전송하고자 하는 메시지를 암호화합니다. 정확히는 SSL VPN을 통해 내부 네트워크에 전송하고자 하는 메시지이지요. SSL VPN의 동작 과정을 이해한다는 것은 TCP와 HTTPS를 이해하는 것과 거의 동일하기 때문에 자세히 알아두는 것이 좋습니다.(자세한 내용은 TCP/IP 쉽게 이해하기와 HTTPS 통신과정 쉽게 이해하기 #1(HTTPS의 개요)HTTPS 통신과정 쉽게 이해하기 #3(SSL Handshake, 협상)을 참조하세요)

1. 3-way handshake : 안정적 연결인 커넥션 생성
2. SSL handshake : 상호 인증, 암호화 키 생성
반응형

주요 구성 방법

이 글을 읽는 분들은 DMZ(Demilitarized Zone), 비무장지대에 한 번쯤은 들어보셨을 겁니다. 세계 유일의 분단국가로서 한반도에는 비무장지대가 존재하죠. 비무장지대는 둘 이상의 국가 혹은 세력 사이에 존재하며 양쪽 모두 접근할 수 있다는 특징을 갖습니다.

비무장 지대(非武裝地帶, demilitarized zone, DMZ)는 전쟁, 분쟁 상태 혹은 정전 상태에 있는 둘 이상의 국가(또는 군사 세력, 동맹) 사이에 평화 조약, 휴전 협정 등에 의해서 설치된 군사 활동이 허용되지 않는 지역이다. 대부분 사실상의 국경인 정전 라인(군사 분계선) 주변에 설치된다. 비무장 중립 지대, 중립 지대(Neutral Zone)라고도 한다.

- 출처 : 위키백과 -

네트워크에도 비무장지대는 존재합니다. 이를 DMZ Network(이하 DMZ 네트워크)라고 부릅니다. SSL VPN에 대해 이야기하다 말고 DMZ 네트워크를 언급하는 이유는 SSL VPN이 주로 위치하는 곳이 DMZ 네트워크이기 때문입니다. 앞서 언급한 것처럼 SSL VPN은 외부 인터넷에 접속 중인 사용자가 내부 네트워크에 접근하기 위하여 사용하는 VPN입니다. 그러므로 SSL VPN은 내부 네트워크에 위치하면서도 외부 네트워크에 가까운 곳에 위치해야 합니다. 즉 내부 네트워크와 외부 네트워크를 모두 접하고 있어야 한다는 뜻입니다. 그리하여 이를 비무장지대와 유사하다 하여 DMZ 네트워크라고 부르는 것입니다. 

외부 네트워크와 접한다는 것은 외부의 공격에 취약해질 수 있다는 것을 의미합니다. 외부 네트워크를 접하고 있는 만큼 공인 IP를 보유해야 하는 경우가 많기 때문에 공격의 표적이 되기 쉽습니다. 그런 이유로 인해 DMZ 네트워크에 SSL VPN을 배치하여 운용할 경우 주로 방화벽을 함께 설치하여 운용합니다. 이를 그림으로 표현하면 다음과 같습니다.

방화벽 네트워크에 별도의 DMZ를 만든 네트워크 구성

위 그림에서는 SSL VPN이 방화벽을 앞에 두고 DMZ 네트워크에 속해있는 것을 볼 수 있습니다. SSL VPN은 공인 인터넷과 방화벽을 통해 외부에서 접근할 수 있으며 내부 네트워크에서 역시 방화벽을 통해 SSL VPN에 접근할 수 있습니다. 여기서 SSL VPN에 공인 IP를 설정하여 SSL VPN을 외부 직접 목적지로 설정하여 접근하도록 할 수 있고 방화벽에서 SSL VPN의 공인 IP를 보유하고 이를 Destination IP NAT를 통해 SSL VPN의 사설 IP를 목적지로 하여 접근하도록 할 수 있습니다. 또한 1대가 아닌 2대를 둠으로서 이중화를 구현한 것도 볼 수 있군요.

다만 위 구성에서는 내부 네트워크에서 외부 네트워크로 나가는 트래픽, 외부 네트워크에서 내부 네트워크 트래픽과 함께 SSL VPN으로 유입되는 트래픽 모두를 방화벽이 감당해야 하기 때문에 트래픽 사용량이 많거나 방화벽 스펙이 사용량을 따라가지 못할 경우 문제가 생길 수 있습니다. 그런 경우에는 아래와 같이 외부 네트워크와 내부 네트워크가 통신하는 주 방화벽과 별도로 SSL VPN만을 운용하기 위한 네트워크를 따로 구성할 수 있습니다. 

SSL VPN의 활용과 이중화를 극대화하는 네트워크 구성

위 그림에서 SSL VPN만을 위한 DMZ 네트워크를 별도로 구성하여 방화벽의 부담을 덜고 SSL VPN 사용자를 최대한 수용할 수 있도록 네트워크를 구성한 것을 볼 수 있습니다. 또한 첫 번째 그림에서는 방화벽 2대가 모두 다운되면 DMZ 네트워크와 내부 네트워크 모두가 장애 상황에 처할 수 있지만 위 그림의 구성에서는 방화벽이 별도로 구성되었기 때문에 주 방화벽 장애에 대한 부담을 크게 줄일 수 있죠. 물론 비용은 더 크게 드는 것은 감안해야 합니다.

방화벽과 SSL VPN이 일체화된 네트워크 구성

세 번째 구성은 방화벽과 SSL VPN이 일체화된 네트워크 구성입니다. SSL VPN, 방화벽, L4 스위치 등 L4 / L7 네트워크에서 동작하는 장비들은 기본적으로 동작 방식이 유사하기 때문에 하나의 하드웨어 장비 안에 SSL VPN / 로드밸런싱 / 방화벽 등의 라이센스를 적용하는 방식으로 다양한 기능을 제공할 수 있습니다. L4/L7 스위치로 사용되는 F5 Networks나 Fortinet의 경우에도 하드웨어 장비 내에 여러 라이센스를 제공함으로써 여러 기능을 사용할 수 있도록 합니다. SSL VPN 사용량이 적은 소규모 네트워크나 SSL VPN / 방화벽 스펙이 뛰어날 경우, 위와 같이 일체형 장비를 사용하여 제공하는 것도 좋은 선택이 될 수 있습니다.

이 문서에서는 SSL VPN의 정의와 SSL 프로토콜 그리고 구성에 대해 알아보았습니다. 다음 문서에서는 SSL VPN의 터널 생성 과정(사용자 접속 과정)과 라우팅 테이블, 패킷 전달 과정에 대해 알아보도록 하겠습니다.

반응형

댓글