web-dev-qa-db-fra.com

Qu'est-ce qui permet à Cloudflare de désactiver l'accès à l'adresse IP directe?

Lorsque je visiterai un site Web avec Cloudflare, en utilisant l'adresse IP du site Web, je reçois ce message:

Error 1003
Direct IP access not allowed


What happened?

You've requested an IP address that is part of the Cloudflare network.
A valid Host header must be supplied to reach the desired website.

Je suis étudiant.

  1. Qu'est-ce que Autoriser Cloudflare bloquer l'accès direct de l'adresse IP?
  2. N'EST PAS DNS une couche au-dessus de l'adresse IP? Si oui, étant Cloudflare un service DNS, pourquoi Cloudflare a-t-il la capacité de bloquer les adresses IP?
9
alexandre1985

Il n'y a rien de spécial dans la configuration de Cloudflare. Ceci est juste une propriété de HTTP.

Lorsqu'un client ouvre une URL, il existe trois étapes importantes:

  1. Si nécessaire, il constitue un DNS (ou une autre méthode de résolution) pour transformer un nom d'hôte en une adresse IP. Si l'URL spécifie une adresse IP pour l'hôte, utilisez cela.
  2. Il facilite la connexion à cette adresse IP sur un numéro de port bien connu, normalement 80 (sauf s'il est remplacé dans l'URL)
  3. Il demande au serveur de la page , y compris le nom d'hôte souhaité .

Un exemple classique ressemble à ceci:

GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org

Considérez un hôte important avec de nombreux sites Web dessus. Pour la simplicité, disons qu'il a une adresse IP unique. Des centaines de noms de domaine résolvent à cette adresse. Comment le serveur décide-t-il quelles pages à livrer? Il utilise le détail d'hôte donné par le client dans la demande HTTP. Si vous demandez quelque chose que cela n'a pas ou ne veut pas vous donner, cela vous donnera une réponse d'erreur.

Dans votre cas, la demande contient une adresse IP pour le spécificateur d'hôte.

GET /whatever HTTP/1.1
Host: a.b.c.d

Très nombreux hôtes décident de ne pas donner de pages lorsque l'hôte est spécifié par adresse IP. Il n'y a rien de spécial sur Cloudflare ici, ni à cela avec DNS. Il s'agit de la manière dont le serveur répond aux demandes de l'hôte spécifié par adresse IP et vous pouvez voir que ce message d'erreur spécifie que A valid Host header must be supplied.

Voici une réponse qui explique comment configurer un serveur de cette manière: https://serverfault.com/a/607222

Vous pouvez facilement vérifier ce type de comportement en utilisant Telnet pour vous connecter à un serveur et émettre la demande HTTP manuellement.

Ps. La même réponse générale s'applique à un http [~ # ~] s [~ # ~] Demande, mais en utilisant Indication du nom du serveur = dans la configuration. Il convient de noter que Host est entré avec http 1.1 (1997). Avant cela, le mécanisme décrit ici n'existait pas, et un serveur n'avait aucun moyen de dire de manière fiable si le client avait demandé un nom qui a légitimement résolu à son adresse IP ou avait demandé directement l'hôte par adresse IP. Comme il s'agissait d'un développement important pour la croissance explosive des sites Web, de nombreux clients plus anciens ont été mis à jour pour envoyer Host. [Merci commentateurs de prise en charge sur des détails.]

20
jonathanjo

Le système que vous essayez de contacter a plusieurs sites répertoriés dans sa configuration httpd.

La seule façon dont le serveur HTTP peut différencier les différents sites hébergés sont avec des URL directes.

Étant donné que ces sites sont hébergés sur le matériel de Cloudflare, ils peuvent fournir une erreur du souhait. CDN (réseaux de livraison de contenu) transfère la connexion à la copie mise en cache la plus proche sur son réseau en fonction de plusieurs facteurs.

Si vous examinez ce que Cloudflare propose en tant que service, vous verrez cette partie du processus de configuration que vous repouvez vos domaines DNS enregistrements à leurs serveurs DNS qui utilisent ensuite uniquement leurs systèmes CDN. En tant que développeur, si vous utilisez un CDN, vous savez toujours où se trouvent vos hôtes réels et peuvent les contacter directement, les clients n'ont plus cet accès.

Cela aide également à isoler vos hôtes des attaques DDO. Le CDN contacte toujours votre hôte pour le contenu, à moins que toute votre infrastructure soit hébergée dans le réseau CDNS.

1
Rowan Hawkins