AWS에서 Web Application Firewall(WAF) 설정 방법입니다.
WAF는 웹 애플리케이션에서 흔히 발생하는 공격, 침해 시도 등을 탐지하고 차단하는 역할을 합니다.
AWS에서 사전에 정의한 빈도가 높은 공격, 침해 패턴을 적용할 수 있으며
사례에 따라 직접 패턴을 정의하여 사용할 수도 있습니다.
WAF는 Application Load Balancer(ALB)에도 적용하여
ALB로 패킷이 인입되기 전에 미리 공격, 침해 패턴을 분석하여 차단하는 역할을 수행합니다.
🛠 WAF 설정
AWS WAF 좌측 메뉴에서 Web ACLs을 선택하고
Region을 Asia Pacific(Seoul)로 맞춘 후, Create Web ACL을 누릅니다.
⚠️ Web ACL을 생성할 때 WAF가 참조할 ALB를 찾으려면, ALB가 있는 Region으로 맞춰야 합니다.
Web ACL의 이름을 설정합니다.
Web ACL의 이름을 입력하면, CloudWatch metric name이 Web ACL 이름과 동일하게 기본값으로 입력됩니다.
ALB에 WAF를 적용하려면 Resource type은 Regional resources를 선택하고
Region이 앞서 설정한 Asia Pacific(Seoul)이 맞는지 확인합니다.
Add AWS resources를 누르고
WAF를 적용할 리소스를 선택합니다.
여기서는 Application Load Balancer를 선택, 추가할 ALB를 선택하고 Add 합니다.
선택한 resource가 확인되면 Next를 누릅니다.
다음 화면에서 WAF에 적용할 룰을 등록합니다.
사전에 정의된 룰이나 사용자 정의 룰을 추가할 수 있으며,
여기서는 AWS에서 사전 정의한 룰을 추가하기 위해 Add managed rule groups를 선택합니다.
제일 상단에 AWS managed rule groups를 선택합니다.
rule groups에는 유료와 무료 룰이 있습니다.
여기서는 무료 룰 중에서 5가지를 선택하였습니다.
Rlue groups | 설명 |
Amazon IP reputation list | Amazon 위협 인텔리전스를 기반으로 하여, 봇이나 여러 위협 요소들의 소스 IP를 차단할 수 있습니다. |
Anonymous IP list | 접속자 확인이 어려운 익명의 IP를 차단할 수 있습니다. |
Core rule set | 이미 알려진 취약점이나 OWASP에서 발표한 취약점에 대해 대응합니다. |
Known bad inputs | 유효하지 않은 입력이나 취약점을 노린 입력 패턴 등을 차단합니다. |
SQL databases | SQL injection 등 DB 취약점 패턴 등을 차단합니다. |
✍️ 예전의 WAF1에서는 최대 10개의 rule을 선택할 수 있었으나,
현재의 WAF2에서는 각 rule에 capacity를 적용하여, 최대 1500까지 추가할 수 있습니다.
선택한 rule의 목록과 capacity의 합계를 확인합니다.
설정한 rule 외의 요청은 allow로 처리하도록 선택합니다.
선택한 rule 중에서 AWSManagedRulesCommonRuleSet의 우선순위를 제일 위로 변경합니다.
CloudWatch 메트릭 설정은 기본값으로 둡니다.
입력 내용을 최종 확인하고 Create Web ACL를 누릅니다.
🧑💻 테스트
Web ACL을 적용한 후 ALB를 대상으로 XSS 테스트를 해보면 403 Forbidden이 확인됩니다.
AWS WAF ► Web ACLs 대시보드에서 접속/차단 내역을 모니터링할 수 있습니다.
⚠️ 주의
Web ACL 정책이 실제 적용되기 위해서는 꽤 많은 시간이 필요합니다.
저도 처음에 제대로 동작 안 하는 줄 알았다가, 30분 이상 시간이 지난 후에야 적용된 것을 확인했습니다.
정책 설정/변경이 필요할 경우 충분히 시간을 두고 적용해야 합니다.
🔗 참고 링크
https://docs.aws.amazon.com/ko_kr/waf/latest/developerguide/waf-chapter.html
https://docs.aws.amazon.com/ko_kr/waf/latest/developerguide/getting-started.html
https://techblog.woowahan.com/2699/
📖 참고 문헌
아라이 마사야 외, 양현 역, 〖AWS컨테이너 설계와 구축 철저 입문〗, 위키북스, 2022, p.363 ~ 374