

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Restrinja o acesso com base no endereço IP ou geolocalização usando AWS WAF
<a name="aws-waf-restrict-access-geolocation"></a>

*Louis Hourcade, Amazon Web Services*

## Resumo
<a name="aws-waf-restrict-access-geolocation-summary"></a>

[AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html)é um firewall de aplicativos da Web que ajuda a proteger os aplicativos da Web APIs contra explorações e bots comuns da Web que podem afetar a disponibilidade, comprometer a segurança ou consumir recursos excessivos. [As listas de controle de acesso à Web (web ACLs)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) AWS WAF fornecem controle sobre como o tráfego chega aos seus aplicativos. Em uma ACL da web, você adiciona regras ou grupos de regras projetados para permitir tráfego legítimo, controlar tráfego de bots e bloquear padrões comuns de ataque. Para obter mais informações, consulte [Como AWS WAF funciona](https://docs.aws.amazon.com/waf/latest/developerguide/how-aws-waf-works.html).

Você pode associar os seguintes tipos de regras à sua AWS WAF web ACLs:
+ [Grupos](https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-rule-groups.html) de regras AWS gerenciadas — equipes e AWS Marketplace vendedores de regras gerenciadas oferecem conjuntos de regras pré-configurados. Alguns grupos de regras gerenciadas são projetados para ajudar a proteger tipos específicos de aplicações web. Outros grupos, por sua vez, oferecem proteção abrangente contra ameaças conhecidas ou vulnerabilidades comuns.
+ [Regras personalizadas](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) e [grupos de regras personalizados](https://docs.aws.amazon.com/waf/latest/developerguide/waf-user-created-rule-groups.html) — Você também pode criar regras e grupos de regras que personalizam o acesso aos seus aplicativos web APIs e. Por exemplo, é possível restringir o tráfego com base em uma lista específica de endereços IP ou em uma lista de países.

Usando esse padrão e o repositório de código associado, você pode usar o [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)para implantar a AWS WAF web ACLs com regras personalizadas. Essas regras restringem o acesso aos recursos da aplicação web com base no endereço IP ou na geolocalização do usuário final. Além disso, você pode optar por adicionar diversos grupos de regras gerenciadas.

## Pré-requisitos e limitações
<a name="aws-waf-restrict-access-geolocation-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ [Permissões](https://docs.aws.amazon.com/waf/latest/developerguide/security-iam.html) para implantar AWS WAF recursos
+ AWS CDK, [instalado e configurado](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) em sua conta
+ Git, [instalado](https://github.com/git-guides/install-git)

**Limitações**
+ Você pode usar esse padrão somente Regiões da AWS onde AWS WAF estiver disponível. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

## Ferramentas
<a name="aws-waf-restrict-access-geolocation-tools"></a>

**Serviços da AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar Nuvem AWS infraestrutura em código.
+ O [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html) é um firewall para aplicações web que ajuda a monitorar solicitações HTTP e HTTPS encaminhadas aos recursos da sua aplicação web protegida.

**Repositório de código**

O código desse padrão está disponível na [restrição de GitHub IP e geolocalização com AWS WAF](https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk) repositório. O código implanta duas AWS WAF web ACLs. A primeira é uma ACL da web regional destinada a recursos do [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html). A segunda é a ACL global da web para CloudFront recursos [da Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html). Ambos os sites ACLs contêm as seguintes regras personalizadas:
+ `IPMatch` impede solicitações provenientes de endereços IP não autorizados.
+ `GeoMatch` impede solicitações provenientes de países não autorizados.

Durante a implantação, você pode, opcionalmente, anexar todos os seguintes grupos de regras gerenciadas à sua web ACLs:
+ [Conjunto de regras principal (CRS, na sigla em inglês)](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-crs): este grupo de regras contém regras que se aplicam, em geral, a aplicações web. O conjunto auxilia na proteção contra a exploração de diversas vulnerabilidades, incluindo algumas das vulnerabilidades de alto risco e mais comuns descritas nas publicações da OWASP, como o [OWASP Top 10](https://owasp.org/www-project-top-ten/).
+ [Proteção para administradores](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-admin): este grupo de regras contém regras que ajudam a bloquear o acesso externo a páginas administrativas expostas.
+ [Entradas maliciosas conhecidas](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-known-bad-inputs): este grupo de regras ajuda a bloquear padrões de solicitações que são conhecidos por serem inválidos e estão associados à exploração ou à descoberta de vulnerabilidades.
+ [Lista de reputação de IP da Amazon](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-amazon): este grupo de regras contém regras baseadas na inteligência de ameaças interna da Amazon. Este grupo ajuda a bloquear endereços IP que normalmente estão associados a bots ou outras ameaças.
+ [Grupo de regras gerenciadas para o sistema operacional do Linux](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-linux-os): este grupo de regras ajuda a bloquear padrões de solicitações associados à exploração de vulnerabilidades do Linux, incluindo ataques específicos de Inclusão Local de Arquivos (LFI, na sigla em inglês) em sistemas do Linux.
+ [Grupo de regras gerenciadas para banco de dados do SQL](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-sql-db): este grupo de regras ajuda a bloquear padrões de solicitações associados à exploração de bancos de dados do SQL, como ataques de injeção de SQL.

## Épicos
<a name="aws-waf-restrict-access-geolocation-epics"></a>

### Configurar a AWS WAF web ACLs
<a name="configure-the-waf-web-acls"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Insira o seguinte comando para clonar o repositório [IP and geolocation restriction with AWS WAF](https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk) na sua estação de trabalho local:<pre>git clone https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk.git</pre> | Git | 
| Configure as regras. | 1. No repositório clonado, abra o arquivo **app.py**.<br />2. Modifique os valores das seguintes variáveis para personalizar as regras:<pre>aws_acccount = "AWS_ACCOUNT"<br />region = "AWS_REGION"<br />ip_list = ["CIDR_RANGE_1", "CIDR_RANGE_2"]<br />geo_list = ["COUNTRY_CODE_1", "COUNTRY_CODE_2"]<br />aws_managed_rules = True</pre><br />Em que:`aws_account`é o ID do alvo Conta da AWS.`region`é o destino da Web ACL Região da AWS para recursos do API Gateway.A ACL da web para CloudFront recursos é global e será implantada na `us-east-1` região.`ip_list` é a lista de intervalos de CIDR que têm acesso permitido.`geo_list` é a lista de países que têm acesso permitido. Para valores válidos, consulte a [documentação do AWS WAF](https://docs.aws.amazon.com/waf/latest/APIReference/API_GeoMatchStatement.html).`aws_managed_rules` controla se os grupos de regras gerenciadas são adicionados à ACL da web. Se o valor for `True`, eles serão adicionados. Se o valor for `False`, serão excluídos.<br />3. Salve e feche o arquivo **app.py**. | Usuário geral da AWS e do Python | 

### Inicialização e a implantação do código
<a name="bootstrap-and-deploy-the-code"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicialize seu AWS ambiente. | Se ainda não tiver feito isso, você precisará [inicializar seu](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping-env.html) AWS ambiente antes de poder implantar o AWS CDK aplicativo.1. Na AWS CDK CLI, digite o seguinte comando para inicializar a região: `us-east-1`<pre>cdk bootstrap aws://<account-id>/us-east-1</pre><br />2. Se você estiver implantando a ACL da web para o API Gateway em uma região diferente de `us-east-1`, digite o seguinte comando para inicializar a região de destino:<pre>cdk bootstrap aws://<account-id>/<region></pre> | AWS geral | 
| Implante o AWS CDK aplicativo. | 1. Digite o comando a seguir para implantar o AWS CDK aplicativo:<pre>cdk deploy --all</pre><br />2. Espere até que a implantação da AWS CloudFormation pilha seja concluída. | AWS geral | 

### Validação da implantação
<a name="validate-the-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Confirme se a web ACLs foi implantada com sucesso. | 1. Faça login no e Console de gerenciamento da AWS, em seguida, abra o [AWS WAF console](https://console.aws.amazon.com/wafv2/).<br />2. No painel de navegação, escolha **Web ACLs**.<br />3. Na lista de Regiões da AWS, escolha **Global (CloudFront)**.<br />4. Verifique se a nova ACL CloudFront da web foi implantada e confirme se ela tem o endereço IP e as regras de geolocalização que você definiu. O nome padrão desta ACL da web é `WebACLCloudfront-<ID>`.<br />5. Na lista de Regiões da AWS, escolha a região na qual você implantou a pilha.<br />6. Verifique se uma nova ACL da web para os recursos do API Gateway foi implantada. Confirme que ela contém as regras de endereço IP e de geolocalização que você definiu. O nome padrão desta ACL da web é `WebACLApiGW-<ID>`. | AWS geral | 
| (Opcional) Associe a web ACLs aos seus recursos. | Associe a AWS WAF web ACLs aos seus AWS recursos, como um Application Load Balancer, API Gateway ou CloudFront distribuição. Para obter instruções, consulte [Como associar ou desassociar uma ACL da web a um ](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html)[recurso da AWS](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html). Para obter um exemplo, consulte [class CfnWeb ACLAssociation (construct)](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2.CfnWebACLAssociation.html) na AWS CDK documentação. | AWS geral | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua as pilhas. | 1. Desassocie a ACL da web de qualquer AWS recurso. Para obter instruções, consulte a [documentação do AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html).<br />2. Na AWS CDK CLI, digite o comando a seguir para excluir o AWS CDK aplicativo.<pre>cdk destroy --all</pre> | AWS geral | 

## Recursos relacionados
<a name="aws-waf-restrict-access-geolocation-resources"></a>
+ [Referência da API](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) (AWS CDK documentação)
+ [aws-cdk-libmódulo.aws\_wafv2](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2-readme.html) (documentação)AWS CDK 
+ [Trabalhando com a web ACLs](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-working-with.html) (AWS WAF documentação)
+ [Gerenciando seus próprios grupos de regras](https://docs.aws.amazon.com/waf/latest/developerguide/waf-user-created-rule-groups.html) (AWS WAF documentação)
+ [Regras](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) (AWS WAF documentação)