Instalando como um Módulo Dinâmico para NGINX fornecido pela distribuição¶
Essas instruções descrevem os passos para instalar o nó de filtragem do Wallarm como um módulo dinâmico para a versão de código aberto do NGINX instalada a partir dos repositórios Debian/CentOS.
Instalação completa
A partir do nó Wallarm 4.6, recomenda-se o uso da instalação completa que automatiza todas as atividades listadas nos passos abaixo e facilita muito a implementação do nó.
O NGINX Open Source pode ser obtido do nginx.org ou dos repositórios padrão do Debian/CentOS, dependendo das suas necessidades, preferências de versão do NGINX e políticas de gerenciamento de repositório. O Wallarm fornece pacotes tanto para nginx.org como para versões fornecidas pela distribuição. Este guia foca no NGINX dos repositórios Debian/CentOS.
Casos de uso¶
Dentre todas as opções de implantação da Wallarm suportadas, os pacotes DEB/RPM para NGINX fornecidos pela distribuição são recomendados para a implantação da Wallarm nestes casos de uso:
-
Sua infraestrutura é baseada em metal puro ou máquinas virtuais sem o uso de métodos baseados em contêineres. Normalmente, essas configurações são gerenciadas com ferramentas de Infraestrutura como Código (IaC), como Ansible ou SaltStack.
-
Seus serviços são construídos em torno do NGINX fornecido pela distribuição. A Wallarm pode estender suas funcionalidades usando esses pacotes.
Requisitos¶
-
Acesso à conta com a função de Administrador e autenticação de dois fatores desativada na Console Wallarm para a Nuvem EUA ou Nuvem UE
-
SELinux desativado ou configurado de acordo com as instruções
-
Execução de todos os comandos como superusuário (por exemplo,
root
) -
Acesso a
https://repo.wallarm.com
para baixar pacotes. Certifique-se de que o acesso não está bloqueado por um firewall -
Acesso a
https://us1.api.wallarm.com
para trabalhar com a Nuvem Wallarm EUA ou ahttps://api.wallarm.com
para trabalhar com a Nuvem Wallarm UE. Se o acesso pode ser configurado apenas via servidor proxy, então use as instruções -
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
-
Editor de texto instalado vim, nano, ou qualquer outro. Na instrução, vim é usado
1. Adicione os repositórios Debian/CentOS¶
sudo apt -y install dirmngr
curl -fSsL https://repo.wallarm.com/wallarm.gpg | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/wallarm.gpg --import
sudo chmod 644 /etc/apt/trusted.gpg.d/wallarm.gpg
sh -c "echo 'deb https://repo.wallarm.com/debian/wallarm-node bullseye/4.8/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
2. Instale o NGINX com os pacotes Wallarm¶
O comando instala os seguintes pacotes:
-
nginx
para o NGINX -
libnginx-mod-http-wallarm
ounginx-mod-http-wallarm
para o módulo NGINX-Wallarm -
wallarm-node
para o módulo postanalytics, o banco de dados Tarantool e pacotes adicionais do NGINX-Wallarm
3. Conecte o módulo Wallarm¶
Copie os arquivos de configuração para a configuração do sistema:
4. Conecte o nó de filtragem ao Wallarm Cloud¶
The Wallarm filtering node interacts with the Wallarm Cloud. You need to connect the node to the Cloud.
When connecting node to the Cloud, you can set the node name, under which it will be displayed in the Wallarm Console UI and put the node into the appropriate node group (used to logically organize nodes in UI).
To connect the node to the Cloud, use a Wallarm token of the appropriate type:
- Open Wallarm Console → Settings → API tokens in the US Cloud or EU Cloud.
- Find or create API token with the
Node deployment/Deployment
usage type. - Copy this token.
-
Run the
register-node
script on a machine where you install the filtering node:<TOKEN>
is the copied value of the API token with theDeploy
role.--labels 'group=<GROUP>'
parameter puts your node to the<GROUP>
node group (existing, or, if does not exist, it will be created). If you are installing filtering and postanalytics modules separately, it is recommended to put them into the same group.
- Open Wallarm Console → Nodes in the US Cloud or EU Cloud.
- Do one of the following:
- Create the node of the Wallarm node type and copy the generated token.
- Use existing node group - copy token using node's menu → Copy token.
-
Run the
register-node
script on a machine where you install the filtering node:
<TOKEN>
is the copied value of the node token. If you are installing filtering and postanalytics modules separately, it is recommended to put them into the same group using the same node token.
- You may add
-n <HOST_NAME>
parameter to set a custom name for your node instance. Final instance name will be:HOST_NAME_NodeUUID
.
5. Ative o Wallarm para analisar o tráfego¶
Por padrão, o nó Wallarm implantado não analisa o tráfego de entrada.
Dependendo da abordagem de implantação Wallarm selecionada (in-line ou Out-of-Band), configure o Wallarm para intermediar o tráfego ou processar o espelho de tráfego.
Realize a seguinte configuração no arquivo /etc/nginx/conf.d/default.conf
na máquina com o nó instalado:
-
Defina um endereço IP para o Wallarm intermediar o tráfego legítimo. Pode ser um IP de uma instância de aplicativo, balanceador de carga, nome DNS, etc., dependendo da sua arquitetura.
Para fazer isso, edite o valor
proxy_pass
, por exemplo, o Wallarm deve enviar solicitações legítimas parahttp://10.80.0.5
: -
Para que o nó Wallarm analise o tráfego de entrada, defina a diretiva
wallarm_mode
comomonitoring
:O modo de monitoramento é o recomendado para a primeira implantação e teste de solução. O Wallarm também fornece modos de bloqueio seguro e bloqueio, leia mais.
-
Para que o nó Wallarm aceite tráfego espelhado, defina a seguinte configuração no bloco
server
do NGINX:wallarm_force server_addr $http_x_server_addr; wallarm_force server_port $http_x_server_port; # Alterar 222.222.222.22 para o endereço do servidor de espelhamento 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;
- As diretivas
set_real_ip_from
ereal_ip_header
são necessárias para que o Console Wallarm exiba os endereços IP dos atacantes. - 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.
- As diretivas
-
Para o nó Wallarm analisar o tráfego espelhado, defina a diretiva
wallarm_mode
paramonitoring
:Como as solicitações maliciosas não podem ser bloqueadas, o único modo que o Wallarm aceita é o de monitoramento. Para implantação in-line, também existem modos seguros de bloqueio 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 apenas registrar o tráfego malicioso (exceto o modo definido como off).
6. Reiniciar o NGINX¶
Concedendo permissão de root
ao usuário
Se você está executando o NGINX como um usuário que não possui permissão de root
, adicione este usuário ao grupo wallarm
utilizando o seguinte comando:
onde <nome_do_usuário>
é o nome do usuário sem permissão de root
.
7. Configurar o envio de tráfego para a instância do Wallarm¶
Dependendo da abordagem de implantação sendo usada, realize as seguintes configurações:
Atualize os alvos do seu balanceador de carga para enviar tráfego para a instância Wallarm. Para detalhes, consulte a documentação do seu balanceador de carga.
Configure seu servidor web ou proxy (por exemplo, NGINX, Envoy) para espelhar o tráfego de entrada para o nó Wallarm. Para detalhes de configuração, recomendamos que se refira à documentação do seu servidor web ou proxy.
Dentro do [link][exemplos-espelhando-servidor-web], você encontrará a configuração de exemplo dos servidores web e proxy mais populares (NGINX, Traefik, Envoy).
8. Testar 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.
9. Ajustar a solução implantada¶
O módulo dinâmico Wallarm com configurações padrão é instalado para o NGINX estável
. O nó de filtragem pode necessitar de alguma configuração adicional após a implantação.
As configurações do Wallarm são definidas usando as diretivas NGINX ou a interface do usuário do Console Wallarm. As diretivas devem ser definidas nos seguintes arquivos na máquina com o nó Wallarm:
-
/etc/nginx/conf.d/default.conf
com configurações do NGINX -
/etc/nginx/conf.d/wallarm.conf
com configurações globais do nó de filtragemEste arquivo é usado para configurações aplicadas a todos os domínios. Para aplicar configurações diferentes para diferentes grupos de domínio, usa-se o arquivo
default.conf
ou criar novos arquivos de configuração para cada grupo de domínio (por exemplo,example.com.conf
etest.com.conf
). Mais informações detalhadas sobre os arquivos de configuração do NGINX estão disponíveis na documentação oficial do NGINX. -
/etc/nginx/conf.d/wallarm-status.conf
com configurações de monitoramento do nó Wallarm. A descrição detalhada está disponível no link -
/etc/default/wallarm-tarantool
ou/etc/sysconfig/wallarm-tarantool
com as configurações do banco de dados Tarantool
Abaixo estão algumas das configurações típicas que você pode aplicar, se necessário:
-
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