[SK shieldus Rookies 19기] 클라우드 기반 취약점 진단 및 대응 실무 3일차

기록하는짱구·2024년 4월 29일
0

SK Shieldus Rookies 19기

목록 보기
36/43
post-thumbnail

📌 2024 클라우드 보안 가이드 (AWS, AZURE, GCP)

https://www.skshieldus.com/kor/support/eventDetail.do?idx=501

4. 운영 관리

4.1 EBS 및 볼륨 암호화 설정

Elastic Block Store

EBS는 EC2 인스턴스 생성 및 이용 시 사용되는 블록 형태의 스토리지 볼륨이며 파일시스템 생성 및 블록 디바이스 사용 등을 할 수 있습니다. 또한 EBS는 AES-256 알고리즘을 사용하여 볼륨 암호화를 지원하며 데이터 및 애플리케이션에 대한 다양한 정보를 안전하게 저장할 수 있게 해줍니다.

4.2 RDS 암호화 설정

RDS는 데이터 보호를 위해 DB 인스턴스에서 암호화 옵션 기능을 제공하며 암호화 시 AES-256 암호화 알고리즘을 이용하여 DB 인스턴스의 모든 로그, 백업 및 스냅샷 암호화가 가능합니다.

4.3 S3 암호화 설정

버킷 기본 암호화 설정은 S3 버킷에 저장되는 모든 객체(파일)를 암호화 되도록 하는 설정이며 Amazon S3 관리형 키(SSE-S3) 또는 AWS KMS 관리형 키(SSE-KMS)로 서버 측 암호화를 사용하여 객체를 암호화합니다.

💡 SSE
server-side encryption

※ S3 버킷 신규 생성 시 기본 암호화 (SSE-S3, SSE-KMS)를 설정할 수 있으며, 버킷에 기본 암호화가 적용된 상태에서 객체가 저장될 경우 하위 객체까지 자동으로 암호화 설정이 가능

4.4 통신구간 암호화 설정

클라우드 리소스를 통해 대/내외 서비스에서 정보를 송, 수신 하는 경우 중간에서 공격자가 패킷을 가로채어 공격에 활용할 수 없도록 통신구간을 암호화하여 설정하여야 합니다.

4.5 CloudTrail 암호화 설정

CloudTrail
→ AWS 계정의 운영 및 위험 감시, 거버넌스 및 규정 준수를 활성화하는데 도움이 되는 AWS 서비스 중 하나인 모니터링 도구

CloudTrail 이 버킷에 제공하는 로그 파일은 Amazon S3 가 관리하는 암호화 키(SSE-S3)를 사용하는 서버 측 암호화를 사용하여 암호화됩니다. 직접 관리할 수 있는 보안 계층을 제공하려면 CloudTrail 로그 파일에 대한 AWS KMS 관리형 키(SSE-KMS)를 사용하는 서버 측 암호화를 대신 사용하면 됩니다.

4.6 CloudWatch 암호화 설정

CloudWatch
→ AWS 내에서 제공되는 서비스, 그 환경에서 돌아가는 프로그램들이 내뱉는 로그를 모아서 관리해주는 도구

Amazon CloudWatch는 Key Management Service(KMS)와 사용자 지정 마스터 키(CMK, Custom Managed Key)를 통해 관리되는 키를 사용하여 로그를 암호화할 수 있습니다.

로그 그룹을 생성할 때나 로그 그룹이 존재하는 경우에는 CMK 를 로그 그룹에 연결하면 로그 그룹 수준에서 암호화가 활성화됩니다. CMK 를 로그 그룹에 연결하고 나면 로그 데이터에서 새로 수집된 모든 데이터를 CMK 를 사용해 암호화할 수 있습니다. 이 데이터는 보존 기간 전반에 걸쳐 암호화된 형식으로 저장됩니다.

4.7 AWS 사용자 계정 로깅 설정

계정 로깅
→ 해당 사용자 계정이 어떻게 사용됐는지 기록해두는 것

AWS CloudTrail 은 계정의 거버넌스, 규정 준수, 운영 및 위험 감사를 활성화하도록 도와주는 서비스로서 사용자, 역할 또는 AWS 서비스가 수행하는 작업들의 이벤트가 기록됩니다.
또한 CloudTrail 은 생성 시 AWS 계정에서 활성화됩니다. 활동이 AWS 계정에서 이루어지면 해당 활동이 CloudTrail 이벤트에 기록됩니다.

4.8 인스턴스 로깅 설정

Amazon CloudWatch Logs 는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스, AWS CloudTrail, Route 53 및 기타 소스에서 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다.

