ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS WAF(Web Application Firewall)
    클라우드(Cloud)/AWS(Amazon Web Services) 2023. 3. 8. 00:45

     

    1. AWS WAF 란?

    AWS WAF

    - AWS WAF는 웹 애플리케이션 방화벽으로, 사용자가 정의한 조건에 따라 웹 사이트 요청을 허용, 차단 또는 모니터링할 수 있는 서비스

    - SQL Injection, XSS(Cross-site Scripting) 등 일반적인 공격 패턴을 차단하는 사용자 지정 규칙과 특정 애플리케이션을 위해 설계된 규칙을 생성할 수 있음

    - 몇 분 이내에 새로운 규칙이 배포되므로 변화하는 트래픽 패턴에 신속하게 대응할 수 있음

    - Amazon CloudFront, Application Load Balancer(ALB) 및 Amazon API Gateway, AWS AppSync 및 Amazon Cognito user pools에 사용할 수 있음

     

    2. AWS WAF 실습 구성도

    AWA WAF 실습을 위한 구성도는 아래와 같다.

    (※ 기본적인 환경(VPC, Subnet, Internet Gateway, ALB, EC2)은 사전에 생성되어 있다는 가정하에 진행함)

     

    AWS WAF 실습 구성도

     

    3. AWS ACL 생성

    AWS 관리 콘솔에서 "WAF & Shield" 서비스 접근 후, 아래와 같이 [Create web ACL]  클릭한다.

     

    아래와 같이 Web ACL 생성 페이지에서 Name, Resource Type, Region 및 ALB와 연결할 리소스를 설정하고, [Next] 를 클릭한다.

     

    Rule은 기본적으로 AWS에서 생성해둔 규칙을 사용하거나, 자신이 직접 만들어서 사용할 수 있으며, 해당 실습에서는 간단하게 모두 사용해볼 것이다.

    먼저 직접 만들어서 사용해볼 것이므로, 'Add rules' 드롭다운 메뉴에서 'Add my own rules and rule groups' 를 클릭한다.

     

    alb에 접근하는 사용자 IP가 대한민국일 경우에만 정상적으로 접근할 수 있도록 설정하고, [Add rule] 을 클릭한다.

     

    rule이 정상적으로 생성되면 아래와 같이 확인 가능하다.

     

    위와 같은 방법으로URI path rule 추가로 생성한다.

     : URI 경로 내 'admin' 이라는 단어가 존재하면 Block 하도록 설정

     

    정상적으로 생성되면 아래와 같이 2개 Rule를 확인 가능하며, 이제 추가로 AWS 관리하는 rule을 생성할 것이다.

    'Add rules' 드롭다운 메뉴에서 'Add managed rule groups' 를 클릭한다.

     

    'AWS managed rule groups' - 'Free rule groups' 에서 'SQL database' 를 활성화 시키고, [Add rules] 를 클릭한다.

     

    생성된 rule 확인 후, [Next] 클릭

     

    [Next] 클릭

     

    [Next] 클릭

     

    [Create web ACL] 클릭

     

    정상적으로 Web ACL이 생성됨을 확인한다.

     

    4. AWS WAF 동작 여부 확인

    - 대한민국 사용자가 ALB에 접근 시 정상적으로 통신됨을 확인

     

    - 대한민국이 아닌 지역의 사용자가 ALB에 접근 시 접근이 불가함을 확인

     

    - 요청 URL 내 'admin' 문자 존재 시, ALB에 접근이 불가함을 확인

     

    - 요청 내 SQL 공격 구문 존재 시, ALB에 접근이 불가함을 확인

     

    아래와 같이 'Overview' 메뉴에서 허용되거나 차단된 요청에 대해 확인도 가능하다.

     

    5. 기타

    추가로 rule 생성 시, Action 메뉴를 통해 캡챠(Captcha) 인증을 요청할 수도 있다.

     

    또한 사용자 지정 응답도 아래와 같이 설정할 수 있다.

     

    사용자 지정 응답을 설정한 rule에 아래와 같이 설정한다.

     

    Online Curl을 통해 확인해보면, 아래와 같이 새로 지정한 응답이 표시되는 것을 확인할 수 있다.

     

    끝.

    댓글

Designed by Tistory.