이것이 점프 투 공작소

AWS WAF로 특정 IP만 허용하도록 Custom Rule 추가하기 본문

aws

AWS WAF로 특정 IP만 허용하도록 Custom Rule 추가하기

겅겅겅 2023. 7. 9. 18:12

프론트나 백엔드 서버를 구축하는 경우, 보안을 위해 특정 IP에서만 접속을 제한해야하거나

다른 이유들로 방화벽을 구축해야하는 경우가 있습니다. 

AWS에서는 WAF라는 서비스를 통해 방화벽을 구축 할 수 있습니다.

WAF(Web Application Firewall)란?

AWS WAF는 Cloudfront와 ALB, API Gateway, App Spec 의 서비스에 연결 하여 방화벽 역할을 할 수 있습니다.

규칙(rule)을 통해 허용 및 차단을 설정 하며 AWS 관리형 규칙, 사용자 지정 규칙, 마켓플레이스 규칙 총 3가지의 규칙이 있습니다.

 

1. 관리형 규칙

관리형 규칙은 WAF의 기본적으로 제공되는 3가지 규칙입니다.

  • OWASP 선정 10 대 보안 위협에 제시된 일반적인 위협과 보안 취약성 일부를 담당하는 기본 규칙 그룹
  • OS 나 데이터베이스와 같은 애플리케이션 특성에 따라 추가적 보호를 제공하는 사용 사례에 특화된 규칙 그룹
  • Amazon 위협 인텔리전스 팀이 제공하는 알려진 악성 IP 들로 구성된 IP 평판 목록

2. 사용자 지정 규칙

  • HTTP 의 헤더, 본문, 메서드, 쿼리 문자열, URI 등에 원치 않는 형태나 IP 주소 등을 차단하는 애플리케이션에 특화된 사용자 지정 규칙을 작성할 수 있습니다.
  • AWS Management 콘솔에서 규칙 빌더를 이용하여 사용자 지정 규칙을 작성하거나, JSON 형태로 사용자 지정 규칙을 작성한 다음 AWS 명령줄 인터페이스(AWS CLI) 또는 AWS CloudFormation 같은 자동화 도구를 통해서도 지정 할 수 있습니다.

3. 마켓플레이스 규칙

  • 보안 공급업체는 AWS WAF 에서 사용할 수 있도록 자체 제작한 규칙들을 AWS Marketplace 를 통해 공급합니다. 이 규칙들은 구독을 통해서 사용하실 수 있으며, AWS 관리형 규칙이나 사용자 지정 규칙과 함께 사용할 수 있습니다.

 

CloudFront에 WAF 관리형 규칙 적용하여 특정 IP만 허용하기

 

1. IP Set 추가

저는 CloudFront에 WAF를 설정하려하기에 Global 지역에 IP Set을 생성합니다.

IP Set에 IP를 등록할수 있습니다. Subnet단위로도 지정가능합니다.

 

2. WEB ACL Custom Rules에 추가

생성시 확인 가능한 아래 3가지 Rules들은 AWS에서 기본적으로 제공하는 관리형 규칙이며

특정 IP만 허용하도록 하기위한 규칙을 생성하여 ACL에 적용시키려면

Add my own rules and rule groups를 통해 추가해주어야합니다. 

(저는 CloudFront에 대한 WAF를 지정하기에 CloudFront생성 시 함께 생성된 Web ACLs에 추가하였습니다.)

Rule Builder를 선택하고 Rule이름을 정해줍니다.

(왜인지는 잘 모르겠지만 크롬 한글로 번역된 상태에서는 AWS웹 콘솔에 커스텀 rule 등록 상세 페이지가 나오지 않았습니다..!)

 

IP Set에 등록된 IP만 가능하도록 하기 위해

If a request 부분에 dosen't match the statement (NOT)으로 설정 후 앞서 등록한 IP Set을 등록합니다.

then 부분을 Block오로 설정해두면 해당 IP가 아니면 다른 요청을 Block하게 됩니다.

추가된 CustomRule 확인할 수 있습니다.

추가된 Blcok Rules

 

3. 지정된 IP가 아닌 다른 IP에서 차단 확인

허용된 IP가 아닌 다른 IP주소로 접속했을때 403 Response를 확인 할 수 있습니다.

차단된 결과