1. Detection (탐지)

AWS GuardDuty

로그 기반으로 이상 탐지되었을 때 알림 가능. EventBridge로 이벤트 발행해서 이런저런 서비스들과 연동해 자동으로 조치 가능

DNS Based findings를 못 하면 DNS를 AWS가 제공하는 기본 DNS Resolver (Route 53 VPC Resolver)를 사용하고 있는지 확인해야 함. Open DNS, Google DNS, 혹은 자체 DNS를 사용하면 DNS Based findings 못 씀

이런저런 서비스에 다 붙어서 작동한다. EC2나 EKS나 람다 등등

AWS Security Hub

여러 계정을 넘나들면서 자동으로 security check를 해줌. 보안 관련 여러 AWS 서비스와 AWS 파트너 도구들과 연동해서 결과 모아서 보여줌

AWS Config가 활성화 되어있어야 동작함

GuardDuty는 runtime에 발생하는 이상 동작을 탐지한다면, Security Hub는 보안 취약점이 발생할 수 있는 AWS 설정을 찾아서 알려줌.

마찬가지로 뭔가를 탐지하면 EventBridge를 통해 이벤트를 발행해서 이런저런 자동화를 할 수 있음

Amazon Detective

보안 관련 문제, 혹은 가능성이 발견되었을 때 근본 원인을 찾아주는 서비스

이슈의 상세정보에 대한 통합된 view를 제공한다.

최대 1년치 데이터를 모아서 분석할 수 있음

Amazon Detective Investigation IAM 유저나 role이 어떤 보안 사고에 연관되었는지 보여줌

Amazon Insepctor

EC2 Instance, Container Images, Lambda Functions 취약점 있는 이미지나 OS, 소프트웨어 사용하고 있는지만 검사함

EC2는 AWS System Manager (SSM) agent를 통해 동작함. 의도하지 않은 네트워크 접근가능성(unintended network accessibility)이 있는지도 파악 가능

CloudWatch

Unifined CloudWatch Agent

이 agent가 ec2에 설치되어 있어야 RAM, processes, used disk space 같은 추가 로그가 CloudWatch에 전송됨.

agent 설정은 SSM PArameter Store을 통해 한 곳에서 설정할 수 있음

Unified CloudWatch Agent를 통해 수집된 metrics의 기본 namespace는 CWAgent

procstat plugin으로 프로세스 모니터링 가능

CloudWatch Logs

로그 그룹: 애플리케이션 단위 로그 스트림: 애플리케이션 내의 인스턴스, 로그 파일, 컨테이너 등의 단위

CloudWatch Logs Insights

쿼리 작성해서 로그 검색 가능

CloudWatch S3 Export

로그가 s3 export가 가능해질 때까지 최대 12시간 걸림 realtime, near-realtime을 기대하고 사용하는거 아니다.

CloudWatch Logs Subscriptions

real-time으로 로그 받아보고 싶을 때

Kinesis Data Streams, Kinesis Data Firehose, Lambda 등으로 로그 구독 가능

Kinesis Data Firehose는 OpenSearch나 S3에 연결 가능. 소방호스처럼 데이터를 쭉쭉 전달하기만 함. Kinesis Data Streams는 온갖군데에 연결 가능 (KDF, KDA, EC2, Lambda…)

여러 account의 로그를 CloudWatch Logs Subscriptions를 통해 Kinesis Data Stream에 모으고, 그 Stream을 Kinesis Data Firehose가 받아서 S3에 저장하는 구조 가능

CloudWatch - Contributor Insights

누가 가장 많은 문제를 발생하는지 찾아줌

bad host, the heaviest network users, URLs that generate the most errors 등등

Amazon EventBridge

뭔지 알지?

cron, event pattern(뭔가 이벤트가 발생했을 때 실행됨)

람다 호출, SQS/SNS 메시지 발행 등등.. 가능. 엄청 많네 Lambda, AWS Batch, ECS Task, SQS, SNS, Kinesis Data Streams, Step Functions, CodePipeline, CodeBuild, SSM, EC2 Actions

다른 AWS 계정이나 파트너 서비스(Datadog 같은) 혹은 커스텀 애플리케이션도 Event Bus를 통해 EventBridge 사용 가능. Resouce-based Policy

‘Schema Registry’ 기능을 통해서 임의의 json 데이터를 event bridge가 읽게 할 수 있음

Amazon Athena

‘analyze data in S3 using serverless SQL’ use Athena

성능 향상

  • columnar data (Apache Parquet or ORC)
  • 압축 (bzip2, gzip 기타 등등)
  • 파티셔닝
    • s3://atehna-examples/flight/parquet/year=1991/month=1/day=1/
  • 파일 하나의 크기가 크게 (128MB 이상)

Federated Query

