본문 바로가기

Networking

[이론] AWS VPN 기본 개념

반응형

안녕하세요 서후아빠입니다. ^_^

이번 세션은 AWS VPN에 대해서 업무적으로 필요한 최소한의 개념에 대해서 간단히 정리해 보았습니다.


VPN 특징

VPN 협상 : 항상 온프레미스 (CGW, 클라이언트측)에서 AWS (VGW, 서버측)로 연결 시도

  ※ IKE 2 사용 시 VGW가 요청자가 될 수 있도록 설정 가능
VPN 터널 Idle Timeout : 10초
  ※ 터널 유지 : 온프레미스에서 Dead Peer Detect 설정 or 주기적인 Ping 전송
VPN 트래픽 흐름

  - 온프레미스 > AWS : 2개 터널 이용

  - AWS > 온프레미스 : 1개 터널 항상 선호

DPD vs IKE

DPD(Dead Peer Detection, Default time 30Sec) : IPSec 서비스 포트로 유입되는 트래픽을 감지하여 일정 시간 동안 트래픽이 없으면 VPN 장애로 판단하는 메커니즘.
  1) Clear : 온-프레미스 측에서 DPD 시간이 초과되고, DPD keepalives에 3회 응답이 없으면 터널이 다운
  2) None : DPD keepalives를 지속적으로 전송, DPD 시간 초과가 발생하면 아무 조치 없음
  3) Restart : DPD 타임아웃 발생 시 특정시간 동안만 VPN 터널 초기화 시도하고, 지정된 시간 내에 VPN 협상 피어로부터 응답이 없으면 VPN 협상 중단되고, 이러한 경우 VPN은 CGW 측에서 재협상되어야 합니다.
IKE(Internet Key Exchange) : IKE는 일정한 시간 간격으로 VPN 장치에 메시지를 보내고 응답이 없으면 VPN 오류가 발생한 것으로 판단하는 메커니즘

# CloudWatch log : 고객사에서 DPD 설정하지 않은 경우 (통신이 없는 경우 VPN 연결이 끊어짐)
2022-10-04T16:36:56.000+09:00
Copy
{
    "event_timestamp": 1664869016,
    "details": "AWS tunnel is sending DPD request",
    "dpd_enabled": true,
    "nat_t_detected": true,
    "ike_phase1_state": "established",
    "ike_phase2_state": "down"
 }
 
# CloudWatch log : 고객사에서 강제로 VPN 연결을 UP상태로 변경시키거나 DPD 설정하여 상시 VPN 연결 상태로 변경 (VPN 연결 상태)
2022-10-04T16:48:17.000+09:00
Copy
{
    "event_timestamp": 1664870897,
    "details": "AWS tunnel is sending DPD request",
    "dpd_enabled": true,
    "nat_t_detected": true,
    "ike_phase1_state": "established",
    "ike_phase2_state": "established"
}

Site-to-Site VPN 설정 단계에 대한 간략한 설명

customer gateway (=CGW) 생성 (IDC 측 VPN 장치의 공인 IP 필요) 

virtual private gateway (=VGW)를 생성하고 VPN을 통해 통신하고자 하는 서버가 있는 VPC에 연결   

routing table 수정 : 목적지 (IDC 대역), 경로 (앞에서 생성한 VGW)   

routing propagation 활성화 : VGW 측에 추가된 대역을 라우팅 테이블에 자동으로 전파   

Security group 수정: IDC와 통신할 대상이 있는 서브넷에서 IDC 대역에 대해서 허용   

사이트 간 VPN 연결 생성 : CGW을 VGW에 연결   

구성 파일을 다운로드하여 IDC에 전달하여 VPN 설정하는데 사용   

 AWS에서 지원하는 온프레미스 VPN 디바이스 : https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/your-cgw.html
AWS 가이드 : https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/SetUpVPNConnections.html

Site-to-Site VPN 연결에서 발생하는 Traffic Loss

라우팅 기반 구성(동적) : SA(IPsec 보안 연결) 수 한도 없음
정책 기반 구성(정적) : SA 1개로 제한

  - 네트워크 손실 발생 원인 : 여러 개의 네트워크로 VPN 연결 구성

  - 해결 방법 : 여러 네트워크 대역을 1개로 축약(단일 SA)하거나 라우팅 기반으로 VPN 구성 변경

Client VPN (=SSL VPN) 

