5 votes

Comment utiliser le support d'ELB pour le protocole PROXY version 1 de manière sécurisée ?

Amazon's Elastic Load Balancer supporte le protocole PROXY version 1. Cela permet au serveur derrière l'équilibreur de charge de déterminer l'adresse IP source originale d'une connexion client.

Cependant, le spécification du protocole indique clairement dans les sections 2 et 5 que vous devez vous assurer d'une manière ou d'une autre que seuls les points d'extrémité autorisés peuvent se connecter à un port qui prend en charge ce protocole. Dans le cas contraire, un utilisateur malveillant pourrait se connecter directement au serveur, contourner le proxy et envoyer un en-tête PROXY avec l'adresse IP source de son choix.

Ma question est la suivante : comment faire avec ELB ? D'après ce que je sais, il n'y a pas de liste fixe d'adresses IP sources pouvant se connecter à vos serveurs. Il n'y a aucun moyen de restreindre un port afin que seul votre ELB puisse s'y connecter. Il semble que n'importe qui puisse créer une instance EC2 et se connecter directement à votre serveur sur le même port que celui auquel l'ELB se connecte par proxy, se faire passer pour l'équilibreur de charge et prétendre se connecter depuis n'importe quelle adresse IP.

Ce n'est pas possible. Qu'est-ce que j'ai raté ?

4voto

path Points 41

Vous essayez donc d'autoriser uniquement les connexions à vos instances EC2 à partir d'un ELB.

Vous pouvez le faire dans le console de gestion ou (comme la plupart des choses AWS) via les API. Je vais définir la méthode de la console de gestion.

Nous devons d'abord déterminer l'utilisateur et le nom de sécurité de votre ELB. Allez sur le site console de gestion sélectionnez EC2 et l'onglet Load Balancers. Choisissez votre équilibreur de charge dans la liste et allez à l'onglet Sécurité dans les préférences. Vous y verrez votre Source Security Group . Ce sera probablement "amazon-elb/amazon-elb-sg" mais je vais garder cette instruction ici au cas où cela changerait à l'avenir ;-)

Allez maintenant dans le menu Groupes de sécurité et sélectionnez le groupe que vous utilisez pour vos serveurs EC2. Ajoutez une nouvelle règle où "amazon-elb/amazon-elb-sg" (ou quel que soit votre groupe ELB) est la Source. Assurez-vous que vous n'avez pas d'autres règles entrantes pour ce port, bien que vous puissiez toujours autoriser l'accès direct à d'autres ports non couverts par l'ELB.

1voto

Willy Tarreau Points 3934

En utilisant la dernière version de haproxy, vous pouvez utiliser :

 tcp-request connection expect-proxy layer4 if *condition*

Cela permettra d'activer le protocole proxy uniquement pour les règles correspondant à condition . De cette façon, vous pouvez l'activer pour les nœuds ELB uniquement (à condition que vous connaissiez leurs adresses, bien sûr).

0 votes

Comment connaître leur adresse ?

0voto

Vinnie Falco Points 101

L'interface réseau que votre serveur virtuel utilise pour communiquer n'autorise que les connexions aux adresses IP privées (192.168.x, 172.16.x, 10.x) appartenant à d'autres serveurs virtuels exploités par le même client. Vous ne pouvez donc pas accéder arbitrairement au serveur virtuel d'un autre client en vous connectant à son IP et à son port privés.

0 votes

On pourrait le penser, mais j'ai testé avec un autre serveur dans la même zone de disponibilité, mais sous un compte EC2 non apparenté. Le serveur pouvait atteindre l'adresse IP privée de l'autre serveur.

0 votes

Ce que dit Vinnie n'est vrai que si les serveurs se trouvent dans un VPC AWS.

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