안녕하세요.

베스핀글로벌 클라우드기술지원팀 이주원 입니다.


오늘은 고객 문의 중 해외 IP 차단하는 방법에 대한 문의가 있어 해당 내용을 토대로 AWS의 WAF 서비스를 이용한 해외 IP 차단 방법을 간략히 설명하고자 합니다.




AWS WAF 란?


AWS 의 Amazon CloudFront, API Gateway, ALB, AppSync 와 같은 서비스로 전달되는 HTTP, HTTPS 전송에 대해 요청을 모니터링하고 통제하는 방화벽 서비스 입니다.

요청되는 IP 주소, 쿼리 문자열 등에 대해 지정된 조건에 따라 통제할 수 있으며, 지역적인 요청에 대한 통제도 할 수 있습니다.



자세한 내용 ? https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html



오늘은 그 중 간단한 WAF 설정을 통한 ALB에 해외 IP 를 차단하여 한국 IP만 접근을 허용하도록 하는 방법에 대해 소개해보겠습니다.



사전 필요 요소 : ALB 구성은 따로 설명하지 않고, 이미 구성되어있다고 가정합니다.





1. Web ACL 생성



WAF & Shield 서비스 메뉴로 접속해 Web ACL 생성하기를 누릅니다.



 - Step 1 : Web ACL 의 기본 요소를 지정합니다.


 이름과 설명을 입력 후 설정할 리소스 타입을 선택합니다.

  테스트는 ALB 로 진행하기 때문에 지역적 리소스를 선택 후 ALB 가 위치한 Seoul 리전을 선택합니다.




  할당할 리소스 선택하기를 통해 ALB 를 선택해줍니다.







- Step 2 : 접근을 제어할 규칙을 추가합니다.


  나의 규칙 추가하기를 통해 나만의 규칙을 생성합니다.




  Rule 빌더를 통해 규칙을 생성합니다.

  규칙 요소에서 '지역으로 부터 요청' 을 선택 후 '한국'을 선택한 뒤 Allow 를 설정합니다. (지역 선택 중 리스트에 없는 지역은 지원하지 않습니다.)





 추가된 규칙을 확인 후 Default 작업을 선택합니다.

  Default 는 규칙에 해당되지 않은 일반적인 경우를 말하며, 현재 지역위치에 따라 Allow 를 해줬기 때문에 Default 값은 Block 으로 설정합니다.





- Step 3 : 규칙에 대한 우선순위 설정


  1개의 규칙만 있으므로 넘어갑니다.



- Step 4 : Metric 설정


  WAF는 기본적으로 CloudWatch를 통한 모니터링이 가능하며, 이때 metric 에 대한 이름을 설정합니다.

  Sample 을 통한 테스트 가능여부에 대해 설정합니다.




- Step 5 : Review


 모든 설정 완료 후 검토 작업을 실시합니다.





2. 정상 구동 테스트


이제 WAF 를 통한 지역적 IP 제한 하는 설정을 모두 완료했습니다.

구성한 Web ACL 을 접속하면 Overview를 통해 ACL 로 요청되는 Request 수를 바로 볼 수 있고 구성된 내용에 대해 확인할 수 있습니다.









설정한 ALB 가 가리키는 '베스핀글로벌 테크블로그' 홈페이지로 접속을 통해 테스트해봅니다.


  - 현재 저는 한국에서 작업중이며, 일반적인 브라우저를 통해 해당 주소로 접속합니다. 접속 결과 이상없습니다.






이제는 해외 IP로 접속을 테스트 해봐야 하는데, 이를 위한 테스트 사이트가 있어 해당 사이트로 테스트를 진행합니다.

해외 IP 접속 및 속도 테스트 : https://tools.pingdom.com/



같은 '베스핀글로벌 테크블로그' 주소로 런던에서 요청 시 테스트 합니다.






테스트 결과 Response code가 403 으로 Block 된 것을 확인할 수 있습니다.




이와 같이 WAF 를 통해 접속이 제한되게 되면, 403 코드를 반환하며 해당 서버로 접속을 제한합니다.







간단한 WAF 설정을 통해 국내(한국) IP 의 요청만 허용하는 예제를 구성해봤습니다.

응용하여 IP 제한 등을 추가로 설정하고 우선순위를 설정하여 여러 규칙에 대해 방화벽 설정을 구성할 수 있습니다.



도움이 되셨기를 바랍니다.




감사합니다.


베스핀글로벌

클라우드기술지원팀

이주원