Pular para conteúdo

Implantando o NGINX Ingress Controller com Serviços Integrados Wallarm

Estas instruções fornecem os passos para implantar o controlador de ingresso Wallarm NGINX-based em seu cluster K8s. A solução envolve a funcionalidade padrão do Community Ingress NGINX Controller com serviços integrados Wallarm.

A solução tem a seguinte arquitetura:

Arquitetura da solução

A solução é implantada a partir do Wallarm Helm chart.

Casos de uso

Entre todas as opções de implantação Wallarm suportadas, esta solução é a recomendada para os seguintes casos de uso:

  • Não há controlador de ingresso e camada de segurança direcionando tráfego para recursos de ingresso compatíveis com o Community Ingress NGINX Controller.

  • Você está usando o Community Ingress NGINX Controller e procura uma solução de segurança compatível com sua pilha de tecnologia.

    Você pode substituir perfeitamente o Controlador de Ingresso NGINX implantado pelo descrito nestas instruções, apenas movendo sua configuração para uma nova implantação.

Requisitos

  • Versão da plataforma Kubernetes 1.24-1.27

  • Gerenciador de pacotes Helm

  • Compatibilidade dos seus serviços com o Controlador Ingress NGINX da comunidade versão 1.9.5

  • Acesso à conta com a função de 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 para trabalhar com a Nuvem Wallarm US ou a https://api.wallarm.com para trabalhar com a Nuvem Wallarm EU

  • Acesso a https://charts.wallarm.com para adicionar os gráficos Helm da Wallarm. Certifique-se de que o acesso não está bloqueado por um firewall

  • Acesso aos repositórios Wallarm no Docker Hub https://hub.docker.com/r/wallarm. Certifique-se de que o acesso não está bloqueado por um firewall

  • 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
    

Restrições conhecidas

  • A operação sem o módulo postanalytics não é suportada.

  • A redução de escala do módulo postanalytics pode resultar em uma perda parcial dos dados do ataque.

Instalação

  1. Instale o Wallarm Ingress Controller.

  2. Habilite a análise de tráfego para seu Ingress.

  3. Verifique a operação do Wallarm Ingress Controller.

Passo 1: Instalando o Wallarm Ingress Controller

Para instalar o Wallarm Ingress Controller:

  1. Gere um token de nó de filtração do tipo apropriado:

    1. Abra Wallarm Console → SettingsAPI tokens na US Cloud ou EU Cloud.
    2. Encontre ou crie um token API com o papel de origem Deploy.
    3. Copie este token.
    1. Abra o Console Wallarm → Nodes na US Cloud ou EU Cloud.
    2. Crie um nó de filtragem com o tipo Wallarm node e copie o token gerado.

      Criação de um nó Wallarm

  2. Crie um espaço de nomes Kubernetes para implantar o Helm chart com o Wallarm Ingress Controller:

    kubectl create namespace <KUBERNETES_NAMESPACE>
    
  3. Adicione o repositório do gráfico Wallarm:

    helm repo add wallarm https://charts.wallarm.com
    
  4. Crie o arquivo values.yaml com a configuração Wallarm. Exemplo do arquivo com a configuração mínima está abaixo.

    Ao usar um token de API, especifique um nome de grupo de nós no parâmetro nodeGroup. Seu nó será atribuído a este grupo, mostrado na seção Nodes do Console Wallarm. O nome do grupo padrão é defaultIngressGroup.

    controller:
      wallarm:
        enabled: "true"
        token: "<NODE_TOKEN>"
        apiHost: "us1.api.wallarm.com"
        # nodeGroup: defaultIngressGroup
    
    controller:
      wallarm:
        enabled: "true"
        token: "<NODE_TOKEN>"
        # nodeGroup: defaultIngressGroup
    

    Você também pode armazenar o token de nó Wallarm em segredos do Kubernetes e puxá-lo para o Helm chart. Leia mais

  5. Instale os pacotes Wallarm:

    helm install --version 4.8.2 <RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE> -f <PATH_TO_VALUES>
    
    • <RELEASE_NAME> é o nome para a versão Helm do gráfico do controlador de ingresso
    • <KUBERNETES_NAMESPACE> é o namespace Kubernetes que você criou para o Helm chart com o Wallarm Ingress Controller
    • <PATH_TO_VALUES> é o caminho para o arquivo values.yaml

Passo 2: Habilitando a análise de tráfego para o seu Ingress

kubectl annotate ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-mode=monitoring
kubectl annotate ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-application=<APPLICATION>
  • <YOUR_INGRESS_NAME> é o nome do seu Ingress

  • <YOUR_INGRESS_NAMESPACE> é o namespace do seu Ingress

  • <APPLICATION> é um número positivo que é único para cada uma de suas aplicações ou grupos de aplicações. Isso permitirá que você obtenha estatísticas separadas e distinga entre ataques direcionados às aplicações correspondentes

Passo 3: Verificando a operação do Wallarm Ingress Controller

  1. Pegue a lista de pods:

    kubectl get pods -n <NAMESPACE> -l app.kubernetes.io/name=wallarm-ingress
    

    Cada pod deve exibir o seguinte: STATUS: Running e READY: N/N. Por exemplo:

    NAME                                                              READY     STATUS    RESTARTS   AGE
    ingress-controller-nginx-ingress-controller-675c68d46d-cfck8      3/3       Running   0          5m
    ingress-controller-nginx-ingress-controller-wallarm-tarantljj8g   4/4       Running   0          5m
    
  2. Envie a solicitação com o teste Path Traversal ataque para o Ingress Controller Service:

    curl http://<INGRESS_CONTROLLER_IP>/etc/passwd
    

    Se o nó de filtragem estiver funcionando no modo block, o código 403 Forbidden será retornado na resposta à solicitação e o ataque será exibido em Wallarm Console → Events.

Configuração

Após a instalação e verificação bem-sucedida do Wallarm Ingress Controller, você pode fazer configurações avançadas para a solução, como:

Para encontrar parâmetros usados para configuração avançada e instruções apropriadas, por favor, siga o link.