AWS WAF - Web Application Firewall
- 7계층에서 일어나는 웹 취약점 공격을 보호
HTTP 취약점
- WAF의 배포
- ALB (NLB X)
- API Gateway
- CloudFront
- AppSync GraphQL API
- Cognito 사용자 풀
- WAF 배포 이후 ACL(웹 액세스 제어 목록)과 규칙을 정의
- IP set: IP 주소를 기반으로 필터링
IP 세트를 정의할 수 있고 각 IP 세트는 최대 10,000개의 IP 주소를 가질 수 있다.
더 많은 IP 주소가 필요하면 규칙을 여러 개 두면 된다.
- HTTP 헤더, 바디에 기반해 필터링
URI 문자열을 조건으로 두어 SQL 주입, XSS(크로스 사이트 스크립팅) 등의 일반적인 공격을 차단.
- 용량에 제약을 걸어 요청이 최대 2MB를 넘지 않게 하기
- 지역 일치 조건을 두어 특정 국가를 허용 또는 차단하기
- 속도 기반 규칙을 설정해 IP당 요청 수를 측정해 디도스 공격 막기
- 웹 ACL은 리전에만 적용되고 CloudFront는 글로벌로 정의된다.
- 규칙 그룹
여러 웹 ACL에 추가할 수 있는 재사용 가능한 규칙 모음(규칙 정리)
WAF 사용 사례
- 애플리케이션에 고정 IP를 사용해 LB와 함께 WAF를 사용하고 싶은 경우
- WAF는 NLB를 지원하지 않는다. (NLB는 4계층이다. WAF는 7계층)
- WAF를 제공하려면 ALB가 있어야 함.
- 그러나 ALB는 고정 IP가 없음.
- AWS Global Accelerator로 고정 IP를 할당 받은 후 ALB에서 WAF를 활성화하면 된다.

- ALB와 EC2 인스턴스가 있는 리전
- Global Accelerator를 ALB 앞에 두고 애플리케이션에서 사용할 고정 IP를 얻는다.
- 그리고 WAF와 웹 ACL을 연결(ALB와 동일한 리전에 배치)
AWS Shield
- DDoS 공격으로부터 보호
DDoS(Distributed Ednial of Service): 분산 서비스 거부 공격
- AWS Shield Standard 서비스
- 모든 AWS 사용자에게 무료로 활성화되어 있는 서비스
- SYN/UDP Floods나 반사 공격 및 L3/L4 공격으로부터 고객을 보호
- AWS Shield Advanced
- 선택적으로 제공되는 디도스 완화 서비스
조직당 월 3,000$
- 더 정교한 디도스 공격을 막아준다
EC2, ELB, CloudFront, Global Accelerator, Route 53을 보호
- AWS 디도스 대응 팀이 항시 대기
- 디도스 공격으로 인한 요금 상승을 AWS Shield 어드밴스드를 통해 방지
- 자동 애플리케이션 계층(7계층) 디도스 완화도 제공
자동으로 WAF 규칙을 생성, 평가, 배포해 7계층 공격 완화에 도움
즉, WAF이 L7에서 일어나는 디도스 공격을 완화하는 규칙을 자동으로 갖게 된다.
AWS Firewall Manager
- 중앙 집중식 보안 관리 제공
- AWS Organizations에 있는 모든 계정의 방화벽 규칙을 관리
여러 계정의 규칙을 동시에 관리할 수 있다.
- 보안 규칙의 집합인 보안 정책을 설정할 수 있다.
ALB, API Gateway, CloudFront 등에 적용되는 WAF 규칙이나
ALB, NLB, Elastic IP, CloudFront를 위한 AWS Shield 어드밴스드 규칙 등이 포함된다.
또 EC2, ALB, VPC의 ENI 리소스를 위한 보안 그룹을 표준화하는 보안 정책과 VPC 수준의 AWS Network Firewall도 해당된다.
그리고 Route 53 Resolver DNS Firewall도 포함된다.
- AWS Firewall Manager는 이와 같은 모든 방화벽을 한 곳에서 관리할 수 있도록 지원해 준다.
- 정책은 리전 수준에서 생성되고 조직에 등록된 모든 계정에 적용된다.
- 조직에서 ALB에 대한 WAF 규칙을 생성한 다음 새 ALB를 생성하는 경우 AWS Firewall Manager에서 자동으로 새 ALB에도 같은 규칙을 적용해 준다.
WAF vs Firewall Manager vs Shield

- WAF, Firewall Manager, Shield는 포괄적인 계정 보호를 위한 서비스이다.
- WAF
- 웹 ACL 규칙을 정의
- 리소스별 보호를 구성하는 데에는 WAF가 적절
- 여러 계정에서 WAF를 사용하고, WAF 구성을 가속하고 새 리소스 보호를 자동화하려면 Firewall Manager로 WAF 규칙을 관리하면 된다.
- Firewall Manager
- WAF규칙같은 규칙들을 모든 계정과 모든 리소스에 자동으로 적용해준다.
- 모든 계정에 Shield 어드밴스드를 배포하는데 도움을 준다.
- Shield 어드밴스드
- 디도스 공격으로부터 고객을 보호
- WAF의 기능 외에도 더 많은 기능을 제공
- Shield 대응 지원 팀
- 고급 보고서 제공
- WAF 규칙 자동 생성
- DDoS 공격을 자주 받는다면 Shield 어드밴스드는 좋은 선택지
DDoS 보호 / 모범 사례
# 1. 엣지 위치 완화

