VPN이란 무엇일까?
일반적으로 흔히 접하는 expressVPN 부터 NordVPN까지 어디선가 많이 들어보았을 것이다.
이러한 VPN은 주로 "IP를 우회하기 위해, 자신의 정보를 숨기고 웹 서핑을 즐기기 위해, 특정 국가에서 차단된 콘텐츠에 접속하기 위해 " 사용되어 왔다.
이렇다보니 VPN하면 어딘가 친숙하면서도 막연하게 암호화
, 익명성
, 우회
등으로 생각하기 쉽다.
넓게 보면 다 맞는 말이지만, IT를 공부하다보면 네트워크 파트에서 VPN
이 나오게되고, 이 VPN
이 왠지 모르게 내가 사용하던 그런 VPN과는 다른 개념인 것 같이 느껴지는 이질감이 드는 경우가 있다.
본 글에서는 어려운 부분은 최대한 배제하고 최대한 쉽게 정리해보고자 한다.
먼저 VPN은 크게 두가지로 분류된다.
Client-to-Site VPN과 Site-to-Stie VPN으로 분류되는데, 본 글에서는 Client-to-Site VPN에 대해서 알아보도록 한다.
Client-to-Site VPN은 우리가 흔히 사용해왔던 expressVPN, NordVPN과 같은 종류의 VPN이다.
즉, 주로 사용자가 "외부의 차단된 사이트에 접속하기 위해서 " 또는, "자신의 IP정보를 숨기기 위해서 " 사용하는 VPN이라 할 수 있다.
암호화 프로토콜로는 SSL VPN, IPsec, OpenVPN, L2TP/IPsec, PPTP, IKEv2등을 사용한다.
그럼 Client-to-Site VPN은 어떤 구조를 가질까?
아래 그림을 보도록 하자.
이를 글로 정리하면 다음과 같은 구조가 된다.
사용자 디바이스 ➡️ VPN 클라이언트 ➡️ ISP ➡️ VPN 서버 ➡️ 외부 인터넷 사이트
└─────────────────────────────────────┘
터널링(ENCRYPED)
이 때, 터널링
이란 외부에서 패킷이나 데이터를 확인할 수 없는 암호화된 통로로 VPN을 통해 암호화(Encryped)되는 범위를 의미한다.
따라서 Client-to-Site VPN에서 터널링 범위는 그림과 같이 사용자 ➡️ ISP ➡️ VPN 서버
까지가 되는 것을 확인할 수 있다.
💡
ISP
: Internet Service Provider의 약자로 KT, SKT, LG U+ 등의 인터넷을 제공해주는 통신업체
이제 본 구조를 화살표를 따라가며 어떻게 동작하는지 알아보도록 하자.
사용자 디바이스 ➡️ VPN 클라이언트 ➡️ ISP ➡️ VPN 서버 ➡️ 외부 인터넷 사이트
└─────────1,2──────────────────4────┘ 5 6
터널링(ENCRYPED)
3
사용자는 VPN 클라이언트를 통해 VPN 서버에 연결 요청을 보낸다.
사용자 인증이 이루어지고 사용자 ➡️ ISP ➡️ VPN 서버
까지의 터널링이 형성된다.
(이 과정에서 익명의 IP가 사용자에게 부여되고, 사용자는 이 IP를 통해서 통신하게 된다.)
사용자가 보내는 모든 트래픽은 암호화되어 VPN 서버로 전송되고, ISP는 암호화된 해당 트래픽을 확인할 수 없다.
(사용자 IP만을 확인할 수 있는데, 해당 IP도 사실 사용자의 IP가 아니다.)
VPN 서버는 사용자의 트래픽을 복호화하여 어디로 접속하는 지 확인하고, 실제 접속하고자하는 사이트로 트래픽을 전달한다.
해당 사이트에서는 응답을 반환하여 사용자에게 보여준다.
여기서 보면 알겠지만, ISP는 암호화된 사용자 트래픽을 확인할 수 없지만, VPN 서버는 사용자의 요청을 인터넷으로(원하는 사이트로) 보내줘야 하므로 사용자 트래픽을 복호화 할 수 밖에 없다.
📍 이것이 VPN을 선택할 때
노 로그
,노 로깅
정책이 중요한 이유이다.
그렇다면 이처럼 VPN을 사용해서 암호화되는 것은 알겠는데, 안 쓰게 되면 내 어떤 정보가 ISP에 공개되는 지 알아보도록 하자.
위 그림과 같이 VPN을 사용하지 않으면 암호화 되지 않은 상태로 ISP를 그대로 통과해서 인터넷에 접속되게 된다.
이럴 경우 차단된 사이트 또는 컨텐츠에 접근 시 ISP 단에서 막히게될 것이고 "사용할 수 없는 서비스 또는 국가 입니다. " 가 출력되게 된다.
VPN을 사용하지 않는 경우, ISP가 확인할 수 있는 정보(외부로 노출되는 정보)는 다음과 같다.
http://
로 접속하는 경우
암호화되지 않은 상태로 데이터를 전송하기 때문에, ISP는 사용자 IP를 포함한 사용자가 방문하는 웹사이트의 모든 내용(예: 페이지의 텍스트, 이미지 등)을 포함하여 트래픽을 거의 완전히 볼 수 있다.
https://
로 접속하는 경우
http
보다는 그나마 조금 더 양호하지만, 이 또한 사용자의 대부분의 정보가 노출된다.
SSL/TLS 암호화를 사용하여 데이터를 전송하기 때문에, ISP는 사용자가 방문하는 웹사이트의 세부적인 콘텐츠는 볼 수 없다. 그러나 ISP는 여전히 사용자가 접속한 도메인(예: www.example.com)과 같은 메타데이터는 볼 수 있고, 사용자 IP 또한 그대로 노출된다.
결론은 VPN을 사용하지 않으면, 대부분의 사용자의 활동은 전부 기록되고 있다고 봐도 무방하다. 이는 사이트 및 ISP 로깅정책에 의해 달라지며 통신비밀보호법에 의해 n개월 간 필수적으로 보관한다.
회사를 다니는 경우, 간혹 회사 VPN을 사용해서 회사 서버에 접속하는 경우가 있었을 것이다. (F5 VPN)
사실 본 글을 작성하게 된 이유 또한 회사망에 접속해서 서류를 발급받을 일이 있어 VPN을 사용하다가 궁금해서 정리할 겸 작성하게 되었다. ✏️
Client-to-Site VPN인 것은 동일하나, 이 경우에는 ISP에서 차단되는 것이 아니라, 회사 내부 서버에서 허용된 IP 주소 목록이 아니므로 차단되게 된다.
회사의 내부망에 접속하는 과정은 다음과 같다.
사용자 디바이스 ➡️ VPN 클라이언트 ➡️ ISP ➡️ 회사 VPN 서버 ➡️ 회사 내부망
└──────────────────────────────────────┘
터널링(ENCRYPED)
SSL/TLS 세션 설정 및 터널링 형성
회사 내부망에 해당하는 내부 IP 주소 할당
(가상 네트워크 인터페이스가 생성되고, 여기에 회사 내부 IP가 할당됨)
# 새롭게 생성된 회사 내부망 IP
xxx@xxx-MacBookPro ~ % ifconfig
utun4: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1384
inet 192.168.10.41 --> 1.1.1.1 netmask 0xffffffff
실제로 이처럼 라우팅 테이블을 열어보면, 회사 내부(203. 또는 218.XXX.) 로 접속할 때, 새롭게 생성된 회사 내부망 IP를 게이트웨이로 내부로 접속하는 것을 확인할 수 있다.
여기서 출력되는 가려진 회사 공인IP 주소로 접속해보면 실제 회사 서버로 연결되는 것을 확인할 수 있었다.
또한, 보안적인 측면에서 DNS 서버를 통해 쿼리 후 접속이 아닌, 직접 IP로 접속하는 경우 차단되어 있었으나. 일부 legacy 사이트는 IP로 직접적인 접근이 가능하기도 했다.