Cloud/AWS

[AWS] Client VPN 접속해서 EC2, RDS까지 접근하기

며용 2021. 7. 5. 17:25

♣ AWS 구성도

 

회사 내부망과 AWS가 하나의 내부망처럼 사용될 수 있도록 site to site VPN을 설계한 구성도인데

실제 구현은 Client VPN으로 했다

 

 

접근 순서는 사용자 컴퓨터의 인터넷을 통해 Client VPN으로 연결되고 그 다음 엔드포인트로 설정해뒀던 서브넷으로 연결된다

 

 

 

 

♣ 네트워크 대역

 

 

먼저 사설 네트워크 대역대를 구성했다

 

VPC 이름 VPC IP 대역 서브넷 이름 서브넷 마스크 가용영역
company VPC 10.0.0.0/20 ec2 10.0.0.0/24 a
rds-a 10.0.5.0/24 a
rds-b 10.0.6.0/24 b

 

큰 묶음인 VPC를 먼저 정해준다

그리고 그 안에서 나눠줄 subnet들을 구성해준다

 

subnet은 CIDR방식으로 적어주고 계산은 https://www.subnet-calculator.com/ 여기에서 보면서 하면 된다

그리고 rds는 가용영역을 선택해 만들어줬다. 하나는 a, 다른 하나는 b로

 

 

 

 

♣ 네트워크 ACL

 

우선 VPC 전체의 네트워크 ACL을 설정해준다

 

==> 결국엔 인터넷을 타고 VPN을 넘어서 VPC로 접근하는 구조기 떄문에

VPC에서는 인바운드로 VPC 대역과 VPN 대역을 열어줘야 서브넷으로 접근이 가능하다

 

+ VPC의 대역: 10.0.0.0/20

+ Client VPN 대역: 10.0.20.0/22

 

+ EC2에서 사용할 HTTPS, SSH / RDS에서 사용할 Aurora DB

 

 

※ 32768-65535: 임시포트

AWS에서는 클라이언트가 서버와 통신을 할 때, 아웃바운드로 다이나믹 포트를 사용해서 서버와 통신을 한다.

그래서 동적 포트를 열어줘야 통신이 된다,,

(TCP의 Active, Passive(PASV) 모드를 참고)

 

 

 

♣ 보안그룹

 

- EC2

 

VPC에 접근을 하면 DHCP를 통해서 ip를 부여받기 때문에 소스 IP를 VPC 영역으로 정해준다

 

 

 

- RDS

 

 

RDS는 EC2에서만 접근이 가능하도록 소스를 EC2로 정해준다

 

 

 

 

 

♣ EC2

 

- AMI

https://aws.amazon.com/marketplace/server/procurement?productId=45c2455c-913c-41ec-b1b5-32512e38e903 

 

Amazon Web Services Sign-In

대체 인증 방법을 사용하여 로그인 멀티 팩터 인증(MFA) 디바이스 분실, 손상 또는 고장 시에는 대체 인증 팩터를 사용하여 로그인할 수 있습니다. 이 계정으로 등록된 이메일과 전화를 사용하여

signin.aws.amazon.com

 

VPN 안에서는 인터넷이 안되기 때문에 미리 MySQL을 가지고 있는 AMI를 사용하기로 했다

 

 

 

시작템플릿을 사용해 미리 만들어두고 인스턴스 시작을 했다

(미리 나눠둔 서브넷 사용, ssh 접속을 위한 키 페어 사용)

 

 

 

 

 

 

 

♣ RDS

 

 

rds는 먼저 아까 만들어둔 서브넷을 사용해서 서브넷 그룹을 만듭니다

 

 

 

 

그리고 오류로그는 자동적으로 저장을 하지만 다른 일반, 감사로그는 디폴트가 수집을 하지 않기 때문에

파라미터 그룹을 만들어서 일반로그를 활성화 해준다

 

general_log = 1

 

 

 

 

어떤 데이터베이스를 사용할건지 선택, 그리고 만들어둔 서브넷 그룹과 파라미터 그룹, 비밀번호를 넣고 생성해줬다

 

 

 

 

 

 

 

♣ CloudTrail

 

로그 정보 암호화를 위해 KMS 사용

저장은 S3에 하기 때문에 새로 만들거나 기존의 버킷을 선택해야함

 

 

 

 

 

 

♣ CloudWatch

 

경보에서 보고 싶은 지표를 선택하고 임계값을 입력해서 그 임계값이 넘을 경우 이메일이 오게 할 수 있다

account 갯수나 cpu 사용량 등이 있다

 

 

 

 

요렇게 임계값이 넘으면 경보 상태가 되고

 

 

 

지정해둔 이메일로 메일이 날라온다

 

 

 

 

 

OpenVPN을 사용해서 Client VPN 붙기

https://jeunna.tistory.com/entry/Client-VPN-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89-%EB%B0%8F-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0

이렇게 구성해둔 client vpn을 open vpn으로 연결한다

 

 

 

 

vpn 연결이 됐으면 Putty를 열어서 EC2로 접속을 해본다

 

 

 

만들어둔 ec2 인스턴스를 체크하고 연결을 누르면 연결에 필요한 유저 이름과 ip가 나온다

 

 

 

 

해당 정보를 Host Name에 넣고 SSH > 다운받은 Auth에 키페어를 불러온다

 

 

 

 

그리고 연결을 누르면,,, 연결이 잘 됐다

 

 

 

 

디비도 디비 주소를 확인한다

 

 

 

mysql -u 사용자명 -p -h 데이터베이스URL

하고 비번을 넣어서 연결을 한다

 

 

 

 

mysql 명령어 사용해서 쓰기

보안그룹의 소스 연결을 열어두면 workbench로도 연결가능

 

 

 

 

그리고 rds의 일반 로그를 true 해두고 재부팅을 했으면 로그가 쌓인다

거기서 쿼리문을 뭐뭐 보냈는지도 확인 가능

 

 

 

 

Reference;

https://aws.amazon.com/ko/blogs/korea/new-aws-vpn-client/

https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/how-it-works.html

'Cloud > AWS' 카테고리의 다른 글

[AWS] Client VPN 인증서 발급 및 연결하기  (0) 2021.07.05