본문 바로가기
기타/클라우드

RDS, EC2, Openvpn, TablePlus을 이용해서 VPN 터널링구현하기

by hyun-am 2024. 3. 1.

VPN, Tunneling을 이용해서 RDS에 연결하는 이유

VPN(가상 사설망) 및 터널링을 사용하여 RDS(관계형 데이터베이스 서비스)에 연결하는 이유는 주로 보안과 네트워크 접속성을 강화하기 위해서입니다. 여러 이유로 인해 이러한 접근 방법을 선택할 수 있습니다:

  1. 보안 강화:
    • VPN 및 터널링은 데이터 전송을 암호화하여 보안을 강화합니다. 이를 통해 데이터가 노출되거나 무단으로 접근되는 것을 방지할 수 있습니다.
  2. 인증 및 접근 통제:
    • VPN을 사용하면 네트워크에 연결된 각 디바이스가 신뢰할 수 있는 디바이스인지 확인할 수 있습니다. 이는 불법 접근을 방지하고 권한이 없는 사용자의 데이터베이스 접근을 막을 수 있습니다.
  3. 외부 접속 보안 강화:
    • 인터넷을 통해 직접 RDS에 연결하는 것은 보안 위협에 노출될 수 있습니다. VPN을 통한 접속은 외부에서의 직접 접근을 막고, 안전한 내부 네트워크로의 연결을 제공합니다.
  4. 데이터 무결성과 개인 정보 보호:
    • VPN을 사용하면 데이터가 전송되는 동안 무결성을 유지할 수 있습니다. 또한, 개인 정보 보호를 강화하고 중요한 데이터의 유출을 방지할 수 있습니다.
  5. 원격 접근 용이성:
    • VPN을 사용하면 지리적으로 떨어진 원격 위치에서도 안전하게 RDS에 접속할 수 있습니다. 이는 업무 유연성을 향상시키고 팀원들이 어디서든 데이터베이스에 접근할 수 있게 합니다.
    • 만약 재택근무 한다면 필수
  6. 네트워크 성능 최적화:
    • 터널링을 통해 데이터를 안전하게 전송하면서도, 동시에 VPN을 사용하여 네트워크의 성능을 최적화할 수 있습니다.

 

요약하면, VPN 및 터널링은 RDS에 대한 접속을 안전하게 만들고 외부에서의 불법 접근을 방지하여 데이터베이스의 보안성을 향상시키는 데 도움이 됩니다.

 