Client VPN 실효성

  - 아래 내용상 별도 SSL VPN 구성이 없는 상태에서 긴급하게 사용할 경우에 적합하다고 판단

  - 비용이 비싼 편 (VPN 연결 상태에서 사용하지 않더라도 비용 발생)

  - 보안을 위해 2Factor 인증 구성 시에는 추가되는 Resources (AD, Radius)로 인하여 예상 외 비용 발생 예상

  - 재택근무(or 원격근무)로 고정된 다수의 인원이 Client VPN을 사용할 경우 가장 현실적인 구성 방법

    1) On-premise의 VPN 장비를 AWS와 Site-To-Site VPN 연결 구성 (단일 or 이중화 구성)

    2) On-premise의 VPN 장비에 SSL VPN 활성화 및 사용자 정보 등록

       (필요 시 On-premise의 VPN 장비에 2Factor 인증 활성화)

    3) User PC에 SSL VPN CLient 설치 후, SSL VPN 접속하고, AWS 접근

User PC에서 AWS로 바로 접근하는 것보다 hop(On-premise) 추가에 따른 delay가 발생될 수 있으므로 속도 확인이 필요합니다.

User가 전세계에 분포할 경우는 각 지역별로 VPN 장비를 구성하여 AWS 각 리전과 S2S VPN 연결을 하는 것을 권고합니다. 
(ex : 미국 User가 국내 VPN 장비로 접근하여 AWS로 연결할 경우, 미국에서 국내까지 네트워크 지연시간이 발생합니다. 이런 경우는 미국에 VPN 장비를 구성하여 AWS 미국 리전과 연결한 후, AWS 미국 리전과 AWS 한국 리전을 연결하도록 합니다.)

Client VPN 인증

구분 사용자 기반 인증서 기반
내용 Active Directory 인증
Single sign-on (SAML 기반 연동)
상호 인증
2Factor 인증은 Active Directory 인증 방식에서만 지원되며, Radius 서버를 추가 구성해야 합니다.

OpenVPN 제공 Client 사용

구분 Access Server 구독할 경우 Access Server 구독하지 않을 경우
로그인
방식
인증서로만 로그인 (상호 인증)
인증서+계정 비밀번호로 로그인
인증서+아이디+일회용 비밀번호로 로그인 (OTP)
인증서로만 로그인 (상호 인증)
Access Server 구독하지 않을 경우에 대한 실습은 https://sh-t.tistory.com/2 참조 바랍니다.

AWS 참고 URL

비용 : https://aws.amazon.com/ko/vpn/pricing/

Site-to-Site VPN 설정 : https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/SetUpVPNConnections.html

Client VPN 설정 : https://docs.aws.amazon.com/vpn/latest/clientvpn-user/user-getting-started.html

VPN 낮은 대역폭 해결 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/low-bandwidth-vpn/

VPN 최대 대역폭 : https://docs.aws.amazon.com/vpn/latest/s2svpn/vpn-limits.html#vpn-quotas-bandwidth

VPN 연결 테스트 : https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/HowToTestEndToEnd_Linux.html

VPN 재연결 시 순단 발생 : https://docs.aws.amazon.com/vpn/latest/s2svpn/endpoint-replacements.html

VPN 패킷 손실 문제 해결 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/vpn-packet-loss/

VPN 터널 모니터링 : https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/monitoring-cloudwatch-vpn.html

Client VPN (AWS 제공 Client 사용) : https://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-user/connect-aws-client-vpn-connect.html

Client VPN (OpenVPN 제공 Client 사용) : https://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-user/connect.html  

 참고 URL

FortiNet VPN 정적 연결 :  https://phone3.net/aws/aws-site-to-site-vpn-with-fortigate/

# 대역 정보
AWS : 10.0.0.0/16
고객사 : 172.0.0.0/16

# 설정 과정
1. VPN > IPSEC Wizard 
 Step1. VPN Setup 
  1) Name(ex) : to-AWS-VPC
  2) Template type : Site to Site
  3) NAT configuration : No NAT between sites
  4) Remote device type : FortiGate 
 Step2. Authentication 
  1) Remote device : IP Address 
  2) Remote IP address : AWS VPN의 Public IP
     ※ VPC > Site-to-Site VPN Connections > 생성한 연결 선택 > Tunnel details (tab) > Outside IP address 확인
  3) Outgoing Interface : wan1(고객사에서 연결할 포트 선택)
  4) Authentication method : Pre-shared Key 
  5) Pre-shared-key : 
     ※ VPC > Site-to-Site VPN Connections > 생성한 연결 선택 > Download configuration > 다운받은 파일에서 확인
 Step3. Policy & Routing 
  1) Local interface : internal 
  2) Local subnets : 172.0.0.0/16
  3) Remote subnets : 10.0.0.0/16
 ※ Network Policy 및 Static Route 자동 등록

2. VPN > IPsec Tunnels > to-AWS-VPC(ex) : Inactive 상태 확인
3. IPsec Monitor 메뉴 > to-AWS-VPC(ex) > Bring Up : Inactive 상태에서 Active 상태 변경
반응형