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 라이선스를 통해 "적은 값의 라이센스 비용으로 얼마나 많은 숫자의 사용자가 동시에 접속할 수 있는가"와 발생 트래픽이다.
[TIP] 윈도우11 생산성 높이는 방법 9가지 - 집중 세션, 음성 입력, 파워토이, 비밀 시작메뉴, 스냅 레이아웃
[TIP] 윈도우11 생산성 높이는 방법 9가지 - 집중 세션, 음성 입력, 파워토이, 비밀 시작메뉴, 스냅
많은 사람이 자주 사용하는 애플리케이션, 즉 ‘윈도우’의 생산성 팁에 관심이 많다. 그도 그럴 것이 이 애플리케이션은 대부분의 사용자가 업무를 하는 곳이기 때문이다. 그리고 이제는 윈도
infoofit.tistory.com
[Linux] nohup 명령어 사용법 - 세션 연결이 끊어지더라도 지속적으로 동작
[Linux] nohup 명령어 사용법 - 세션 연결이 끊어지더라도 지속적으로 동작
A. nohup 명령어 설명 및 특징- 해당 명령어는 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작 할 수 있게 해주는 명령어입니다. 1) 일반적으로 터미널에서 세
infoofit.tistory.com