클라우드/카카오 클라우드

[카카오 클라우드] Bastion Instance 생성하기

밥빵 2024. 1. 28. 21:16

카카오 클라우드에서 Bastion Instance 생성 및 설정하기


 

Bastion 이란

Bastion Host : 배스천 호스트(Bastion Host)란 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트를 뜻합니다. 

Bastion Host는 인터넷 연결이 되어있지 않은 Private Subnet 에 연결하기 위한 방식 중 하나입니다.

 

 

현재 상황

현재 프로젝트에서는 Public Subnet에서 Bastion Instance, Private Subent에는 WAS Instance가 있습니다.

개발자가 Bastion을 통해서 Private Subnet에 있는 WAS Instance에 접근할 수 있도록 Bastion 인스턴스를 생성해보겠습니다.
  • 아래 그림이 간략한 프로젝트 구성도 입니다

 

 

 

 

참고사항

  • 해당 실습은 카카오 클라우드 공공기관용 리전에서 진행하였습니다.
  • WAS Instace VPC,Public Subnet, Private Subnet, 라우팅 테이블은 미리 생성되어있습니다.

 

 

Bastion 인스턴스 생성

Instance 만들기를 클릭하여 인스턴스를 생성합니다.

 

 

 

이름,이미지 선택

인스턴스 이름을 설정합니다. Ubuntu 20.04 운영체제로 인스턴스를 생성하겠습니다.

 

 

 

 

 

키페어 생성 및 등록

Bastion 인스턴스에 접속하기 위한 키페어를 등록합니다.

 

  • 기존키가 있는 경우 기존 키 가져오기를 통해 등록합니다.

 

 

VPC, Subnet 설정

VPC, Subnet,보안 그룹을 설정합니다.

 

  • VPC : 192.168.0.0/16
  • Subnet : 외부에서 Bastion 인스턴스에 접속이 가능해야 하므로 Public Subnet에 생성합니다.

 

보안그룹 설정

보안그룹을 설정합니다.

 

  • 0.0.0.0/32 로 설정하여도 상관없지만 특정 IP주소 대역을 통해 접근이 가능하도록 하였습니다. 외부에서 접근하는 경우에는 VPN을 사용하고 있습니다.

 

 

 

인스턴스 생성완료

인스턴스 생성이 완료되었습니다.

해당 Bastion 인스턴스에 KEY를 통해 터미널에서 SSH 연결을 해보겠습니다.

 

 

Pulbic IP 연결

Bastion Instance에 접근하기 위해 Public IP를 발급받아 연결해 줍니다.

 

 

SSH 연결

인스턴스 SSH 연결을 누른 후 해당 명령어를 통해 인스턴스에 접속합니다.

 

 

접속 확인

 

 

 

이제 WAS 인스턴스에 접근하기 위한 설정을 진행하도록 하겠습니다.

  • WAS 인스턴스는 Private Subnet에 미리 만들어져 있습니다.

 

Private Subnet WAS 인스턴스 보안그룹 설정

Bastion 인스턴스에서 WAS 인스턴스로 SSH 접근을 위한 22포트를 열어줍니다.

 

  • Bastion 인스턴스의 Public IP 주소를 패킷출발지로 하여 보안그룹을 설정할 수도 있지만

패킷출발지를 Bastion 인스턴스의 보안그룹으로도 설정을 할 수 있습니다.


 

보안그룹에서 패킷 출발지 설정 방법

  1. 주소로 설정
    • 특정 IP 주소 또는 IP 주소 범위를 출발지로 지정
    • 보통 특정 외부 서버, 사용자 또는 네트워크에 대한 접근을 제한하고자 할 때 사용됩
    • 특정 클라이언트의 IP 주소만을 허용하고 싶을 때 유용합니다.
  2. 다른 보안 그룹을 출발지로 설정:
    • 특정 보안 그룹에 속한 인스턴스들을 출발지로 지정
    • 보안 그룹에 속한 모든 인스턴스에서 오는 트래픽이 특정 포트나 프로토콜을 통해 수신
    • 같은 클라우드 환경 내의 인스턴스 간의 통신을 허용하고자 할 때 유용합니다.
    • 예를 들어, 프론트엔드 서버 그룹이 백엔드 서버 그룹과 통신할 수 있도록 설정할 때

보안 그룹을 출발지로 설정한 이유:

  • 유연성: 보안 그룹을 사용하는 방식은 IP 주소를 수동으로 관리할 필요 없이 인스턴스 그룹 간의 통신을 허용하는 데 더 유연
  • 관리 용이성: IP 주소를 기반으로 하는 규칙은 IP 변경이나 새로운 IP 추가 시 매번 업데이트가 필요반면, 보안 그룹을 사용하면 해당 그룹에 속한 인스턴스들이 자동으로 규칙의 대상이 됨.
  • 명확성 : IP주소의 경우 어느 곳에서 오는 트래픽인지 명확하게 구분이 어렵지만 보안그룹으로 설정 시 보안그룹의 이름을 통해 트래픽이 어디서 오는 지 명확하게 구분할 수 있음

 

 

 

Private Subnet WAS 인스턴스 Key를 Bastion으로 옮기기

Bastion에서 WAS 접근하기 위해서는 WAS key 파일이 필요합니다.

 

  • 미리 발급 받은 WAS 인스턴스 Key를 Bastion으로 옮기겠습니다.

 

 

로컬에 저장된 WAS 키를 Bastion으로 복사하기

scp -i Bastion-key.pem WAS-key.pem ubuntu@1.1.1.1:~/

 

Bastion 인스턴스 접속하기

ssh -i "Bastion-key.pem" root@1.1.1.1

 

Bastion 인스턴스에서 WAS 서버로 접속하기

ssh -i "WAS-KEY" ubuntu@1.1.1.1

Bastion 인스턴스를 생성하고 Private Subnet WAS에서 접속까지 완료했습니다.

 

하지만 Bastion에 접속한 후 Bastion에서 WAS로 접근하는 일을 불편합니다.

 

다음 포스팅에서는 로컬에서 바로 WAS 접근할 수 있는 방식에 대해 알아보겠습니다.