안녕하세요 베스핀글로벌 클라우드 기술지원팀 Han입니다.
AWS 보안에서 중요한 부분 중 하나인, 이력을 추적하고 로그를 남기는 방법에 대해서 작성 해보고자 합니다.
[상황별 활용 가이드]
시나리오 1: Access Key 탈취 의심 사례 조사
"비정상적인 AWS 리소스 사용이 감지되어 Access Key 탈취가 의심됩니다. 관련 활동을 조사하고 싶습니다."
1단계: 의심스러운 활동 조사
콘솔에서 확인하기:
- CloudTrail 콘솔 접속 (IAM은 버지니아 리전에 기록 됩니다)
- Event history 선택
- 다음 필터 적용:
- Access key ID: [의심되는 Access Key ID]
- 시간 범위: [비정상 활동 발견 시점 전후]
- 확인사항:
- 비정상적인 IP 주소에서의 접근
- 평소와 다른 시간대의 활동
- 일반적이지 않은 AWS 서비스 사용
CLI로 확인하기:
aws cloudtrail lookup-events --region us-east-1 \ --lookup-attributes AttributeKey=AccessKeyId,AttributeValue=AKIAXXXXXXXXXXXXXXXX
2단계: 비정상 활동 상세 분석
- 의심스러운 활동 패턴 확인:
- EC2 인스턴스 생성
- IAM 사용자/정책 변경
- S3 버킷 접근
- 데이터 전송 관련 활동
# 특정 Access Key의 EC2 관련 활동 조회 aws cloudtrail lookup-events \ --region us-east-1 \ --lookup-attributes AttributeKey=AccessKeyId,AttributeValue=AKIAXXXXXXXXXXXXXXXX \ --query 'Events[?contains(EventName, `EC2`)].{Time:EventTime,Event:EventName,Source:SourceIPAddress,User:Username}'
3단계: 즉각적인 대응 조치
- 의심되는 Access Key 즉시 비활성화:
aws iam update-access-key \ --region us-east-1 \ --access-key-id AKIAXXXXXXXXXXXXXXXX \ --status Inactive \ --user-name [USERNAME]
- CloudTrail에서 해당 키의 최근 사용 이력 전수 조사:
aws cloudtrail lookup-events \ --region us-east-1 \ --lookup-attributes AttributeKey=AccessKeyId,AttributeValue=AKIAXXXXXXXXXXXXXXXX \ --start-time 2025-02-1T00:00:00Z \ --end-time 2025-02-18T23:59:59Z \ --query 'Events[*].{Time:EventTime,Name:EventName,Source:SourceIPAddress,UserName:Username}'
조회 기간 지정
시나리오 1: EC2 인스턴스 변경 이력 조회
"EC2 인스턴스가 누군가에 의해 중지/종료되었습니다. 누가, 언제 변경했는지 확인하고 싶습니다."
콘솔에서 확인하기:
- CloudTrail 콘솔 접속
- 좌측 메뉴에서 'Event history' 선택
- 필터 적용:
- Event name: StopInstances 또는 TerminateInstances
- Resource type: AWS::EC2::Instance
- Resource name: [해당 인스턴스 ID]
- 조회된 결과에서 다음 정보 확인:
- 수행 시간
- IAM 사용자
- 소스 IP 주소
CLI로 확인하기:
aws cloudtrail lookup-events \
--region us-east-1 \ --lookup-attributes AttributeKey=ResourceName,AttributeValue=i-1234567890abcdef0 \ --query 'Events[*].{EventName:EventName,EventTime:EventTime,Username:Username}'
시나리오 2: 보안 그룹 규칙 변경 추적
"보안 그룹 규칙이 변경되었습니다. 언제, 어떤 변경이 있었는지 확인하고 싶습니다."
콘솔에서 확인하기:
- CloudTrail 콘솔의 Event history 접속
- 필터 설정:
- Event name: AuthorizeSecurityGroupIngress, RevokeSecurityGroupIngress
- Resource type: AWS::EC2::SecurityGroup
- 변경 상세 내역 확인:
- 규칙 변경 시간
- 변경한 사용자 정보
- 변경된 규칙 상세
CLI로 확인하기:
aws cloudtrail lookup-events \
--region us-east-1 \ --lookup-attributes AttributeKey=EventName,AttributeValue=AuthorizeSecurityGroupIngress
시나리오 3: IAM 사용자/역할 변경 감사
"IAM 사용자나 역할이 생성/수정되었습니다. 권한 변경 이력을 확인하고 싶습니다."
콘솔에서 확인하기: (IAM, S3와 같은 글로벌 서비스의의 경우 버지니아 리전에서 확인)
- CloudTrail 이벤트 히스토리 접속
- 필터 적용:
- Event source: iam.amazonaws.com
- Event name:
- CreateUser
- DeleteUser
- AttachUserPolicy
- DetachUserPolicy
- 상세 정보 확인:
- 변경 시점
- 수행자 정보
- 적용된 정책 상세
CLI로 확인하기:
aws cloudtrail lookup-events \
--region us-east-1 \ --lookup-attributes AttributeKey=EventSource,AttributeValue=iam.amazonaws.com \ --start-time 2024-02-17T00:00:00Z \ --end-time 2024-02-17T23:59:59Z
시나리오 3: IAM 사용자/역할 변경 감사
[유용한 필터링 팁]
콘솔 필터
- Event name: 특정 API 작업 검색
- User name: 특정 사용자의 활동 조회
- Resource type: 특정 리소스 유형 필터링
- Event source: 특정 AWS 서비스 필터링
- Event ID: 특정 이벤트 검색
CLI 필터
# 특정 사용자의 활동 조회 aws cloudtrail lookup-events \ --region us-east-1 \ --lookup-attributes AttributeKey=Username,AttributeValue=username # 특정 기간 동안의 이벤트 조회 aws cloudtrail lookup-events \ --start-time 2024-02-17T00:00:00Z \ --end-time 2024-02-17T23:59:59Z
[CloudTrail 활용 모범 사례]
- 로그 보존 설정
- CloudTrail 로그를 S3에 장기 보관 (Lifecycle 적용 통한 보관 기간 설정)
- 로그 파일 무결성 검증 활성화
- 적절한 보존 기간 설정
- 알림 구성
- 중요 이벤트에 대한 CloudWatch 알림 설정
- 보안 관련 이벤트 모니터링 자동화
- 보안 강화
- CloudTrail 로그 파일 암호화
- 로그 파일에 대한 접근 제한
- 정기적인 로그 검토 수행
[주의사항]
- 이벤트는 최대 15분의 지연시간이 있을 수 있습니다
- 관리 이벤트와 데이터 이벤트는 별도로 설정해야 합니다
- 기본 90일 이후의 로그는 S3에 별도 보관이 필요합니다
- 데이터 이벤트 로깅은 추가 비용이 발생할 수 있습니다
[참고 문서]
- AWS CloudTrail 사용 설명서: https://docs.aws.amazon.com/cloudtrail/
- CloudTrail 이벤트 참조: https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference.html