Shine's dev log

VPN의 개념 본문

컴퓨터 네트워크

VPN의 개념

dong1 2020. 8. 13. 18:13

1. Secure Protocols

 

흔히 tcp/ip 5계층에서 보안 관련된 프로토콜은 많이 존재한다. 대표적인 예를 들어보면 다음과 같다.

 

1) Application Layer - HTTPS, SSH, PGP, S/MIME

2) Transport Layer - SSL/TLS

3) Network Layer - IPSec, VPN

4) Data Link Layer - L2TP

 

오늘 정리해볼 내용은 이 중에서도 Network Layer를 책임지는 VPN이라는 녀석이다.

 

 

 

2. Private Network

 

보통 사용자들이 인터넷에 접속하여 웹서핑을 하거나 유튜브를 볼 때, ISP(kt,skt,lg같은 업체)의 통신망을 사용한다. 그리고 대가로 사용료를 지불한다. 이 때 사용하는 네트워크를 public network라고 한다.

 

위와 같은 네트워크는 여러 사람들이 공용으로 사용하는 네트워크이다. 하지만 대부분의 회사나 기업에서는 내부 직원들만 쓸 수 있는 네트워크, 즉 private network를 사용한다. private network를 사용한다는 것은 외부에서 private network에 접근할 수 없고, 이는 안전하다는 것을 의미한다.

 

하지만, 만약 private network에 연결하고 싶다면 어떻게 해야할까?

아마도 전용 라인을 사용해 연결해줘야 할 것이다. 이처럼 자신만 쓸 수 있는 라인을 dedicated line(전용회선) 이라고 하고, 이를 임차해서 사용하는 경우 leased line(임차회선) 이라고 한다. dedicated line을 사용하면 private network에 연결할 수 있다. 하지만 이렇게 dedicated line을 사용하면 비싸다... 엄청 비싸다...

 

따라서 private network 에 값싸게 연결하고 싶다는 욕구에서 나온 개념이 바로 VPN(가상 사설망)이다.

VPN은 public network에서는 연결할 수 없는 private network에 연결하기 위한 서비스이다. VPN을 이용해 client가 private network에 연결되면, client는 private network의 일부가 될 수 있다.

 

즉, 외부에서는 확인할 수 없는 터널을 private network로 뚫어주고, 이 터널을 이용해 private 한 환경을 만들수 있는 것이다.

 

VPN

 

위와 같은 상황을 생각해보자. 만약 Client A, B, C가 같은 서브넷으로 터널을 생성한다면, A, B, C는 private network를 생성하여 LAN 통신이 가능해진다. (L2 통신)

만약 다른 서브넷으로 터널을 생성한다면, VPN Server 자체가 라우터의 기능을 수행한다. 이는 VPN이 Network layer에서 작동하기 때문이다.

 

사실 일반적으로 "VPN" 이라고 하면, 개인이 자신의 IP주소를 숨기고 우회접속을 하는 용도로 쓴다고 생각한다. 하지만 사실 vpn은 처음에는 위와같이 private network에 연결하려는 의도로 만들어졌다.

하지만 개인 사용자의 경우 딱히 그럴 일이 없으므로, vpn을 우회접속을 하는 용도로 자주 쓴다. 아래 그림을 보자.

 

vpn for proxy

 

위의 그림처럼 사용자는 VPN 서버로 요청을 하고, VPN 서버가 웹서버로 요청을 함으로써 사용자의 정보를 숨기는 것이다. 이 때, 사용자와 VPN 서버 사이는 터널로 연결되어 외부에서는 패킷의 정보를 확인할 수 없다. 따라서 사용자와 VPN 서버가 일종의 인트라넷이 되는것이다.

아무튼 이처럼 VPN을 사용하면 단순히 프록시 서버를 이용하는 것보다 보안성이 향상된다. (터널링 시에 암호화가 되므로)

 

 

 

3. Tunneling protocol

 

network layer에서 처리되는 패킷을 datagram이라고 한다. 앞서 vpn이 private netwrok 를 실현하기 위해서는 속을 들여다볼 수 없는 터널을 세워야 한다고 했다. 이 터널을 세워주는 프로토콜이 바로 tunneling protocol이다.

 

