Security Practice Archive

보안 점검과 설정을
기록합니다.

시스템, 클라우드 등 다양한 환경에서 확인한 점검 기준과 설정 과정, 검증 결과를 정리합니다.

categories 글 모아보기
주제별 탐색

분야별 글과 학습 안내

글 목록과 점검 순서를 한곳에서 확인하세요.

[인프라진단] AWS 실습 환경 구축 프롤로그

반응형

1. 작성 목적

이 글은 클라우드 취약점 진단 실습을 시작하기 전에 AWS 개인 실습 환경을 준비하는 과정을 정리한 프롤로그다.

CA 항목별 게시글은 실제 클라우드 설정을 변경하고 최초진단, 조치, 이행진단 증적을 수집하는 방식으로 작성한다. 따라서 본격적인 항목 실습 전에 계정 플랜, 비용 통제, 로그인 방식, CloudShell 사용법, 증적 보관 구조를 먼저 정리해 두어야 한다.

본 실습은 회사 또는 운영 클라우드 환경이 아닌 개인 실습용 AWS 계정에서만 수행한다. 운영 계정, 회사 계정, 고객사 계정에서는 이 문서의 취약 상태 구성 절차를 실행하지 않는다.

2. 무료 플랜과 비용 기준

AWS는 신규 고객을 대상으로 Free Tier를 제공한다. 2026년 6월 18일 확인 기준, AWS Free Tier 페이지에는 신규 Free Tier 계정 생성 시 즉시 100달러 크레딧을 받고, 추가 활동을 통해 최대 100달러를 더 받을 수 있으며, 최대 6개월 동안 사용할 수 있다고 안내되어 있다.

다만 이것을 “무조건 0원 보장”으로 이해하면 안 된다. 무료 플랜은 선택된 서비스에 제한되며, Paid plan으로 전환하거나 paid-only 서비스가 활성화되면 비용이 발생할 수 있다. 또한 AWS Free Tier FAQ는 Free plan과 Paid plan 모두 계정 가입 시 유효한 결제수단이 필요하다고 안내한다.

이번 CA 실습에서는 다음 원칙을 적용한다.

  • 가능한 경우 Free plan 상태에서 진행한다.
  • EC2 인스턴스, RDS, NAT Gateway, Elastic IP, Load Balancer, 유료 public IPv4, 데이터베이스, 대용량 스토리지, 장기 실행 리소스는 생성하지 않는다.
  • CloudShell, IAM, VPC 설정 객체, 빈 S3 버킷처럼 비용 위험이 낮은 범위에서만 실습한다.
  • 인터넷 공개, 과금 가능성, 권한 확대, 계정 생성, 리소스 삭제가 필요한 작업은 실행 전에 별도 확인을 받는다.
  • 실습 중 비용 화면을 수시로 확인하고, 예상하지 못한 사용량이 보이면 즉시 중단한다.

무료 플랜을 선택해야 하는가?

개인 학습 목적이고 100% 무료 범위 안에서 진행하려면 가입 단계에서 Free plan을 선택하는 것이 맞다.

Paid plan은 더 많은 서비스와 기능을 사용할 수 있지만 사용량에 따라 과금되는 계정 상태다. 클라우드 진단 실습을 처음 진행하는 단계에서는 Paid plan으로 전환하지 않는 편이 안전하다. 단, AWS 정책과 계정 상태는 시점에 따라 달라질 수 있으므로 콘솔의 Cost and Usage 위젯, Credits 페이지, Free Tier 페이지를 직접 확인한다.

기존 AWS 계정이 있거나 과거에 AWS 계정을 만든 이력이 있으면 Free plan 또는 Free Tier 크레딧 대상이 아닐 수 있다. 또한 AWS Organizations에 가입하거나 Control Tower landing zone을 구성하는 등 일부 작업은 무료 플랜을 Paid plan으로 자동 전환시킬 수 있으므로 본 실습에서는 사용하지 않는다.

3. 실습 전 안전 원칙

실습 전에는 아래 기준을 먼저 확정한다.

구분 기준
계정 개인 실습용 AWS 계정
플랜 가능한 경우 Free plan
리전 실습 기본 리전은 eu-north-1, 단 IAM은 글로벌 서비스
실행 도구 AWS Management Console, AWS CloudShell
금지 작업 운영 리소스 변경, 회사 계정 사용, paid-only 서비스 활성화, EC2/RDS/NAT Gateway/EIP 생성
증적 원칙 실제 수집한 CLI/API 결과와 콘솔 화면만 사용
마스킹 계정 ID, ARN 일부, 이메일, 결제수단, 접속자 정보는 게시 전 마스킹

 

무료 실습에서 가장 중요한 것은 “취약하게 보이도록 꾸미는 것”이 아니라, 실제로 비용과 공개 위험을 만들지 않는 선에서 진단 흐름을 재현하는 것이다. 실습 글에는 제한사항을 숨기지 않고 명시한다.

