자원 모니터링 및 보안 로그 관리
# CW를 활용한 로그수집
클라우드쉘 진입 >> 인스턴스 접속 >> cd /var/log/ >>
사용자 권한 변경 >> agent 설치 >>
sudo dnf install -y amazon-cloudwatch-agent
sudo systemctl enable --now amazon-cloudwatch-agent.service
# 로그 저장소 권한 변경
[ec2-user@ip-10-0-1-110 log]$ sudo chown -R ec2-user:ec2-user httpd
[ec2-user@ip-10-0-1-110 log]$ cd httpd
[ec2-user@ip-10-0-1-110 httpd]$ ls
access_log error_log
# 데이터 가공 설정
sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# 붙여넣기 방법
:set paste
i
:wq!
# 아래 코드 삽입
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/httpd/access_log",
"log_group_name": "/aws/httpd/access",
"log_stream_name": "{instance_id}",
"timestamp_format": "%d/%b/%Y:%H:%M:%S %z",
"multi_line_start_pattern": "^[\\d]{1,3}\\."
},
{
"file_path": "/var/log/httpd/error_log",
"log_group_name": "/aws/httpd/error",
"log_stream_name": "{instance_id}",
"timestamp_format": "%a %b %d %H:%M:%S.%f %Y"
}
]
}
}
}
}
# IAM 역할 권한 추가
IAM >> 역할 >> CloudWatchFullAccess 권한 추가
>> 인스턴스 >> 작업 >> 보안 >> IAM 역할수정 >>
>> ec2-role 선택 >> 업데이트
# 에이전트 재기동
sudo systemctl restart amazon-cloudwatch-agent.service
# 웹서비스 재기동
sudo systemctl restart httpd
# 인스턴스 로그 수집 추가 등록
ssh ssm start-session --target i-0bc40e419740dc3fa
sudo dnf install -y amazon-cloudwatch-agent
sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
sudo systemctl restart amazon-cloudwatch-agent.service
sudo systemctl enable --now amazon-cloudwatch-agent.service
취약점 점검 도구를 이용한 네트워크 및 호스트 보안 점검
# Nessus (유료)
# OPENVAS (무료 - 평가판)
# Amazone Inspector (AWS에서 제공)
# 클래식 : 이전버전
>> EC2의 취약점 에이전트 설치 필요
활성화 : 최신 버전
>> 에이전트 설치 불필요
>> Amazone Inspector 진입 >> 활성화 or Classic 메뉴 >>
inspector 활성화(평가판) >>
# 결과 분석 결과
- 취약성별
- 인스턴스
- 컨테이너 이미지
- 컨테이너 리포지토리
- Lambda 함수
# EC2 스캔설정
- 스캔 모드
- 심층 검사
클라우드 보안 관리 및 운영
웹방화벽 구축 및 DVWA 도커 웹 컨테이너 취약점 진단
- WAF : rule, signature, CVS 등 리소스를 통해 서비스 보호
- 웹 ACL
- CDN
- ALB 생성 필요
- DVWA (공격점검 도구 : 도커)
>> 인스턴스 진입 >> 인스턴스 시작 >> 이름 : docker
>> 스토리지 >> 고급 >> 볼륨 >> 암호화됨 >> 키값 선택
>> 고급 세부 정보 >> 도메인 조인 디렉토리(AD : 인증서버)
>> IAM 인스턴스 프로파일 : ec2-role 선택 >>
사용자 데이터 >> 도커 설치 스크립트 삽입
실습
dvwa install scripts
#!/bin/bash
timedatectl set-timezone Asia/Seoul
dnf install -y docker
systemctl enable --now docker
docker run -d -p 80:80 --restart always --name dvwa vulnerables/web-dvwa
DVWA 접속
http://docker.innerinfo.cloud
# 초기 계정
admin / admin
# 데이터베이스 셋팅 후 비번 변경됨
admin / password
# 차단실습 : SQL injection 공격
# 인증서 발급
>> certification 생성 >> *.innerinfo.cloud
Amazon Route 53에서 DNS 레코드 생성 >> 레코드 생성
# 도커 DVWA 를 ALB 연결
헬스체크가 실패 : / 로 헬스체크 >> index.php 라서 실패
# 대상그룹이 단일서버일때는 서비스 라우팅 됨
AWS WAF 설치
# 베이직 - 무료
# Step 1
>> WAF & Sheild >> WEB ACLs >> Seoul 리전 확인 >>
Create web ACL 클릭 >> Step 1. 리소스타입 선택 >>
name : my-waf >> Associated AWS resources (연동)
>> add AWS resources 클릭 >>
Resource type : Application Load Balancer >> my-alb 체크
>> ADD >> 체크확인 >> Next click >>
# Step 2
Rules >> Add managed rule groups 선택 >> AWS managed rule groups
>> SQL database 활성화 : Add to web ACL 클릭
# Step 3
>> Add rules and rule groups >> Default action : Allow 확인
# Step 4
>> Set rule priority >> Next
# Step 5
Review and create web ACL >> Create web ACL
# 검증
>> my-waf >> Associated AWS resources : my-waf 확인
AWS WAF IP 차단방법
# IPset 설정
>> ipset >> Create IP set >> ipv4 >> 1.11.90.40/32
>> Create IP set 클릭
# ACLs 설정
AWS WAF >> Web ACLs >> my-waf >> add rule >> ip set 선택
>> ip-block 작성 >> ip set 선택 >> Source IP >> Block >>
ADD rule
WAF Cloudwatch 연동
Web ACLs >> my-waf >> Traffic overview