또한, 가상 인스턴스에 에이전트를 설치하여 로그 그룹에 등록된 로그 스트림을 통해 관련 로그를 확인할 수 있습니다.

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html

4.9 RDS 로깅 설정

Amazon CloudWatch Logs 는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스, AWS CloudTrail, Route 53 및 기타 소스에서 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다.

또한, 데이터베이스 옵션(로그 내보내기)을 수정하여 로그 그룹에 등록된 로그 스트림을 통해 RDS 로그를 확인할 수 있습니다.

CloudWatch 쪽으로 RDS의 로그를 보내어 CloudWatch 쪽에서 로그를 분석해 수정할 수 있도록 조치

4.10 S3 버킷 로깅 설정

S3(Simple Storage Service)는 기본적으로 서버 액세스 로그를 수집하지 않으며, AWS Management 콘솔을 통해 S3 버킷에 대한 서버 액세스 로깅을 활성화시킬 수 있습니다.

로깅을 활성화하면 S3 액세스 로그를 사용자가 선택한 대상 버킷에 전달하며 액세스 로그 레코드에는 요청 유형, 요청에 지정된 리소스, 요청을 처리한 날짜 및 시간 등이 포함됩니다.

대상 버킷은 원본 버킷과 동일한 AWS 리전에 존재해야 하며, 서버 액세스 로깅을 활성화 시 설정이 적용될 때까지 몇 시간이 소요될 수 있습니다.

4.11 VPC 플로우 로깅 설정

VPC 플로우 로그는 VPC의 네트워크 인터페이스에서 송∙수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능으로 VPC, 서브넷 또는 네트워크 인터페이스에 생성할 수 있습니다.

플로우 로그는 AWS Management 콘솔의 [VPC] - [플로우 로그] 항목에서 설정 가능하며, 수집된 로그 데이터는 CloudWatch Logs 또는 S3로 저장할 수 있습니다.

4.12 로그 보관 기간 설정

CloudWatch Logs에 저장되는 로그 데이터는 기본적으로 무기한 저장되므로 기업 내부 정책 및 컴플라이언스 준수 등에 부합하도록 로그 데이터 저장 기간을 설정해주어야 하며, AWS Management 콘솔의 CloudWatch 로그 그룹에서 저장 기간 설정이 가능합니다.

국내에서 시행 중인 클라우드 보안인증제에서 보안감사 로그(접근기록 등)는 1년 이상 보존하도록 되어 있으며, 개인정보의 안전성 확보 조치 기준 8조(19.6, 행안부)에서도 개인정보취급자가 개인정보처리시스템에 접속한 기록을 1년 이상 보관·관리하도록 명시되어 있습니다.

4.13 백업 사용 여부

운영중인 클라우드 리소스에 대한 시스템 충돌, 장애 발생, 인적 재해 등 기업의 사업 연속성을 해치는 모든 상황에 대비하기 위해 백업 서비스를 구성해야 데이터를 안전하게 보관할 수 있습니다.

이에 보안 담당자 및 관리자는 클라우드 리소스에 대한 백업을 설정하여 데이터 손실을 방지 할 수 있도록 정책을 수립하고 관리하여야 합니다.

4.14 EKS Cluster 제어 플레인 로깅 설정

Amazon EKS 제어 플레인 로깅은 Amazon EKS 제어 플레인에서 계정의 CloudWatch Logs로 직접 감사 및 진단 로그를 제공합니다. 이러한 로그를 사용하면 Cluster를 쉽게 보호하고 실행할 수 있습니다.

필요하고 정확한 로그 유형을 선택할 수 있으며 로그는 CloudWatch의 각 Amazon EKS Cluster에 대한 그룹에 로그 스트림으로 전송됩니다.

4.15 EKS Cluster 암호화 설정

Kubernetes 비밀(Secret)은 비밀번호, 토큰, 키와 같은 소량의 민감한 데이터를 포함하는 객체이며 기본적으로 API 서버의 기본 데이터 저장소(etcd)에 암호화되지 않은 상태로 저장됩니다.

etcd 액세스 권한을 포함해 API 액세스 권한이 있는 사람은 누구나 비밀을 검색하거나 수정할 수 있으며 또한 네임스페이스에 포드를 생성할 권한이 있는 사람은 누구나 해당 액세스 권한을 사용하여 해당 네임스페이스에 있는 보안 비밀을 읽을 수 있습니다.

비밀 암호화가 활성화된 Cluster에 저장된 모든 Kubernetes 비밀은 사용자가 제공한 AWS KMS 키로 암호화됩니다.

