Nginx

Comment bloquer les liens hypertexte avec Nginx

Comment bloquer les liens hypertexte avec Nginx
Nginx est un serveur Web léger capable de gérer un nombre énorme de demandes à un moment donné sans occuper le serveur. Il contient des fonctionnalités sophistiquées telles que le traitement asynchrone, la prise en charge d'ipv6, le chargeur de cache, la prise en charge de http/2, la liaison dynamique par blocs, les pools de threads, SPDY et SSL, et bien d'autres. Parmi eux, l'une des fonctionnalités les plus importantes pour tout site Web en général est le blocage des liens hypertexte. Le hotlinking est une pratique malveillante souvent pratiquée par certains petits webmasters lorsqu'ils ne peuvent pas se permettre le coût de la bande passante, et finissent ainsi par le prendre ailleurs. Cela empêche les webmasters légitimes d'utiliser la bande passante pour laquelle ils ont payé. En plus de cela, la ressource liée peut être indisponible pour les utilisateurs qui visitent le site Web d'origine, lorsque la bande passante allouée au webmaster d'origine est épuisée et que le propriétaire du site n'a pas payé pour la bande passante excessivement consommée. Dans l'ensemble, pour préserver l'intégrité, la disponibilité du hotlinking du site Web doit être arrêtée, et ce guide explique comment le faire facilement.

Préparation

Dans le segment de préparation, les instructions générales pour les deux méthodes dites ultérieures sont prises en note. Évidemment, il est important d'avoir une console pour accéder au serveur via SSH, et un éditeur de texte approprié comme nano pour ouvrir le fichier de configuration Nginx. Une fois les deux acquis, utilisez les commandes suivantes pour ouvrir, enregistrer et appliquer les modifications. Les étapes suivantes supposent que l'utilisateur a déjà accédé au serveur via SSH.

nano /etc/nginx/sites-available/default

Méthode 1 : Méthode générale

La méthode générale est très facile à mettre en œuvre et à comprendre car elle ne contient qu'un bloc de localisation. De plus, il bloque les requêtes vers certains formats de fichiers uniquement au lieu de bloquer toutes les requêtes des référents non valides vers le serveur.

  1. Copiez l'extrait de code suivant.
  2. Ouvrez le fichier par défaut de nginx comme vu dans la phase "Préparation".
  3. Collez l'extrait de code copié sous le premier bloc d'emplacement trouvé dans le fichier par défaut. Dans nginx, l'expression régulière insensible à la casse (~*) est toujours prioritaire avant la barre oblique (/), et donc l'extrait de code suivant est exécuté avant le bloc d'emplacement de la barre oblique.
  4. Enregistrez et fermez le fichier par défaut, puis suivez les étapes 3, 4 de la phase « Préparation » pour que les modifications prennent effet.

Dans l'exemple suivant, il bloque les demandes de fichiers css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf et eot. Il y a 10 instructions conditionnelles sous le bloc d'emplacement. La première instruction conditionnelle permet de visualiser directement les ressources via le navigateur Web, 2sd et 3rd les blocs permettent de visualiser les ressources via le site d'origine (à la fois nu et les sous-domaines www), le reste des blocs à l'exception de la recherche?q et le dernier bloc permettent aux robots des moteurs de recherche d'accéder et d'indexer les ressources, ce qui est très important pour indexer les images dans les images google et les images bing. La recherche?q permet au service de cache google d'accéder et d'économiser les ressources avec la page, et ainsi la page est accessible directement via les résultats de recherche google lorsque le site est hors ligne.

emplacement ~* \.(css|gif|ico|jpeg|jpg|js|png|woff|woff2|ttf|ttc|otf|eot)$
si ($http_referer !~ "^$")
définir $rule_0 1$rule_0;

si ($http_referer !~ "^ http://nucuta.com/.*$")
définir $rule_0 2$rule_0;

si ($http_referer !~ "^ http://nucuta.com$")
définir $rule_0 3$rule_0;

si ($http_referer !~* "google.")
définir $rule_0 4$rule_0;

si ($http_referer !~* "recherche?q=cache")
définir $rule_0 5$rule_0;

