A. 개요
- Client to Site 또는 Client to Network 방식
- 사용자가 네트워크에 접근하기 위해 사용하는 VPN
- SSL (현재는 TLS)을 사용하여 VPN을 구성한다.
B. SSL(Secure Socket Layer)란?
- SSL (혹은 TLS) 프로토콜은 TCP/IP 위에서 작동하는 Application의 통신에 보안을 제공하기 위함 암호 규약
- 즉, 사용자가 보내고자 하는 데이터를 암호화하고 이를 TCP/IP를 통해 통신한다. (아래 그림 참조)
- TCP 3-way handshake 후에 SSL handshake를 진행하는 것을 확인할 수 있다.
- SSL handshake는 암호화 통신을 위한 과정으로 사용자와 서버가 상호 사용 가능함 암호화 프로토콜을 확인 후 인증서를 통해 상대방이 진짜임을 확인한다. 그리고 메시지를 암호화할 수 있는 암호화 키를 서로 주고받는다.
주요 구성 방식
1. VPN 접근 방법
- 앞서 말했듯이 데이터를 암호화할 방법과 데이터를 암호화할 키를 마련한 후 암호화 통신을 실시하는데, 이를 위해서 먼저 SSL VPN에 접근해야 한다.
- 접근 방법은 일반적으로 2가지이다
- 웹을 통한 접속
- 클라이언트를 통한 접속
1-1. 웹을 통한 접속
- SSL VPN의 IP와 연동한 도메인 네임을 입력하고 SSL VPN에 접근한 후, 자신의 사용자 정보를 이용하여 VPN에 접속한다.
- 웹을 활용한다는 것은 HTTP 활용을 의미하기 때문에 HTTP에 암호화 통신 과정(SSL)을 더한 HTTPS를 사용하여 접속하게 된다.
- 사용자는 웹페이지(SSL VPN)에 접속하는 과정에서 SSL VPN에 게재된 SSL 인증서를 검증하고 이 VPN이 진짜인지 가짜인지 구별한다.
- 구별 후 ID와 Password 등을 입력하여 자신을 증명하고 SSL VPN에 접속한다.
1-2. Client를 통한 접속
- Client(이하 클라이언트) 설치를 통한 접속은 말 그대로 SSL VPN으로부터 클라이언트 설치 파일을 다운로드하여 클라이언트를 통해 SSL VPN에 접속하는 방법이다.
- 설치받은 클라이언트에 SSL VPN의 도메인 주소를 입력하여 저장한다.
- SSL VPN에 게재된 SSL 인증서를 검증하고 이 VPN의 진위 여부를 파악한다.
- 마지막으로 사용자 정보를 입력하여 자신을 증명한 후 SSL VPN에 접속한다.
2. SSL 인증서
- SSL 인증서를 생성하고 게시하기 위해 2가지의 접속방식 모두 도메인이 사용된다.
- SSL 인증서는 SSL VPN이 제3자인 Root CA가 인증한 검증된 존재임을 증명하기 위한 인증서이다.
- SSL 인증서를 게시하면 사용자는 SSL 인증서를 가지고 CA에 검증을 요청하고 CA는 이 인증서를 게시한 SSL VPN이 검증된 존재임을 사용자에게 알려준다.
- 또한 SSL handshake에서 사용된다.
3. 터널 생성 과정(접속 과정)
SSL VPN의 터널 생성과정은 사용자의 접속과정이라고 봐도된다.
- 사용자는 내부 네트워크와 통신하기 위해 사설 IP와 SSL VPN 내부에 관한 라우팅을 할당받고자 SSL VPN에 접속을 시도한다.
- 이 때 외부 통신을 위해 Router A가 가진 공인 IP로 Source IP NAT (SNAT)를 실시하고 SSL VPN에 접근한다.
- 웹(또는 클라이언트)을 통해 접속한 사용자는 SSL VPN의 SSL 인증서를 검증하여 SSL VPN이 진짜임을 확인한다.
- ID, Password 등을 입력하여 SSL VPN의 승인을 받는다.
- 사용자와 SSL VPN이 서로를 검증하는 것을 마쳤으니 SSL VPN IP Pool 에서 하나를 사용자에게 할당한다.
- 사용자가 SSL VPN 까지 접근할 때는 Router A가 공인IP로 SNAT한 192.168.0.0/24 대역을 사용한다.
- SSL VPN 접근 후 내부망에 접근할 때는 SSL VPN IP Pool 대역인 10.10.10.0/24 대역을 사용한다.
- SSL VPN으로 부터 사설 IP를 하나 할당 받았으니 내부 네트워크에 대한 라우팅을 전달받게 된다.
사용자는 SSL VPN이 설정해둔 내부망의 사설 IP 대역인 10.10.10.100을 할당받았다. 이는 사설 IP 대역으로 이루어진 내부 네트워크와 통신할 때 사용되는 사설 IP이다.
공유기 네트워크에 속한 사용자는 내부 네트워크 진입시 실제로 공인 IP를 통해 Firewall 1에 진입하지만 논리적으로는 자신이 가지고 있는 사설 IP (10.10.10.100)를 가지고 내부 네트워크와 통신하는 것이다. 이는 마치 사용자의 PC가 내부망에 속해있는 것처럼 보인다.
라우팅 정보를 확인하면 172.16.10.0/24 넥스트 홉 10.10.10.1을 확인할 수 있는데 이는 사용자의 PC가 내부망에 속해있는 것과 같기 때문이다. 실질적으로는 사용자 PC -> Rotuer A -> 인터넷 -> Router 1 또는 2 -> 방화벽 1 또는 2 -> SSL VPN 1 또는 2로 트래픽이 흐른다.
**참고
SSL VPN 접속시 왜 내부망 아이피와 같은 대역 (172.16.10.0/24)이 아닌 SSL VPN IP Pool(10.10.10.0/24)를 따로 만드는것일까?
SSL VPN을 통한 접속은 논리적 연결이다. 이는 SSL VPN이라는 장비를 통해 마치 내부 네트워크에 속한 것과 같이 작동하는 것 뿐이지 실제로는 사용자가 네트워크에 속한 것이 아니다.
이는 MAC 주소를 활용하는 ARP를 통해서도 알 수있다. 사용자의 IP가 내부 네트워크와 같은 대역이라면 사용자의 MAC 주소 또한 공유가 되어야 통신이 가능할 것이다. 하지만 사용자의 PC는 실제로 외부 네트워크에 존재하기 때문에 ARP를 통해 자신의 MAC을 광고할 수 없다.
4. 패킷 전달 과정
사용자는 SSL VPN으로 부터 사설 IP를 할당받고 내부 네트워크로 향하는 라우팅을 전달받은 상태이다.
172.16.10.100/24를 보유한 SW 1에 접근하려고 한다.
사용자는 SSL VPN이 할당해준 10.10.10.100/24를 출발지 IP로 삼아 목적지인 172.16.10.100/24를 향해간다.
물론, 게이트웨이이자 넥스트홉인 10.10.10.1/24를 경로로 잡는다. (아래 그림 참조)
이 패킷을 받은 SSL VPN은 다른 네트워크 장비처럼 목적지를 확인한다. 그리고 자신이 보유한 172.16.10.10/24와 같은 대역임을 확인하고 패킷을 172.16.10.100/24에 전달한다.
여기서 기억해야 할 것은 사용자가 원하는 목적지가 172.16.10.100/24가 속한 내부 네트워크가 아닌 다른 목적지라면 사용자의 라우팅 테이블과 SSL VPN의 라우팅 테이블에 모두 그에 대한 라우팅이 있어야한다.
예를 들어 172.16.10.100/24 아래에 있는 172.20.20.0/24 대역에 접속하려고 하면 사용자, SSL VPN 모두 172.20.20.0/24에 대한 라우팅 정보가 있어야한다.
스위치는 패킷을 받고 사용자에게 응답 패킷을 되돌려 주기위한 과정이다. 해당 패킷의 정보는 아래와 같다.
출발지 | 목적지 | 넥스트 홉 |
172.16.10.100/24 | 10.10.10.100/24 | 172.16.10.10 |
목적지 부분을 확인하면 SSL VPN이 사용자에게 할당한 10.10.10.100/24를 바라보고 있다. 내부 네트워크 입장에서는 상용자가 사설 네트워크에 속하고 SSL VPN이 할당해준 IP Pool의 사설 IP를 보유하며 자신(내부 네트워크)과 통신하고 있는 것으로 인식을 하고 있기에 목적지를 10.10.10.100/24로 삼아 응답 패킷을 전송하는 것이다.
4. Split tunneling
스플릿 터널링이란?
SSL VPN을 통해 터널을 생성한 상태에서 모든 라우팅을 VPN으로 향하게 하는 것이 아닌 일부는 외부 인터넷으로 직접 나아가게 하는 방식이다. 좀 더 풀어서 말하면 SSL VPN 터널을 뚫어 내부 네트워크에 접속하지만 외부 인터넷(구글, 네이버 등등)을 활용해야 한다면 VPN 터널이 아닌 공유기 등의 공인터넷 인접 장비에서 바로 외부 인터넷으로 나아가 접속할 수 있도록 하는 것이다.
사용자 입장에서는 외부 인터넷을 VPN이 아닌 직접 접속함으로써 빠른 속도로 접속할 수 있게 된다. 아무래도 VPN을 통해 내부 네트워크에 진입하였다가 다시 외부 인터넷으로 나가는건 상대적으로 속도가 느릴 것이다.
속도가 빨라지는 장점이 있으면 단점 역시 존재한다. 바로 보안에 취약해진다는 점이다. 사용자의 컴퓨터가 랜섬웨어 등에 감염된 상태에서 내부 네트워크에 접속한다면 심각한 문제가 발생할 수 있다. 그렇기에 스플릿 터널링은 사용자의 네트워크 환경, 내부 네트워크의 보안 환경 등 고려해야 할 요소가 많다.
4-1. SSL VPN을 거쳐서 외부로 나가는 경우
빨간색 = 외부로 향하는 패킷
파란색 = 내부로 향하는 패킷
4-2. 외부로 바로 나가는 경우
5. VPN 정책 설정
앞서 사용자가 SSL 인증서를 통해 SSL VPN의 진위 여부를 검증한다고 하였는데 SSL VPN 역시 사용자의 진위 여부를 파악한다. 또한, 사용자가 VPN에 접속 시 준수해야 할 사용 환경을 점검, 강제성을 부여할 수 있다.
5-1. 사용자 트래픽 제어
VPN에 접속한 사용자는 인터넷 사용시 SSL VPN이 정한 라우팅 정책을 준수해야한다. 이 과정에서 사용자 혹은 사용자가 속한 그룹에게 모든 트래픽을 VPN을 통해서 경유할 것인지 혹은 일부는 외부 인터넷에 접근 가능하도록 할 것인지 정할 수 있다.
5-2. 사용자 인증 제어
사용자 인증 방식으로 대표적으로 사용되는 방법은 인증 서버를 활용하는 것이다. SSL VPN에 접속하고자 하는 사용자는 VPN 접속 시 자신의 계정 정보 등을 입력하게 되고 VPN은 이를 인증서버로 보내 진위 여부를 확인한다. 사용자가 보낸 정보와 인증 서버 내 정보가 동일하다면 접근을 허용한다.
인증서버란?
말 그대로 한 조직(예를 들어 삼성생명, 쿠팡 등등 한 조직)의 모든 인원에 대한 인증 가능 사항(계정, 패스워드 등)을 중앙집중식 데이터베이스에 모아서 관리하고 (합당한) 인증 요청이 들어올 시 인증 정보를 전송하는 역할을 하는 서버이다. 대표적인 인증 프로토콜로는 라디우스, 탁카스, 켈베로스 등이 있다.
또한 요즘엔 MFA 방식을 통해 다중 인증 방식을 널리 쓴다.
5-3. 사용자 사용 환경 제어
SSL VPN에 접속하는 사용자의 PC 환경을 면밀히 검토하고 허용되는 기준에 부합하는 사용자만 접근이 가능하도록 정책 설정을 통해 제어가 가능하다. 주로 확인하는 사항은 컴퓨터의 OS 버전, 패치 현황, 백신 설치 여부, 스파이웨어 감영 여부 등이다. 만약 기준에 부합하지 않을 경우 접속을 거부하거나 필요한 백신 등을 설치할 수 있는 사이트로 리다이렉트하기도 한다.
**
마지막으로 관리자의 입장에 SSL VPN 도입시 고려해야 할 사항은 SSL VPN 라이센스를 통해 "적은 값의 라이센스 비용으로 얼마나 많은 숫자의 사용자가 동시에 접속할 수 있는가"와 발생 트래픽이다.
'Network' 카테고리의 다른 글
ACL 정리 (0) | 2025.01.17 |
---|---|
VLAN 정리 (0) | 2025.01.15 |
VPN 간단 개요 및 IPSec VPN (0) | 2025.01.09 |
BGP - Part 3 (1) | 2025.01.02 |
BGP - Part 2 (0) | 2025.01.01 |