본문 바로가기

블로그

LG CNS 기술블로그 DX Lounge에서 최신 IT 소식을 만나보세요!

AWS Ambassador

AWS Session Manager를 통한 Bastion Server 대체 및 보안 강화

2023.02.01

1. 개요

CSP(Cloud Service Provider) 환경 혹은 On-premise 환경에서 서버 접근 제어를 위해 Bastion Server(Jumping host)를 구축하게 됩니다.
이번 포스트에서는 CSP 환경, 그중 AWS 사용 시 Bastion Server를 대체 구현할 수 있는 서비스인 AWS System Manager Session Manager 서비스를 활용한 서버 접근 제어 구현을 다루겠습니다.

2. 내용

일반적으로 Service를 위한 EC2는 Private Subnet에 배치하고 ALB를 Public Subnet에 배치하여 서비스를 노출하곤 합니다.
이때, 시스템 엔지니어 혹은 개발자들이 자신의 로컬 환경에서 Private Subnet에 위치한 EC2로 접근하기 위해 Bastion Server를 구축하여 접근 통제를 구현합니다.

2.1 Bastion Server의 접근 플로우

시스템 엔지니어는 자신의 로컬 환경에서 Public subnet에 위치한 Bastion Server로 개인별 발급받은 Keypair를 이용해 SSH로 접근하게 됩니다.
Bastion Server에 도착한 시스템 엔지니어는 최종 목적지인 서비스 EC2로 다시 한번 ssh를 이용하여 접속합니다.

2.2 Session Manager를 사용한 접근 플로우

Session Manager를 사용할 경우 보다 더 간결한 아키텍처를 구성할 수 있습니다.
시스템 엔지니어는 AWS IAM을 통해 인증을 받고 AWS Console 혹은 AWS CLI를 사용하여 Session Manager를 통해 서비스 VM에 접근할 수 있습니다.

2.3 Session Manager가 갖는 장점

그렇다면 Bastion Server가 아닌 Session Manager를 사용함으로써의 갖는 장점은 무엇일까요?

  1. 운영 효율화
    Bastion Server를 사용함으로 서 드는 운영 에포트를 절감할 수 있습니다.
    Bastion Server에 대한 운영 관리(패치/용량/접근 등)가 없어지며, 신규 유저 생성 및 Keypair 발급, 관리의 에포트 또한 사라집니다.
    IAM 을 통한 User 및 Policy 관리를 일원화할 수 있습니다.
  2. 비용 최적화
    Bastion Server도 Ec2로 비용이 발생합니다.
    Session Manger를 사용하면 Ec2 비용을 절감할 수 있습니다.
  3. 보안 컴플라이언스 준수
    Session Manager를 사용하면 Session에서 발생하는 로그를 모두 S3로 적재할 수 있습니다.
    이는 운영 중에 발생하는 이슈, 장애에 대한 트래킹에 매우 유용합니다.

2.4 데모

데모는 상기 “2.2 Session Manager를 사용한 접근 플로우” 의 아키텍처를 기반으로 VPC 및 EC2는 기 생성된 환경 이후에 작업에 대해서 진행하겠습니다.

2.4.1 Session Manager 연결을 위한 사전 작업
2.4.1.1 EC2 Instance Profile 생성 및 연결

System Manager를 통해 EC2에 접근하기 위해선 EC2의 Instance Profile에 권한 설정이 필요합니다.

• Poilcy Name : AmazonSSMManagedInstanceCore

• EC2에 할당

2.4.1.2 VPC Endpoint 구성

Private Subnet에 구성된 EC2는 외부와의 연결이 없습니다.
하지만 VPC Endpoint를 구성한다면 AWS 서비스와 연결을 할 수 있습니다.

  1. Security Group 생성
    VPC Endpoint에서 사용할 Security group을 생성합니다.
    System Manager는 TCP 443 port를 사용함으로 VPC 대역에서 들어오는 룰을 작성합니다.
  1. VPC Endpoint 생성
    3가지 Endpoint를 생성합니다.
    o com.amazonaws.ap-northeast-3.ssmmessages
    o com.amazonaws.ap-northeast-3.ssm
    o com.amazonaws.ap-northeast-3.ec2messages

2.4.1.3 System Manager Logging 구성

Session manager에 접근하기 전 로깅을 위해 환경설정을 합니다.

• AWS System Manager > Session Manager > Configure Preferences

• Logging 설정으로 CloudWatch로 Stream session log를 적재하거나 S3에 바로 적재할 수도 있습니다.

2.4.2 Session Manager 연결

  1. AWS Console 사용
    a. EC2 선택 > Connect로 Session Manager를 통해 접근합니다.
  1. AWS CLI 사용
    a. AWS CLI 용 Session Manager 플러그인 설치
    i. 메뉴얼 : https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html

b. 세션 연결

3. 마무리

이번 포스팅으로 AWS System Manager Session Manager를 사용하여 Bastion Server를 대체한 Ec2 서버 접근 제어에 대해서 알아볼 수 있었습니다.
위와 같은 방식을 통하여 기존에 Bastion Server를 통한 업무의 전환으로 운영, 비용 효율화를 도모하고 서버 접근 제어 솔루션을 도입하기 어려운 작은 프로젝트에서 보안 컴플라이언스를 준수하며 서비스를 개발하고 운영할 수 있는 환경을 구성할 수 있습니다.

챗봇과 대화를 할 수 있어요