들어가기 앞서
해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 네트워크 핵심이론 - 응용'의 section 3을 보고 공부한 내용을 정리한 글입니다.
VPN이란?
VPN은 Virtual Private Network의 약자로 한국어로 번역하면 가상 사설망을 의미한다. 여기에서 '가상'이라는 의미는 물리적으로 구현되지 않고 논리적으로 구현된 무언가를 의미하고 '사설망'은 외부에서 접근이 불가능한 사적인 네트워크를 의미한다. 의미를 풀어서 설명하면 외부에서 접근이 차단된 사적인 네트워크를 물리적인 장치를 통해서가 아닌 네트워크 기술을 통해서 구현한 것이라고 설명할 수 있을 것 같다.
사실 VPN은 지역 네트워크인 LAN과 상당히 유사하다. LAN 또한 공적인 네트워크인 인터넷과 구별되는 사적인 네트워크 영역이기 때문이다. VPN은 LAN처럼 호스트들을 독립적인 네트워크로 묶어 사설망을 구성하지만 LAN과는 다르게 물리적인 연결이 필요하지 않기 때문에 거리에 제한을 두지 않고 확장을 용이하게 할 수 있다는 장점을 갖는다.
LAN과 비교해 VPN을 조금 더 쉽게 이해하고 싶다면 아래의 비유를 한번 살펴보자.
청바지 회사의 고민
- 여기 서울에서 청바지 장사를 하는 A 기업이 있다. A 기업은 자사에서 판매하는 청바지의 데이터 뿐 아니라 A사를 이용하는 회원들의 데이터를 자사 사무실 내부의 데이터베이스 서버에 저장하고 있다.
- 한편 A 기업의 실적이 계속해서 개선됨에 따라 A 기업의 사업이 확장할 기회가 생겼다. A 기업은 본사를 서울에 두고 새로운 지사를 부산에 설립하기로 한다.
- 그렇게 부산 지사가 성공적으로 설립되고 본격적인 업무에 들어간다. 그렇게 몇시간 후, 부산 지사의 직원들은 A 기업의 데이터베이스 시스템에 접근할 수 없다는 사실을 알게 된다. A 기업의 데이터베이스는 서울 본사에 위치해 있기 때문이다.
- A 기업은 고민에 빠진다. 거리가 엄청나게 먼 두 개의 건물을 한데 묶어 네트워크를 구성할 수 있는 방법이 무엇이 있을까? A 기업은 임원회의를 소집하고, 임원들은 회의에서 2가지 안을 내놓는다.
임원들이 내 놓은 안
- 서울과 부산에 사설망을 구축한다.
- 전사원이 퇴근 후 매일 2시간씩 땅을 파고 광케이블을 매설하거나,
- 인터넷 제공 업체인 ISP에게서 서울에서 부산으로 이어지는 물리적인 사설망을 구입해 사용한다.
- 서울과 부산 네트워크에 VPN 환경을 구축한다. 비록 물리적으로 양측이 이어지진 않겠지만 1번과 비슷한 효과를 기대할 수 있을 것이다.
만약 당신이 임원들이 내 놓은 안 중 하나를 선택할 수 있는 의결권이 있는 사람이라면 어떤 선택을 할 것인가? 각각의 안을 바라본 당신을 다음과 같이 생각한다.
1-1. 전사원에게 매일 2시간의 야근을 몇개월이 될지 모르는 시간동안 시켜야 하는 일이다. 전산망을 구축하다 모두가 퇴사하고 몇명이나 회사에 남게 될까.
1-2. ISP에게서 사설망을 사서 쓰는 것은 가격적으로 매우 부담되는 선택이라고 들었다. 정확한 가격은 모르겠지만 가격이 상당한 것에 비해 네트워크의 속도가 그렇게 빠르지 않다고 한다.
2-1. 물리적인 네트워크를 구축하는 것보다 가격이 저렴한데 속도 또한 월등히 빠르다.
당신은 주저 없이 2-1번 안, 즉 VPN을 사용하는 것을 선택한다.
위의 이야기에서 살펴봤듯 VPN을 사용하는 것은 적은 비용으로 효율적으로 네트워크를 확장하고 연계할 수 있기 때문이다. VPN은 LAN처럼 사설 네트워크를 구축하는 것이고, 이를 논리적인 과정으로 처리하므로 비용이 저렴하다는 장점을 가지고 있다는 부분을 명심하자.
IPSec 프로토콜을 통한 VPN
물리적으로 서로 떨어진 사설 네트워크들을 논리적으로 묶는데는 어떤 방법이 사용될까? 실제로 유선을 깔아서 연결을 하는게 아니라 연결되어 있지 않은 사설망을 '가상으로' 만드는 작업인데 말이다.
정답은 인터넷과 암호화이다. 조금 더 정확하게 말하면, 인터넷을 사용하되 주고 받는 데이터를 암호화하여 논리적으로 연결된 사설망들만 해당 데이터를 식별할 수 있도록 하는 것이다. 실제로는 데이터가 인터넷을 통해 전세계에 공개되지만 데이터가 암호화되어 있기 때문에 데이터를 해석할 수 없는 주체는 해당 데이터를 식별할 수가 없다. VPN은 이렇듯 인터넷과 암호화를 합쳐서 동작한다. 그럼 VPN을 이루기 위해 데이터를 암호화하는 프로토콜 중 IPSec이라는 프로토콜을 한번 살펴보자.
IPSec은 네트워크와 네트워크를 VPN으로 연결하는데 사용되는 프로토콜로 패킷을 암호화하고, IPSec이라는 이름에서도 알 수 있듯 IP 주소를 조작하는 기술이다. OSI 계층으로 보면 L3에서 동작하는 프로토콜이라고 하겠다. IPSec의 세부적인 종류로는 ISAKMP, IP AH, IP ESP 등이 있다.
그럼 IPSec이 어떻게 데이터를 변조하고 암호화된 데이터를 생성해 VPN을 구축하는지 아래에서 간략하게 한번 살펴보자.
IPSec 동작 과정
여기 서로 다른 두개의 LAN이 있고, 각각의 LAN은 라우터를 통해 인터넷으로 열려 있다. A 호스트는 멀리 떨어진 B 호스트와 통신을 하고 싶은데, B 호스트가 사실 상당히 민감한 데이터를 가지고 있는 데이터베이스 서버 호스트라 인터넷을 통해서는 접근이 불가능하다. A 호스트가 IPSec 기반의 VPN을 사용해 B 호스트와 통신하는 방법을 살펴보자.
- A 호스트가 B 호스트와의 통신을 통해 TPC/IP 패킷을 생성한다. 패킷에는 IP 헤더, TCP 헤더, 데이터의 정보를 담은 페이로드가 들어 있다. 이 중에서 살펴볼 요소는 IP 헤더로 IP 헤더에는 출발지 IP 주소와 목적지 IP 주소가 적혀 있다.
- 출발지 IP 주소 : 3.3.3.10
- 도착지 IP 주소 : 5.5.5.3
- LAN #1의 라우터에 도착한 패킷은 IPSec 프로토콜로 인해 통째로 암호화된다. 이 때 사용되는 암호화 알고리즘은 다양한데 AES, Blowfish, Triple DES, ChaCha, DES-CBC 등의 알고리즘이 사용될 수 있다.
- LAN #1의 라우터는 패킷을 통째로 암호화하는 것과 함께 새로운 IP 헤더를 생성해 암호화된 패킷에 붙인다. 새로운 이 IP 헤더에는 새로운 출발지 IP 주소, 도착지 IP 주소가 들어있다.
- 출발지 IP 주소 : 3.3.3.1 (라우터 주소)
- 도착지 IP 주소 : 5.5.5.1 (라우터 주소)
- 인터넷을 통해 LAN #2의 라우터에 들어온 패킷은 다시 복호화된다. 이때 3번 과정에서 만들어진 신규 IP 헤더는 폐기되고, 정상적인 패킷인 것처럼 라우터를 통과해 목적지인 B 호스트에게로 패킷이 넘어간다.
- (B 호스트에서 응답이 있을 경우 1번 과정부터 다시 하나하나 진행되며 B 호스트의 패킷이 A 호스트에게 넘어갈 것이다)
여기에서 한 가지 주지하고 싶은 부분이 있는데, 보안적인 목적에서 사용되는 라우터는 사용의 편의상 Secure Gateway라고 불릴 수도 있다고 한다. 만약 VPN을 공부하는데 라우터인 R 표시가 있어야 할 자리에 SG라는 표시가 있다면 이는 Secure Gateway를 지칭하는 것이고, 라우터를 다르게 표현한 것에 불과하다는 것을 염두하길 바란다.
VPN은 악용될 수 있다
VPN의 원래 목적은 네트워크를 확장하거나 연계하는 것이다. 앞서 살펴본 바와 같이 말이다. 그러나 VPN이 악용되어지는 경우에는 본래의 목적과는 다른 목적으로 사용될 수 있는데, 그것은 바로 IP 주소를 세탁하는 것이다.
일례를 한번 살펴보자. 여러분은 지금 중국에 여행을 와 있다. 지금 시간은 오후 9시인데, 무슨 사정이 있어서 숙소에 일찍 들어와 있다. 숙소에서 별달리 할게 없어서 심심했던 여러분은 평소에 즐겨하던 컴퓨터 게임을 하고 싶어졌다. 다행히 여행에 들고 온 노트북 한대가 있었고 여러분은 노트북을 열어 게임에 접속한다. 그러나, 한국 서버가 잠겨 있다. 중국 서버에서 게임을 진행할 수도 있지만 여러분은 무슨 일이 있어도 한국 서버에서 게임을 하고 싶다.
여러분은 잠시 생각을 하더니, VPN을 떠올린다. VPN을 사용하면 게임 서버에게 여러분이 중국이 아닌 한국에 있는 호스트라고 속일 수 있다. 이 경우에는 위에 살펴본 IPSec 통신 과정 중간에 중간자에 해당하는 VPN 호스트가 필요한데, 아래의 경우를 한번 살펴보자.
- 중국에 있는 여러분은 한국에 위치한 VPN을 사용하기 위해 VPN 클라이언트 프로그램을 다운 받는다.
- 한국에 있는 VPN 호스트는 중국에 있는 노트북에게 자신이 관리하는 IP 주소 하나를 새로 부여한다.
- 중국에 있는 노트북이 한국 VPN 호스트로부터 할당 받은 IP 주소로 게임 서버에 접속하는 패킷을 전송한다.
- 게임 서버는 출발지 IP 주소를 보고 해당 패킷이 한국에서 왔다고 판단, 정상적인 응답을 보낸다.
- 패킷이 VPN 호스트에 도착하고 VPN 호스트는 해당 패킷을 중국에 있는 노트북에 전송한다.
조금 복잡할 수 있는데, 요지는 VPN 호스트가 중국에 있는 PC와 게임 서버를 중개하고 있다는 것이다.
이러한 IP 주소 세탁 과정은 해킹과 같은 범죄적인 행동을 통해 충분히 악용될 수 있다. 해커들은 VPN을 여러개 통하며 해킹을 하는데, 이는 출발지 IP 주소가 어디인지 알 수 없게 하기 위함이다. 실제로 이러한 과정에서 발생한 해킹은, 해킹의 발신지가 어디인지 추적하기 매우 어렵다고 한다. 중간에 끼어 있는 VPN의 터널이 하나라도 끊어지면 발신지 IP를 추적하기가 불가능하기 때문이다.
관련된 부분으로 Point-to-Point Tunneling Protocol(PPTP)를 공부해볼 수 있는데, 한국에서 많이 사용되는 IPtime의 공유기가 PPTP를 지원한다고 한다. PPTP는 IPSec과 같은 VPN 프로토콜로, IPtime의 공유기는 PPTP를 조작할 경우 VPN 호스트로 사용할 수 있다는 것을 의미한다. 이와 관련해서 해커는 먼저 한국에 있는 PPTP 지원 공유기를 해킹한 후 VPN으로 만들고, 이 VPN을 통해 IP 주소를 세탁한 후 범죄적인 행동을 할 수 있다고 한다. 만약 해당 범죄사실이 경찰과 같은 관련기관에 의해 조회될 경우, 해커가 PPTP를 통한 한국의 특정 공유기를 통해 해킹을 진행했기 때문에 한국의 특정 공유기 소유주에게 엄한 의심의 눈초리가 갈 수 있다고 한다. 물론 관련기관도 공유기 해킹으로 인한 해킹 사례를 알 것이고, 문제가 될 부분은 없다고 생각하지만 외국의 해커들이 우리집 공유기를 통해 사이버 범죄를 저지르고 다니다가 어느 날 경찰이 나에게 전화를 해 이런 부분을 알게 됐다고 생각해보면 정말 기분 찝찝한 일이 아닐 수 없다.
'네트워크' 카테고리의 다른 글
[외워서 끝내는 네트워크 핵심이론 - 응용] NAT 기반의 인터넷 공유기, 포트포워딩 (1) | 2023.04.15 |
---|---|
[외워서 끝내는 네트워크 핵심이론 - 응용] Inline, Out of Path, Proxy 구조 (0) | 2023.04.04 |
[외워서 끝내는 네트워크 핵심이론 - 기초] L4 수준에서 외울 것들 정리 (0) | 2023.03.29 |
[외워서 끝내는 네트워크 핵심이론 - 기초] L3 수준에서 외울 것들 정리 (0) | 2023.03.23 |
[외워서 끝내는 네트워크 핵심이론 - 기초] L2 수준에서 외울 것들 정리 (0) | 2023.03.20 |