si ($http_referer !~* "msn.")
définir $rule_0 6$rule_0;

si ($http_referer !~* "yahoo.")
définir $rule_0 7$rule_0;

si ($http_user_agent !~* "googlebot")
définir $rule_0 8$rule_0;

si ($http_user_agent !~* "msnbot")
définir $rule_0 9$rule_0;

si ($http_user_agent !~* "slurp")
définir $rule_0 10$rule_0;

si ($règle_0 = "10987654321")
retour 403;
Pause;

Méthode 2 : Méthode Valid_Referers

Les référents valides sont la méthode la plus pratique et largement reconnue pour bloquer facilement les référents invalides. Elle ne contient que deux lignes par rapport à la méthode précédente et est très flexible. Cependant, c'est un peu difficile à digérer car il s'agit d'expressions régulières et d'un mécanisme différent pour bloquer les demandes des référents invalides.

  1. Copiez l'extrait de code suivant entre les deux et au tout début du bloc d'emplacement principal.
  2. Remplacez la liste des noms de domaine par les noms de domaine autorisés, par exemple google, bing, ou vos propres domaines, etc.
  3. Enregistrez et fermez le fichier par défaut, puis suivez les étapes 3, 4 de la phase « Préparation » pour que les modifications prennent effet.

valid_referers aucun bloqué server_names

*.linux.avec Linux.* www.linux.com/à propos/
~\.linux\.;
 
si ($invalid_referer)
retour 403;

Il a principalement deux blocs de code, valid_referers et l'expression conditionnelle if avec la variable invalid_referer. Par défaut, ce bloc de code est utilisé entre et au tout début du bloc de localisation avant l'exécution de tout autre code, mais il peut également être utilisé à n'importe quel autre endroit, comme entre un bloc de code de localisation avec des expressions régulières pour détecter des formats de fichiers spécifiques pour rendre le blocage pertinent pour les formats de fichiers susmentionnés, comme dans la méthode 1. Comme expliqué précédemment, la méthode ne contient que deux blocs de code, le premier bloc de code contient 3 mots-clés, le premier est « aucun » lorsque le champ référent est manquant dans la requête HTTP, le second est « bloqué » lorsque le champ référent est supprimé par n'importe quel intermédiaire, tel qu'un proxy, un pare-feu, etc., le troisième mot-clé sert à spécifier les noms de domaine valides.

Lorsque le nom de domaine commence par le symbole "~", il est considéré comme une expression régulière, et donc des modèles très complexes peuvent être utilisés, mais il peut être difficile à comprendre si les expressions régulières ne sont pas bien connues. Si aucune des conditions n'est remplie dans l'instruction valid_referers, la variable invalid_referer est définie sur une chaîne vide, sinon elle est définie sur 1, ce que cela signifie si la demande à venir ne contient aucun champ de référence, ou si nginx a identifié ce champ de référence est supprimé par un pare-feu ou un proxy, ou si le champ de référence est défini sur les domaines spécifiés (liste de noms de domaine valide), alors la variable de référence invalide est définie sur une chaîne vide, et ainsi sa condition if n'est pas exécutée. Cependant, si la demande provient d'un domaine qui n'est pas spécifié dans l'expression valid_referers en tant que domaine valide, alors il est bloqué.

CONCLUSION

Assurez-vous de prendre en compte ce contenu et d'éviter les hotlinks sur vos sites hébergés par Nginx.

Comment utiliser Xdotool pour stimuler les clics de souris et les frappes sous Linux
Xdotool est un outil de ligne de commande gratuit et open source pour simuler les clics de souris et les frappes. Cet article couvrira un bref guide s...
Top 5 des produits de souris d'ordinateur ergonomiques pour Linux
L'utilisation prolongée de l'ordinateur provoque-t-elle des douleurs au poignet ou aux doigts? Vous souffrez de raideurs articulaires et devez constam...
Comment modifier les paramètres de la souris et du pavé tactile à l'aide de Xinput sous Linux
La plupart des distributions Linux sont livrées avec la bibliothèque "libinput" par défaut pour gérer les événements d'entrée sur un système. Il peut ...