- EC2 인스턴스로 구성된 ASG과 ELB가 앞에 위치하고 있음.
- 이때 LB를 Global Accelerator를 통해 고정 IP로 노출하거나 CloudFront를 앞에 둘 수 있음.
CloudFront는 WAF와 연결 가능함.
- DNS 라우팅에는 Route 53을 사용할 수 있다.
- 다른 아키텍처로 CloudFront와 API Gateway가 있음.
- BP1 - CloudFront
- CloudFront는 엣지 로케이션에서 사용한다.
따라서 이 그림은 엣지 로케이션 완화를 다룬다.
즉, 웹 애플리케이션 전송도 엣지에서 일어난다.
SYN Flood나 UDP 반사 공격과 같은 DDoS 일반 공격은 Shield 설정으로 막을 수 있다.
- BP1 - Global Accelerator
- 전 세계에서 엣지를 통해 애플리케이션에 액세스할 수 있다.
Global Accelerator는 Shield와 통합되어 CloudFront가 백엔드와 호환되지 않는 경우 DDoS 공격 방어에 유용하게 쓰인다.
이 경우 Global Accelerator를 앞에 두는데 이 경우 어떤 백엔드를 사용하든 CloudFront나 Global Accelerator로 AWS 엣지에 완전 분산이 가능하고 엣지 로케이션을 DDoS로부터 보호할 수 있다.
- BP3 - Route 53
- 엣지에 도메인 이름 변환을 글로벌로 설정한다.
이렇게 하면 DNS에도 DDoS 보호 메커니즘을 적용할 수 있다.
따라서 엣지에 대한 DDoS 보호를 더 확실히 할 수 있다.
# 2. DDoS 완화 모법 사례

- 인프라 계층 방어는 BP1, BP3, BP6에 해당
CloudFront, Global Accelerator, Route 53, ELB는 높은 트래픽으로부터 EC2 인스턴스를 보호한다.
EC2 인스턴스에 도달하기 전에 트래픽을 관리
- (BP7) EC2 인스턴스에서 오토 스케일링 기능을 활성화한 경우
ASG에 트래픽이 도달한다고 해도 자동으로 확장해 애플리케이션에서 더 큰 로드를 수용할 수 있다.
- (BP6) ELB의 경우
ELB가 여러 EC2 인스턴스 간 트래픽을 자동으로 분산시킨다.
각 EC2 인스턴스에 관리 가능한 양의 트래픽 전달.
# 3. L7 방어 예시

- BP1과 BP2로 악성 요청을 감지 및 필터링하는 방식
- CloudFront는 정적 콘텐츠 전송 시 엣지 로케이션에서 전송함으로 백엔드를 보호한다.
- 그리고 ALB나 CloudFront에 WAF를 사용해 요청 서명에 따라 요청을 필터링 및 차단 가능
특정 IP나 특정 요청 유형만 차단
- WAF 속도 기반 규칙을 사용해 악성 사용자의 IP를 자동으로 차단할 수 있음.
- WAF에 여러 관리형 규칙을 사용해 평판에 따라 IP를 차단 또는 익명 IP를 차단.
- CloudFront로 특정 지역을 차단 가능.
- (BP1, BP2, BP6) Shield Advanced
- 자동으로 WAF 규칙을 생성해 7계층 공격을 완화한다.
- 악성 요청이 들어오지 못하도록 하거나
- 그 수를 최소화하는 식으로 EC2 인스턴스 보호
# 4. 공격 지점 감소
- (BP1, BP4, BP6) 애플리케이션에 사용되는 백엔드 AWS 리소스가 숨겨져 있다.
- CloudFront, API Gateway, ELB를 사용하면 백엔드 리소스를 숨길 수 있다.
- 공격자는 이 리소스가 Lambda 함수인지, EC2인지, ECS 태스크인지 모른다.
- (BP5) 보안 그룹과 네트워크 ACL 등을 설정
- 특정 IP의 트래픽을 필터링
- Elastic IP도 AWS Shield Advanced로 보호할 수 있다.
- (BP4) API 엔드 포인트 보호
- API Gateway를 사용해 어떤 백엔드든 숨길 수 있다.
ec2, lambda 등 무엇이든
- 엣지 최적화 모드를 사용할 경우 이미 글로벌 설정되어 있다.
- CloudFront에 리전 모드를 더해 사용하면 DDoS 보호에 관한 제어 기능이 더 강화된다.
- API Gateway + WAF를 사용하는 경우 모든 HTTP 요청을 필터링 가능하다.
- API Gateway를 제대로 설정했다면 버스트 제한과 헤더 필터링 가능.
- 사용자에게 API 키 사용을 강제할 수 있음.
Amazon GuardDuty
- 지능형 위협 탐지를 이용해 AWS 계정을 보호
- 머신러닝으로 이상 탐지를 수행하고, 서드파티 데이터를 사용해 위협을 탐지한다.
이상 탐지: 정상행위에서 벗어난 경우를 찾아 침입을 탐지
- 활성화 방법
클릭 한번으로 활성화(30일 무료체험)
- 입력 데이터
- CloudTrail Event Logs
- 비정상적인 API 호출이나 무단 배포를 검색한다.
- 관리 이벤트 검색(VPC 서브넷 생성 이벤트)
- 데이터 이벤트 검색(S3 데이터 이벤트: Get/List/DeleteObject)
- VPC Flow Logs
- 비정상적인 인터넷 트래픽 검색
- 비정상적인 IP 주소를 검색
- DNS 로그
- DNS 쿼리 안에서 인코딩된 데이터를 전송하는 EC2 인스턴스를 검색
- 옵션 기능으로 EKS 감사 로그나 RDS 및 Aurora 로그인 이벤트, EBS, Lambda, S3 데이터 이벤트 등 다른 입력 데이터 소스를 검색
- EventBridge 규칙을 설정해 발견된 결과가 있으면 자동으로 알림을 받을 수 있다.
그 규칙은 Lambda나 SNS 같이 EventBridge가 타깃할 수 있는 모든 것을 타깃할 수 있음.
- GuardDuty는 암호화폐 공격을 방어하기 위한 좋은 도구이다.
전문적인 탐지 기능이 제공된다.
즉, 모든 입력 데이터를 분석하는 방법을 알고, 암호화폐 공격이 있는지 확인 가능하다.
Amazon GuardDuty 요약

