AI스쿨 - 클라우드 시큐리티

클라우드 시큐리티 261020 - 8주 1일차

업염화 2026. 1. 21. 00:13

멘토의 조언을 이해하고, 왜 그것을 해야하는지 이해하는 것부터 시작.

 

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. 차단 적용]