클라우드/AWS

[AWS] WAF(Web Application Firewall, 웹 애플리케이션 방화벽)

dayeonsheep 2023. 9. 18. 16:58

어쩌다 WAF를 찾아보았나...

얼마전 AWS요금에서 나도 모르게 계속해서 비용이 나가고 있어서 환불받았다.

그 서비스를 언제 썼는지, 뭔지도 모르고 돈이 줄줄 새고 있었다. 그래서! 뭔지 알아보려고 한다.


Web Application Firewall, 웹 애플리케이션 방화벽이란?

: 웹 취약점과 공격으로부터 웹 애플리케이션을 보호하는 서비스

  • 웹 사이트의 트래픽을 모니터링 하여 방화벽 및 IDS가 차단하지 못한 공격으로부터 웹 애플리케이션을 안전하게 보호하는 서비스
  • 웹 사이트의 취약점을 노리는 http, https 기반 보안 위협자동화된 Bot 공격을 신속하게 탐지하고 차단
  • 해킹 공격으로부터 웹 서비스를 전문적으로 보호하기 위해 탄생한 정보 보호 시스템
  • 웹의 비정상 트래픽을 탐지하고 차단하기 위한 방화벽
  • 봇, 삽입, 애플리케이션 계층 서비스 거부(DoS)를 비롯한 악의적 공격과 원치 않는 인터넷 트래픽으로부터 웹 애플리케이션을 보호할 수 있도록 지원

 

  • 단순 방화벽(FW)은 TCP/IP 레벨에 포함된 정보들을 기반으로 차단 룰을 설정하지만, 웹 방화벽은 웹 프로토콜 HTTP 정보를 바탕으로 차단 룰을 설정 
  • IP 주소, HTTP 헤더, HTTP 본문, URI 문자열, 교차 사이트 스크립팅 (XSS), SQL 삽입 및 기타 OWASP 정의 취약성을 비롯한 인터넷 위협을 방지하기 위한 규칙을 수립하고 관리할 수 있음

 

>> WAF는 모든 웹 보안 공격을 막는 솔루션은 아님. ( 침입 탐지, 차단 시스템(IDS/IPS) 와도 역할이 다름 )

>> WAF가 탐지하지 못하는 공격영역이 있음 : 그중 하나는 논리적 취약점 ( ex. 일반 사용자에게는 노출되지 않아야 할 페이지가 보이는 잘못된 권한부여, 불충분한 세션 관리, 서버 정보 노출, 우회를 목적으로 한 파라미터 변조 등 )

 

 

예시)

<! – 관리자페이지는 woowa.com/admin-manager 이고 계정은 manager / !@admin!@ 입니다. 배포시 주석 삭제 – !>

 

WAF에서 볼 때 이 주석을 보고 관리자페이지에 접속한 접근을 공격으로 구분할 방법이 없음.

이처럼 보안 솔루션은 해킹 공격의 전부가 아닌 일부를 방어해주는 것.

 


AWS WAF

: AWS WAF는 가용성에 영향을 미치거나 보안을 훼손하거나 과도한 리소스를 소비할 수 있는 일반적인 웹 익스플로잇 및 봇으로부터 애플리케이션을 보호하도록 도와준다.

  • Layer 7의 Web Application에 대한 공격(=> DDoS 공격 또는 웹 애플리케이션 공격) 탐지 및 차단 
  • Nginx WAF 유료 모델을 이용하여 만든 서비스
  • 사용 가능한 AWS services : CloudFront, Application LoadBalancer, API Gateway, AWS AppSync

 

출처:&nbsp;https://aws.amazon.com/ko/waf/

  • 보호 가능한 리소스
    • Amazon CloudFront distribution
    • Amazon API Gateway REST API
    • Application Load Balancer
    • AWS AppSync GraphQL API
    • Amazon Cognito user pool
    • AWS App Runner service
    • AWS Verified Access instance

 

AWS WAF 구성요소

  • 웹 ACL – 웹 ACL(access control list, 액세스 제어 목록)을 사용하여 일련의 AWS 리소스를 보호한다.
    • 규칙을 추가하여 웹 ACL을 생성하고 보호 전략을 정의
    • 규칙은 웹 요청 검사 기준을 정의하고, 해당 기준과 일치하는 요청에 대해 수행할 작업을 지정
    • 규칙이 아직 차단하거나 허용하지 않은 요청을 차단하거나 허용할지 여부를 나타내는 웹 ACL에 대한 기본 작업을 설정

 

  • 규칙 – 각 규칙에는 검사 기준을 정의하는 statemnet 와 웹 요청이 기준을 충족하는 경우 수행할 작업이 포함되어 있다. 
    • 웹 요청이 기준을 충족하면 일치
    • 일치하는 요청을 차단, 허용, 계산, CAPTCHA 퍼즐이나 자동 클라이언트 브라우저 챌린지를 사용하는 봇 제어를 실행하도록 규칙을 구성할 수 있다.
    • 규칙은 AWS WAF 리소스가 아님! 웹 ACL 또는 규칙 그룹의 컨텍스트에만 존재

 

  • 규칙 그룹 – 웹 ACL 내부 또는 재사용 가능한 규칙 그룹에서 직접 규칙을 정의할 수 있다.
    •  AWS 관리형 규칙 및 AWS Marketplace 판매자는 사용자가 사용할 관리형 규칙 그룹을 제공합니다. 
    • 자신만의 규칙 그룹을 정의할 수도 있다.

 

