Cloud/Cloud Security

AWS 로그 통합 모니터링(AWS CloudWatch)

burrri 2025. 5. 7. 18:44

AWS Cloud Watch란?

AWS에서 제공하는 자원, 어플리케이션을 모니터링할 수 있는 관리 서비스 

→ 모니터링 자원의 로그, 지표 정보 등을 시각화

 

 

# AWS CloudWatch Agent  metric 지표 수집 및 모니터링

기존의 vpc flow logs, ec2서버의 agent 상태 및 logs, cloudtrail같은 정보들을 cloud watch로 중앙 수집

 

 

# 실습

수집대상이 되는 서버에 aws cloud agent 다운로드

sudo apt update
sudo wget sudo wget https://amazoncloudwatch-agent.s3.amazonaws.com/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

 

 

 

IAM 역할 생성

  • 역할이름 : cloudwatch_agent
  • 신뢰대상 : AWS 서비스
  • 신뢰 서비스 : EC2 
  • 권한 : CloudWatchAgentServerPolicy

 

생성된 IAM권한을 해당 EC2에게 부여해주자.

인스턴스 선택(web-dmz) - 보안 - IAM역할 수정 - 설정 및 저장

이를 통하여 ec2의 로그를 cloudwatch에 넣을 수 있는 권한이 ec2 자체에 생성

 

 

ec2 내부에서 나머지 cloudwatch agent 설치를 이어나가자.

sudo dpkg -i amazon-cloudwatch-agent.deb
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
'''
wizard를 이용한 빠른 agnet 설치 과정
1 ec2에서 진행
1 root로 run
2 daemon 진행 x
2 collectD 사용 x (여러 어플리케이션별 수집 시,1)
1 metric 수집
1 core별 수집
1 ec2정보들 수집
1 instanceID
4 60s
2 metrics standard -> configuration json확인 가능
1 customize setting
2 apache log는 아직..
2
2 SSM 설정여부
'''

 

  • 실행 및 상태확인
# 실행
cd /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

# 상태확인
./amazon-cloudwatch-agent-ctl -m ec2 -a status

 

 

  • 확인

IAM 역할을 통해 PutMetricData 권한을 얻어서 메트릭을 수집해 CloudWatch에 전송하면 다음의 지표를 확인가능하다.

cloudwatch - 모든 지표 - CWAgent

위의 지표들은 CWAgent가 60초 단위(설정단계에서 선택함)로 샘플링해서 올리기 때문에,

거의 실시간에 가깝게 네트워크 트래픽(패킷 수,바이트 수 등) 변화를 모니터링한다. 

 

 

 

# AWS Cloud Watch Agent 웹 로그 수집

ec2에 웹서버 구축

sudo apt install apache2
sudo service apache2 start 
cd /opt/amazon-cloudwatch-agent/bin
sudo vim config.json

 

 

웹로그를 수집하기 위해 aws amazon agent 의 config.json 설정파일 수정

  • /var/log/apach2/access.log에서 로그를 수집
  • agent_apache로그 그룹에 인스턴스 id별로 생성 

 

#agent와 metric사이에 삽입

"logs":{
	"logs_collected" :{
		"files":{
			"collect_list": [
				"file_path":"/var/log/apache2/access.log",
				"log_group_name": "agent_apache",
				"log_stream_name": "{instance_id}",
			]
		}
	}
},

 

 

config파일 수정 후, amazon-cloudwatch-agent-ctl stop 후에 재시작해주면 적용된다. 

  • 시작 후에 로그 그룹에 'agent_apache'가 생성된 것을 확인 가능하다. 

 

 

nikto를 이용하여 웹 공격을 실행해보자. 

nikto는 웹 서버 취약점 스캐닝 도구로써, 다음의 기능을 수행한다. 

  • 취약 URL 탐색
    • admin/, phpinfo.php 등의 디렉터리, 파일 존재 여부를 검사 
    • well-known 취약점 스크립트, 백도어 파일 검색
  • 서버 정보 수집
  • ssl/tls 구성 점검
options 설명 
-h 타겟 주소 설정
-o 출력 결과 설정
-c 타겟 웹 서버의 CGI 디렉터리를 지정
-config 설정 파일 지정
-port 포트 지정
-cookie 쿠키 표시
-ssl ssl을 사용하는 타겟에 사용

 

 

 

웹 스캐너를 통해 공격을 시도한 후에 생성된 로그그룹에서 로그를 확인하면

다음의 로그를 확인할 수 있다. 

 

 

 

# AWS Cloud Watch Agent 대시보드 설정

   :: 중앙수집된 메트릭 지표 및 로그 시각화