Como configurar o serviço de proteção contra DoS

O serviço de proteção contra negação de serviço (DoS, na sigla em inglês) do App Engine permite evitar o esgotamento da cota de aplicativos que sofrem ataques de negação de serviço ou formas de abuso semelhantes. É possível adicionar endereços IP ou sub-redes a uma lista de bloqueio. Assim, as solicitações encaminhadas desses endereços ou sub-redes serão descartadas antes que o código do aplicativo seja chamado. No caso de solicitações desse tipo, nenhuma alocação de recursos será consumida, seja ela faturada ou não.

Por padrão, o App Engine exibe uma página de erro genérica para os endereços na lista de bloqueio. Se quiser, configure seu app para enviar uma resposta personalizada.

Antes de começar

Crie um arquivo dos.yaml no diretório root do seu aplicativo. É nesse arquivo que você especificará os endereços IP e redes que estão na lista de bloqueio.

Como bloquear solicitações com listas de bloqueio de DoS

É possível adicionar endereços IP e sub-redes IP a uma lista de bloqueio para impedir que eles acessem seu app.

O dos.yaml é limitado a 100 entradas. Portanto, o bloqueio de sub-redes inteiras pode ser necessário se você estiver enfrentando um ataque DoS. Essa também será uma maneira eficiente de se proteger se você descobrir que vários endereços IP da mesma rede fazem parte de um ataque de DoS contra o app.

Como criar entradas na lista de bloqueio de endereços IP

Para impedir que um ou mais endereços IP acessem seu aplicativo, defina esses endereços IPv4 ou IPv6 no seu arquivo dos.yaml. Por exemplo:

blacklist:
- subnet: 192.0.2.1
  description: A single IPv4 address
- subnet: abcd::123:4567
  description: A single IPv6 address

Em um ataque distribuído de negação de serviço (DDoS, na sigla em inglês), provavelmente será necessário bloquear sub-redes inteiras, em vez de endereços IP individuais.

Veja o exemplo abaixo para saber como criar o dos.yaml.

Depois de criar o dos.yaml, é preciso fazer o upload dele para o aplicativo.

Como criar entradas na lista de bloqueio de sub-redes IP

Para impedir que uma sub-rede IP acesse seu aplicativo, defina-a no formato CIDR. Use a ferramenta IP to CIDR (em inglês) para ajudar na criação de regras que usam a notação CIDR.

blacklist:
- subnet: 1.2.3.4/24
  description: an IPv4 subnet
- subnet: abcd::123:4567/48
  description: an IPv6 subnet

Veja o exemplo abaixo para saber como criar o dos.yaml.

Depois de criar o dos.yaml, é preciso fazer o upload dele para o aplicativo.

Exemplo de dos.yaml

A seguir, um exemplo de arquivo dos.yaml:

blacklist:
- subnet: 1.2.3.4
  description: a single IP address
- subnet: 1.2.3.4/24
  description: an IPv4 subnet
- subnet: abcd::123:4567
  description: an IPv6 address
- subnet: abcd::123:4567/48
  description: an IPv6 subnet

Como criar mensagens de erro personalizadas para solicitações incluídas na lista de bloqueio

Por padrão, é enviada uma página de erro genérica para as solicitações bloqueadas pelo serviço de proteção contra DoS. Os ataques distribuídos de negação de serviço podem envolver uma máquina infectada de um usuário legítimo. Essa página fornece uma explicação a esse usuário sobre o porquê do acesso negado.

  1. Crie um arquivo estático no diretório do aplicativo para veicular as solicitações bloqueadas pelo serviço de proteção contra DoS.

  2. No arquivo app.yaml, especifique um gerenciador de erros para as respostas de DoS fornecendo o caminho para o arquivo estático e adicionando o tipo error_handlers de dos_api_denial:

    error_handlers:
    - error_code: dos_api_denial
      file: dos-response.html
    

Como excluir todas as entradas da lista de bloqueio

Para excluir todas as entradas da lista de bloqueio, faça isto:

  1. Edite o arquivo dos.yaml para que contenha apenas os itens a seguir:

    blacklist:
    

    A exclusão de dos.yaml não remove as listas de bloqueio.

  2. Reimplante o dos.yaml para que as mudanças entrem em vigor.

Como ver os erros de negação DoS no Console

Veja um gráfico com o número de solicitações que estão sendo negadas:

  1. Acesse o painel do App Engine no Console do Google Cloud:

    Abrir o gráfico de detalhes de erros do App Engine

  2. Ajuste o período do gráfico conforme necessário para ver os resultados.

Fazer upload da lista de bloqueio de DoS

Use a CLI gcloud para implantar o arquivo de configuração DoS atualizado no seu aplicativo no App Engine. Por exemplo, você executa o comando a seguir para atualizar o Serviço de Proteção DoS com o conteúdo de dos.yaml:

 gcloud app deploy dos.yaml

A seguir

  • Configure o Cloud Monitoring para identificar problemas rapidamente e alertar você.
  • Leia a experiência de um cliente (em inglês) sobre como ele respondeu a um ataque distribuído de negação de serviço (DDoS, na sigla em inglês), publicada em janeiro de 2013.