web-dev-qa-db-fra.com

Pourquoi devrais-je autoriser plusieurs adresses IP sur un site Web pour une seule session?

J'espère que ma question correspond à la portée de ce site.

Je développe un CMS . Actuellement, mes utilisateurs connectés sont verrouillés sur leur adresse IP pour la session. Malheureusement, une petite partie de ma base d'utilisateurs saute constamment entre deux ou plusieurs adresses IP. La plupart d'entre eux utilisent probablement des équilibreurs de charge. Techniquement, il n'est pas nécessaire de verrouiller les sessions des utilisateurs sur une seule adresse IP. Je ne m'attendais pas à ce que les clients basculent entre plusieurs adresses IP pour une seule demande de page sur mon site Web.

Je me demande maintenant, quels sont les risques de permettre à mes clients de basculer constamment entre les adresses IP pour une demande de page (par exemple, les fichiers CSS sont demandés par xxx.xxx.xxx.xxx et les fichiers JavaScript sont demandés par yyy.yyy.yyy. aaa)? Dois-je généralement permettre ou interdire cela?

18
yoru

une petite partie de ma base d'utilisateurs saute constamment entre deux ou plusieurs adresses IP.

Les causes

En supposant que vos utilisateurs n'essaient pas activement de cacher leurs vraies adresses IP en utilisant un service d'anonymisation ...:

La plupart des exemples d'entreprise que j'ai vus sont causés par de plus grandes entreprises et certains fournisseurs de services Internet utilisant un cluster de serveurs proxy, chacun avec une adresse IP externe différente, les demandes des utilisateurs étant équilibrées en charge sur ce cluster.

Vous pouvez voir des utilisateurs Dual Stack faire des demandes sur IPv4 et IPv6 et basculer entre les deux protocoles RFC 8305 pour les demandes suivantes.

L'autre scénario est lorsque je suis à la portée extrême d'un point d'accès Wi-Fi et que mon appareil bascule "au hasard" entre le Wi-Fi et les données cellulaires.

Solutions

Dans le premier scénario, vous pourriez compromettre le maintien de cette "sécurité" d'adresse IP dans vos sessions en ne considérant que les trois premiers octets, car généralement un tel cluster de serveurs proxy se trouve dans un petit sous-réseau et aura des adresses IP voisines.

Dans les deuxième et troisième scénarios, vous verrez des adresses IP de client complètement différentes, provenant même de fournisseurs indépendants.

Ne liez pas vos sessions à une adresse IP spécifique, qui est plus susceptible de perturber l'expérience utilisateur que de fournir une sécurité réellement améliorée.

35
HBruijn

Je me demande maintenant, quels sont les risques de permettre à mes clients de basculer constamment entre les adresses IP pour une demande de page (par exemple, les fichiers CSS sont demandés par xxx.xxx.xxx.xxx et les fichiers JavaScript sont demandés par yyy.yyy.yyy. aaa)? Dois-je généralement autoriser ou interdire cela?

Le risque principal est un utilisateur malveillant détournant la session. Si vous pouviez vous verrouiller sur une ou un petit ensemble d'adresses IP, vous pourriez empêcher les utilisateurs d'adresses IP entièrement différentes de détourner la session.

Le problème est que certains utilisateurs le font légitimement. Qu'ils utilisent un proxy à charge équilibrée ou qu'ils soient en marge de deux points d'accès sans fil (ou autre), ils utilisent plusieurs adresses IP. Vous devez donc à peu près le permettre à ces utilisateurs. Et il est difficile de dire quels utilisateurs ont besoin de plusieurs adresses IP, sauf lorsqu'ils demandent à partir de plusieurs adresses IP.

Une façon de réduire l'impact de ceci est d'utiliser HTTPS. Ensuite, l'acteur malveillant doit avoir un moyen de compromettre la couche sécurisée ainsi que le cookie de session. Sur une connexion non sécurisée, l'acteur malveillant pourrait simplement utiliser l'inspection du réseau pour compromettre un cookie de session. Mais via HTTPS, le même acteur malveillant doit avoir accès à l'une des extrémités de la conversation. Et si l'acteur malveillant le possède, il n'est pas nécessaire d'utiliser une adresse IP différente.

TL; DR: vous devez généralement autoriser les demandes provenant d'adresses IP différentes pour le même utilisateur. Il y a des raisons légitimes à cela. Utilisez HTTPS à la place pour vous protéger de cette classe d'exploits.

9
mdfst13

quels sont les risques de permettre à mes clients de basculer constamment entre les adresses IP pour une demande de page

Du point de vue de la sécurité - zéro risque.

Maintenant, d'un point de vue pratique. Cela signifie que vous ne pouvez pas utiliser certains types d'algorithmes pour la sécurité ou la protection DoS .

Un moyen simple de limiter les demandes des utilisateurs consiste à effectuer un suivi par adresse IP. Comme cela n'a pas besoin d'interagir avec votre serveur d'applications, vous pouvez utiliser des services à des niveaux inférieurs pour ce faire. Un logiciel comme mod_evasive d'Apache le fait. Vous pouvez toujours utiliser ces techniques, mais la modification des adresses IP des utilisateurs réduira leur efficacité. Là encore, les utilisateurs changeront de toute façon les adresses IP, de sorte que ces techniques n'ont jamais vraiment été efficaces.

Un cas d'utilisation connexe, mais différent, limite les tentatives de connexion infructueuses. C'est pour empêcher la devinette du mot de passe par force brute. Mais encore une fois, vous ne pouvez rien faire de toute façon si les utilisateurs changent d'adresse IP. Un pirate vraiment sérieux n'utiliserait même pas ses propres machines. Il venait d'acheter du temps sur un botnet (ou d'utiliser son propre botnet précédemment infecté) et de se connecter à votre service via 10 000 PC (adresses IP) d'autres personnes. Ce n'est pas vraiment lié à la limitation de l'adresse IP de l'utilisateur car c'est une pré-connexion, mais c'est quelque chose à garder à l'esprit.

4
slebetman

Il existe plusieurs raisons pour lesquelles un utilisateur peut passer à une nouvelle adresse IP.

  1. Extensions de confidentialité IPv6, de nombreux clients IPv6 vont de nos jours sauter dans le/64 sur le réseau local.
  2. Charger des proxys équilibrés, la demande des clients est acheminée vers l'un des plusieurs proxys possédant chacun une IP distincte.
  3. Pools NAT, le border nat est configuré avec plusieurs adresses IP et attribue arbitrairement des combinaisons IP/port du pool au client TCP.
  4. L'utilisateur se déplace entre différents réseaux ou parties d'un réseau, ce qui est courant avec les téléphones de nos jours.
  5. Les utilisateurs à double pile peuvent sauter entre IPv4 et IPv6.

Je me demande maintenant, quels sont les risques de permettre à mes clients de basculer constamment entre les IP pour une demande de page

L'avantage de verrouiller les sessoins des clients sur les adresses IP est qu'il rend plus difficile les attaques par vol de session. Si un attaquant dispose d'un mécanisme qui lui permet de voler les cookies des clients mais ne leur permet pas de se connecter à votre serveur à partir de l'adresse IP des clients, le verrouillage IP les empêchera de voler la session.

L'inconvénient est que, comme vous le dites, cela entraînera des ruptures pour certains utilisateurs qui trouvent leur session invalidée sans raison évidente.

De nos jours, la plupart des sites semblent penser que la rupture l'emporte sur les avantages d'un tel verrouillage.

1
Peter Green