예를 들어 CA-10에서 S3 공개 접근 차단 설정을 진단하더라도 실제 객체를 업로드하거나 공개 ACL을 부여하지 않는다. CA-07에서 퍼블릭/프라이빗 서브넷 분리를 실습하더라도 NAT Gateway를 만들지 않는다. 진단 의미를 살리되 비용과 인터넷 노출을 만들지 않는 방식으로 설계한다.

4. AWS 계정 생성 및 로그인 준비

AWS 계정 생성 흐름은 일반적으로 다음 순서로 진행된다.

  1. AWS Free Tier 페이지에서 Create a free account를 선택한다.
  2. 이메일 주소, 계정 이름, 연락처 정보를 입력한다.
  3. Free plan 또는 Paid plan 중 실습 목적에 맞는 플랜을 선택한다.
  4. 결제수단을 등록해 본인 확인을 완료한다.
  5. 전화번호 또는 추가 인증 절차를 완료한다.
  6. AWS Management Console에 로그인한다.

무료 플랜을 선택해도 결제수단 입력이 요구될 수 있다. 이는 AWS가 계정 본인 확인과 리소스 악용 방지를 위해 요구하는 절차다. 결제수단 등록 화면에서 오류가 반복되면 브라우저 확장 기능, 팝업 차단, 쿠키 차단, 카드 인증 실패, 국가/주소 형식 오류를 먼저 확인한다.

Root user와 IAM user 선택

AWS 로그인 화면에서 Root user와 IAM user를 선택하는 화면이 나온다.

처음 계정을 만든 소유자는 Root user로 로그인한다. Root user는 계정 전체 권한을 가진 계정 소유자이므로, 결제 확인, 계정 보안 설정, 최초 MFA 등록처럼 계정 소유자 권한이 필요한 작업에만 사용한다.

IAM user는 계정 안에서 생성한 사용자다. 운영 환경에서는 일상 작업을 Root user로 수행하지 않고 IAM Identity Center 또는 IAM user/role을 통해 최소 권한으로 수행하는 것이 원칙이다. 다만 본 개인 실습에서는 계정 초기 구성과 CloudShell 접근 확인을 위해 Root user로 콘솔에 진입한 뒤, 이후 항목 실습에서 필요한 IAM 리소스를 별도로 구성한다.

패스키와 내장 브라우저

패스키 또는 생체 인증은 브라우저와 OS의 보안 기능에 의존한다. Codex 내장 브라우저, 일부 원격 브라우저, 팝업 제한이 있는 브라우저에서는 패스키 인증이 정상 동작하지 않을 수 있다.

패스키 로그인이 실패하면 일반 Chrome 또는 Edge에서 AWS 콘솔에 직접 로그인한 뒤, 필요한 화면만 수집하거나 CloudShell에서 CLI 결과를 내려받는 방식으로 진행한다.

5. 루트 계정 보안 설정

계정 생성 직후에는 Root user MFA를 먼저 설정한다. MFA는 루트 계정 탈취 위험을 낮추는 가장 기본적인 보호 조치다.

콘솔 경로는 다음과 같다.

AWS Management Console
→ IAM
→ Dashboard
→ Security recommendations
→ Add MFA

또는 다음 경로로 접근할 수 있다.

AWS Management Console
→ IAM
→ Access management
→ Users / Root access management
→ Multi-factor authentication

MFA 방식은 계정과 브라우저 환경에 따라 가상 MFA 앱, 보안 키, 패스키 등이 제공될 수 있다. 개인 실습에서는 복구 가능한 방식을 선택하고, MFA 복구 수단을 별도로 보관한다.

게시글에 MFA 증적을 넣을 때는 QR 코드, 디바이스 식별자, 계정 이메일, Account ID가 노출되지 않도록 마스킹한다.

6. CloudShell 준비

AWS CloudShell은 AWS 콘솔에서 실행되는 브라우저 기반 셸이다. 사용자가 별도로 EC2 서버를 만든 것이 아니다. CloudShell 창이 열렸다고 해서 내 서버가 배포된 것은 아니며, AWS CLI가 사전 구성된 임시 작업 환경을 사용하는 것에 가깝다.

AWS CloudShell 가격 안내에 따르면 CloudShell 자체에는 추가 요금이 없지만, CloudShell로 생성하거나 실행하는 다른 AWS 리소스에는 비용이 발생할 수 있다. 또한 데이터 전송은 AWS 표준 데이터 전송 요금이 적용될 수 있다.

실습에서는 CloudShell을 다음 용도로만 사용한다.

  • 현재 로그인한 계정 확인
  • AWS CLI 기반 진단 결과 수집
  • 실습용 IAM/VPC/S3 설정 객체 생성
  • 조치 후 이행진단 결과 수집
  • 결과 파일 다운로드

CloudShell을 처음 열면 리전을 선택할 수 있다. 본 실습에서는 eu-north-1을 기본 리전으로 사용했다. IAM은 글로벌 서비스이므로 리전 선택과 별개로 계정 전체 IAM 설정을 조회한다.

