본문 바로가기

보안 이론/클라우드 보안

AWS - WAF

반응형

 

AWS에서 웹 애플리케이션 취약점을 차단하는 서비스인 WAF에 대해서 알아보았다.


AWS WAF란?

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

AWS에서 제공하는 웹 방화벽(Web Application Firewall)으로 주로 7계층 트래픽 필터링을 담당한다.

데이터 영역인 HTTP 헤더, URL, body 등에서 문자열, 정규식, 데이터 크기 등의 조건을 정해 필터링이 가능하다.

사용자 지정 규칙을 설정하거나 관리형 규칙을 통해 손쉽게 보안 설정이 가능하다.

접근 지표를 쉽게 모니터링하거나, 차단하거나 속도 제한할 수 있다.

 

사용 가능 리소스

  • Amazon API Gateway RES
  • Application Load Balancer
  • AWS AppSyncGraphQL API
  • Amazon Cognito User Pools

 

WAF 규칙

규칙은 WCU라는 용량을 따르며 하나의 WAF에는 최대 1500 WCU를 사용할 수 있다.

규칙의 우선순위를 설정하여 필터링이 가능하다.

 

사용자 지정 규칙

IPset : 사용자가 구분하여 관리가 필요한 IP 주소 목록을 지정하여 트래픽 필터링을 적용 할 수 있다.

Rule group : 사용자가 원하는 조건을 지정한 규칙을 이용해 트래픽 필터링을 적용할 수 있다.

  • 검사 영역(inspect) : 출발지 국가, 출발지 IP, 헤더, 쿠키, 파라미터, URI, 쿼리 스트링, 바디, HTTP 메소드 등
  • 조건(match type) : 문자열 포함/매치, 정규식, Size 등
  • 텍스트 변환(transformation) : HTML, 소문자, URL 디코딩, base64, md5, hex 등
  • 동작(action) : 허용, 차단, 카운팅, 캡챠, 챌린지

관리형 규칙

AWS나 AWS marketplace에서 구독을 통해 사용할 수 있는 사전 정의된 규칙 모음을 이용해 트래픽 필터링을 적용한다.

 

AWS managed free rule groups

Admin protection 노출된 관리자 페이지에 대한 외부 접근을 차단하는 규칙 그룹
Amazon IP reputation list Amazon threat intelligence를 기반으로 한 봇 또는 기타 위협 관련된 IP를 차단하는 규칙 그룹
Anonymous IP list VPN, 프록시, Tor 노드 등 신원을 숨기고 접근하는 요청을 차단하는 규칙 그룹
Core rule set 웹 애플리케이션에서 일반적으로 적용되는 OWASP 취약점에 대한 보호를 제공하는 규칙 그룹
Known bad inputs 알려진 입력값 취약점(RCE, log4j 등)의 패턴을 적용하여 차단하는 규칙 그룹
Linux operating system Linux 운영체제의 취약점 공격 패턴을 차단하는 규칙 그룹
PHP application PHP 함수 삽입 등 PHP의 취약점 공격 패턴을 차단하는 규칙 그룹
POSIX operating system POSIX 운영체제의 취약점 공격 패턴을 차단하는 규칙 그룹
SQL database  SQL injection과 같은 요청 패턴을 차단하는 규칙 그룹
Windows operating system Windows 운영체제의 취약점 공격 패턴을 차단하는 규칙 그룹
WordPress application WordPress의 특정한 취약점 공격 패턴을 차단하는 규칙 그룹

이밖에도 유료 규칙 그룹marketplace에서 제공하는 구독성 규칙들이 존재한다.

 

참조

더 정확하고 깊은 정보를 필요로 한다면 아래 AWS 가이드를 참조하길 바란다.

https://docs.aws.amazon.com/ko_kr/waf/latest/developerguide/what-is-aws-waf.html

 

은 무엇입니까AWS WAF,AWSShield 및AWS Firewall Manager? - AWS WAF, AWS Firewall Manager, 및 AWS Shield Advanced

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 


실습

클라우드 환경의 웹 서버에 WAF를 적용하여 sql injection 공격을 진행하면 어떻게 처리되는지 직접 실습해본다.

