Como utilizar a integração Request Variation Controller através do Marketplace da Azion

A integração Request Variation Controller é, na verdade, um conjunto de duas integrações que trabalham de forma síncrona para proteger seus ativos online.

Na fase de resposta, o Hash Generator cria um cookie assinado que rastreia os diferentes argumentos que o usuário (ou a origem) está usando na requisição. Este cookie será usado pela a segunda integração, Hash Validator, que verifica o número de variações feitas e bloqueia o acesso à origem sempre que o usuário excede o número máximo permitido.


Obtenha a integração

Request Variation Controller é uma integração serverless disponível no Marketplace da Azion. Lembre-se de que essa integração é dividida em duas partes, então para executá-la você precisará instalar ambas: hash generator e hash validator.

Com a ajuda desta integração, um cookie assinado pode ser criado ou atualizado, contendo detalhes sobre quantas requisições diferentes foram feitas em sucessão para uma edge application.

Para obter a integração, siga os passos abaixo:

  1. Acesse o Azion Console > Marketplace.
  2. Na homepage do Marketplace, selecione a barra de busca e digite “variation” ou navegue pelos cards para encontrar as duas integrações que compõem a Request Variation Controller.
  3. Depois de encontrar os cards para a integração: Request Variation Controller - Hash Generator e Request Variation Controller - Hash Validator, selecione um para ir para a página da integração.
  4. Clique no botão Install.

Você deve seguir os mesmos passos para instalar a segunda integração da sua Request Variation Controller, apenas alterando o nome da integração.

Em ambos os casos, após clicar no botão Install, aparecerá uma mensagem indicando que sua integração foi instalada com sucesso.


Configure a integração

Depois de obter sua integração no Marketplace, ela estará disponível na sua lista de edge functions. Para usar a integração, será necessário criar uma edge application.

Crie uma regra do Edge Firewall

Para configurar sua integração, siga estes passos:

  1. No canto superior esquerdo, selecione Products menu > Edge Application na seção BUILD.
  2. Na página de listagem das suas edge applications, selecione aquela que você criou para usar com a integração Request Variation Controller.
  3. Na aba Main Settings, localize o switch Edge Functions e ative-o para habilitar funções em sua edge application.
  4. Ative também o switch Application Accelerator para habilitar a funcionalidade Forward Cookies para sua aplicação.
    • A necessidade desse passo será abordada na seção do Rules Engine.
  5. Clique no botão Save.

Você receberá uma mensagem de sucesso indicando que sua edge application foi atualizada.

Instancie a integração

Para habilitar esta integração, ainda na página da sua edge application, siga estes passos:

  1. Selecione a aba Functions no menu superior.
  2. Clique no botão Add Function.
  3. Escolha um nome fácil de lembrar para sua função.
  4. No menu suspenso de funções, selecione a função Request Variation Controller.

Essa ação irá carregar a integração, mostrando um formulário com o código-fonte dela e, logo acima, duas abas: Code e Args. Ao clicar na aba Code, você poderá navegar pelo código, mas não poderá alterá-lo.

Como você tem duas integração, terá que configurar duas abas Args, uma para a response phase e outra para a request phase.

Para a response phase, os Args são:

{
"cookie_name": "azn",
"cookie_secret": "1234567890123456",
"cookie_max_age": 45,
"args_list": ["http_x_something", "http_x_another_thing",
"request_body_userid"]
}

Onde:

  • cookie_name: define o nome do cookie. O valor padrão é azn.
  • cookie_secret: define a chave usada para criptografar o cookie assinado. Devido ao algoritmo de criptografia usado aqui, o AES-128, esta chave deve ter exatamente 16 caracteres.
  • cookie_max_age: define o tempo de expiração do cookie. Se você não definir nenhum tempo (passando um valor nulo ou nenhum valor), o cookie será um cookie de sessão. O valor padrão é 45.
  • args_list: define a lista de variáveis do Nginx que serão analisadas na requisição do usuário. Sempre que essas variáveis mudarem, a contagem de mudanças será aumentada. Esses parâmetros serão usados para bloquear ou permitir o acesso.