Open VPN Cloud

  • 현재 구성한 VPN의 용도는 VPN을 통해서만 특정 서비스(백오피스, Bastion Sever, 기타 internal tool(Salesforce 등)에 접속할 수 있게 하는 용도의 구성입니다.
  • 결과적으로 대략적으로 아래와같이 트래픽이 전달되게 됩니다.
  • Open VPN Client ↔ Open VPN Cloud ↔ Connector(Our AWS EC2) ↔ Our Internal Service

 

Setup 방법

  1. Network 생성
  2. Open VPN을 통해서 인터넷으로 트래픽을 보내기 위해서는 Connector를 설치해야합니다. Connector는 Open VPN 에게 받은 트래픽을 인터넷으로 라우팅해주는 역할을 합니다.
  3. Connector 를 추가하려는 Network를 들어간 후에 + 버튼으로 Connector를 생성.

4. Deploy버튼을 이용해서 OpenVPN에서 미리 생성해놓은 Stack으로 EC2를 생성하고 OpenVPN Connector를 설치한다.

5. Connector의 Tunnel IP를 확인하고 해당 IP만 open vpn connector instance의 security group의 ingress를 열어준다. (초기값은 모든 ip에 대해서 허용되어 있음.)

여기 Source에는 3번 아래에있는 그림에서 Tunnel IP Address를 입력하겠습니다. 

6. Connection Status가 Online인지 체크한다. 만약 잘 되어있으면 잘 설치된겁니다.

 

7. 생성된 Connector EC2에 Elastic IP를 만든후 연결한다.(고정 아이피를 위해 EIP)

 

8. 이제 VPN을 통해서만 접속이 가능하게 하려고 하는 서비스의 whilte list 또는 security group의 inbound에 해당 EIP를 추가합니다.

 

9. 마지막으로 필요할 때만 VPN을 통해서 routing되도록 Routes 섹션에 subnets, Domain을 추가한다.

 

여기에 IP Address or Subnet에 bastion EIP로 발급받은 IP를 입력합니다

 

위의 과정이 성공으로 되면 위에 openvpn client로그인 후에 routing에 추가해준 서버에 접속할 때 open vpn connector의 ip로 찍히는것을 확인이 가능합니다.

1. 첫 번째 빨간 상자에 적힌 IP : bastion server EIP

2. 두 번째 빨간 상자에 적힌 IP : openVPN Connector EIP

 

연결 구조

 

Open VPN 클라이언트에 노트북에 설치한 후 로그인한 경우만 Internal Service에 접속이 가능합니다

 

open vpn connector설치 및 cloud 연결

1. Openvpn connector를 설치합니다

링크 : https://openvpn.net/client/

맥 링크 : https://openvpn.net/client-connect-vpn-for-mac-os/

윈도우 링크 : https://openvpn.net/client/client-connect-vpn-for-windows/

 

2. Openvpn 연결하기

openvpn cloud 주소를 입력합니다.

[https://[내가만든주소].openvpn.com]

 

 

3. 초대받은 계정으로 로그인합니다

4. 지역설정

  • 한국이 없어서 제일 가까운 Tokyo로 했습니다

 

5. connect로 마무리

 

6. RDS 보안그룹(SG) 변경

 

  • 위에서 만든 베스쳔 서버의 보안 그룹으로 세팅하겠습니다.
  • 추가로 만약 database를 사용하는 다른 서비스가 있다면 해당 보안그룹을 연결하겠습니다.
  • 저는 ECS를 사용해서 해당 보안그룹을 연결했습니다.

 

TablePlus를 통해 RDS 연결하기

tableplus 설치하기

https://tableplus.com/

 

TablePlus | Modern, Native Tool for Database Management.

Modern, native client with intuitive GUI tools to create, access, query & edit multiple relational databases: MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Amazon Redshift, MariaDB, CockroachDB, Vertica, Cassandra, and Redis.

tableplus.com

tableplus에서 connect 하기

- 우클릭 → new → connection

 

- postgresql선택

 

  1. Name : 테이블 플러스에서 보기 좋은 이름으로 설정
  2. Host/Socket : RDS 주소 입력
  3. User : 해당 RDS 이름 설정
  4. Over SSH 를 누른 후 아래 bastion해당하는 사항들을 입력합니다.
  5. Server : bastion서버로 만든 IP
  6. Port : 연결을 위한 22포트
  7. User : ec2연결할 때 사용한 ubuntu
  8. Use SSH key : ec2를 생성할 때 받은 secret_key(pem파일)을 load합니다.
  9. 전부 다 입력하면 Test를 입력해 연결이 잘 되었는지 확인합니다.

 

이렇게 초록색이 나온다면 연결이 잘 되었다는 뜻입니다. 그러면 Connect를 입력해서 연결을 완성시킵니다.

 

참고 자료 및 링크

https://openvpn.net/cloud-docs/openvpn-cloud-settings-user-guide/

 

CloudConnexa Settings User Guide

Set notification warning for failed User-authentication events due to LDAP communication issues You can receive this notification under two conditions. Either, the LDAP server is unreachable. In most cases, this happens due to a network connectivity issue.

openvpn.net

https://openvpn.net/cloud-docs/routing-traffic-to-specific-public-internet-domains-through-vpn/

 

User Guide - Routing traffic to specific public internet domains through a WPC

User Guide - Routing traffic to specific public internet domains through a WPC

openvpn.net

https://openvpn.net/cloud-docs/connecting-networks-to-openvpn-cloud-using-connectors/

 

Connecting Networks to CloudConnexa Using Connectors

Connecting Networks to CloudConnexa Using Connectors

openvpn.net

 

댓글