Pular para conteúdo

Implantação da Imagem Docker Wallarm na Alibaba Cloud

Este guia rápido fornece os passos para implantar a Imagem Docker do nó Wallarm baseado em NGINX na plataforma Alibaba Cloud usando o Serviço de Computação Elástica (ECS) da Alibaba Cloud.

Limitações das instruções

Estas instruções não cobrem a configuração de balanceamento de carga e autoescala de nó. Se você está configurando esses componentes por conta própria, recomendamos que leia a documentação apropriada da Alibaba Cloud.

Casos de uso

Dentre todas as [opções de implantação do Wallarm][plataforma] suportadas, recomendamos a implantação do Wallarm na Alibaba Cloud ECS usando a imagem Docker nos seguintes casos de uso:

  • Se suas aplicações aproveitam uma arquitetura de microsserviços, e já estão contêinerizadas e operacionais na Alibaba Cloud ECS.

  • Se você necessita de um controle fino sobre cada contêiner, a imagem Docker se sobressai. Ela proporciona um maior nível de isolamento de recursos do que normalmente é possível com as implantações tradicionais baseadas em VM.

Requisitos

Opções para a configuração do contêiner Docker do nó Wallarm

Os parâmetros de configuração do nó de filtragem devem ser passados para o contêiner Docker implantado de uma das seguintes maneiras:

  • Nas variáveis do ambiente. Esta opção permite a configuração de apenas os parâmetros básicos do nó de filtragem. A maioria das diretivas não pode ser configurada através de variáveis de ambiente.

  • No arquivo de configuração montado. Esta opção permite a configuração completa do nó de filtragem através de qualquer diretiva. Com este método de configuração, as variáveis de ambiente com as configurações de conexão do nó de filtragem e do Wallarm Cloud também são passadas para o contêiner.

Implantando o contêiner Docker do nó Wallarm configurado através de variáveis de ambiente

