Déterminer l'Adresse IP de Client Derrière Amazon ELB
Nous avons des serveurs PHP sur EC2 derrière ELB. Nous tenons à déterminer les paramètres régionaux/région par adresse IP des clients de la connexion à nos serveurs. Le problème est que les serveurs PHP seulement de voir l'adresse IP de l'ELB. Nous aimerions voir les adresses IP des clients transmis par le biais de l'ELB.
OriginalL'auteur Bill Rosmus | 2013-02-27
Vous devez vous connecter pour publier un commentaire.
Selon la AWS docs, la ELB doit être le réglage de la "X-Forwarded-For' en-tête HTTP qui conserve l'original de l'adresse ip du client:
Vous pouvez y accéder en utilisant le code PHP suivant (en supposant que apache):
Notez que le X-Forwarded-For-tête peut contenir une liste séparée par des virgules d'adresses IP si il y a plusieurs transitaires. Le premier est l'original IP du client. en.wikipedia.org/wiki/X-Forwarded-For#Format
Dans le cas où le client a donné son propre X-Forwarded-For, il sera le premier dans la liste séparée par des virgules des adresses ip fournies à votre demande. L'adresse IP réelle est toujours le dernier élément, apparemment.
Mais que faire si le protocole https est utilisé et l'ensemble de la demande, y compris l'en-tête X-Forwarded-For sont cryptées?..
vak ELB utilise une connexion http avec EC2, vous ne devriez pas utiliser le chiffrement à ce niveau
OriginalL'auteur Ryan Weir
Si vous utilisez Apache, avoir un regard sur le mod_remoteip module. C'est dans Apache 2.4 et plus récent, mais les backports pour 2.2 peuvent également être trouvés.
En d'autres termes, vous pouvez définir les en-tête à utiliser (par exemple, X-Forwarded-For) et qui les IP sont de confiance (par exemple, votre équilibreur de charge). La confiance des IPs sont supprimés à partir de l'en-tête et le premier non fiables IP est utilisé en tant que client d'origine. Cette adresse IP est ensuite utilisé en interne par Apache dans d'autres modules, tels que pour l'enregistrement, l'hôte de l'authentification, etc.
Ce fait, il est plus utile que de la manipulation de la X-F-F-tête en PHP, depuis mod_remoteip prend soin de l'ensemble de la pile, qui assure l'accès aux journaux de bord sont corrects, etc.
Remarque: Il existe également un mod_rpaf module qui est le prédécesseur de celui-ci. C'est beaucoup plus limitée. Par exemple, il ne peut pas traiter de confiance ip-plages. Vous avez besoin de cela, car vous ne savez pas ELB IP à l'avance. Il a également ne peut pas gérer plusieurs tronçons, comme ELB avant de Vernis, avant de Apache. Je vous suggère de sauter le rpaf module et à l'aide de remoteip à la place.
OriginalL'auteur Martijn Heemels
C'est un gros problème, essayez donc ceci 😀
OriginalL'auteur Sabbir
Il semble mod_cloudflare peut-être une meilleure option pour certains - surtout v2.2 utilisateurs
En lire plus à ce type de blog:
http://knowledgevoid.com/blog/2012/01/13/logging-the-correct-ip-address-using-apache-2-2-x-and-amazons-elastic-load-balancer/
OriginalL'auteur Steve Horvath
Solution optimale pour PHP app derrière AWS ELB:
Notes: X-Forwarded-For peut être une virgule-espace séparé liste de proxies, avec la dernier dans la liste étant celui qui connecté à AWS ELB, et donc le seul à qui on peut faire confiance de ne pas être usurpée.
OriginalL'auteur bleater
pouvez-vous demander au client de signaler son adresse ip explicitement?
Cochez cette post.
le client peut également signaler des informations erronées. surtout si son client malveillant.
OriginalL'auteur zzk