AWS 클라우드 환경에서 Webapp에서 공격이 가끔 들어와서 캡차기능을 검토하기 위해 정리하는 블로깅
보통 AWS WAF(Web Application Firewall)와 CloudFront를 활용하는 방식이 효과적이다.
✅ 적용흐름
Client → CloudFront → AWS WAF → ALB → Spring Boot
1. 공격 패턴 감지
- AWS WAF의 WebACL 또는 CloudWatch Logs에서 특정 공격 패턴(예: IP 주소, User-Agent, 요청 속도 등)을 감지.
2. WAF 에서 캡챠 활성화
- 특정 조건(공격 패턴에 부합)에 해당하는 요청에 대해 WAF에서 캡차를 활성화.
3. 사용자 요청인증
- 사용자가 캡차를 통과하면 정상적으로 요청 처리.
4. CloudFront 캐싱으로 효율성 유지
- 정상 요청은 CloudFront에서 캐싱하여 성능 최적화.
✅ 구현 단계
CloudFront와 WAF 구성
1. CloudFront 배포에 WAF 연결
- AWS CloudFront에서 WAF WebACL을 설정하여 모든 요청이 WAF를 통해 필터링
2. WAF WebACL 규칙 생성
- 공격 패턴(예: IP, User-Agent, URL 경로, 요청 속도 등)에 따라 차단 규칙 추가.
- 캡차 활성화 규칙 설정
✅ 캡차 활성화 규칙
AWS WAF에서 CAPTCHA를 활성화하려면 WebACL에 조건을 설정한다.
1. IP 기반 공격 감지
- 동일한 IP에서 짧은 시간 동안 과도한 요청 발생 시 캡차 적용.
- WAF 규칙 예제
- ex) 조건: 1분 내 동일 IP에서 100개 이상의 요청 발생. -> 캡차 활성화.
2. URL 경로 기반 탐지
- 특정 경로(예: /login)에서 비정상적인 요청 패턴 감지.
- WAF 규칙 예제:
- ex) 조건: /login URL에 대해 반복적인 요청 발생. -> 캡차 활성화.
3. User-Agent 기반 탐지
- 봇이나 공격 도구에서 생성된 User-Agent를 탐지.
- WAF 규칙 예제
- ex) 조건: User-Agent에 "curl" 또는 "bot" 포함.-> 캡차 활성화.
✅ CloudWatch와 Lambda 연동(옵션)
- CloudWatch에서 추가 패턴 감지(동적으로 설정가능)
- CloudFront 또는 ALB 로그를 CloudWatch Logs에 전송.
- 특정 공격 패턴(예: 반복된 5xx 에러, 공격적인 User-Agent) 감지.
- Lambda로 WAF 규칙 업데이트:
- CloudWatch Alarm 발생 시 Lambda를 트리거.
- Lambda가 WAF의 IPSet 또는 WebACL에 새로운 규칙 추가(캡차 적용).
✅ web 에서의 추가 처리
1. Spring Boot 애플리케이션에서 상태 확인
- WAF에서 캡차를 통과한 요청만 web으로 전달.
- 애플리케이션은 이미 인증된 요청만 처리.
2. 비정상 요청 로깅
- Spring Boot에서 WAF를 우회한 요청을 로깅하여 추가 분석:
✅ 장애 탐지 및 캡차 활성화 흐름
1. 클라이언트 요청 발생
↓
2. CloudFront → WAF로 요청 전달
↓
3. WAF 규칙에서 비정상 패턴 탐지 - 반복적인 요청(IP, URL, User-Agent 기반). - WAF CAPTCHA 활성화.
↓
4. 사용자 캡차 통과 시 요청 허용
↓
5. 정상 요청은 web(Spring Boot)으로 전달
✅ 추가 보안 및 확장
- WAF와 Bot Control 통합
- AWS WAF에서 Bot Control 기능 활성화 → 캡차 적용 외에도 비정상적인 봇 활동을 차단.
- CloudFront 캐싱 최적화
- 정상 요청은 CloudFront에서 캐싱하여 WAF 부하 감소.
- 사용자 정의 캡차
- Spring Boot에서 사용자 정의 캡차 로직 추가(필요한 경우) → WAF 캡차를 보완하여 추가 인증.
✅ 비용 및 고려사항
- CloudFront 및 WAF 비용:
- CloudFront 요청 수와 데이터 전송량에 따라 비용 발생.
- WAF는 요청 수와 규칙 수에 따라 과금.
- Lambda 비용:
- 요청 수에 따라 미미한 비용 발생.
- 정확한 탐지 조건 설정:
- 잘못된 탐지(오탐)가 발생하지 않도록 패턴 정의를 명확히.
✅ 결론
web에서 공격 탐지 후 캡차를 적용하려면:
- AWS WAF를 활용하여 WebACL에 조건을 설정후 → 비정상 패턴 탐지 하여 캡차 활성화.
- (옵션) CloudWatch Logs + Lambda를 통해 동적인 WAF 규칙 업데이트.
- 정상 요청은 web으로 전달하여 성능 저하 없이 보안을 강화.
'IT' 카테고리의 다른 글
[AWS] ECS vs EKS (0) | 2024.11.24 |
---|---|
[AWS] 내맘대로 AWS Cloud 구축/설계하기(2) (0) | 2024.11.23 |
[AWS] 내맘대로 AWS Cloud 구축/설계하기(1) (1) | 2024.11.22 |
[AWS] S3 Mount vs Storage (0) | 2024.11.03 |
초거대 AI 시대, 개발자의 운명은... (0) | 2024.03.15 |