규칙은 직접 생성하지 않고 AWS 관리 규칙을 이용한다.

아키텍처 설명

WAF를 테스트하기 위해 ALB를 통한 웹 접속을 구성하였다.

web-ec2에는 웹 취약점 점검을 위해 간단하게 gnuboard를 설치한 뒤 실습을 진행한다.

실습에서는 아키텍쳐를 구성하기 위해 VPC, EC2 등을 생성하는 과정은 생략한다.
기초가 필요하다면 이전 글들에서 학습할 수 있다.

2022.09.27 - [보안 이론/클라우드 보안] - AWS - VPC, EC2를 이용하여 웹서버 구축하기 (Gnuboard5)

WAF 생성

aws 콘솔에서 waf를 검색해 아래 서비스를 찾아 클릭한다.

 

사이드 바에서 Web ACLs를 선택 후 Web ACLs를 생성한다.

 

Web ACL 생성 페이지에서 다음과 같이 진행한다.

Name space

원하는 이름을 기입한다. 실습에서는 tae-waf로 설정하였다.

 

Resource type

실습에서는 ALB에 접근하는 트래픽을 확인하므로 Regional resources를 선택한다.

 

Region

자신의 구현 환경에 맞는 리전을 선택한다.

 

바로 아래에 있는 Add Resources를 클릭해 생성한 ALB를 찾아 추가한다.

추가가 완료되면 Next를 눌러 다음으로 넘어간다.

 

룰을 추가하는 페이지이다. Add managed rule groups를 눌러 관리 규칙을 추가한다.

다양한 선택지 중 AWS managed rule groups를 선택한다.

드롭다운 메뉴가 나오면 Free rule groups에서 아래에 해당하는 acl을 추가 후 add rules를 누른다.

  • Admin protection
  • Amazon IP reputation list
  • Anonymous IP list
  • Core rule set
  • Linux Operating system
  • SQL database

설정이 되었다면 다른 옵션은 기본값으로 두고 Next를 눌러 생성을 진행한다.

 

공격 테스트

성공적으로 생성이 완료되면 웹서버에 접속하여 테스트를 진행한다.

 

웹 페이지에 검색창에 sql injection 공격 코드를 입력하고 결과를 확인한다.

 

인젝션 공격을 진행하자 다음과 같이 403 오류 페이지가 나타난다. WAF에서 필터링을 통해 트래픽을 거부한 것이다.

WAF 미적용(좌), 적용(우)

물론 WAF를 적용하지 않아도 gnuboard에서 입력창 필터링이 되어있어 인젝션 공격이 허용되지 않는다.

그러나 WAF를 적용하면 웹서버에 도달하기도 전에 미리 패킷이 필터링되어 이중 보안이 이루어진다.

 

중요한 점은 완벽한 보안은 없기 때문에 서버에서도 필터링을 하고 WAF도 사용하는 것이 적합하다는 것이다.

 

지표 확인

웹서비스로 여러 행위를 진행한 뒤 Web ACLs에서 생성한 WAF의 상세페이지에 진입한다.

Overview 탭에서 ALB로 들어온 트래픽에 대한 접근 및 차단 현황에 대해 알 수 있다. 

 

또한 아래 메뉴에서 상세 현황도 볼 수 있다.

우리가 시도한 인젝션 공격이 SQLiRuleSet에 의해 차단된 정보에 대해서 기록하고 있다.

이러한 정보는 Cloud Watch와 연결하여 구성할 수도 있다.

 

 


AWS의 네이티브 서비스인 WAF를 이용하여 웹 애플리케이션 방화벽을 생성할 수 있다.

7계층 필터링으로 국가나 IP와 더불어 데이터 내의 헤더, 바디, 파라미터에 접근하여 위협을 식별하고 차단할 수 있다.

직접 규칙을 생성할 수도 있으며 관리형 규칙을 통해 만들어진 규칙을 손쉽게 이용할 수 있다.

또한 지표를 확인하여 어떤 접근이 있었는지 쉽게 확인이 가능하다.

반응형


Calendar
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Visits
Today
Yesterday