Instalação do Módulo Dinâmico Wallarm OOB para NGINX Stable usando Pacotes Linux¶
Estas instruções descrevem os passos para instalar Wallarm como um módulo dinâmico OOB usando pacotes Linux para NGINX estável
do nginx.org.
Wallarm suporta os seguintes sistemas operacionais:
-
Debian 11.x (bullseye)
-
Ubuntu 18.04 LTS (bionic)
-
Ubuntu 20.04 LTS (focal)
-
Ubuntu 22.04 LTS (jammy)
-
CentOS 7.x
-
Amazon Linux 2.0.2021x e inferior
-
AlmaLinux, Rocky Linux ou Oracle Linux 8.x
-
RHEL 8.x
Casos de uso¶
Entre todas as opções de implantação do Wallarm suportadas, os pacotes DEB/RPM para NGINX Stable são recomendados para a implantação do Wallarm nestes casos de uso:
-
Sua infraestrutura é baseada em um hardware 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 Stable. O 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 Consola Wallarm para a Nuvem US ou Nuvem EU
-
SELinux desativado ou configurado de acordo com as instruções
-
NGINX versão 1.24.0
Versões personalizadas do NGINX
Se você possui uma versão diferente, consulte as instruções sobre como conectar o módulo Wallarm a uma compilação personalizada do NGINX
-
Executando 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 só puder ser configurado via servidor proxy, 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. Instale o NGINX estável e as dependências¶
Estas são as opções para instalar o NGINX estável
a partir do repositório NGINX:
-
Instalação a partir do pacote construído
sudo apt -y install curl gnupg2 ca-certificates lsb-release debian-archive-keyring echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list curl -fSsL https://nginx.org/keys/nginx_signing.key | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/nginx.gpg --import sudo chmod 644 /etc/apt/trusted.gpg.d/nginx.gpg sudo apt update sudo apt -y install nginx
-
Instale as dependências necessárias para o NGINX estável:
-
Instale o NGINX estável:
-
Se um repositório EPEL estiver adicionado no CentOS 7.x, desabilite a instalação do NGINX estável a partir deste repositório adicionando
exclude=nginx*
ao arquivo/etc/yum.repos.d/epel.repo
.Exemplo do arquivo alterado
/etc/yum.repos.d/epel.repo
:[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 exclude=nginx* [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source #baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1
-
Instale o NGINX estável a partir do repositório oficial:
-
-
Compilação do código fonte a partir do ramo
estável
do repositório NGINX e instalação com as mesmas opções.NGINX para AlmaLinux, Rocky Linux ou Oracle Linux 8.x
Essa é a única opção para instalar o NGINX no AlmaLinux, Rocky Linux ou Oracle Linux 8.x.
Mais informações detalhadas sobre a instalação do NGINX estão disponíveis na documentação oficial do NGINX.
2. Adicione repositórios Wallarm¶
O nó Wallarm é instalado e atualizado a partir dos repositórios Wallarm. Para adicionar repositórios, use os comandos para sua plataforma:
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
3. Instale os pacotes Wallarm¶
Os seguintes pacotes são necessários:
-
nginx-module-wallarm
para o módulo NGINX-Wallarm -
wallarm-node
para o módulo postanalytics, banco de dados Tarantool e pacotes adicionais NGINX-Wallarm
4. Conecte o módulo Wallarm¶
-
Abra o arquivo
/etc/nginx/nginx.conf
: -
Verifique se a linha
include /etc/nginx/conf.d/*;
está adicionada ao arquivo. Caso não tenha, adicione-a. -
Adicione a seguinte diretiva logo após a diretiva
worker_processes
:Exemplo de configuração com a diretiva adicionada:
-
Copie os arquivos de configuração para a configuração do sistema:
5. 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
.
6. Habilitar 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:
-
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
ereal_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.
- As diretivas
-
Para o nó Wallarm analisar o tráfego espelhado, defina a diretiva
wallarm_mode
comomonitoring
: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).
7. 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:
onde <nome_do_usuário>
é o nome do usuário sem permissão de root
.
8. 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.
9. Testar 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.
10. Ajuste fino da solução implantada¶
O módulo dinâmico Wallarm com as configurações padrão está instalado para NGINX estável
. O nó de filtragem pode requerer alguma configuração adicional após a implementação.
As configurações Wallarm são definidas por meio das diretrizes NGINX ou da Wallarm Console UI. As diretrizes devem ser configuradas nos seguintes arquivos na máquina com o nó Wallarm:
-
/etc/nginx/conf.d/default.conf
com as configurações NGINX -
/etc/nginx/conf.d/wallarm.conf
com as configurações globais do nó de filtragemEste arquivo é usado para configurações aplicadas a todos os domínios. Para aplicar diferentes configurações a grupos de domínios diferentes, use o arquivo
default.conf
ou crie novos arquivos de configuração para cada grupo de domínios (por exemplo,example.com.conf
etest.com.conf
). Mais informações detalhadas sobre os arquivos de configuração 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. Descrição detalhada está disponível no link -
/etc/default/wallarm-tarantool
or/etc/sysconfig/wallarm-tarantool
com as configurações do banco de dados Tarantool
Abaixo estão alguns dos ajustes típicos 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