클라우드 책에서 배운 지식들도 써먹을 겸, OWASP 에서 진행한 오픈소스 허니팟을 AWS를 사용해서 배포하였다.
프로젝트는 아래 링크에 있다.
https://github.com/OWASP/Honeypot-Project
동작 구성
1. Modsecurity 라는 WAF의 룰셋을 사용해 공격 로그 수집.
2. 로그들의 분석과 시각적 표현을 위해서 ELK Stack 으로 로그 정보 전송
3. ELK Stack 에서 로그데이터를 꺼내 분석할 수 도 있음.
4. 모든 로그는 최종적으로 MISP 로 전송되어 공유됨.
구상 인프라
- 가용성을 고려해야할 서비스는 아니기 때문에 다중 az나 autoscailing을 사용하지는 않았다.
- Modsecurity 및 Apache 웹서버는 오픈소스에 ECS용 작업 정의 json 파일이 존재하여 ECS에 배포하였다.
- 해당 ECS에 Cloudwatch logs 연결하여 로그를 따로 수집하였다.
추후 인프라 수정 및 추가 사항
- DDos 공격 및 리소스에 대한 공격에 대비하여 CloudWatch 경보를 통해 일정 CPU 사용량을 Watch 하여
ECS 작업이나 해당 클러스터를 Terminate 할 수 있는 인프라 구성
- 쌓여가는 로그들을 주기적으로 s3 로 전송하는 Batch 작업 구성
AWS CLI 를 통해 ECS 클러스터 작업 생성 및 해당 작업에 자격 증명이 있는 IAM 역할 생성 과정
우선적으로 ECS 작업 생성 전에 해당 작업을 Execute 할 권한이 있는 IAM 역할을 생성해준다.(최소권한)
AWS 페이지 -> [IAM] 콘솔창에서 [액세스 키 관리] 클릭
액세스 키 만들기 클릭하여 Excel 파일 열어서 Key값 확인
해당 자격 증명으로 aws configure 명령 실행시켜서 인증
ubuntu@ubuntu:~$ aws configure
AWS Access Key ID [] :
AWS Secret Access Key [] :
리전 선택 :
Output format 선택 : none
IAM Policy File을 아래와 같이 생성 후 저장 (확장자 json)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
ECS Execution 권한이 있는 IAM Policy File 을 사용해 CLI 명령으로 IAM 역할 생성
위의 Policy file 이용하여 ecsTaskExecutionRole 이라는 이름의 IAM 역할 생성
aws iam create-role \
--role-name ecsTaskExecutionRole \
--assume-role-policy-document file://{{위에서 만든 Policy File}}.json
AWS 관리형 AmazonECSTaskExecutionRolePolicy 정책을 내가 만든 ecsTaskExecutionRole 역할에 연결
aws iam attach-role-policy \
--role-name ecsTaskExecutionRole \
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
연결 후에 IAM 콘솔에 접속하면 생성된 역할의 ARN 확인이 가능합니다.
해당 ARN을 복사하여 OWASP 프로젝트의 aws-ecs-container-definition.json 파일에서
executionRoleArn 의 Value 부분에 붙혀넣기 해주면, 내가 위에서 만든 IAM 역할로 실행하는 ECS 작업을 생성하는
json 파일이 완성됩니다.
작업 및 로그그룹 만들기 명령어를 통해 작업과 로그 그룹을 만들어 준다.
aws ecs register-task-definition --cli-input-json "$(cat aws-ecs-container-definition.json | tr '\n' ' ')"
aws logs create-log-group --log-group-name "/ecs/honeytrap-modsec"
이 밑의 README 부분은 aws cli 로 ecs 클러스터를 설정해주는 부분인데, 그냥 콘솔로 하는게 빠르다.
ECS 콘솔 접속해서, [클러스터 생성] 과정을 통해 클러스터 생성 후 작업을 연결해주기만 하면 완성!
작업이 정상적으로 연결되면, 아래와 같이 Running 상태가 된다.
Running 중인 웹 서버에 접속하고,
Kibana 서버에서 로그를 확인해보면 아래와 같이 정상적으로 접속 로그와 Payload 가 찍힌다.
'AWS' 카테고리의 다른 글
ALB를 사용한 로드 밸런싱 (0) | 2022.08.30 |
---|---|
AWS Certified Solutions Architect - Associate[AWS-SAA] 합격 후기 (0) | 2022.08.23 |