본문 바로가기

블로그

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

AWS Ambassador

해킹과 과다 요금 발생을 방지하는 AWS 계정 보안 강화 노하우

2024.07.03

Intro

최근 AWS Account 탈취로 인한 AWS 결제 비용 과다 청구 사례가 종종 발생하고 있습니다. 예를 들어, 회사의 Account나 개인의 Account 로그인 정보를 획득해 자주 사용하지 않는 Region(AWS 서비스가 제공되는 서버의 물리적인 국가/도시 단위의 위치, 이하 리전)의 Computing Resource를 사용하는 채굴 또는 목적 없는 리소스 과다 사용을 통한 Account Owner에 금전적 피해를 입히려는 악의적인 활동 등이 있습니다.

이번 글에서는 AWS Account 보안을 강화해 해킹을 방지하는 방법과 실수로 Account 정보가 노출되었을 때 신속한 Alert를 통해 문제를 해결할 수 있는 방안에 대해 알아보겠습니다.

AWS 사용자 Account 보호

먼저, AWS에서는 AWS 사용자의 Account 보호를 위한 다양한 기능들을 제공하고 있습니다. AWS가 계정 보안을 강화하고 비용 오남용을 탐지할 수 있는 세 가지 사례를 통해 더 자세히 알아보겠습니다.

1. IAM 보안 모범 사례 적용을 통한 계정 보안 강화

2. Cost Anomaly Detection 사용을 통한 비용 모니터링

3. CloudWatch Anomaly Detection 사용을 통한 자원 이상 사용 탐지

1. IAM 보안 모범 사례 적용을 통한 계정 보안 강화

AWS에서는 AWS Account의 리소스에 대한 액세스를 제어하는 서비스인 IAM(Identity Access Management, 조직이 필요로 하는 보안 정책을 수립하고 정책에 따라 자동으로 사용자의 계정과 권한을 관리하는 솔루션)의 모범 사례(Best Practice)를 제공하고 있습니다. 그중 필수적으로 적용해야 하는 항목 몇 가지를 적용하는 방법을 살펴보겠습니다.

IAM의 모범 사례(Best Practice) 및 사용 사례 확인하기

MFA(Multi-Factor Authentication, 다중 인증)을 통한 Root User 로그인 보호

AWS Account를 만들고 Root User로 로그인했다면 가장 먼저 해야 하는 작업은 MFA 활성화입니다. MFA를 활성화하면 AWS 환경에 대한 접근 제어를 최소한의 방법으로 가장 쉽게 강화할 수 있습니다. Root User MFA 적용 방법은 아래와 같습니다. (일반 IAM User도 동일한 방법으로 MFA를 반드시 활성화해야 합니다.)

(1) IAM Dashboard ➔ Add MFA(혹은 우측 패널의 Quik Links ➔ My security credentials)

[그림 1]

(2) MFA device 설정

이번 예시에서는 Chrome Plug-in을 사용해 보겠습니다.

예시 Chrome Plug-in 설치하러 가기

[그림 2]

(3) MFA 등록 ➔ Show QR code ➔ 두 번의 코드 입력 ➔ Add MFA

[그림 3]

(4) 확인

IAM ➔ Security credentials

[그림 4]

재 로그인 시 [그림 5]와 같이 MFA code 입력 확인을 해야 합니다.

[그림 5]

추가로 Root User를 초기 설정 및 빌링 조작 외 별도 액션을 위해 사용하는 것을 지양해야 하며, AWS 리소스를 사용하기 위한 작업은 별도의 IAM User를 생성해 조작해야 합니다.

사용하지 않는 리전 접근 제한하기

AWS를 통해 제공하는 서비스가 글로벌 서비스가 아니라면 사용하는 리전은 한정될 것입니다. 유실된 AWS 계정 정보를 악용하는 유저는 해당 AWS Account가 일반적으로 사용하는 리전이 아닌 별도의 리전에 리소스를 생성해 남용하곤 합니다. 이를 막기 위한 몇 가지 방법을 확인해 보겠습니다.

• 리전 별 임시자격증명 사용 제한

STS(Security Token Service, AWS에서 보안 토큰을 생성하는 서비스)는 사용자나 시스템이 AWS 리소스에 대한 접근 권한을 안전하게 요청할 수 있도록 돕는 서비스입니다. STS를 통한 임시 자격 증명이 사용할 수 있는 Endpoint를 사전에 Inactive해 리소스를 사용하는 API를 차단합니다.

(1) IAM ➔ Account settings ➔ STS(Security Token Service) ➔ 사용하지 않는 Region Inactive

[그림 6]

• IAM Policy를 활용한 리전 사용 제한

또한 STS(Security Token Service)가 아닌 IAM User의 Credential이나 Console 로그인 후 사용 차단도 필요할 수 있습니다.

(1) Policy 생성

다음은 서울 리전에만 접근 가능한 Admin Access 예시입니다.

[그림 7] Code Block 1 policy-adminAccess-regionRestricted

(2) 예시로 만든 IAM User에 정책을 연결합니다.

[그림 8]

(3) 예시 IAM User에 로그인 후, 서울이 아닌 리전 접속 테스트를 하면 API에러가 발생하는 것을 확인할 수 있습니다.

[그림 9]
[그림 10]

(4) Global Service 권한 설정

IAM이나 S3(Simple Strong Service, AWS에서 제공하는 인터넷용 스토리지 서비스)과 같은 글로벌 서비스를 사용하기 위해선 다음과 같은 추가 정책을 할당해야 합니다.

1) IAM API Error 화면

[그림 11]

2) Global Service 사용을 위한 Policy

[그림 12] Code Block 2 policy-adminAccess-globalAllow

3) 정상 동작 확인

[그림 13]

2. Cost Anomaly Detection 사용을 통한 비용 모니터링

위와 같은 설정을 하더라도 악의가 있는 사용자이거나 일부 설정이 누락됐을 경우 AWS 자원의 오남용을 막기 어렵습니다. 이를 위해 AWS는 Cost Anomaly Detection 서비스를 사용해 비용에 대한 이상 징후를 탐지할 수 있도록 합니다.

(1) Billing and Cost Management ➔ Cost Analysis ➔ Cost Anomaly Detection

[그림 14]

(2) Cost Monitors ➔ Create monitor

[그림 15]

해당 단계에서 추가 설정 옵션은 아래와 같이 진행했습니다.

1) Choose monitor type

이번 예시에서는 AWS에서 제공하는 Monitor type을 선택해 진행하겠습니다.

[그림 16]

2) Configure alert subscriptions

알림을 생성하고자 하는 이상 현상에 대한 임계값을 설정할 수 있습니다. 임계값에는 ‘절대 임계값’과 ‘백분율 임계값’ 두 가지 유형이 있습니다. 이때 절대 임계값은 이상 현상의 총 비용 영향이 선택한 임계값을 초과할 때 알림을 트리거 하고, 백분율 임계값은 이상 현상의 영향 백문율이 선택한 임계값을 초과할 때 알림을 트리거 합니다. 영향 백분율은 실제 지출과 예상 지출 사이의 백분율 차이를 나타냅니다.

알림 생성에 더 많은 유연성을 제공하기 위해 두 가지 임계값 유형을 AND 또는 OR로 결합할 수 있는데요. 이번 데모에서는 [그림 17]과 같이 예상 사용 비용 대비 일간 10% 이상의 차이가 발생하면 등록한 이메일로 Alert를 보내도록 세팅했습니다.

[그림 17]

3. CloudWatch Anomaly Detection 사용을 통한 자원 이상 사용 탐지

AWS Account 혹은 리소스 탈취를 통해 신규 자원이 아닌 기존 자원을 오남용 하는 사례가 발생할 수도 있습니다. 예를 들어, EC2(Amazon Elastic Compute Cloud, AWS에서 제공하는 클라우드 컴퓨팅)를 탈취해 외부로 대량의 네트워크 트래픽을 발생하는 DDoS Bot으로 사용되거나 S3으로 과도한 API를 호출해 비용을 과다 생성하는 것 등이 있습니다. AWS는 이런 오남용을 탐지하기 위해 CloudWatch Anomaly Detection을 사용해 알림을 받을 수 있습니다.

EC2를 타깃으로 한 데모를 예시로 자세히 알아보겠습니다.

(1) 데모 환경 생성

1) 본 데모를 위해 EC2(t2.micro, Amazon Linux 2023)를 생성한 뒤 stress 명령어를 이용해 부하를 발생 시켰습니다.

[그림 18] Code Block 3 install stress

(2) CloudWatch 설정

CloudWatch 설정 방법은 아래와 같습니다.

1) CPU Utilization(%) 메트릭에 Actions의 그래프 모양의 아이콘을 눌러 Anomaly detection을 활성화합니다.

[그림 19]

2) 활성화 시 Anomaly Detection Band가 생성되는 것을 확인할 수 있습니다.

[그림 20]

3) Anomaly Detection을 기준 값으로 한 알람 설정

[그림 21]

(3) Demo 환경에서 진행하는 부하 테스트

1) CPU 부하 명령

[그림 22]

2) top 명령어로 CPU 사용량 100% 확인

[그림 23]

3) CloudWatch 확인

[그림 24]와 같은 알람이 발생하는 것을 확인할 수 있습니다.

[그림 24]

이후 알람 메일을 수신한 것을 확인할 수 있습니다.

Outro

이번 글에서는 가장 기본적이지만 꼭 수행되어야 하는 세 가지 활동을 살펴봤습니다.

1. IAM 보안 모범 사례 적용을 통한 계정 보안 강화

2. Cost Anomaly Detection 사용을 통한 비용 모니터링

3. CloudWatch Anomaly Detection 사용을 통한 자원 이상 사용 탐지

해당 활동을 통해 AWS 계정 보안 강화할 수 있으며, 해킹으로 인한 과다 요금 발생 방지 및 신속한 감지를 통한 빠른 대처를 할 수 있습니다.

챗봇과 대화를 할 수 있어요