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 ahttps://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
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:
-
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
ereal_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 diretivawallarm_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).
- As diretivas
-
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ê.
-
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:
- Abra Wallarm Console → Configurações → Tokens da API no Nuvem dos EUA ou Nuvem da UE.
- Encontre ou crie um token API com a função de fonte
Implantar
. - Copie este 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.
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:
api.wallarm.com . | Não |
WALLARM_LABELS | Disponível a partir do nó 4.6. Funciona apenas se
...colocará a instância de nó no grupo de instâncias | Sim (para tokens de API) |
5. Testando a operação do nó Wallarm¶
-
Envie a solicitação com o ataque de teste Path Traversal para um endereço de recurso protegido:
-
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.
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:
-
Usando o balanceador do servidor proxy atrás do nó de filtragem
-
Limitando o tempo de processamento de uma única solicitação na diretiva
wallarm_process_time_limit
-
Limitando o tempo de espera da resposta do servidor na diretiva NGINX
proxy_read_timeout
-
Limitando o tamanho máximo da solicitação na diretiva NGINX
client_max_body_size