1 votes

Y a-t-il un moyen de bloquer le spoofing d'adresse IP dans l'en-tête de l'hôte ?

J'ai déjà ajouté ce qui suit à ma configuration nginx pour traiter les domaines falsifiés :

    if ($host !~* ^(.*example.org|\d+\.\d+\.\d+\.\d+)$ ) {
            return 444;
    }

Actuellement, cela autorise les adresses IP car je dois les accepter pour certaines requêtes.

C'est derrière un AWS ELB, donc il doit également répondre à une adresse IP.

Idéalement, j'aimerais qu'il n'accepte que sa propre adresse IP publique et sa propre adresse IP privée. Cependant, je ne veux pas le coder en dur dans la configuration car ce sont des instances AWS.

Donc je me demande si quelqu'un a trouvé une solution pour bloquer les en-têtes host falsifiés qui sont limités aux adresses IP souhaitées.

La meilleure idée que je puisse proposer est un script qui génère les fichiers de configuration, ajoutant les bonnes adresses IP au démarrage, puis les copiant dans le dossier de configuration nginx. Mais j'ai l'impression qu'il doit y avoir une solution plus élégante qui ne nécessite pas que j'écrive un script de démarrage.

Pourquoi

Comme quelqu'un a demandé pourquoi je veux faire cela, j'ai essentiellement deux objectifs :

  • éliminer les erreurs Django que je reçois en raison des erreurs SuspiciousOperation HOST_HEADER
  • empêcher les bots (qui constituent 99,9% de ces requêtes falsifiées) d'atteindre même ma couche d'application web.

4voto

berto Points 221

Votre meilleure option est en effet de générer une partie de fichier de configuration et de l'inclure car il n'y a aucun moyen pour nginx de connaître les adresses IP autorisées dans l'en-tête Host sans cela.

serveur {

    écoute 80;

    nom_du_serveur mondomainepublic.com unautredomaine.com;
    inclure conf.d\domain-ips;  

    [ ... ]        

}

Avec le fichier domain-ips contenant :

nom_du_serveur x.x.x.x; # IP publique
nom_du_serveur x.x.x.x; # IP privée

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X