AWS WAF
Tags: cloud, aws, security, devops
Published: 2023-05-19 14:14:47

Anotações sobre o AWS WAF para ajudar na preparação para as certificações da AWS.
Até o momento as anotações são para as certificações abaixo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n97pp0skrf2sia8dn184.png)


- [Link oficial](https://docs.aws.amazon.com/pt_br/waf/latest/developerguide/waf-chapter.html)

---

##**Anotações gerais**

- Firewall aplicação web - Camada 7 (HTTP)
- HTTP based comunications
- **Protege contra SQL Injection attacks**
- **Protege contra cross-site scripting**
- **Protege contra Ataque DDoS**
- Bloqueia IP específico 
- Permitir apenas o tráfego de IP específico
- **Não inspeciona os pacotes**
- Deploy no ALB, API GW, AWS AppSync e CloudFront
- Pode ser utilizado para proteger sites fora da AWS c/ Cloudfront
- **Não pode ser associada a uma EC2 diretamente**
- **Pode bloquear requisições baseadas em `User-Agent Headers`**
- _WEB ACL -> Association -> Rules -> Rules Statements_

---

##**Rules Statements (_Instruções da regra_)**
[Documentação oficial](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statements.html)

- Onde realmente definimos as regras com base nas solicitações
- As instruções de regra são a parte de uma regra que informa ao AWS WAF como inspecionar uma solicitação da Web
- Quando o AWS WAF encontra os critérios de inspeção em uma solicitação da Web, dizemos que a solicitação da Web corresponde à instrução.
- Cada instrução de regra especifica o que procurar e como, de acordo com o tipo de instrução
- Rules based - Headers, HTTP Method, Query Strings, URI Path, Geo-location, Body
- Pode ter uma instrução que combina muitas outras instruções com instruções lógicas AND, OR e NOT

---


##**Rules**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/waf/latest/developerguide/waf-rules.html)

- Uma rule define como inspecionar solicitações da Web HTTP (S) e a ação a ser tomada em uma solicitação quando ela corresponde aos critérios de inspeção. 
- Você define regras somente no contexto de um grupo de regras ou ACL da Web.
- Update a cada 5 min
- Suporta declarações lógicas para AND, OR, NOT
- Add: Managed rules groups or My Own rules and rules groups

**Types of rules**

**- Regular rules**
**- Rate-based rules** (Regular Role + Rate Limiting feature) - Pode inserir querys, rate limitis

**Actions**

**- Allow:** all requests except ones you specify
**- Block:** all requests except ones you specify (Pode bloquear todas as solicitações, exceto aquelas que você especificar)
**- Count:** requests you specify
**- Captcha (novo) -** [documentação](https://aws.amazon.com/pt/about-aws/whats-new/2021/11/aws-waf-captcha-support/)

---


##**WebACL**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/waf/latest/developerguide/web-acl.html)

- Scripts que provavelmente são mal-intencionados. Os invasores incorporam scripts que podem explorar vulnerabilidades nas aplicações web. Isso é conhecido como script entre sites (XSS).
- Endereços IP ou intervalos de endereços IP dos quais as solicitações se originam. /8, /16, /24 e /32
- País ou localização geográfica de origem das solicitações.
- Comprimento da parte específica da solicitação, como a string de consulta.
- Código SQL que provavelmente é mal-intencionado. Os invasores tentam extrair dados do seu banco de dados ao incorporarem código SQL mal-intencionado a uma solicitação da web. Isso é conhecido como SQL injection.
- Strings que aparecem na solicitação, por exemplo, valores que aparecem no cabeçalho User-Agent ou strings de texto que aparecem na string de consulta. Você também pode usar expressões regulares (regex) para especificar essas strings.
- Etiquetas que as regras anteriores na ACL da Web adicionaram à solicitação.
- Use as regras em uma web ACL para definir como inspecionar e manipular solicitações da web HTTP (S) com base em critérios.

---
##**Association**

- Amazon CloudFront distribution_ - Global_
- Amazon API Gateway REST API_ - Regional_
- Application Load Balancer_ - Regional_
- AWS AppSync GraphQL API_ - Regional_
- Amazon Cognito user pool_ - Regional_


---
##**Referências**

- [Criando sua primeira web ACL no AWS WAF](https://www.youtube.com/watch?v=HYtLvPYYoxk)
- [AWS re:Invent 2020: Using AWS WAF and AWS Secrets Manager to enforce Amazon CloudFront origins](https://www.youtube.com/watch?v=32jU3lVumAk)
- [AWS re:Invent 2019: Using Amazon CloudFront, AWS WAF, and Lambda@Edge to keep spammers out (CMY303)](https://www.youtube.com/watch?v=llTu49RNXw0)
- [Tutorial Dojo - AWS WAF ](https://tutorialsdojo.com/aws-waf/)
- [Jayendra Patil - AWS WAF](https://jayendrapatil.com/aws-waf/)