Para implantar o nó de filtragem Wallarm contêinerizado configurado apenas através de variáveis de ambiente, você deve criar a instância da Alibaba Cloud e executar o contêiner Docker nesta instância. Você pode realizar esses passos através do Console Alibaba Cloud ou CLI da Alibaba Cloud. Nestas instruções, é usado o Console Alibaba Cloud.

  1. Obtenha o token Wallarm do tipo apropriado:

    1. Abra o Console Wallarm → ConfiguraçõesTokens de API no US Cloud ou EU Cloud.
    2. Encontre ou crie um token de API com a função Deploy.
    3. Copie este token.
    1. Abra o Console Wallarm → Nós no US Cloud ou EU Cloud.
    2. Faça uma das seguintes ações:
      • Crie o nó do tipo Nó Wallarm e copie o token gerado.
      • Use o grupo de nó existente - copie o token usando o menu do nó → Copiar token.
  2. Abra o Console Alibaba Cloud → a lista de serviços → Elastic Compute ServiceInstâncias.

  3. Crie a instância seguindo as instruções da Alibaba Cloud e as diretrizes abaixo:

    • A instância pode se basear na imagem de qualquer sistema operacional.
    • Como a instância deve estar disponível para recursos externos, o endereço IP público ou o domínio deve ser configurado nas configurações da instância.
    • As configurações da instância devem refletir o método usado para se conectar à instância.
  4. Conecte-se à instância por um dos métodos descritos na documentação da Alibaba Cloud.

  5. Instale os pacotes Docker na instância seguindo as instruções para um sistema operacional apropriado.

  6. Defina a variável de ambiente da instância com o token Wallarm copiado para ser usado para conectar a instância à Nuvem Wallarm:

    export WALLARM_API_TOKEN='<WALLARM_API_TOKEN>'
    
  7. Execute o contêiner Docker do nó Wallarm usando o comando docker run com variáveis de ambiente passadas e arquivo de configuração montado:

    docker run -d -e WALLARM_API_TOKEN=${WALLARM_API_TOKEN} -e NGINX_BACKEND=<HOST_PARA_PROTEGER_COM_WALLARM> -e WALLARM_API_HOST='us1.api.wallarm.com' -p 80:80 wallarm/node:4.8.0-1
    
    docker run -d -e WALLARM_API_TOKEN=${WALLARM_API_TOKEN} -e NGINX_BACKEND=<HOST_PARA_PROTEGER_COM_WALLARM> -p 80:80 wallarm/node:4.8.0-1
    
    • -p: porta que o nó de filtragem escuta. O valor deve ser o mesmo que a porta da instância.
    • -e: variáveis de ambiente com a configuração do nó de filtragem (variáveis disponíveis estão listadas na tabela abaixo). Observe que não é recomendado passar o valor de WALLARM_API_TOKEN explicitamente.

      Variável de ambiente Descrição Obrigatório
      WALLARM_API_TOKEN Token de nó ou API do Wallarm. Sim
      NGINX_BACKEND Domínio ou endereço IP do recurso a ser protegido com a solução Wallarm. Sim
      WALLARM_API_HOST Servidor de API Wallarm:
      • us1.api.wallarm.com para a Nuvem dos EUA
      • api.wallarm.com para a Nuvem da UE
      Por padrão: api.wallarm.com.
      Não
      WALLARM_MODE Modo de nó:
      • block para bloquear solicitações maliciosas
      • safe_blocking para bloquear apenas aquelas solicitações maliciosas originadas de endereços IP em lista cinza
      • monitoring para analisar, mas não bloquear solicitações
      • off para desativar a análise e processamento de tráfego
      Por padrão: monitoring.
      Descrição detalhada dos modos de filtragem →
      Não
      WALLARM_APPLICATION Identificador único do aplicativo protegido a ser usado na Nuvem Wallarm. O valor pode ser um número inteiro positivo, exceto 0.

      O valor padrão (se a variável não for passada para o contêiner) é -1, o que indica o aplicativo padrão exibido na Console Wallarm → ConfiguraçõesAplicativo.

      Mais detalhes sobre a configuração de aplicativos →
      Não
      TARANTOOL_MEMORY_GB Quantidade de memória alocada para o Tarantool. O valor pode ser um número inteiro ou um float (um ponto . é um separador decimal). Por padrão: 0.2 gigabytes. Não
      NGINX_PORT Define uma porta que o NGINX usará dentro do contêiner Docker.

      A partir da imagem Docker 4.0.2-1, o serviço wallarm-status é executado automaticamente na mesma porta que o NGINX.

      O valor padrão (se a variável não for passada para o contêiner) é 80.

      A sintaxe é NGINX_PORT='443'.
      Não
      DISABLE_IPV6 A variável com qualquer valor que não seja um vazio exclui a linha listen [::]:80 default_server ipv6only=on; do arquivo de configuração NGINX, o que impedirá o NGINX de processar conexões IPv6.

      Se a variável não for especificada explicitamente ou tiver um valor vazio "", o NGINX processará conexões IPv6 e IPv4.
      Não
      WALLARM_LABELS

      Disponível a partir do nó 4.6. Funciona apenas se WALLARM_API_TOKEN estiver configurado para token de API com o papel Deploy. Define a etiqueta group para a agrupamento de instâncias de nó, por exemplo:

      WALLARM_LABELS="group=<GRUPO>"

      ...colocará a instância do nó no grupo de instâncias <GRUPO> (existente, ou, se não existir, será criado).

      Sim (para tokens de API)
  8. Teste a operação do nó de filtragem.

Implantando o contêiner Docker do nó Wallarm configurado através do arquivo montado