CloudShell이 열리면 먼저 아래 명령으로 계정과 리전을 확인한다.

aws sts get-caller-identity
aws configure get region

예상 결과는 다음과 같은 형태다.

{
  "UserId": "마스킹",
  "Account": "마스킹",
  "Arn": "arn:aws:iam::마스킹:root"
}

게시글에는 Account ID 전체와 ARN의 식별 가능한 부분을 마스킹한다.

 

7. 사전 점검 절차

CloudShell에서 실습 전 상태를 확인한다.

aws sts get-caller-identity
aws configure get region
aws iam get-account-summary
aws s3api list-buckets --query 'Buckets[].Name' --output table

확인할 내용은 다음과 같다.

점검 항목 확인 내용
계정 식별 개인 실습용 계정인지 확인
권한 실습 스크립트 실행에 필요한 IAM/VPC/S3 조회 권한 확인
리전 eu-north-1 또는 실습 문서에 명시한 리전인지 확인
기존 리소스 실습 전 기존 리소스가 있는지 확인
비용 상태 콘솔 Home의 Cost and Usage, Billing and Cost Management 확인

기존 리소스가 발견되면 바로 삭제하지 않는다. 기존 리소스가 실습과 관련 있는지 먼저 확인하고, 사용자가 만든 다른 자료일 수 있으면 건드리지 않는다.

8. 실습 진행 방식

CA 항목 실습은 다음 흐름을 따른다.

  1. 가이드 PDF에서 항목명, 판단 기준, 페이지, 조치 방법을 확인한다.
  2. 개인 AWS 계정에서 비용 위험이 낮은 방식으로 취약 상태를 구성한다.
  3. CLI/API로 최초진단 결과를 수집한다.
  4. 콘솔 UI에서 현재 설정 화면을 수집한다.
  5. 가이드 근거 이미지를 별도로 만든다.
  6. 조치 스크립트 또는 콘솔 절차로 설정을 개선한다.
  7. CLI/API로 이행진단 결과를 수집한다.

이 방식은 단순히 N/A로 끝내는 대신, 무료 범위 안에서 진단 절차 자체를 체험하기 위한 방식이다. 다만 운영 환경의 완전한 위험을 그대로 재현하지 않는다. 인터넷 공개, 실제 서비스 연결, 데이터 업로드, 과금 리소스 생성은 실습 목적보다 위험이 크므로 제한한다.

09. 원상복구와 비용 확인

항목별 증적 수집이 끝나면 실습용 리소스를 원상복구한다. 원상복구란 실습을 위해 만든 IAM 사용자, IAM 그룹, IAM 정책, IAM 역할, VPC, 서브넷, 라우팅 테이블, 보안 그룹, 빈 S3 버킷 같은 리소스를 정리하거나 안전한 상태로 되돌리는 작업이다.

단, 원상복구는 삭제 작업을 포함할 수 있으므로 반드시 실습용으로 만든 리소스만 대상으로 한다. 기존 사용자 파일, 기존 AWS 리소스, 운영 설정은 임의로 삭제하지 않는다.

 

원상복구 전에는 다음을 확인한다.

1. 최초진단 결과 파일을 다운로드했는가?
2. 이행진단 결과 파일을 다운로드했는가?
3. 콘솔 UI 증적을 수집했는가?
4. 필요한 식별정보를 마스킹했는가?
5. 삭제 대상이 실습용 리소스인지 이름과 태그로 확인했는가?
6. 비용 화면에서 예상하지 못한 사용량이 없는지 확인했는가?

 

원상복구 후에는 다시 비용 화면과 리소스 목록을 확인한다. S3 버킷, VPC, 보안 그룹, IAM 정책처럼 눈에 잘 띄지 않는 설정 객체가 남아 있을 수 있으므로 항목별 정리 결과를 별도 로그로 남긴다.

10. 마무리

클라우드 취약점 진단 실습은 명령어를 실행하는 것보다 경계선을 정하는 일이 더 중요하다. 무료 플랜, 실습용 계정, 실제 증적, 마스킹, 원상복구 기준을 먼저 잡아두면 이후 CA 항목별 실습이 훨씬 안정적으로 진행된다.

이 프롤로그는 AWS 실습 환경을 만들기 위한 공통 기준이며, 각 CA 항목 게시글에서는 실제 가이드 판단 기준과 수집한 증적을 기준으로 별도 작성한다.

참고 출처

본 게시글은 위 AWS 공식 안내와 개인 실습 환경에서 직접 수행한 진단 흐름을 바탕으로 작성했습니다. 실제 비용, 무료 플랜 제공 조건, 사용 가능 서비스는 AWS 정책과 계정 상태에 따라 달라질 수 있으므로 실습 전 AWS 콘솔에서 다시 확인해야 합니다.

반응형
학습 안내

시리즈와 관련 학습

현재 글과 같은 환경의 전체 글과 핵심 실습으로 이어집니다.