[AWS] WAF를 활용한 웹 애플리케이션 보안 강화 및 고정 IP 설정

궁금하면 500원·2024년 12월 1일

데브옵스

목록 보기
14/36

AWS Shield와 보안 서비스로 DDoS 공격 방어하는 방법

DDoS (Distributed Denial of Service) 공격은 공격자가 대량의 트래픽을 한 번에 서버로 전송하여 서버가 정상적인 서비스를 제공할 수 없도록 만드는 사이버 공격입니다.

AWS는 DDoS 공격을 방어하기 위해 AWS Shield와 AWS WAF(Web Application Firewall), AWS Firewall Manager, AWS Global Accelerator와 같은 다양한 도구를 제공합니다.

이번 포스트에서는 이러한 AWS 보안 서비스들이 어떻게 DDoS 공격을 방어하고 웹 애플리케이션을 보호하는지 설명합니다.

AWS Shield: DDoS 방어의 핵심

AWS Shield는 DDoS 공격을 자동으로 탐지하고 완화하는 서비스입니다.

AWS의 다양한 서비스와 통합되어, 고객이 DDoS 공격을 신속하게 차단하고 애플리케이션을 보호할 수 있도록 지원합니다.

AWS Shield Standard

AWS Shield Standard는 모든 AWS 고객에게 무료로 제공되는 DDoS 방어 서비스입니다.
AWS Shield Standard는 다음과 같은 DDoS 공격 유형을 자동으로 감지하고 완화합니다.

  • SYN/UDP Floods

    서버나 네트워크의 자원을 소진시켜 서비스가 중단되도록 만드는 공격

  • 리플렉션 공격

    외부 서버에 요청을 보내고, 응답을 목표 시스템에 보내서 목표 서버를 오버로드 시키는 공격

  • Layer 3, Layer 4 공격

    네트워크 계층에서의 공격으로, 일반적으로 서버의 대역폭을 초과하게 만드는 공격

AWS Shield Standard는 Amazon CloudFront와 Route 53과 같은 AWS 서비스에서 자동으로 활성화되어, 기본적인 DDoS 보호를 제공합니다.

AWS Shield Advanced

AWS Shield Advanced는 선택적 유료 서비스로, 더 강력한 DDoS 완화 기능과 전문적인 대응 서비스를 제공합니다.

이 서비스는 게임 서버나 금융 시스템처럼 더 큰 보안이 필요한 고객들에게 적합합니다.

  • 24/7 DDoS Response Team (DRT)

    AWS 전문가들이 실시간으로 DDoS 공격에 대응하며, 공격이 발생할 때마다 빠르게 지원을 제공합니다.

  • 비용 보호

DDoS 공격으로 인해 예상보다 높은 비용이 발생하지 않도록, 비용 보호 기능을 제공하여 고객이 부담해야 할 추가 비용을 제한합니다.

  • Application Layer 보호

AWS WAF와의 통합을 통해 애플리케이션 계층에서의 공격을 자동으로 완화하기 위한 WAF 규칙을 자동으로 생성하고 배포합니다.

AWS Shield Advanced는 Amazon Elastic Load Balancer (ELB), API Gateway, CloudFront 및 Elastic IP에 대한 보호를 제공합니다.

AWS WAF와 AWS Firewall Manager

AWS WAF (Web Application Firewall)

  • AWS WAF는 웹 애플리케이션을 보호하기 위한 애플리케이션 계층(Layer 7) 방화벽 서비스입니다.

SQL 인젝션, XSS 공격, 비정상적인 트래픽 등을 차단하는 규칙을 설정하여 웹 애플리케이션을 보호할 수 있습니다.

Web ACL을 생성하여, 트래픽이 ALB, API Gateway, CloudFront 등을 통과하기 전에 필터링합니다.

  • 자동 WAF 규칙 생성: AWS Shield Advanced와 함께 사용하면, 공격 유형에 맞는 WAF 규칙을 자동으로 생성하여 애플리케이션을 보호합니다.

AWS Firewall Manager

AWS Firewall Manager는 AWS 조직 내 모든 계정에서 WAF 규칙과 보안 그룹 규칙을 중앙에서 관리할 수 있는 서비스입니다.

여러 계정의 보안 규칙을 통합하여 관리하고, 새로 생성되는 리소스에도 기존 규칙을 자동으로 적용할 수 있습니다.

적용 가능한 규칙

  • WAF 규칙 (ALB, API Gateway, CloudFront)
  • AWS Shield Advanced 규칙 (ALB, CLB, NLB, EIP, CloudFront)
  • 보안 그룹 (EC2, ALB, ENI in VPC)
  • AWS Network Firewall (VPC 레벨)
  • Route53 Resolver DNS Firewall

AWS WAF 규칙 생성 코드 예시 (Python Boto3)

import boto3

# WAF 클라이언트 생성
waf_client = boto3.client('wafv2')

# WAF 규칙 생성
response = waf_client.create_web_acl(
    Name='MyWebACL',
    Scope='REGIONAL',  # 또는 CLOUDFRONT
    DefaultAction={'Allow': {}},
    Rules=[
        {
            'Name': 'SQLInjectionRule',
            'Action': {'Block': {}},
            'Priority': 1,
            'Statement': {
                'SqliMatchStatement': {
                    'FieldToMatch': {'Body': {}},
                    'TextTransformations': [{'Type': 'NONE'}]
                }
            },
            'VisibilityConfig': {
                'SampledRequestsEnabled': True,
                'CloudWatchMetricsEnabled': True,
                'MetricName': 'SQLInjectionMetric'
            }
        }
    ],
    VisibilityConfig={
        'CloudWatchMetricsEnabled': True,
        'SampledRequestsEnabled': True,
        'MetricName': 'MyWebACLMetric'
    }
)

print("Web ACL Created:", response['Summary']['ARN'])

DDoS 방어 아키텍처: AWS Shield + WAF + Global Accelerator

1차 방어선 구축

DDoS 공격을 방어하기 위해 AWS에서 여러 가지 방어 계층을 설정할 수 있습니다.
AWS Global Accelerator와 AWS WAF, CloudFront를 결합하여 1차 방어선을 구축할 수 있습니다.

  • AWS Global Accelerator는 고정 IP 주소를 제공하여, 트래픽을 최적화하고, 전 세계적으로 지연 시간을 줄입니다.
    이를 통해 공격 트래픽이 오기 전에 우선 분산시키고 방어할 수 있습니다.

  • CloudFront는 콘텐츠를 전 세계에 배포하며, DDoS 공격으로부터 보호하는 데 중요한 역할을 합니다.

  • AWS WAF는 트래픽을 세밀하게 필터링하여 SQL 인젝션이나 XSS와 같은 공격을 차단합니다.

2차 방어선: ELB 및 Auto Scaling

트래픽이 CloudFront와 WAF를 통과한 후, ALB (Application Load Balancer) 또는 API Gateway를 통해 백엔드 애플리케이션 서버로 라우팅됩니다.

이때 AWS WAF를 추가하여 이중 방어를 제공합니다.

  • ELB (Elastic Load Balancer)는 트래픽을 여러 서버로 분산시켜, 한 서버에 트래픽이 집중되지 않도록 합니다.

  • Auto Scaling Group은 서버 리소스를 자동으로 확장하여 트래픽 폭증에 대응하고, 애플리케이션을 안정적으로 운영할 수 있도록 지원합니다.

참고 자료

profile
에러가 나도 괜찮아 — 그건 내가 배우고 있다는 증거야.

0개의 댓글