Para a request phase, os Args são:

{
"cookie_name": "azn",
"cookie_secret": "1234567890123456",
"max_variation": 6,
"max_unique_variation": 2
}

Onde*:

cookie_name: define o nome do cookie. Deve ser o mesmo que foi definido na response phase. cookie_secret: define a chave secreta para o cookie. Deve ser a mesma que foi definida na response phase. max_variation: define o número máximo de qualquer tipo de variação nos parâmetros. max_unique_variation: define o número máximo de variações únicas nos parâmetros.

Esta função descriptografa o cookie assinado e verifica se alguma variante do cookie ocorreu. Caso tenha ocorrido, um novo cabeçalho de requisição com o nome [COOKIE_NAME]-[VIOLATION-TYPE)]-[TRUE] será anexado à request.

As possíveis violações podem assumir três valores

  • All variations: independentemente de haver valores repetidos, conta-se o número de vezes que o valor do cookie foi alterado. Por exemplo, se o valor do cookie mudasse de “nada” para “A” no primeiro pedido, de “A” para “B” no segundo, depois para “C” no terceiro, então de “B” para “C” no quarto, de “B” para “A” no quinto, e finalmente para “A” no sexto pedido, o número total de variações seria 5. Se o cookie tiver o nome padrão, o cabeçalho da violação que é adicionado ao pedido quando esta violação ocorre é http_cookie_name_any_variation_violation.

  • Unique variations: conta o número de valores distintos que foram atribuídos ao cookie desde sua criação. Considerando que o cookie só tenha como valores distintos “A,” “B,” e “C”, a variação única, usando o mesmo exemplo acima, seria, portanto, 3. assumindo que o cookie tenha o nome padrão, quando esta violação ocorrer, um cabeçalho de violação chamado http_cookie_name_unique_variation_violation será adicionado a request.

  • Signature violation*: Quando a função não conseguir decifrar o cookie assinado (por exemplo, porque foi assinado com uma chave diferente ou porque o cookie foi alterado no lado do cliente), esta violação será acionada. Assumindo que o cookie tenha o nome padrão, quando esta violação for acionada, o pedido terá o cabeçalho de violação http_cookie_name_signature_violation adicionado a ele.

Configure o Rules Engine

Ainda na página Edge Application, na aba Rules Engine, você deverá configurar as regras (criteria e behavior) que deseja aplicar para executar sua integração.

Primeiro, você deve configurar a sua response phase dentro do Rules Engine.

Para fazer isso, siga estes passos:

  1. Selecione a aba Rules Engine.
  2. Clique no botão + Rule Engine.
  3. Dê um nome fácil de lembrar e, opcionalmente, uma descrição à sua regra.
  4. Selecione Response Phase.
  5. Informe todos os critérios (criteria) que você precisa para executar sua integração.
  6. No campo behavior, selecione Run Function no menu suspenso e então selecione a função Request Variation Controller - Hash Generator, de acordo com o nome que você deu na etapa de instanciação.
  7. Clique no botão Save.

Agora, você deve configurar a request phase.

Para fazer isso, siga estes passos:

  1. Selecione a aba Rules Engine.
  2. Clique no botão + Rule Engine.
  3. Dê um nome fácil de lembrar e, opcionalmente, uma descrição à sua regra.
  4. Selecione Request Phase.
  5. Informe os critérios (criteria) que você precisa para executar sua integração.
  6. No campo behavior, selecione Run Function no menu suspenso e então selecione a função Request Variation - Hash Validator, de acordo com o nome que você deu no passo de instanciação.
  7. Você precisará de um segundo behavior para que a integração Request Variation Controller funcione: Forward Cookies. Para adicionar este behavior, clique no botão + e selecione a opção Forward Cookies no menu suspenso.
  8. Clique no botão Save.

Pronto. Você instanciou com sucesso suas duas integrações e agora você está protegido contra ataques de bots maliciosos.


Contribuidores