VCL personnalisée pour les requêtes de blocage
Vous pouvez utiliser le module CDN Fastly pour Magento 2 pour créer une liste de contrôle d’accès Edge avec une liste d’adresses IP que vous souhaitez bloquer. Vous pouvez ensuite utiliser cette liste avec un extrait de code VCL pour bloquer les requêtes entrantes. Le code vérifie l’adresse IP de la requête entrante. S’il correspond à une adresse IP incluse dans la liste ACL, bloque Fastly la demande d’accès à votre site et renvoie un 403 Forbidden error
. Toutes les autres adresses IP clientes sont autorisées.
Conditions préalables :
-
Votre environnement doit être configuré pour utiliser le CDN Fastly. Voir Configuration de services rapides.
-
Vérifiez que vous exécutez la dernière version du module CDN Fastly pour Magento 2. Voir Mise à niveau du module Fastly.
-
Vérifiez la configuration de l’environnement pour le service Fastly. Voir Vérification de la mise en cache rapide.
-
Vous devez disposer des informations d’identification d’administrateur pour accéder aux environnements d’évaluation et de production.
-
Liste des adresses IP du client à bloquer
Création d’une liste de contrôle d’accès Edge pour le blocage des adresses IP du client
Vous créez une liste de contrôle d’accès Edge pour définir la liste des adresses IP à bloquer. Après avoir créé la liste de contrôle d’accès, vous pouvez l’utiliser dans un extrait de code VCL personnalisé pour gérer l’accès à votre site d’évaluation ou de production.
Gérez l’accès pour les sites d’évaluation et de production en créant la liste de contrôle d’accès Edge avec le même nom dans les deux environnements. Le code du fragment de code VCL s’applique aux deux environnements.
- Connectez-vous à l’administrateur.
- Accédez à Magasins > Paramètres > Configuration > Avancé > Système > Cache de page complet > Configuration rapide.
- Développez la section Edge ACL .
- Cliquez sur Ajouter ACL pour créer une liste. Pour cet exemple, nommez la liste "liste bloquée".
- Saisissez les valeurs des adresses IP dans la liste. Toutes les adresses IP du client ajoutées à cette liste sont bloquées et ne peuvent pas accéder au site.
- Si nécessaire, cochez la case Negated .
Vous référencez l’ACL Edge par nom dans votre code de fragment de code VCL.
Création de la VCL personnalisée pour la liste bloquée
Après avoir défini l’ACL Edge, vous pouvez l’utiliser pour créer le fragment de code VCL afin de bloquer l’accès aux adresses IP spécifiées dans l’ACL. Vous pouvez utiliser le même extrait de code VCL dans les environnements d’évaluation et de production, mais vous devez le charger séparément dans chaque environnement.
Le code de fragment de code VCL personnalisé suivant (format JSON) indique la logique permettant de bloquer les requêtes entrantes avec une adresse IP du client correspondant à une adresse dans la liste de contrôle d’accès de la liste bloquée.
{
"name": "blocklist",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( client.ip ~ blocklist) { error 403 \"Forbidden\"; }"
}
Avant de créer un fragment de code basé sur cet exemple, vérifiez les valeurs pour déterminer si vous devez apporter des modifications :
-
name
: nom du fragment de code VCL. Pour cet exemple, nous avons utilisé le nomblocklist
. -
priority
: détermine le moment où le fragment de code VCL s’exécute. La priorité est5
pour s’exécuter immédiatement et vérifier si une requête d’administrateur provient d’une adresse IP autorisée. L’extrait de code s’exécute avant que l’un des fragments de code VCL par défaut du Magento (magentomodule_*
) n’ait une priorité de 50. Définissez la priorité de chaque fragment de code personnalisé sur une valeur supérieure ou inférieure à 50 selon le moment où vous souhaitez que votre fragment de code s’exécute. Les fragments de code dont les numéros de priorité sont plus bas s’exécutent en premier. -
type
: spécifie le type de fragment de code VCL qui détermine l’emplacement du fragment de code VCL généré. Dans cet exemple, nous utilisonsrecv
, qui insère le code VCL dans la sous-routinevcl_recv
, sous la VCL standard et au-dessus de tous les objets. Pour obtenir la liste des types de fragments de code, reportez-vous à la référence rapide de fragments de code VCL . -
content
: extrait de code VCL à exécuter, qui vérifie l’adresse IP du client. Si l’adresse IP se trouve dans l’ACL Edge, elle est bloquée et une erreur403 Forbidden
s’affiche pour l’ensemble du site web. Toutes les autres adresses IP clientes sont autorisées.
Après avoir examiné et mis à jour le code de votre environnement, utilisez l’une des méthodes suivantes pour ajouter le fragment de code VCL personnalisé à votre configuration de service Fastly :
-
Ajoutez le fragment de code VCL personnalisé à partir de l’Admin. Cette méthode est recommandée si vous pouvez accéder à l’administrateur. (Nécessite Fastly version 1.2.58 ou ultérieure.)
-
Enregistrez l’exemple de code JSON dans un fichier (par exemple,
blocklist.json
) et téléchargez-le à l’aide de l’API Fastly. Utilisez cette méthode si vous ne pouvez pas accéder à l’administrateur.
Ajout du fragment de code VCL personnalisé
-
Connectez-vous à l’administrateur.
-
Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.
-
Développez Cache de page complète > Configuration rapide > Fragments de code VCL personnalisés.
-
Cliquez sur Créer un fragment de code personnalisé.
-
Ajoutez les valeurs du fragment de code VCL :
-
Nom —
blocklist
-
Type —
recv
-
Priorité —
5
-
Ajoutez le contenu du fragment de code VCL :
code language-conf if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
Cliquez sur Créer pour générer le fichier de fragment de code VCL avec le modèle de nom
type_priority_name.vcl
, par exemplerecv_5_blocklist.vcl
. -
Après le rechargement de la page, cliquez sur Télécharger VCL vers Fastly dans la section Configuration Fastly pour ajouter le fichier à la configuration de service Fastly.
-
Après les chargements, actualisez le cache en fonction de la notification dans la partie supérieure de la page.
Valide rapidement la version mise à jour du code VCL pendant le processus de chargement. Si la validation échoue, modifiez le fragment de code VCL personnalisé pour résoudre le problème. Ensuite, chargez à nouveau le VCL.
Exemples VCL supplémentaires pour le blocage des requêtes
Les exemples suivants montrent comment bloquer des requêtes à l’aide d’instructions de condition intégrées au lieu d’une liste ACL.
Voir Utilisation de fragments de code VCL dynamiques dans la documentation Fastly VCL.
Exemple de code VCL : bloc par code de pays
Cet exemple utilise le code de pays ISO 3166-1 à deux caractères pour le pays associé à l’adresse IP.
{
"name": "blockbycountrycode",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( client.geo.country_code == \"HK\" ) { error 405 \"Not allowed\";}"
}
Exemple de code VCL : bloc par en-tête de requête HTTP User-Agent
{
"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
de votre environnement. Les fragments de code de ce répertoire sont automatiquement chargés lorsque vous cliquez sur charger VCL vers Fastly dans l’administrateur Commerce. Voir Déploiement de fragments de code VCL personnalisés automatisé dans la documentation Fastly CDN pour Magento 2.Modification du fragment de code VCL personnalisé
-
Connectez-vous à l’administrateur.
-
Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.
-
Développez Cache de page complète > Configuration rapide > Fragments de code VCL personnalisés.
-
Dans la colonne Action , cliquez sur l’icône des paramètres en regard de l’extrait de code à modifier.
-
Après le rechargement de la page, cliquez sur Télécharger VCL vers Fastly dans la section Configuration Fastly .
-
Une fois le transfert terminé, actualisez le cache en fonction de la notification dans la partie supérieure de la page.
Suppression du fragment de code VCL personnalisé
-
Connectez-vous à l’administrateur.
-
Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.
-
Développez Cache de page complète > Configuration rapide > Fragments de code VCL personnalisés.
-
Dans la colonne Action, cliquez sur l’icône de corbeille en regard de l’extrait de code à supprimer.
-
Dans la fenêtre modale suivante, cliquez sur DELETE et activez une nouvelle version.