S3뿐만 아니라 Lambda를 통해 여러 데이터소스에서 데이터를 조회해서 쿼리할 수 있다 (ElastiCache, DocumentDB, DynamoDB, Redshift, Aurora, SQL Server, MySQL, Database on-premises, HBase in EMR 등등)

AWS CloudTrail

거버넌스, 컴플라이언스, 감사(audit) 제공

누가 뭘하는지 다 보인다

SDK, CLI, Console, IAM Users & IAM Roles의 행위들이 CloudTrail에 남음

Data events는 기본으로 꺼져있다 양이 너무 커서.

  • S3 object-leve activity (ex: GetObject, DeleteObject, PutObject)
  • AWS Lambda function execution activity (the Invoke API)

CloudTrail은 real-time 아님. 최대 15분 지연. S3에 로그 쌓는것도 매 5분마다 모아서 보냄

CloudTrail에서 Athena용 table을 만들 수 있음.

CloudTrail Insights

unusual activity 탐지 가능 평소 패턴 분석해서 baseline 만들고, 주기적으로 분석해서 unusual pattern 감지 EventBridge event 생성되어서 continuously analyzes

CloudTrail Lake

managed data lake

  • CloudTrail Events
  • CloudTrail Insights Event
  • AWS Config Configuration Items
  • AWS Audit Manager
  • 3rd party events

모두 모아서 SQL query language로 조회 가능

immutable storage, 최대 10년 보관

Dashboard도 제공 가능

CloudTrail - Log File Integrity Validation

1시간마다 로그파일마다 digest file(hash)를 만들어서 로그파일이 변조되진 않았는지 확인 가능

AWS Macie

머신러닝과 패턴매칭으로 민감 데이터(sensitive data) 찾아줌. fully managed data security and data privacy service

S3에서 PII(Personally Identifiable Information) 같은거 찾아주고 alert 해줌

Managed Data Identifier

  • Credit Card Numbers
  • AWS Credentials
  • Bank Accounts

규칙 추가해서 Custom Data Identifier 추가 가능

Allow List도 추가 가능

  • Policy Findings
    • IAM 정책 취약한거 찾아줌
  • Sensitive Data Findings
    • S3에서 민감 데이터 찾아줌

여러 계정 통합해서 Macie 사용 가능

VPC Flow Logs

로그에 이런저런 데이터 포함되어 있고, 해당 행위가 승인되었는지(ACCEPT) 거절되었는지(REJECT)도 남음

S3에 저장해서 Athena로 조회할 수도 있고 CloudWatch Logs에 넣어서 CloudWatch Logs Insights로 조회할수도 있다.

이런저런 경우에는 트래픽 capture 안 함

  • 기본 Amazon DNS server를 사용하는 경우 (custom DNS traffic은 로그 남김)
  • Amazon Windows license activation
  • 169.254.169.254 for EC2 instance metadata
  • 169.254.169.123 for Amazon Time Sync Service
  • DHCP traffic
  • Mirrored traffic
  • Traffic to the VPC router reserved IP address (e.g., 10.0.0.1)
  • Traffic between VPC Endpoint ENI and Network Load Balancer ENI

VPC는 Traffic Mirroring을 사용해서 VPC 트래픽 흐름을 분석할 수 있음.

특정 Source들의 VPC Traffic을 Mirroring을 통해 분석용 애플리케이션등에 보낼 수 있다.

Transit Gateway 등을 사용해서 여러 계정의 VPC Traffic을 한 곳에 모아서 분석할 수 있음.

아래처럼 Guard Duty가 문제를 발견했을 때 자동으로 Mirroring을 설정하고 트래픽 로그를 S3에 넣어서 분석하는 형태도 가능.

VPC Network Access Analyzer

이름 그대로. VPC의 네트워크에 뭔가 문제가 있는지 분석해주는 도구

Route 53 - DNS Query Logging

public에서 오는 DNS queries를 로깅할 수 있다. Only for Public Hosted Zones

CloudWatch Logs에만 로그를 보낼 수 있음

Route 53 - Resolver Query Logging

VPC 내부에서 발생한 모든 DNS queries에 대한 로그를 남김

이건 데이터 여러군데에 보낼 수 있음

  • CloudWatch logs
  • S3
  • Kinesis Data Firehose

Amazon OpenSearch Service

Amazon ElastiSearch의 계승

Public Access로 해놓고 아래 도구로 접근 제한 가능

  • Access Policies
  • Identity-based Policies
  • IP-based Policies

VPC Access로 VPC 내부에서만 접근하게도 가능

아래 2개로 접근 제한 가능

  • Access Policies
  • Identity-based Policies

Subnet, Security Group, VPC Endpoints, ENI, VPN, Transit Gateway 등을 통해서 어쨌든 OpenSearch에 접근해야 사용 가능하다. 접근 자체를 못하면 사용도 못함.

2. Incident Response (사고 대응)