Pular para conteúdo

Implantando Wallarm OOB a partir da Imagem Docker

Este artigo fornece instruções para implantar Wallarm OOB usando a imagem Docker baseada em NGINX. A solução descrita aqui é projetada para analisar o tráfego espelhado por um servidor web ou proxy.

Versão do NGINX no container Docker

O container Docker usa NGINX da versão 1.14.x. Você pode descobrir algumas vulnerabilidades nesta versão do NGINX, mas na verdade a maioria delas são corrigidas pela equipe Debian. O container Docker executa serviços no Debian 10.x, portanto, as vulnerabilidades descobertas não devem resultar em comprometimento de dados.

Casos de uso

Dentre todas as opções de implantação do Wallarm suportadas, a imagem Docker baseada em NGINX é recomendada para a implantação do Wallarm nestes casos de uso:

  • Se a sua organização utiliza uma infraestrutura baseada em Docker, a imagem Docker do Wallarm é a escolha ideal. Ela se integra facilmente à sua configuração existente, seja você empregando uma arquitetura de microserviço que está rodando em AWS ECS, Alibaba ECS, ou outros serviços semelhantes. Essa solução também se aplica àqueles que estão usando máquinas virtuais que buscam uma gestão mais simplificada através de contêineres Docker.

  • Se você precisa de um controle refinado sobre cada contêiner, a imagem Docker se destaca. Ela oferece um nível maior de isolamento de recursos do que geralmente é possível com implantações baseadas em VM tradicionais.

Para obter mais informações sobre como executar a imagem Docker do Wallarm baseada em NGINX em serviços populares de orquestração de contêineres na nuvem pública, consulte nossos guias: AWS ECS, GCP GCE, Azure Container Instances, Alibaba ECS.

Requisitos

  • Docker instalado em seu sistema host

  • Acesso a https://hub.docker.com/r/wallarm/node para baixar a imagem do Docker. Certifique-se de que o acesso não está bloqueado por um firewall

  • Acesso à conta com a função de Administrador no Console Wallarm na Nuvem dos EUA ou na Nuvem da UE

  • Acesso a https://us1.api.wallarm.com se estiver trabalhando com a Nuvem Wallarm dos EUA ou a https://api.wallarm.com se estiver trabalhando com a Nuvem Wallarm da UE. Certifique-se de que o acesso não está bloqueado por um firewall

  • Access to the IP addresses below for downloading updates to attack detection rules, as well as retrieving precise IPs for your allowlisted, denylisted, or graylisted countries, regions, or data centers

    34.96.64.17
    34.110.183.149
    35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    34.160.38.183
    34.144.227.90
    34.90.110.226
    

1. Configurar espelhamento de tráfego

Configure o seu ambiente para espelhar o tráfego de entrada para uma instância com o nó Wallarm que você está implantando. Para detalhes de configuração, recomendamos referir-se à documentação da solução que você planeja usar para produzir o espelhamento de tráfego (servidor web, servidor proxy, etc.).

Dentro do link, você encontrará o exemplo de configuração para NGINX, Traefik, Envoy.

2. Prepare um arquivo de configuração para análise de tráfego espelhado e mais

Para permitir que os nós Wallarm analisem o tráfego espelhado, você precisa configurar configurações adicionais em um arquivo separado e montá-lo no contêiner Docker. O arquivo de configuração padrão que precisa ser modificado está localizado em /etc/nginx/sites-enabled/default dentro da imagem Docker.

