멘토의 조언을 이해하고, 왜 그것을 해야하는지 이해하는 것부터 시작.
1. Terraform 활동 전략 이해 관련
**AWS_WAFv2_ip_Set?** -> 문자 그대로, 블랙리스트 명단(IP Set)이라는 빈 저장소를 먼저 만들어두는 것.
해당 저장소에는 ID가 부여되며, 이 ID를 환경변수로서 저장한다.
Lambda 함수는 해당 환경변수를 참조한 후, IP set의 업데이트를 진행할 수 있게 된다.
(차단할 IP 명단을 직접 적는 하드코딩은 보안상 좋지 않고, 유지보수가 어려움)
**AWS_cloudwatch_event_rule & AWS_lambda_permission**:
eventbridge와 lambda를 어떻게 연결할 수 있는가? 라는 질문에 대한 해답.
GuardDuty가 경보 발생 -> 그러면 Lambda가 작동
=> 상기한 메커니즘의 자동화 스위치를 작동시키는 것.
핵심: aws_lambda_permission은 외부 신호인 Eventbridge가 lambda를 실행할 수 있도록 권한을 부여하는 보안 절차이다.
링크 1: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule
링크 2: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/wafv2_ip_set
2. Lambda 로직 이해 관련
**JSON 이벤트 구조 파악** -> 실제로 차단하는 동작은 python 코드에 의해 수행된다.
GuardDuty는 장문의 JSON 텍스트를 송신하며, 해당 텍스트 중에서 공격자의 IP는 하단의 주소에서 확인할 수 있다: detail.service.action.networkConnectionAction.remoteIpDetails.ipAddressV4
해당 경로를 따라간 후, 공격자 IP라는 변수만 빼낸다.
**boto3 라이브러리 활용**:
get_ip_set(): 현재 WAF에 등록된 기존 블랙리스트 명단을 불러온다.
update_ip_set(): 불러운 기존 명단에, 방금 찾은 신규 공격자 IP를 추가한 후 다시 저장한다.
상기한 과정을 정리한 의사코드 작성
[1. 위협 탐지] GuardDuty가 EC2 인스턴스에 대한 공격 탐지
[2. 이벤트 라우팅] EventBridge Rule이 GuardDuty 이벤트 감지
[3. 데이터 수신 및 검증] Lambda 함수가 GuardDuty Finding JSON 수신
[4. 공격자 정보 추출] 다음의 JSON 경로 탐색: detail.service.action.networkConnectionAction.remoteIpDetails.ipAddressV4
[5. 환경 설정 로드] 환경 변수에서 WAF 설정 정보 로드
[6. 중복 확인]
[7. IP 목록 업데이트]
[8. 결과 로깅]
[9. 차단 적용]
'AI스쿨 - 클라우드 시큐리티' 카테고리의 다른 글
| 클라우드 시큐리티 261014 - 7주 2일차 (0) | 2026.01.14 |
|---|---|
| 클라우드 시큐리티 261013 - 7주 1일차 (0) | 2026.01.13 |
| 클라우드 시큐리티 6주차 과제(260107) (0) | 2026.01.08 |
| 클라우드 시큐리티 6주차 과제(260104) (0) | 2026.01.05 |