AWS WAF 구조 및 할당량

출처:&nbsp;https://sh-t.tistory.com/97

  • 하나의 Web ACL를 여러개의 Target에 적용 가능
  • rule groups의 Max Capacity가 1500 초과할 경우 : Web ACL를 2개 이상으로 분리 생성 혹은 AWS에 요청하여 상향 신청
    • * WCU(web ACL capacity units) 최대는 5000개, basic 제공 개수가 1500개, 초과시 비용 발생

 

 

  • AWS Managed rule groups

>> rule group의 max capacity 를 확인해봤는데 

>> 이 녀석이 내가 찾는 가장 정확한 숫자인듯 하다. WAF 한 계정당 최대 규칙 그룹 수 = 100 

 

  • AWS WAF는 다음과 같은 엔터티 설정에서 리전별 계정당 할당량이 고정되어 있어서 이러한 할당량은 변경할 수 없다.

 

  • 3rd Party Managed rule groups : MarketPlace에서 3rd Party 제품 구매한 경우에 사용 가능

(위협탐지 면에서... AWS Marketplace 를 통해 보안 벤더사의 Ruleset 을 구매하여 사용할 수 있다고 하는데, 3rd party 제품 도입 이유가 점차 없어지고 있다고 해서 이 부분은 차이를 비교해보면 좋을듯...)

 

  • Target 
    • Region 기준으로 동작 : ALB, API Gateway, AWS AppSync
    • Global 동작 : CloudFront 

 

AWS WAF 기능

  • 웹 트래픽 필터링 : IP 주소, HTTP 헤더 및 본문 또는 사용자 정의 URI와 같은 조건을 기준으로 웹 트래픽 필터링
  • AWS WAF Bot Control (옵션, 유료) : 일반적인 봇 트래픽을 제어하고 가시성을 확보
  • AWS WAF Fraud Control (옵션, 유료) : 애플리케이션의 로그인 페이지에서 손상된 자격 증명을 사용하여 사용자 계정에 대한 무단 액세스 모니터링
  • AWS Firewall Manager와 통합 : 여러 AWS 게정에 배포된 WAF를 중앙에서 구성 및 관리 가능
  • 실시간 가시성 : IP 주소, 지리적 위치, URI, 사용자 에이전트 및 참조자에 관한 세부 정보를 포함하는 원시 요청을 캡처하고 실시간 지표를 제공

 

AWS WAF를 연동한 구성 예시

AWS WAF는 Cloudfront와 ALB, API Gateway 등의 서비스에 연동가능

-> 어느 곳에 연동하는 것이 더 나을지 고민해봐야 함.

 

-> 보안만 신경쓰기보다는 여러 가지 IT 전반적인 상황(위협 및 취약성, 장애 발생, 멀티 클라우드 가능성 등)을 고려하여 적절한 아키텍처를 선택할 수 있어야 한다고 함.

 

 

 

[Cloudfront + WAF 와 ALB + WAF를 함께 사용하는 구조]

출처:https://techblog.woowahan.com/2699/

 

 

Cloudfront의 WAF는 L7 DoS및 임계치 조절, IP Blacklist 차단 규칙으로 WAF룰을 수립하고,

ALB의 WAF는 웹 취약점 공격을 중점으로 룰을 구분하여 수립할 수 있다.

 

(왜 이렇게 구성하는가?

 

- 트래픽 급증은 이벤트와 같은 예측된 상황에서도 발생하지만, DDoS와 같은 상황에도 발생

- Volumetric 한 DDoS 공격에 대한 대비를 위해서라도 Cloudfront의 Global edge를 통해서 DDoS 공격이 처리된 후,

VPC 내에 트래픽이 유입되는 게 더욱 유리합니다.

- 그리고 L7을 겨냥한 DDoS도 있어 Cloudfront에 적용된 WAF에서 적절한 임계치 룰과 L7 DoS 차단 룰이 적용되어 있을 테니, VPC에 부적절한 트래픽 유입은 적어진다.

>> 그래서 Cloudfront에 waf 적용하여 L7 DoS및 임계치 조절을 하는거군... )

 


WAF에 대한 개념 및 같이 사용 가능한 AWS Service까지 알 수 있었는데, 알아보면서 보안면의 다양한 아키텍처 구성에 대해서도 더 알아보고 싶어졌다. 실습도... 해봐야지... 

 

 

<참조>