IT를 공부하면서 VPN을 굉장히 많이 들어보았다.
단순히 가상 사설망 이라는 이름에서 오는 감으로 그냥 넘어갔었는데, 이번기회에 조금 더 deep하게 알아볼 수 있었다.
VPN의 등장배경
- 예전에는 지사와 지사가 네트워크로 연결이 되려면 "전용선"이라는 것을 깔아서 연결해야했다. 전용선을 이용하면 인터넷망을 거치지 않고 말그대로 전용으로 사용할 수 있어 안정적이고 빠르게 데이터 전송이 가능했다.
- 하지만 치명적인 단점이 하나 있었는데 바로 설치의 어려움과 가격이었다. 지사마다 물리선으로 연결하려면 선을 매립하는 데 어려움이 있었을 것이고 전용선의 가격은 매우 비쌌기 때문에 지사가 늘어날수록 그 비용은 훨씬 더 커졌을 것이다.
- 이러한 문제점을 가지고 사람들은 아래와 같은 생각을 하게 되었다
인터넷 위에 가상의 전용선을 만들 수 없을까?
- 인터넷이 발전하고 있었기 때문에 인터넷을 사용하여 지사들을 연결하는 방법들에 대해서 고민했다.
- 인터넷은 모두가 사용하는 망이기 때문에 악의적인 공격이 오면 보안적으로 위험해질 수 있다.
-> 이에 대해 연구하면서 인터넷을 사용하지만 전용선처럼 사용할 수 있는 VPN 이라는 기술이 등장하게 되었다.
VPN이란?
- Virtual Private Network

- 인터넷을 사용하지만 “암호화 + 터널”을 만들어서 마치 전용선 처럼 사용할 수 있게 하는 기술.
- 즉 “공용망 위에 사설망을 가상으로 만드는 것”이다.
VPN은 크게 터널링 + 암호화 + 인증 + 무결성 이렇게 4가지 개념이 함께 들어가있다.
[1] 터널링
-
터널링을 통해 패킷을 감싸서 안의 내용을 숨겨줄 수 있다.
-
원래의 네트워크 패킷 위에 새로운 헤더를 붙인다 -> 외부에서는 내부 패킷의 존재만 알 수 있고 네트워크 경로를 감출 수 있다.
-
하지만 터널링 만으로는 보안이 완전하지 않다. 패킷을 열어볼 수 있다면 내부 데이터를 그대로 확인할 수 있기 때문이다.
-
이때 암호화 없이 터널링만 하게되면 패킷을 깠을 때 내용이 보이게 된다.
터널링은 겉으로 봤을 때 원래 내용을 숨겨주는 것이다. 단, 보호까지 해주지는 않는다.

[2] 암호화
VPN은 비대칭키 기반의 키 합의 과정을 통해 공유 세션키를 생성하고,
생성된 세션키를 이용하여 실제 데이터를 대칭키 방식으로 암호화·복호화한다.
-
터널링만 적용하면 패킷을 열어보는 순간 내부 데이터가 그대로 노출된다.
이 문제를 해결하기 위해 사용하는 것이 암호화다.
-
암호화를 적용하면 패킷을 강제로 열어보더라도 내용을 해석할 수 없다.
-
VPN에서는 대칭키 암호화와 비대칭키 암호화를 함께 사용한다.
-
먼저 비대칭키 기반의 키 합의 과정을 통해 안전하게 세션 키를 생성한다.
대표적으로 Diffie-Hellman 방식이 사용된다.

-
그렇게 생성된 세션키를 사용하여 데이터를 암호화, 복호화 한다.
-
세션 키는 한 번의 통신 동안만 사용되며, 보안을 위해 주기적으로 변경된다.
-
실제 데이터 암호화를 대칭키 방식으로 진행하는 통신속도를 빠르게 하기 위해서이다.

[3] 인증

대표적인 인증 방식은 다음과 같다.
-
PSK 방식
미리 동일한 키를 공유하여 인증하는 방식으로 구현이 간단하지만, 키 유출 시 보안에 취약하다.
-
인증서 기반 방식
PKI를 이용하여 상대 장비를 인증하는 방식으로, 보안성과 신뢰성이 높아 기업 환경에서 사용된다.
-
ID/Password 방식
원격 접속 VPN(Remote Access)에서 사용자 인증에 사용되는 방식으로, 계정 정보를 기반으로 인증한다.
[4] 무결성
- 무결성(Integrity)은 데이터가 전송 중에 변경되지 않았음을 보장하는 성질이다.
- 암호화는 내용을 읽지 못하게 만들지만, 데이터가 변경되었는지까지 확인하지는 못한다.
- 따라서 공격자가 데이터를 변조한 후 전달하면 수신자는 원본 데이터인지 판단할 수 없다.
- 이를 확인하기 위해 사용하는 것이 HMAC이다.

