HAQM Web Services 한국 블로그
AWS Amplify 호스팅 사이트 AWS WAF 방화벽 지원 시작
오늘은 AWS WAF의 AWS Amplify Hosting 통합 정식 출시 소식을 알려드립니다.
웹 애플리케이션 소유자는 다양한 위협으로부터 애플리케이션을 보호하기 위해 끊임없이 노력 중입니다. 이전에는 Amplify Hosting으로 호스팅되는 애플리케이션에 강력한 보안 태세를 구현하려면 AWS WAF 보호가 지원되는 HAQM CloudFront 배포를 이용해 아키텍처를 만들어야 했는데, 구성 단계나 전문 지식도 더 필요하고 관리 오버헤드도 발생했습니다.
이제 Amplify Hosting에 AWS WAF가 정식 출시되기 때문에 Amplify 콘솔에서 원클릭 통합을 이용하거나 코드형 인프라(IaC)를 이용해 AWS Amplify 앱에 직접 웹 애플리케이션 방화벽을 연결할 수 있습니다. 이 통합을 통해 관리형 규칙을 비롯한 광범위한 AWS WAF 기능을 이용하여 SQL 인젝션이나 크로스 사이트 스크립팅(XSS)과 같은 보편적인 웹 익스플로잇이나 취약성에 맞서 앱을 보호할 수 있습니다. 또한 애플리케이션 요구 사항에 따라 자체적으로 사용자 지정 규칙을 만들 수도 있습니다.
이 신규 기능은 웹 애플리케이션에 맞는 심층 방어(Defense-in-depth) 보안 전략을 구현하는 데도 도움이 됩니다. AWS WAF의 속도 기반 규칙을 이용하면 IP 주소에서 수신되는 요청의 속도를 제한해 DDoS(Distributed Denial of Service) 공격을 차단할 수 있습니다. 또한 지오 블로킹을 구현하여 특정 국가에서 애플리케이션에 액세스할 수 없도록 제한할 수도 있는데, 이 기능은 서비스가 특정 지역만 대상으로 하는 경우 매우 유익합니다.
작동 방식 살펴보기
Amplify 앱에 AWS WAF 보호를 설정하는 방법은 아주 간단합니다. Amplify 콘솔에서 방화벽 탭을 선택하고, 사전 정의된 규칙 중 구성에 적용하고자 하는 것을 선택합니다.
Amplify Hosting은 방화벽 규칙을 간편하게 구성할 수 있게 해줍니다. 네 가지 범주의 보호를 활성화할 수 있습니다.
- Ampify 권장 방화벽 보호 – 웹 애플리케이션에서 가장 흔히 발견되는 취약성에 맞서 보호하고, HAQM 내부 위협 인텔리전스에 기반해 잠재적 위협이 있는 IP 주소를 차단하며, 애플리케이션 취약성을 검색하는 악성 행위자로부터 보호합니다.
- amplifyapp.com에 액세스 제한 – Amplify에서 생성한 기본 도메인 amplifyapp.com에 대한 액세스를 제한합니다. 이 보호는 사용자 도메인을 추가해 봇과 검색 엔진이 도메인을 크롤링하지 못하게 하고자 할 때 유용합니다.
- IP 주소 보호 활성화 – 지정된 IP 주소 범위에서의 요청을 허용하거나 차단해 웹 트래픽을 제한합니다.
- 국가 보호 활성화 – 특정 국가의 액세스를 제한합니다.
Amplify 콘솔을 통해 보호를 활성화하면 AWS 계정에 기본 웹 액세스 제어 목록(ACL)이 생성됩니다. 세분화된 규칙 세트를 원하는 경우, AWS WAF 콘솔 규칙 빌더를 사용하면 됩니다.
단 몇 분 만에 규칙이 앱과 연결되고, AWS WAF가 의심스러운 요청을 차단합니다.
AWS WAF의 실제 사용 사례를 보려면 AWS WAF 요청 조사 기능을 사용해 공격을 시뮬레이션하고 모니터링해 보세요. 예를 들어 User-Agent 값을 비워두고 요청을 보낼 수 있습니다. 그러면 AWS WAF의 차단 규칙이 트리거됩니다.
우선 제 앱으로 유효한 요청을 보내 보겠습니다.
curl -v -H "User-Agent: MyUserAgent" http://main.d3sk5bt8rx6f9y.amplifyapp.com/
* Host main.d3sk5bt8rx6f9y.amplifyapp.com:443 was resolved.
...(redacted for brevity)...
> GET / HTTP/2
> Host: main.d3sk5bt8rx6f9y.amplifyapp.com
> Accept: */*
> User-Agent: MyUserAgent
>
* Request completely sent off
< HTTP/2 200
< content-type: text/html
< content-length: 0
< date: Mon, 10 Mar 2025 14:45:26 GMT
서버가 HTTP 200(OK) 메시지를 반환한 것을 알 수 있습니다.
다음으로, User-Agent HTTP 헤더에 연결된 값이 없는 요청을 보냅니다.
curl -v -H "User-Agent: " http://main.d3sk5bt8rx6f9y.amplifyapp.com/
* Host main.d3sk5bt8rx6f9y.amplifyapp.com:443 was resolved.
... (redacted for brevity) ...
> GET / HTTP/2
> Host: main.d3sk5bt8rx6f9y.amplifyapp.com
> Accept: */*
>
* Request completely sent off
< HTTP/2 403
< server: CloudFront
... (redacted for brevity) ...
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>403 ERROR</H1>
<H2>The request could not be satisfied.</H2>
서버가 HTTP 403(Forbidden) 메시지를 반환한 것을 알 수 있습니다.
AWS WAF는 요청 패턴을 파악할 수 있게 해주어 장기적으로 보안 설정을 미세 조정하는 데 도움이 됩니다. 로그에는 Ampify Hosting을 통해서나 AWS WAF 콘솔을 통해 액세스할 수 있습니다. 이를 통해 트래픽 추세를 분석하고 필요에 따라 보안 규칙을 미세 조정하면 됩니다.
가용성 및 요금
방화벽 지원은 Amplify Hosting을 운영 중인 모든 AWS 리전에서 제공됩니다. 이 통합은 HAQM CloudFront와 마찬가지로 AWS WAF 글로벌 리소스에 속합니다. 웹 ACL을 Amplify Hosting 앱 여러 개에 연결할 수 있지만, 모두 같은 리전에 상주해야 합니다.
이 통합의 요금은 표준 AWS WAF 요금 모델을 따릅니다. AWS WAF 리소스는 웹 ACL, 규칙, 요청의 수에 따라 사용한 만큼 요금을 지불하게 됩니다. 이 외에 AWS Amplify Hosting은 애플리케이션에 웹 애플리케이션 방화벽을 연결할 때마다 월 15.00USD를 추가합니다. 이 요금은 시간 단위에 비례합니다.
이 새 기능을 이용하면 개인 개발자부터 대기업까지 모든 Amplify Hosting 고객이 엔터프라이즈급 보안 기능의 이점을 누릴 수 있습니다. 웹 애플리케이션의 빌드, 호스팅, 보호까지 모두 같은 서비스 내에서 해결할 수 있기 때문에 아키텍처 복잡성을 덜고 보안 관리가 간소해집니다.
자세한 내용은 Amplify용 AWS WAF 통합 설명서를 참조하세요. 아니면, Amplify 콘솔에서 직접 사용해 보는 것도 좋습니다.
뉴스 블로그의 상황은 어떤가요? 이 1분짜리 설문조사에 참여해 주세요!
(이 설문조사는 외부 기업에서 호스트합니다. AWS는 AWS 개인정보 처리방침에 설명한 대로 사용자 정보를 처리합니다. AWS는 이 설문 조사를 통해 수집된 데이터를 소유하며 수집된 정보를 설문 응답자와 공유하지 않습니다)