Neste arquivo, você precisa especificar a configuração do nó Wallarm para processar o tráfego espelhado e quaisquer outras configurações necessárias. Siga estas instruções para fazer isso:

  1. Crie o arquivo de configuração local do NGINX denominado default com o seguinte conteúdo:

    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_force server_addr $http_x_server_addr;
            wallarm_force server_port $http_x_server_port;
            # Change 222.222.222.22 to the address of the mirroring server
            set_real_ip_from  222.222.222.22;
            real_ip_header    X-Forwarded-For;
            real_ip_recursive on;
            wallarm_force response_status 0;
            wallarm_force response_time 0;
            wallarm_force response_size 0;
    
            wallarm_mode monitoring;
            # wallarm_application 1;
    
            location / {
                    proxy_pass http://127.0.0.1:8080;
                    include proxy_params;
            }
    }
    
    • As diretivas set_real_ip_from e real_ip_header são necessárias para que o Wallarm Console exiba os endereços IP dos invasores.
    • As diretivas wallarm_force_response_* são necessárias para desativar a análise de todas as solicitações, exceto as cópias recebidas do tráfego espelhado.
    • A diretiva wallarm_mode é o modo de análise de tráfego. Como solicitações maliciosas não podem ser bloqueadas, o único modo aceito pelo Wallarm é o monitoramento. Para implantação em linha, também existem modos de bloqueio seguro e bloqueio, mas mesmo que você defina a diretiva wallarm_mode para um valor diferente de monitoramento, o nó continua a monitorar o tráfego e a registrar apenas o tráfego malicioso (além do modo definido para desligado).
  2. Especifique quaisquer outras diretivas Wallarm necessárias. Você pode consultar a documentação Parâmetros de configuração do Wallarm e os casos de uso da configuração para entender quais configurações seriam úteis para você.

  3. Se necessário, modifique outras configurações do NGINX para personalizar seu comportamento. Consulte a documentação do NGINX para obter assistência.

Você também pode montar outros arquivos nos seguintes diretórios de contêineres, se necessário:

  • /etc/nginx/conf.d — configurações comuns

  • /etc/nginx/sites-enabled — configurações de host virtual

  • /var/www/html — arquivos estáticos

3. Obtenha um token para conectar o nó à nuvem

Obtenha o token Wallarm do tipo apropriado:

  1. Abra Wallarm Console → ConfiguraçõesTokens da API no Nuvem dos EUA ou Nuvem da UE.
  2. Encontre ou crie um token API com a função de fonte Implantar.
  3. Copie este token.
  1. Abra Wallarm Console → Nós na US Cloud or 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ós existente - copie o token usando o menu do nó → Copiar token.

4. Execute o contêiner Docker com o nó

Execute o contêiner Docker com o nó montando o arquivo de configuração que você acabou de criar.

docker run -d -e WALLARM_API_TOKEN='XXXXXXX' -e WALLARM_API_HOST='us1.api.wallarm.com' -v /configs/default:/etc/nginx/sites-enabled/default -p 80:80 wallarm/node:4.8.0-1
docker run -d -e WALLARM_API_TOKEN='XXXXXXX' -v /configs/default:/etc/nginx/sites-enabled/default -p 80:80 wallarm/node:4.8.0-1

As seguintes variáveis de ambiente devem ser passadas para o contêiner:

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)

5. Testando a operação do nó Wallarm

  1. Envie a solicitação com o ataque de teste Path Traversal para um endereço de recurso protegido:

    curl http://localhost/etc/passwd
    
  2. Abra o Console Wallarm → seção Eventos na Nuvem dos EUA ou Nuvem da UE e certifique-se de que o ataque está exibido na lista.
    Ataques na interface

Configuração de log

O log está ativado por padrão. Os diretórios de log são:

  • /var/log/nginx — Logs do NGINX

  • /var/log/wallarm — Logs do nó Wallarm

Para configurar o log estendido das variáveis do nó de filtragem, use estas instruções.

Por padrão, os logs rotacionam uma vez a cada 24 horas. Para configurar a rotação do log, altere os arquivos de configuração em /etc/logrotate.d/. Alterar os parâmetros de rotação por meio de variáveis de ambiente não é possível.

Configurando os casos de uso

O arquivo de configuração montado no contêiner Docker deve descrever a configuração do nó de filtragem nas diretivas disponíveis. Abaixo estão algumas opções de configuração do nó de filtragem comumente usadas: