Pular para conteúdo

Implantando Wallarm da Amazon Machine Image

Este artigo fornece instruções para implantar Wallarm na AWS in-line usando a Amazon Machine Image (AMI) oficial.

Casos de uso

Dentre todas as opções de implantação do Wallarm suportadas, AMI é recomendado para a implantação do Wallarm nestes casos de uso:

  • Sua infraestrutura existente reside na AWS.

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

Requisitos

  • Uma conta AWS

  • Entendimento de AWS EC2, Security Groups

  • Qualquer região AWS de sua escolha, não há restrições específicas na região para a implantação do nó Wallarm

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

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

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

1. Crie um par de chaves SSH na AWS

Durante o processo de implantação, você precisará se conectar à máquina virtual via SSH. A Amazon EC2 permite criar um par nomeado de chaves SSH públicas e privadas que podem ser usadas para se conectar à instância.

Para criar um par de chaves:

  1. Navegue até a guia Key pairs no painel da Amazon EC2.

  2. Clique no botão Create Key Pair.

  3. Insira um nome para o par de chaves e clique no botão Create.

Uma chave SSH privada no formato PEM começará a ser baixada automaticamente. Salve a chave para se conectar à instância criada no futuro.

Para ver informações detalhadas sobre a criação de chaves SSH, prossiga para a documentação da AWS.

2. Crie um Grupo de Segurança

Um Grupo de Segurança define conexões de entrada e saída permitidas e proibidas para máquinas virtuais. A lista final de conexões depende do aplicativo protegido (por exemplo, permitindo todas as conexões de entrada para as portas TCP/80 e TCP/443).

Para criar um grupo de segurança para o nó de filtragem:

  1. Navegue até a guia Security Groups no painel da Amazon EC2 e clique no botão Create Security Group.

  2. Insira um nome para o grupo de segurança e uma descrição opcional na janela de diálogo que aparece.

  3. Selecione o VPC necessário.

  4. Configure as regras de conexões de entrada e saída nas guias Inbound e Outbound.

  5. Clique no botão Create para criar o grupo de segurança.

Criando um grupo de segurança

Regras para conexões de saída do grupo de segurança

Ao criar um grupo de segurança, todas as conexões de saída são permitidas por padrão. Se você restringir as conexões de saída do nó de filtragem, certifique-se de que ele tenha acesso a um servidor API Wallarm. A escolha do servidor API Wallarm depende da Nuvem Wallarm que você está usando:

  • Se você está usando a Nuvem US, seu nó precisa ter acesso à us1.api.wallarm.com.
  • Se você está usando a Nuvem EU, seu nó precisa ter acesso à api.wallarm.com.

O nó de filtragem requer acesso a um servidor API Wallarm para operação correta.

Para ver informações detalhadas sobre a criação de um Grupo de Segurança, prossiga para a documentação da AWS.

3. Inicie uma instância do nó Wallarm

Para iniciar uma instância com o nó de filtragem Wallarm, prossiga para este link e inscreva-se no nó de filtragem.

Ao criar uma instância, você precisa especificar o Grupo de Segurança criado anteriormente da seguinte forma:

  1. Ao trabalhar com o Assistente de Lançamento de Instância, prossiga para a etapa 6. Configure Security Group de lançamento da instância clicando na guia correspondente.

  2. Escolha a opção Select an existing security group na configuração Assign a security group.

  3. Selecione o grupo de segurança na lista que aparece.

Depois de especificar todas as configurações de instância necessárias, clique no botão Review and Launch, certifique-se de que a instância está configurada corretamente e clique no botão Launch.

Na janela que aparece, especifique o par de chaves criado anteriormente executando as seguintes ações:

  1. Na primeira lista suspensa, selecione a opção Choose an existing key pair.

  2. Na segunda lista suspensa, selecione o nome do par de chaves.

  3. Certifique-se de que você tem acesso à chave privada no formato PEM do par de chaves especificado na segunda lista suspensa e marque a caixa para confirmar isso.

  4. Clique no botão Launch Instances.

A instância será iniciada com o nó de filtragem pré-instalado.

Para ver informações detalhadas sobre o lançamento de instâncias na AWS, prossiga para a documentação da AWS.

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

Para ver informações detalhadas sobre maneiras de se conectar a uma instância via SSH, prossiga para a documentação da AWS.

Você precisa usar o nome de usuário admin para se conectar à instância.

Usando a chave para conectar via SSH

Use a chave privada no formato PEM que você criou anteriormente para se conectar à instância via SSH. Essa deve ser a chave privada do par de chaves SSH que você especificou ao criar uma instância.

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

6. Ativar 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.

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

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

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

10. Ajuste fino da solução implantada

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: