본문 바로가기

공부 이야기/그냥 찾아보는 공부

VPN이란 무엇인가?

네트워크 인프라 설계에서, 특히 보안 분야에서 굉장히 많이 나오는 단어 중 하나가 VPN이다.

오늘은 VPN의 개념과 구현 방법에 대해 간단히 적어보려고 한다.

 

Virtual Private Network.

즉, 인터넷과 같은 공용망을 사설망처럼 동작시키는 기술을 의미한다.

실제로 물리적인 회선을 가져다쓰는 것이 아니라 논리적으로 구현하기 때문에 가상화라는 개념이 붙은 것이다.

 

그러면 가상화를 통해 얻은 효과는 무엇일까?

앞서 언급했듯이 '보안성'을 강화하기 위함이 크다. 회선은 조직 내에서만 공개가 되며 인증된 자만 사용할 수 있게 함으로써 보안을 키울 수가 있다. 하지만 공중망을 임차하기 위해 관리 비용이 발생하고 거리에 따른 설치비용이 증가하기 때문에 무한정 만들고 볼 순 없는 것이다.

 

실제 시중해서도 VPN관련 서비스

들이 많이 나와있다. 종종 유료 VPN도 볼 수 있다.

구글에서 VPN을 검색했을 때 상위에 노출된 프로그램들이다.

그러면 VPN에서 자주 사용하는 용어인 '터널'에 대해 정리해보자.

실제 라우터 장비에서 커맨드 창을 키고 VPN을 실행할 때 tunnel이라는 명령어를 사용해서 인터페이스를 지정한다.

여기서 알 수 있는 것이 인터페이스와 같은 통신 회선과 터널이 밀접하다는 것이다.

 

터널을 설명하기 위해 한 예시를 들겠다.

집 근처에 마북터널이라고 꽤 긴 터널이 있다. 진입했을 때에는 죽전동이지만 빠져 나오면 동백동에 도착해있다.

터널 속을 주행 중에 죽전과 동백 사이의 마북동, 언남동, 법화산 등 이 곳 저 곳을 들리지만 운전자는 모른다. 

 

이처럼, 실제로는 물리적인 회선을 경유하지만 패킷 정보를 숨겨서 전달하는 것을 VPN에서는 '터널'이라고 하고

기존의 헤더에 새로운 헤더를 추가하는 방식을 취한다.

 

책에 표기된 것처럼, 실제로는 라우터 A->B->C를 지나가지만 패킷은 A->C를 통과한 것처럼 느낀다.

 

그럼 이러한 터널을 수행하는 기술에는 뭐가 있을까? (GRE)

Generic Routing Encapsulation, 철자 그대로 가장 일반적인 라우팅 캡슐화 방식이다.

실제 IP,IPv6,IPsec 등의 3계층 프로토콜의 패킷에 20byte 헤더를 추가해서 터널링을 한다.

 

라우터 명령어로는 터널 인터페이스를 정의하고 실제 물리회선에 해당하는 이더넷을 출발(source)로 지정하고 최종 목적지 IP를 명시한다.(destination) 또한 마지막으로는 터널 인터페이스의 IP주소를 정의한다.

 

사이트 투 사이트 VPN

특정 회사 사이트 간의 통신이 터널이라는 가상의 링크로 연결된 네트워크 구조를 말한다.

 

VPN의 주 기능인 암호화에는 어떤 것이 있을까?

가장 대표적인 기술인 IPSec을 소개하면 다음과 같다.

IPSec은 비밀성, 무결성, 인증, 재생방지를 지원하는 프로토콜로 그 자세한 개념은 다음과 같다.

 

1) 비밀성

비밀성을 유지하기 위해선 '키'가 필요하다. 즉 암호를 해독하기 위한 열쇠로 공개키, 대칭키로 구분할 수 있다.

 

2) 해시

중간에 내용이 변조되었는지에 대해 알아채기 위한 방법으로 수학적 알고리즘으로 구현한다. 또한 HMAC라는 해시 기반 메시지 인증 코드로 해시 정보에 대해 암호화를 추가할 수 있다.

 

3) 인증 

인증 기관 CA에서 주로 하는 과정으로 사전에 공유된 키, 전자 서명, 인증서 등으로 최종적으로 암호화를 구현한 뒤, VPN 통신이 본격적으로 이뤄진다.

 

4) 재생방지

재생방지란 공격자가 자신의 패킷을 도중에 끼워넣는 것을 방지하는 것으로 패킷의 순서번호나 도착시간을 확인하여 그 목적을 달성할 수 있다.