tunneling protocol

 

위의 그림에서 볼 수 있듯이 tunneling protocol은 원래의 datagram을 encapsulate 하여 외부에서 datagram의 정보를 알아볼 수 없도록 만든다. 앞에 붙는 헤더에 있는 라우팅 정보를 기반으로 datagram이 목적지로 private하게 이동할 수 있다.

 

대표적인 vpn tunneling protocol로는 PPTP, L2TP, IPsec 등이 있다.

 

 

 

4. VPN의 기능

 

vpn은 여러가지 기능들을 제공한다.

 

1) Authentication

수신한 데이터가 올바른 송신자로부터 왔음을 보장한다.

 

2) Integrity

송수신되는 데이터가 중간에 변경되지 않음을 보장한다.

 

3) Confidentiality

데이터가 송수신되는 동안 기밀성이 보장된다.

 

4) Access control

인증된 사용자만 접근이 가능하도록 보장한다.

 

 

 

5. VPN과 Firewalls

 

Firewalls(방화벽)은 네트워크 패킷을 필터링하여 특정 종류의 네트워크 흐름을 허용하거나 차단한다. 여러개의 VPN들이 병렬적으로 연결되어 있는 경우에, 방화벽은 VPN에 가해지는 공격을 막고, 데이터를 보호하기 위해서 사용된다.

 

보통 firewall에 옵션으로 VPN 서비스가 들어가 있는 경우가 많지만, VPN과 firewall을 parallel하게 설치해야하는 경우도 있다. 이 경우 크게 'firewall 앞에 VPN서버가 있는 경우''VPN 서버 뒤에 firewall이 있는 경우'로 나뉜다.

 

1) firewall 앞에 VPN서버가 있는 경우

 

VPN Server in front of Firewall

 

위의 그림의 구조가 VPN 서버 앞에 firewall이 있는 경우이다.

 

이 경우, VPN 클라이언트가 생성한 데이터는 VPN 서버를 지나야만 firewall에 도달할 수 있다. 따라서 firewall 필터링을 통해 VPN 클라이언트가 특정 인트라넷 리소스를 엑세스하지 못하게 할 수 있다.

 

2) firewall 뒤에 VPN서버가 있는 경우

 

VPN Server behind the Firewall

 

위의 그림의 구조가 VPN 서버 뒤에 firewall이 있는 경우이다. 이 경우가 더 일반적인 구조이다.

 

이 구조의 장점으로는

1) firewall 덕분에 VPN이 인터넷으로부터 완전히 안전하다는 점

2) 인터넷에서 오고 가는 데이터를 하나의 머신이 담당하기 때문에 간단하다는 점

 

단점으로는

1) VPN 트래픽들이 모두 firewall을 거쳐야 하기 때문에 지연이 발생한다는 점

2) 내부망의 client에서 VPN server까지갔다가, VPN server에서 firewall까지 가야한다는 번거로움 등이 있다.

 

 

 

 

6. VPN의 종류

 

1) Site-to-Site

- 예시) 서울 사무실과 부산 사무실을 연결하는 VPN

- Interanet VPN (서로 다른 인트라넷을 터널로 연결), Extranet VPN (인트라넷을 외부의 협력사와 터널로 연결)

 

2) Client-to-Site VPN

- 예시) 개인 노트북으로 SKT 서버에 연결

- Remote access VPN (원격 접속자가 인트라넷에 연결)

 

3) Client-to-client VPN

- 경로가 공유되지 않으므로 가장 안전하다.

- 하지만 mapping을 관리하기 어려워서 잘 쓰이지 않는다.

 

 

오늘 배운 내용을 정리해보면,

 

1. VPN은 보다 쉽고 싸게 private network를 제공해준다.

 

2. tunneling을 활용하여 private network를 실현한다.

 

3. VPN의 기능으로는 Authentication, Intergrity, Confidentiality, Access control 이 있다.

 

4. 방화벽과 VPN의 위치에 따라 특징이 달라진다.

 

5. VPN의 종류로는 Site-to-Site, Client-to-Site, Client-to-client 가 있다.

 

 

위 내용은 공부하며 작성한 것으로, 오류가 있을 수 있습니다.