동작 과정
- 송신자는 데이터와 세션키를 이용하여 HMAC을 생성한다.
- 데이터와 HMAC을 함께 전송한다.
- 수신자는 동일한 데이터와 세션키를 이용하여 HMAC을 다시 계산한다.
- 계산한 HMAC과 수신한 HMAC을 비교한다.
- 두 값이 같으면 데이터가 변조되지 않은 것으로 판단한다.
- 두 값이 다르면 데이터가 변경된 것으로 보고 폐기한다.
왜 HMAC을 사용하는가?
- 단순 해시는 데이터가 변경되었는지 확인할 수는 있지만, 누가 생성했는지는 확인할 수 없다.
- 공격자는 데이터를 변조한 뒤 새로운 해시를 다시 계산하여 함께 전송할 수 있다.
- 하지만 HMAC은 데이터뿐 아니라 비밀키(세션키)도 함께 사용한다.
- 따라서 세션키를 모르는 공격자는 올바른 HMAC을 생성할 수 없다.
- 결과적으로 데이터 위변조를 효과적으로 탐지할 수 있다.
전체 흐름

VPN의 구성방식 (구조/유형)
- VPN는 인터넷 위에 안전한 통신 경로를 만드는 기술이다
- 이떄 누가 누구와 연결되느냐에 따라서 크게 두 가지로 나뉜다.
1) site-to-site
- 지점과 지점을 연결
- 서로 떨어져있는 두 개 이상의 LAN을 VPN터널로 연결해서 마치 하나의 사설망 처럼 통신하게 만드는 방식
- VPN 연결을 만드는 주체는 라우터, VPN게이트웨이, 방화벽등의 장비이다.
- 사용자는 VPN의 존재를 잘 모름.
- 거의 상시 연결에 가까움
→ 사용자의 PC를 사용하지 않음.
2) Remote access
- 개인 사용자와 지점을 연결
- 외부에 있는 개별 사용자가 인터넷을 통해 회사 내부망에 안전하게 접속하는 방식
- 라우터등 장비끼리 연결하는것이 아니라 “사용자 단말 자체가 VPN클라이언트 역할을 한다”
- 사용자가 VPN 접속을 인식함.
- 동작흐름
- 사용자가 VPN 클라이언트를 실행한다.
- 회사 VPN 서버에 접속 요청을 보낸다.
- ID/PW, 인증서, MFA 같은 인증 절차를 수행한다.
- 인증이 성공하면 VPN 터널이 생성된다.
- 사용자는 내부망 접근용 IP나 라우팅 정보를 받는다.
- 이후 사용자의 트래픽은 VPN을 통해 회사망으로 전달된
remote access에서의 터널링 범위 → 인터넷 트래픽은 어떻게 보낼까?
-
Full Tunnel
사용자가 업무 트래픽 말고도 인터넷 트래픽까지 회사망을 통해서 사용하는 것
회사에서 트래픽을 통제할 수 있기 때문에 보안이 매우 강함
-
split Tunnel
업무 트래픽은 VPN회사망으로 사용하고 인터넷 트래픽은 로컬에서 직접 사용하는 것이다.
속도가 빠르지만 트래픽 통제가 어렵기 때문에 회사망쪽으로의 공격 경로가 증가된다.
IPSec
- IP 계층에서 동작하는 보안 프로토콜 집합
- 암호화, 무결성, 인증을 전부 제공한다.
- VPN을 구현하는 방식중 하나이다.
- 구성요소
- AH : 암호화없이 무결성과 인증을 제공
- ESP : 암호화. 필요시 무결성과 인증을 제공
- IKE(키 교환) : IPSec통신에 사용할 키를 안전하게 생성, 교환하고 여러가지 보안 설정(어떤 암호화, 어떤 해시, 키 여러 개 생성, 갱신,)을 협상하는 프로토콜
- ISAKMP : 보안 연결인 SA를 만들과 관리하기 위한 절차와 틀을 정의하는 관리 프레임워크
SSL VPN
- 애플리케이션 계층에서 동작하는 VPN
- 웹 기반, 브라우저로 접속 가능
- 사용자 단위 VPN
- 설정 쉬움