AWS 메타데이터 확인 방법과 보안 관리

Dohyun Park·2024년 1월 30일
0

CTF 문제를 풀어보며, AWS 클라우드 문제를 접해보게 되었고. 클라우드에 대해 공부도 할 겸 정리해 보았습니다.

인스턴스 메타데이터는 실행 중인 인스턴스를 구성 또는 관리하는 데 사용될 수 있는 인스턴스 관련 데이터입니다.

메타데이터는 기본적으로 JSON 형식으로 응답을 제공하며, Key-Value가 각각 존재하므로, 정보를 쉽게 확인할 수 있습니다.

인스턴스 내부에서 메타데이터 확인

SSH에 접속한 상태에서 curl http://169.254.169.254/latest/meta-data/ 명령어를 입력하면, 아래와 같이 조회 가능한 메타데이터 항목들을 볼 수 있습니다.

ubuntu@aws:~$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
iam/
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
ipv6
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/

데이터를 조회하려면 /meta-data/ 뒤에 원하는 항목을 입력하면 됩니다.

아래는 IAM 정보를 확인하는 커맨드 입니다.

ubuntu@aws:~$ curl http://169.254.169.254/latest/meta-data/iam/info
{
  "Code" : "Success",
  "LastUpdated" : "2024-01-29T07:54:07Z",
  "InstanceProfileArn" : "arn:aws:iam::95**********:instance-profile/AmazonLightsailInstanceProfile",
  "InstanceProfileId" : "AIPA52***************"
}

ubuntu@aws:~$

AWS CLI 이용

AWS Command Line Interface의 약어로, 명령어를 사용해 AWS와 상호작용할 수 있는 오픈소스 프로그램 입니다.

Credentials를 통해 접근할 수 있고, 터미널의 명령 프롬프트에서 명령어를 통해 AWS 콘솔과 동일한 명령을 실행할 수 있습니다.

AWS Document - 최신 버전의 AWS CLI 설치 또는 업데이트

AWS CLI 명령어

credentials 지정(configure)

C:\Users\dhlife09>aws configure

AWS Access Key ID [****************4Q5G]:
AWS Secret Access Key [****************A6+6]:
Default region name [ap-northeast-2]:
Default output format [json]:

C:\Users\dhlife09>

aws configure 명령어를 통해 Access Key ID, Secret Access Key, Region을 입력하면 접속할 수 있습니다.

입력한 데이터는 모든 OS공통으로 사용자 폴더/.aws/ 폴더에 config와 credentials이 각각 저장됩니다.

config 파일 예시

default 프로필에 적용되는 내용이라고 보시면 됩니다.
region같은 경우에는 서울(ap-northeast-2)로 설정되어있으며, 출력은 json(기본값)으로 되어있습니다.

[default]
region = ap-northeast-2
output = json

credentials 파일 예시

config 파일과 마찬가지로 default 프로필에 적용되는 내용입니다.
Access Key IDSecret Access Key가 저장되어 있습니다.
설정 파일 편집을 통해 Token 값을 입력해줄 수도 있습니다.

아래 내용은 게시를 위해 마스킹 처리하였으나, 실제는 평문으로 저장되어 있습니다.

[default]
aws_access_key_id = ASIAYL**************
aws_secret_access_key = cZ3vfN**********************************
aws_session_token = IQoJb3JpZ2luX2VjEEYaDmFwLW5vcnRoZWFzdC0y****************************************+s8rI********************************************************* ... 이하 생략

버전 확인(--version)

C:\Users\dhlife09>aws --version
aws-cli/2.15.10 Python/3.11.6 Windows/10 exe/AMD64 prompt/off

C:\Users\dhlife09>

AWS S3 버킷 리스트(s3 ls)

C:\Users\dhlife09>aws s3 ls
2024-01-30 18:30:11 dhtest-s3

C:\Users\dhlife09>

(추후 명령어 더 추가 예정입니다)


보안 관리 시 유의사항

몇 개 안되는 문제를 풀어보며 느낀 점이지만..

  1. IAM credentials 정보가 유출되지 않도록 주의할 것
  2. 권한 설정 시 모든 권한을 가진 관리자 계정으로 사용하지 말 것
  3. 사용자의 입력을 받아 HTTP request를 수행할 경우 입력값을 검증할 것
    (사실 입력값 검증하는 절차는 이외에도 필수라고 생각한다.)

이 정도를 느꼈습니다.

profile
공부한 내용을 기록하고 생각을 정리합니다.

0개의 댓글