- GuardDuty에는 몇 가지 입력 데이터가 있다
- VPC Flow Logs
- CloudTrail Logs
- DNS Logs
- 활성화 가능 옵션 기능
S3 로그, EBS 볼륨, 람다 네트워크 활동, RDS 및 Aurora 로그인 활동, EKS 감사 로그, 럼타임 모니터링 등
- 위 데이터로 탐지 결과를 생성한다.
- 탐지가 되면 EventBridge에서 이벤트가 생성된다.
- EventBridge로부터 규칙을 이용해 Lambda나 SNS 알림같은 자동화를 트리거 가능
Amazon Inspector
- 자동화된 보안 평가를 실행하는 서비스

- 보안 평가 대상
- EC2 인스턴스
- EC2 인스턴스에서 시스템 관리자 에이전트를 활용해 Inspector가 해당 EC2 인스턴스의 보안을 평가한다.
- 의도되지 않은 네트워크 접근 가능성을 분석
- 실행 중인 OS에서 알려진 취약점을 분석
- 컨테이너 이미지를 ECR로 push할 때 실행
- 컨테이너 이미지가 ECR로 푸시뒤면 Inspector가 알려진 취약점에 대해 검사한다.
- Lambda 함수
- Lambda 함수가 배포될 때 함수 코드 및 패키지 종속성에서 소프트웨어 취약성을 분석
즉, 함수가 배포될 때 평가한다.
- Inspector가 작업을 완료하면 AWS 보안 허브에 결과를 보고한다.
- 또한 이 결과와 결과 이벤트를 EventBridge로 보낸다.
- 이를 통해 인프라에 있는 취약점을 모아서 볼 수 있게 된다.
EventBridge로 일종의 자동화를 실행할 수 있다.
Inspector가 평가하는 것
- 실행중인 EC2 인스턴스, ECR의 컨테이너 이미지, 람다 함수에만 사용된다.
- 필요할 때 인프라만 지속적으로 스캔한다.
즉, 취약성 데이터베이스, CVE를 살펴본다.
- EC2, ECR, Lambda에서 패키지 취약성 및 EC2에서 네트워크 도달성을 살펴본다.
- 만약 CVE 데이터베이스가 업데이트된다면 Inspector는 자동으로 다시 실행되어 모든 인프라를 한 번 더 확실히 테스트한다.
- 실행될 때마다 우선 순위를 정하기 위해 위험 점수가 모든 취약성과 다시 연관된다.
Amazon Macie
- 완전 관리형 데이터 보안 및 데이터 프라이버시 서비스
- 머신러닝과 패턴 매칭을 이용해 AWS에 있는 민감한 데이터를 발견하고 보호한다.
즉, 개인식별 정보(PII)같은 정보에 관해 경보를 제공한다.

- S3 버킷에 PII가 있다면 Macie가 분석할 것이고, Macie는 어떤 데이터를 PII로 분류할 지 알아내고, EventBridge를 통해 발견 결과를 알려준다.
- 그것을 SNS알림이나 람다로도 통합할 수 있다.
- 클릭 한 번으로 활성화 가능
이후 원하는 S3 버킷을 지정하면 된다.