Para implantar o nó de filtragem Wallarm contêinerizado configurado através de variáveis de ambiente e arquivo montado, você deve criar a instância da Alibaba Cloud, localizar o arquivo de configuração do nó de filtragem no sistema de arquivos desta instância e executar o contêiner Docker nesta instância. Você pode realizar esses passos através do Console Alibaba Cloud ou CLI da Alibaba Cloud. Nestas instruções, será usado o Console Alibaba Cloud.

  1. Obtenha o token Wallarm do tipo apropriado:

    1. Abra o Console Wallarm → ConfiguraçõesTokens de API no US Cloud ou EU Cloud.
    2. Encontre ou crie um token de API com a função Deploy.
    3. Copie este token.
    1. Abra o Console Wallarm → Nós no US Cloud ou EU Cloud.
    2. Faça uma das seguintes ações:
      • Crie o nó do tipo Nó Wallarm e copie o token gerado.
      • Use o grupo de nó existente - copie o token usando o menu do nó → Copiar token.
  2. Abra o Console Alibaba Cloud → a lista de serviços → Elastic Compute ServiceInstâncias.

  3. Crie a instância seguindo as instruções da Alibaba Cloud e as diretrizes abaixo:

    • A instância pode se basear na imagem de qualquer sistema operacional.
    • Como a instância deve estar disponível para recursos externos, o endereço IP público ou domínio deve ser configurado nas configurações da instância.
    • As configurações da instância devem refletir o método usado para se conectar à instância.
  4. Conecte-se à instância por um dos métodos descritos na documentação da Alibaba Cloud.

  5. Instale os pacotes Docker na instância seguindo as instruções para um sistema operacional apropriado.

  6. Defina a variável de ambiente da instância com o token Wallarm copiado para ser usado para conectar a instância à Nuvem Wallarm:

    export WALLARM_API_TOKEN='<WALLARM_API_TOKEN>'
    
  7. Na instância, crie o diretório com o arquivo default que contém a configuração do nó de filtragem (por exemplo, o diretório pode ser chamado de configs). Um exemplo do arquivo com configurações mínimas:

    server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        #listen 443 ssl;
    
        server_name localhost;
    
        #ssl_certificate cert.pem;
        #ssl_certificate_key cert.key;
    
        root /usr/share/nginx/html;
    
        index index.html index.htm;
    
        wallarm_mode monitoring;
        # wallarm_application 1;
    
        location / {
                proxy_pass http://example.com;
                include proxy_params;
        }
    }
    

    Conjunto de diretivas de nó de filtragem que podem ser especificadas no arquivo de configuração →

  8. Execute o contêiner Docker do nó Wallarm usando o comando docker run com variáveis de ambiente passadas e arquivo de configuração montado:

    docker run -d -e WALLARM_API_TOKEN=${WALLARM_API_TOKEN} -e WALLARM_API_HOST='us1.api.wallarm.com' -v <INSTANCE_PATH_TO_CONFIG>:<DIRECTORY_FOR_MOUNTING> -p 80:80 wallarm/node:4.8.0-1
    
    docker run -d -e WALLARM_API_TOKEN=${WALLARM_API_TOKEN} -v <INSTANCE_PATH_TO_CONFIG>:<CONTAINER_PATH_FOR_MOUNTING> -p 80:80 wallarm/node:4.8.0-1
    
    • <INSTANCE_PATH_TO_CONFIG>: caminho para o arquivo de configuração criado na etapa anterior. Por exemplo, configs.
    • <DIRECTORY_FOR_MOUNTING>: diretório do contêiner para montar o arquivo de configuração. Arquivos de configuração podem ser montados nos seguintes diretórios de contêiner usados pelo NGINX:

      • /etc/nginx/conf.d — configurações comuns
      • /etc/nginx/sites-enabled — configurações de host virtual
      • /var/www/html — arquivos estáticos

      As diretivas de nó de filtragem devem ser descritas no arquivo /etc/nginx/sites-enabled/default.

    • -p: porta que o nó de filtragem escuta. O valor deve ser o mesmo que a porta da instância.

    • -e: variáveis de ambiente com a configuração do nó de filtragem (variáveis disponíveis estão listadas na tabela abaixo). Observe que não é recomendado passar o valor de WALLARM_API_TOKEN explicitamente.

      Variável de ambiente Descrição Obrigatório
      WALLARM_API_TOKEN Token de nó Wallarm ou API. Sim
      WALLARM_API_HOST Servidor API Wallarm:
      • us1.api.wallarm.com para a Nuvem dos EUA
      • api.wallarm.com para a Nuvem da UE
      Por padrão: api.wallarm.com.
      Não
      WALLARM_LABELS

      Disponível a partir do nó 4.6. Funciona apenas se WALLARM_API_TOKEN estiver configurado para token da API com a função Deploy. Define a etiqueta group para agrupamento de instâncias de nó, por exemplo:

      WALLARM_LABELS="group=<GROUP>"

      ...colocará a instância de nó no grupo de instâncias <GROUP> (existente, ou, se não existir, será criado).

      Sim (para tokens de API)
  9. Teste a operação do nó de filtragem.

Testando a operação do nó de filtragem

  1. Abra o Console Alibaba Cloud → a lista de serviços → Elastic Compute ServiceInstâncias e copie o endereço IP público da instância na coluna Endereço IP.

    Configurando a instância do contêiner

    Se o endereço IP estiver vazio, certifique-se de que a instância está no status Running.

  2. Envie a solicitação com o teste de ataque Path Traversal ao endereço copiado:

    curl http://<COPIED_IP>/etc/passwd
    
  3. Abra o Console Wallarm → Eventos na Nuvem EUA ou Nuvem UE e certifique-se de que o ataque está exibido na lista.
    Ataques em UI

Para visualizar detalhes sobre erros ocorridos durante a implantação do contêiner, por favor, conecte-se à instância por um dos métodos e reveja os logs do contêiner. Se a instância estiver indisponível, certifique-se de que os parâmetros necessários do nó de filtragem com valores corretos foram passados para o contêiner.