Pular para conteúdo

Instalando o Módulo Dinâmico Wallarm OOB para Distribuição Provida de NGINX

Estas instruções descrevem os passos para instalar o Wallarm como um módulo dinâmico OOB usando pacotes Linux para distribuição provida de NGINX.

NGINX Open Source pode ser obtido a partir de nginx.org ou dos repositórios default de Debian/CentOS dependendo das suas necessidades, preferências de versão do NGINX e políticas de gerenciamento de repositórios. Wallarm fornece pacotes para ambas versões
nginx.org e fornecidas pela distribuição. Este guia se foca no NGINX de repositórios Debian/CentOS.

O módulo Wallarm é compatível com NGINX provida pela distribuição nos seguintes sistemas operacionais:

  • Debian 10.x (buster)

  • Debian 11.x (bullseye)

  • CentOS 7.x

  • AlmaLinux, Rocky Linux ou Oracle Linux 8.x

  • RHEL 8.x

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 a https://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

    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
    
  • 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 apt-key add -
sh -c "echo 'deb https://repo.wallarm.com/debian/wallarm-node buster/4.8/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
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
sudo yum install -y epel-release
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/7/4.8/x86_64/wallarm-node-repo-4.8-0.el7.noarch.rpm
sudo yum install -y epel-release
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/8/4.8/x86_64/wallarm-node-repo-4.8-0.el8.noarch.rpm
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/8/4.8/x86_64/wallarm-node-repo-4.8-0.el8.noarch.rpm

2. Instale o NGINX com os pacotes Wallarm

O comando instala os seguintes pacotes:

  • nginx para o NGINX

  • libnginx-mod-http-wallarm ou nginx-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

sudo apt -y install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm
sudo apt -y install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm
sudo yum install -y nginx wallarm-node nginx-mod-http-wallarm
sudo yum install -y nginx wallarm-node nginx-mod-http-wallarm
sudo yum install -y nginx wallarm-node nginx-mod-http-wallarm

3. Conecte o módulo Wallarm

Copie os arquivos de configuração para a configuração do sistema:

sudo cp /usr/share/doc/libnginx-mod-http-wallarm/examples/*conf /etc/nginx/conf.d/
sudo cp /usr/share/doc/nginx-mod-http-wallarm/examples/*conf /etc/nginx/conf.d/
sudo cp /usr/share/doc/nginx-mod-http-wallarm/examples/*conf /etc/nginx/conf.d/
sudo cp /usr/share/doc/nginx-mod-http-wallarm/examples/*conf /etc/nginx/conf.d/

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).

Grouped nodes

To connect the node to the Cloud, use a Wallarm token of the appropriate type:

  1. Open Wallarm Console → SettingsAPI tokens in the US Cloud or EU Cloud.
  2. Find or create API token with the Node deployment/Deployment usage type.
  3. Copy this token.
  4. Run the register-node script on a machine where you install the filtering node:

    sudo /usr/share/wallarm-common/register-node -t <TOKEN> --labels 'group=<GROUP>' -H us1.api.wallarm.com
    
    sudo /usr/share/wallarm-common/register-node -t <TOKEN> --labels 'group=<GROUP>'
    
    • <TOKEN> is the copied value of the API token with the Deploy 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.
  1. Open Wallarm Console → Nodes in the US Cloud or EU Cloud.
  2. 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.
  3. Run the register-node script on a machine where you install the filtering node:

    sudo /usr/share/wallarm-common/register-node -t <TOKEN> -H us1.api.wallarm.com
    
    sudo /usr/share/wallarm-common/register-node -t <TOKEN>
    
  • <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. Ativar Wallarm para analisar o tráfego

Por padrão, o nó Wallarm implantado não analisa o tráfego de entrada.

Realize a seguinte configuração no arquivo /etc/nginx/conf.d/default.conf na máquina com o nó instalado para configurar o Wallarm para processar o espelho de tráfego:

  1. Para o nó Wallarm aceitar o tráfego espelhado, defina a seguinte configuração no bloco NGINX server:

    wallarm_force server_addr $http_x_server_addr;
    wallarm_force server_port $http_x_server_port;
    # Altere 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 e real_ip_header são necessárias para que o Console Wallarm 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.
  2. Para o nó Wallarm analisar o tráfego espelhado, defina a diretiva wallarm_mode como monitoring:

    server {
        listen 80;
        listen [::]:80 ipv6only=on;
        wallarm_mode monitoring;
    
        ...
    }
    

    Como as solicitações maliciosas não podem ser bloqueadas, o único modo que o Wallarm aceita é o de monitoramento. Para implementaçã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 do monitoramento, o nó continua a monitorar o tráfego e apenas registra o tráfego malicioso (além do modo definido para desligado).

6. Reiniciar 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:

usermod -aG wallarm <nome_do_usuário>;

onde <nome_do_usuário> é o nome do usuário sem permissão de root.

sudo systemctl restart nginx
sudo systemctl restart nginx
sudo systemctl restart nginx
sudo systemctl restart nginx

7. Configurar o envio de tráfego para a instância Wallarm

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.

8. Testar 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

9. Ajustar finamente a solução implantada

O módulo dinâmico Wallarm com configurações default é instalado para o NGINX stable. O nó de filtragem pode exigir alguma configuração adicional após a implantação.

As configurações do Wallarm são definidas usando as diretivas do NGINX ou a interface de usuário Wallarm Console. As directivas 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 filtragem

    O arquivo é usado para configurações aplicadas a todos os domínios. Para aplicar configurações diferentes a diferentes grupos de domínios, use o arquivo default.conf ou crie novos arquivos de configuração para cada grupo de domínio (por exemplo, example.com.conf e test.com.conf). Informações mais 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 as configurações de monitoramento do nó Wallarm. Uma descrição detalhada está disponível aqui.

  • /etc/default/wallarm-tarantool ou /etc/sysconfig/wallarm-tarantool com as configurações de banco de dados do Tarantool

Abaixo estão algumas das configurações típicas que você pode aplicar se necessário: