VCL personalizado para solicitações de bloqueio
Você pode usar o módulo Fastly CDN para o Magento 2 a fim de criar uma ACL do Edge com uma lista de endereços IP que você deseja bloquear. Em seguida, você pode usar essa lista com um trecho VCL para bloquear solicitações recebidas. O código verifica o endereço IP da solicitação recebida. Se ele corresponder a um endereço IP incluído na lista de ACL, o Fastly bloqueará o acesso ao site e retornará um 403 Forbidden error
. Todos os outros endereços IP de clientes têm acesso permitido.
Pré-requisitos:
-
Seu ambiente deve ser configurado para usar o Fastly CDN. Consulte Configurar serviços do Fastly.
-
Verifique se você está executando a versão mais recente do módulo CDN Fastly para o Magento 2. Consulte Atualizar o Módulo Fastly.
-
Verifique a configuração do ambiente para o serviço Fastly. Consulte Verificar cache rápido.
-
Você deve ter credenciais de Administrador para acessar os ambientes de Preparo e Produção.
-
Lista de endereços IP de clientes a serem bloqueados
Criar Edge ACL para bloquear endereços IP de clientes
Você cria uma ACL do Edge para definir a lista de endereços IP a serem bloqueados. Depois de criar a ACL, você pode usá-la em um trecho de VCL personalizado para gerenciar o acesso ao site de Preparo ou Produção.
Gerencie o acesso para sites de Preparo e Produção criando a ACL do Edge com o mesmo nome em ambos os ambientes. O código de trecho VCL se aplica a ambos os ambientes.
- Faça logon no Administrador.
- Navegue até Lojas > Configurações > Configuração > Avançado > Sistema > Cache de Página Inteira > Configuração Rápida.
- Expanda a seção Edge ACL.
- Clique em Adicionar ACL para criar uma lista. Para este exemplo, nomeie a lista "incluir na lista de bloqueios arquivo".
- Insira os valores do endereço IP na lista. Todos os endereços IP de cliente adicionados a esta lista estão bloqueados e não podem acessar o site.
- Opcionalmente, marque a caixa de seleção Negado, se necessário.
Você faz referência à ACL do Edge pelo nome em seu código de trecho de VCL.
Incluir na lista de bloqueios Criar o VCL personalizado para o arquivo de pesquisa
Depois de definir a ACL do Edge, você pode usá-la para criar o trecho VCL para bloquear o acesso aos endereços IP especificados na ACL. Você pode usar o mesmo trecho de VCL em ambientes de Preparo e Produção, mas deve fazer upload do trecho para cada ambiente separadamente.
O seguinte código de trecho de VCL personalizado (formato JSON) mostra a lógica para bloquear solicitações recebidas com um endereço IP de cliente que corresponda a um endereço na ACL de inclui na lista de bloqueios.
{
"name": "blocklist",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( client.ip ~ blocklist) { error 403 \"Forbidden\"; }"
}
Antes de criar um trecho com base neste exemplo, revise os valores para determinar se você precisa fazer alterações:
-
name
: Nome do trecho VCL. Neste exemplo, usamos o nomeblocklist
. -
priority
: Determina quando o trecho VCL é executado. A prioridade é5
para executar imediatamente e verificar se uma solicitação de administrador vem de um endereço IP permitido. O trecho é executado antes de qualquer um dos trechos de VCL de Magento padrão (magentomodule_*
) ter uma prioridade 50. Defina a prioridade para cada trecho personalizado acima ou abaixo de 50, dependendo de quando você deseja que seu trecho seja executado. Os trechos com números de prioridade mais baixa são executados primeiro. -
type
: Especifica o tipo de trecho de VCL que determina o local do trecho no código de VCL gerado. Neste exemplo, usamosrecv
, que insere o código de VCL na sub-rotinavcl_recv
, abaixo do VCL padrão e acima de qualquer objeto. Consulte a Referência de trecho Fastly VCL para obter a lista de tipos de trecho. -
content
: o trecho de código VCL a ser executado, que verifica o endereço IP do cliente. Se o IP estiver na ACL do Edge, o acesso será bloqueado com um erro403 Forbidden
para todo o site. Todos os outros endereços IP de clientes têm acesso permitido.
Depois de revisar e atualizar o código do seu ambiente, use um dos métodos a seguir para adicionar o trecho de VCL personalizado à configuração do serviço Fastly:
-
Adicionar o trecho de VCL personalizado do Administrador. Esse método é recomendado se você puder acessar o Administrador. (Exige o Fastly versão 1.2.58 ou posterior.)
-
Salve o exemplo de código JSON em um arquivo (por exemplo,
blocklist.json
) e carregue-o usando a API Fastly. Use esse método se não conseguir acessar o Administrador.
Adicionar o trecho de VCL personalizado
-
Faça logon no Administrador.
-
Clique em Lojas > Configurações > Configuração > Avançado > Sistema.
-
Expanda Cache de Página Inteira > Configuração Rápida > Trechos de VCL Personalizados.
-
Clique em Criar trecho personalizado.
-
Adicione os valores do trecho de VCL:
-
Nome —
blocklist
-
Tipo —
recv
-
Prioridade —
5
-
Adicionar o conteúdo do trecho VCL:
code language-conf if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
Clique em Criar para gerar o arquivo de trecho VCL com o padrão de nome
type_priority_name.vcl
, por exemplorecv_5_blocklist.vcl
-
Depois que a página for recarregada, clique em Fazer upload do VCL para o Fastly na seção Configuração do Fastly para adicionar o arquivo à configuração do serviço Fastly.
-
Após os uploads, atualize o cache de acordo com a notificação na parte superior da página.
O Fastly valida a versão atualizada do código do VCL durante o processo de upload. Se a validação falhar, edite o trecho de VCL personalizado para corrigir o problema. Em seguida, carregue o VCL novamente.
Exemplos adicionais de VCL para solicitações de bloqueio
Os exemplos a seguir mostram como bloquear solicitações usando instruções condition em vez de uma lista ACL.
- Nome:
<name of the VCL>
- Dinâmico:
<0/1>
- Tipo:
<type>
- Prioridade:
<priority>
- Conteúdo:
<content>
Consulte Uso de trechos de VCL dinâmicos na documentação do Fastly VCL.
Amostra de código VCL: Bloco por código de país
Este exemplo usa o código de país ISO 3166-1 de dois caracteres para o país associado ao endereço IP.
{
"name": "blockbycountrycode",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( client.geo.country_code == \"HK\" ) { error 405 \"Not allowed\";}"
}
Amostra de código VCL: cabeçalho de solicitação Bloquear por Agente do Usuário HTTP
{
"name": "blockbyuseragent",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( req.http.User-Agent ~ \"(UCBrowser|MQQBrowser|LieBaoFast|Mb2345Browser)\" ) {error 405 \"Not allowed\";}"
}
$MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom
em seu ambiente. Os trechos neste diretório são carregados automaticamente quando você clica em carregar VCL para Fastly no Commerce Admin. Consulte Implantação automatizada de trechos de VCL personalizados no módulo Fastly CDN para obter a documentação do Magento 2.Modificar o trecho de VCL personalizado
-
Faça logon no Administrador.
-
Clique em Lojas > Configurações > Configuração > Avançadas > Sistema.
-
Expanda Cache de Página Inteira > Configuração Rápida > Trechos de VCL Personalizados.
-
Na coluna Ação, clique no ícone de configurações ao lado do trecho a ser editado.
-
Depois que a página for recarregada, clique em Carregar VCL para Fastly na seção Configuração Fastly.
-
Depois que o upload for concluído, atualize o cache de acordo com a notificação na parte superior da página.
Excluir o trecho de VCL personalizado
-
Faça logon no Administrador.
-
Clique em Lojas > Configurações > Configuração > Avançadas > Sistema.
-
Expanda Cache de Página Inteira > Configuração Rápida > Trechos de VCL Personalizados.
-
Na coluna Ação, clique no ícone de lixeira ao lado do trecho a ser excluído.
-
Na próxima janela modal, clique em DELETE e ative uma nova versão.