Pular para conteúdo

Implementando o Wallarm a partir da Imagem de Máquina GCP

Este artigo fornece instruções para implantar o Wallarm na GCP em linha usando a Imagem oficial de Máquina.

Casos de uso

Entre todas as opções de implementação do Wallarm suportadas, a Imagem de Máquina GCP é recomendada para a implementação do Wallarm nestes casos de uso:

  • Sua infraestrutura existente reside no GCP.

  • Você pretende implementar uma solução de segurança como uma instância de nuvem separada, em vez de instalá-la diretamente em sistemas front-end como o NGINX.

Requisitos

  • Uma conta GCP

  • Acesso à conta com a função de Administrador e autenticação de dois fatores desativada no Console Wallarm para a Nuvem dos EUA ou Nuvem EU

  • Acesso a https://us1.api.wallarm.com:444 para trabalhar com Wallarm Cloud US ou a https://api.wallarm.com:444 para trabalhar com Wallarm Cloud EU. Se o acesso pode ser configurado apenas via servidor proxy, use as instruções

  • Executando todos os comandos em uma instância Wallarm como superusuário (por exemplo, root)

1. Inicie uma instância do nó de filtragem

Inicie a instância através da interface do Google Cloud

Para iniciar a instância do nó de filtragem através da interface do Google Cloud, abra a imagem do nó Wallarm no Google Cloud Marketplace e clique em LANÇAR.

A instância será iniciada com um nó de filtragem pré-instalado. Para ver informações detalhadas sobre o lançamento de instâncias no Google Cloud, consulte a documentação oficial da Plataforma Google Cloud.

Inicie a instância via Terraform ou outras ferramentas

Ao usar uma ferramenta como o Terraform para iniciar a instância do nó de filtragem usando a imagem Wallarm GCP, você pode precisar fornecer o nome desta imagem na configuração do Terraform.

  • O nome da imagem tem o seguinte formato:

    wallarm-node-195710/wallarm-node-<VERSAO_DA_IMAGEM>-build
    
  • Para iniciar a instância com a versão 4.8 do nó de filtragem, use o seguinte nome de imagem:

    wallarm-node-195710/wallarm-node-4-8-20231019-221905
    

Para obter o nome da imagem, você também pode seguir estas etapas:

  1. Instale o Google Cloud SDK.

  2. Execute o comando gcloud compute images list com os seguintes parâmetros:

    gcloud compute images list --project wallarm-node-195710 --filter="name~'wallarm-node-4-8-*'" --no-standard-images
    
  3. Copie o valor da versão do nome da imagem mais recente disponível e cole o valor copiado no formato do nome da imagem fornecido. Por exemplo, a imagem da versão 4.8 do nó de filtragem terá o seguinte nome:

    wallarm-node-195710/wallarm-node-4-8-20231019-221905
    

2. Configure a instância do nó de filtragem

Realize as seguintes ações para configurar a instância do nó de filtragem iniciada:

  1. Navegue até a página de VM instances na seção Compute Engine do menu.

  2. Selecione a instância do nó de filtragem lançada e clique no botão Editar.

  3. Permita os tipos necessários de tráfego de entrada marcando as caixas de seleção correspondentes na configuração do Firewalls.

  4. Se necessário, você pode restringir a conexão à instância com as chaves SSH do projeto e usar um par de chaves SSH personalizado para se conectar a esta instância. Para fazer isso, execute as seguintes ações:

  5. Marque a caixa de seleção Bloquear em todo o projeto na configuração das Chaves SSH.
  6. Clique no botão Mostrar e editar na configuração Chaves SSH para expandir o campo para inserir uma chave SSH.
  7. Gere um par de chaves SSH pública e privada. Por exemplo, você pode usar as utilidades ssh-keygen e PuTTYgen.

    ![Gerando chaves SSH usando PuTTYgen][img-ssh-key-generation]
    
  8. Copie uma chave aberta no formato OpenSSH a partir da interface do gerador de chaves usado (no exemplo atual, a chave pública gerada deve ser copiada da área Chave pública para colar no arquivo authorized_keys do OpenSSH da interface do PuTTYgen) e cole-o no campo contendo a dica Insira todos os dados da chave.

  9. Salve a chave privada. Ela será necessária para conectar a instância configurada no futuro.

  10. Clique no botão Salvar na parte inferior da página para aplicar as alterações.

3. Conecte-se à instância do nó de filtragem via SSH

Para ver informações detalhadas sobre maneiras de se conectar a instâncias, acesse este link.

Connecting to the instance via a custom private key

If during base instance creation process you have enabled connection to the instance via a custom SSH key pair, make sure you have access to the private key from this key pair.

4. Conecte o nó de filtragem à Nuvem Wallarm

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).
  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.
  • 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. Para iniciar a análise de tráfego, configure o Wallarm para proxy o tráfego através do arquivo /etc/nginx/sites-enabled/default na instância Wallarm:

  1. Defina um endereço IP para o Wallarm fazer proxy do tráfego legítimo. Pode ser um IP de uma instância de aplicativo, balanceador de carga ou 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 para http://10.80.0.5:

    server {
        listen 80;
        listen [::]:80 ipv6only=on;
    
        ...
    
        location / {
            proxy_pass http://10.80.0.5; 
            ...
        }
    }
    
  2. Para que o nó Wallarm analise o tráfego de entrada, defina a diretiva wallarm_mode para monitoring:

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

    O modo de monitoramento é o recomendado para o primeiro deployment e teste da solução. Wallarm fornece modos seguros de bloqueio e bloqueio, leia mais.

6. Reinicie o NGINX

Para aplicar as configurações, reinicie o NGINX na instância Wallarm:

sudo systemctl restart nginx

Cada alteração de arquivo de configuração exige que o NGINX seja reiniciado para aplicá-la.

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

Atualize os alvos do seu balanceador de carga para enviar tráfego para a instância Wallarm. Para mais detalhes, por favor, consulte a documentação do seu balanceador de carga.

8. Teste a operação Wallarm

  1. A solicitação com teste de ataque Path Traversal para um endereço do balanceador de carga ou da máquina com o nó Wallarm:

    curl http://<ENDEREÇO>/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

Como a Wallarm opera no modo de monitoramento, o nó Wallarm não bloqueia o ataque, mas o registra.

9. Ajuste fino da solução implementada

A implantação agora está completa. 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 NGINX ou a UI do Console Wallarm. As diretivas devem ser definidas nos seguintes arquivos na instância Wallarm:

  • /etc/nginx/sites-enabled/default define a configuração do NGINX

  • /etc/nginx/conf.d/wallarm.conf define a configuração global do nó de filtragem Wallarm

  • /etc/nginx/conf.d/wallarm-status.conf define a configuração do serviço de monitoramento do nó de filtragem

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

Você pode modificar os arquivos listados ou criar seus próprios arquivos de configuração para definir a operação do NGINX e Wallarm. É recomendado criar um arquivo de configuração separado com o bloco server para cada grupo de domínios que devem ser processados da mesma maneira (por exemplo, example.com.conf). Para ver informações detalhadas sobre o trabalho com arquivos de configuração do NGINX, prossiga para a documentação oficial do NGINX.

Criando um arquivo de configuração

Ao criar um arquivo de configuração personalizado, certifique-se de que o NGINX está ouvindo as conexões de entrada na porta livre.

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