또한, AWS KMS로 비밀 암호화를 사용 시에는 Cluster와 동일한 리전에 암호화 키를 생성하거나 기존 키를 사용할 수 있습니다.

📌 CloudTrail

https://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/cloudtrail-user-guide.html

✔ AWS 계정 관리, 규정 준수, 운영 및 위험 감사를 지원하는 서비스

✔ 기록된 정보를 참고하여 사용자, 역할, 서비스에 수행한 작업에 대한 정보 검토

✔ 이벤트에는 AWS Management Console, AWS Command Line Interface 및 AWS SDK, API에서 수행되는 작업들이 포함

✔ AWS에서 서비스하고 있는 모든 행위의 이벤트를 모아 분석, 리소스 변경 추적 등 가능

✔ 리전 당 5개의 추적 생성 가능

✔ CloudTrail 이벤트 종류

관리 이벤트
계정 리소스에서 수행되는 관리 작업에 대한 정보 제공

데이터 이벤트
리소스에서 수행되는 리소스 작업의 정보 제공

Insights 이벤트
계정에서 발생된 비정상적인 활동 기록

📌 CloudWatch

https://aws.amazon.com/ko/cloudwatch/

✔ AWS의 자원과 애플리케이션을 모니터링 할 수 있는 관리 서비스로, 모니터링 하는 모든 자원의 로그와 지표 정보들을 수집하여 시각화

✔ 지표란 "언제" 어떤 "항목"의 "값"이 무엇이었는지를 기록한 값. 예를 들어, EC2 인스턴스의 CPU 사용량, 네트워크 전송량, Auto Scaling 그룹이 관리하는 인스턴스 수 등의 값들이 지표로 남음

✔ CloudWatch Logs

로그 이벤트
로그를 기록하는 애플리케이션이나 자원에서 로그를 기록한 줄의 모음

로그 스트림
동일한 소스에서 기록된 로그 이벤트들을 시간순으로 모아둔 스트림

로그 그룹
동일한 보존 기간, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 그룹을 정의

✔ 특정 기준이 충족되면 Amazon EC2 인스턴스를 중지, 시작 또는 종료하도록 경보 작업 구성 가능

📌 CloudTrail 추적 생성

설정한 내용을 확인하고 [추적 생성] 버튼 클릭

추적이 생성된 것을 확인

로그 그룹이 생성된 것을 확인

S3 버킷이 생성된 것을 확인

📌 기본 VPC 생성

📌 VPC-Flow-Logs 설정

IAM 정책 생성

IAM 정책
→ 로그 그룹, 로그 스트림 등을 만드는 역할을 하는 정책

IAM 역할 생성

내용 확인 후 [역할 생성] 버튼 클릭

Service 항목을 vpc-flow-logs.amazonaws.com 로 변경한 후 [정책 업데이트] 버튼 클릭

CloudWatch 로그 그룹 생성

VPC 플로우 로그 생성

첫번째 가용영역에 만들어진 서브넷에 플로우 로그 설정

📌 CloudWatch에 CloudTrail 관련 로그 스트림이 생성되었는지 확인

📌 EC2 인스턴스에 CloudWatch Agent 설치

EC2 인스턴스 생성

나머지 설정을 그대로 유지한 상태에서 [인스턴스 시작] 버튼 클릭

역할 생성

나머지 설정을 확인하고 [역할 생성] 버튼 클릭

EC2 인스턴스에 역할 부여(수정)

EC2 인스턴스에 CloudWatch Agent 설치

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html

패키지 다운로드 링크 확인

패키지 다운로드

ubuntu@ip-172-31-36-0:~$ wget https://amazoncloudwatch-agent.s3.amazonaws.com/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

패키지 설치

ubuntu@ip-172-31-36-0:~$ sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

에이전트 설정

ubuntu@ip-172-31-36-0:~$ cd /opt/aws/amazon-cloudwatch-agent/bin/
ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo ./amazon-cloudwatch-agent-config-wizard

================================================================
= Welcome to the Amazon CloudWatch Agent Configuration Manager =
=                                                              =
= CloudWatch Agent allows you to collect metrics and logs from =
= your host and send them to CloudWatch. Additional CloudWatch =
= charges may apply.                                           =
================================================================
On which OS are you planning to use the agent?
1. linux <<
2. windows
3. darwin
default choice: [1]:
1
Trying to fetch the default region based on ec2 metadata...
I! imds retry client will retry 1 timesAre you using EC2 or On-Premises hosts?
1. EC2 <<
2. On-Premises
default choice: [1]:
1
Which user are you planning to run the agent?
1. cwagent 
2. root <<
3. others
default choice: [1]:
2
Do you want to turn on StatsD daemon?
1. yes
2. no <<
default choice: [1]:
2
Do you want to monitor metrics from CollectD? WARNING: CollectD must be installed or the Agent will fail to start
1. yes
2. no << 
default choice: [1]:
2
Do you want to monitor any host metrics? e.g. CPU, memory, etc.
1. yes <<
2. no
default choice: [1]:
1
Do you want to monitor cpu metrics per core?
1. yes
2. no <<
default choice: [1]:
2
Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
1. yes <<
2. no
default choice: [1]:
1
Do you want to aggregate ec2 dimensions (InstanceId)?
1. yes
2. no <<
default choice: [1]:
2
Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.
1. 1s
2. 10s
3. 30s
4. 60s <<
default choice: [4]:
4
Which default metrics config do you want?
1. Basic
2. Standard <<
3. Advanced
4. None
default choice: [1]:
2
Current config as follows:
{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "root"
        },
        "metrics": {
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "cpu": {
                                "measurement": [
                                        "cpu_usage_idle",
                                        "cpu_usage_iowait",
                                        "cpu_usage_user",
                                        "cpu_usage_system"
                                ],
                                "metrics_collection_interval": 60,
                                "totalcpu": false
                        },
                        "disk": {
                                "measurement": [
                                        "used_percent",
                                        "inodes_free"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "diskio": {
                                "measurement": [
                                        "io_time"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "swap": {
                                "measurement": [
                                        "swap_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}
Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.
1. yes
2. no
default choice: [1]:
1
Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) configuration file to import for migration?
1. yes
2. no
default choice: [2]:
2
Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:
2
Do you want the CloudWatch agent to also retrieve X-ray traces?
1. yes
2. no
default choice: [1]:
2
Existing config JSON identified and copied to:  /opt/aws/amazon-cloudwatch-agent/etc/backup-configs
Saved config file to /opt/aws/amazon-cloudwatch-agent/bin/config.json successfully.
Current config as follows:
{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "root"
        },
        "metrics": {
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "cpu": {
                                "measurement": [
                                        "cpu_usage_idle",
                                        "cpu_usage_iowait",
                                        "cpu_usage_user",
                                        "cpu_usage_system"
                                ],
                                "metrics_collection_interval": 60,
                                "totalcpu": false
                        },
                        "disk": {
                                "measurement": [
                                        "used_percent",
                                        "inodes_free"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "diskio": {
                                "measurement": [
                                        "io_time"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "swap": {
                                "measurement": [
                                        "swap_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}
Please check the above content of the config.
The config file is also located at /opt/aws/amazon-cloudwatch-agent/bin/config.json.
Edit it manually if needed.
Do you want to store the config in the SSM parameter store?
1. yes
2. no
default choice: [1]:
2
Program exits now.

에이전트 실행

ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo mkdir -p /usr/share/collectd/
ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo touch /usr/share/collectd/types.db
ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo ./amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

****** processing amazon-cloudwatch-agent ****ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo mkdir -p /usr/share/collectd/
ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo touch /usr/share/collectd/types.db
ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo ./amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s**
I! Trying to detect region from ec2 D! [EC2] Found active network interface I! imds retry client will retry 1 timesSuccessfully fetched the config and saved in /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp
Start configuration validation...
2024/04/29 05:45:09 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp ...
2024/04/29 05:45:09 I! Valid Json input schema.
2024/04/29 05:45:09 D! ec2tagger processor required because append_dimensions is set
2024/04/29 05:45:09 D! delta processor required because metrics with diskio or net are set
2024/04/29 05:45:09 D! ec2tagger processor required because append_dimensions is set
2024/04/29 05:45:09 Configuration validation first phase succeeded
I! Detecting run_as_user...
I! Trying to detect region from ec2
D! [EC2] Found active network interface
I! imds retry client will retry 1 times
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -schematest -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
Configuration validation second phase succeeded
Configuration validation succeeded
amazon-cloudwatch-agent has already been stopped
Created symlink /etc/systemd/system/multi-user.target.wants/amazon-cloudwatch-agent.service → /etc/systemd/system/amazon-cloudwatch-agent.service.
ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$

CloudWatch에서 사용자 지정 네임 스페이스에 CWAgent 지표가 추가되었는지 확인

EC2 인스턴스의 웹 서버 접속 로그를 CloudWatch로 전달

EC2 인스턴스에 아파치 웹 서버 설치

ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo apt-get install -y apache2

로그 그룹 생성

CloudWatch Agent 설정 변경

ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ ls
CWAGENT_VERSION          amazon-cloudwatch-agent-config-wizard  config-downloader  config.json
amazon-cloudwatch-agent  amazon-cloudwatch-agent-ctl            config-translator  start-amazon-cloudwatch-agent

ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo vi config.json
{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "root"
        },
        "logs": {
                "logs_collected": {
                        "files": {
                                "collect_list": [
					{
                                        "file_path": "/var/log/apache2/access.log",
                                        "log_group_name": "rookies_inst_ec2_web_logs",
                                        "log_stream_name": "access_logs"
					}
                                ]
                        }
                }
        },
        "metrics": {
		... (생략) ...

에이전트 종료 후 재시작

ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo ./amazon-cloudwatch-agent-ctl -m ec2 -a stop

****** processing amazon-cloudwatch-agent ******

ubuntu@ip-172-31-36-0:/opt/aws/amazon-cloudwatch-agent/bin$ sudo ./amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file://opt/aws/amazon-cloudwatch-agent/bin/config.json -s

****** processing amazon-cloudwatch-agent ******
I! Trying to detect region from ec2 D! [EC2] Found active network interface I! imds retry client will retry 1 timesSuccessfully fetched the config and saved in /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp
Start configuration validation...
2024/04/29 06:06:44 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp ...
2024/04/29 06:06:44 I! Valid Json input schema.
2024/04/29 06:06:44 D! ec2tagger processor required because append_dimensions is set
2024/04/29 06:06:44 D! delta processor required because metrics with diskio or net are set
2024/04/29 06:06:44 D! ec2tagger processor required because append_dimensions is set
2024/04/29 06:06:44 Configuration validation first phase succeeded
I! Detecting run_as_user...
I! Trying to detect region from ec2
D! [EC2] Found active network interface
I! imds retry client will retry 1 times
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -schematest -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
Configuration validation second phase succeeded
Configuration validation succeeded
amazon-cloudwatch-agent has already been stopped

CloudWatch에서 아파치 접속 로그 확인

📌 대시보드 설정

📌 경보(alert) 설정

설정 내용 확인 후 [경보 생성] 버튼 클릭

구독 승인 안내 메일 수신 여부 확인 후 구독 승인 처리

경보 확인

📌 대시보드에 경보 추가

📌 S3로 전송

버킷에 폴더 생성

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "AWSCloudTrailAclCheck20150319-0882ce1a-2d45-4557-a10a-f7a7a316ebb3",
			"Effect": "Allow",
			"Principal": {
				"Service": "cloudtrail.amazonaws.com"
			},
			"Action": "s3:GetBucketAcl",
			"Resource": "arn:aws:s3:::rookies-inst-cloudtrail-logs",
			"Condition": {
				"StringEquals": {
					"AWS:SourceArn": "arn:aws:cloudtrail:ap-northeast-2:471112797705:trail/rookies_inst_cloudtrail"
				}
			}
		},
		{
			"Sid": "AWSCloudTrailWrite20150319-69bc4745-723c-456f-bdc4-6bbafbc3e7fd",
			"Effect": "Allow",
			"Principal": {
				"Service": "cloudtrail.amazonaws.com"
			},
			"Action": "s3:PutObject",
			"Resource": "arn:aws:s3:::rookies-inst-cloudtrail-logs/AWSLogs/471112797705/*",
			"Condition": {
				"StringEquals": {
					"s3:x-amz-acl": "bucket-owner-full-control",
					"AWS:SourceArn": "arn:aws:cloudtrail:ap-northeast-2:471112797705:trail/rookies_inst_cloudtrail"
				}
			}
		},
		{
			"Effect": "Allow", 
			"Principal": {
				"Service": "logs.ap-northeast-2.amazonaws.com"
			},
			"Action": "s3:GetBucketAcl",
			"Resource": "arn:aws:s3:::rookies-inst-cloudtrail-logs"
		}, 
		{
			"Effect": "Allow", 
			"Principal": {
				"Service": "logs.ap-northeast-2.amazonaws.com"
			},
			"Action": "s3:PutObject",
			"Resource": "arn:aws:s3:::rookies-inst-cloudtrail-logs/vpc-flow-logs/*",
			"Condition": {
				"StringEquals": {
					"s3:x-amz-acl": "bucket-owner-full-control"
				}
			}
		}
	]
}

CloudWatch에서 로그 그룹을 S3 버킷으로 전달

S3 버킷 확인

📌 리소스 정리

EC2 인스턴스 종료 및 키페어 삭제

SNS 구독 삭제 후 주제 삭제

CloudWatch 경보 삭제

VPC 삭제

CloudTrail 추적 삭제

CloudWatch 로그 그룹과 대시 보드 삭제

S3 버킷 비우고 삭제

IAM 역할, 정책 삭제

0개의 댓글