1 votes

Clients sur le réseau local - un test simple ?

Je suis en train de développer un système web pour mon école (c'est en PHP, mais ce n'est pas important).

Le système doit avoir des comportements différents selon que l'utilisateur se trouve ou non sur le réseau de l'école (plus précisément, s'il est no sur le réseau de l'école, ils doivent se connecter).

J'ai donc besoin d'un moyen fiable, idéalement infaillible (c'est peut-être trop demander...) de vérifier si les clients sont sur le réseau local.

Il semble que la façon habituelle de procéder consiste à comparer le sous-réseau de l'utilisateur au sous-réseau du serveur. Cependant, notre école possède plusieurs sous-réseaux (y compris plusieurs campus ayant chacun plusieurs sous-réseaux ainsi qu'un VPN), dont un seul est le sous-réseau du serveur. Cette méthode ne fonctionnera donc pas.

Je lis RFC1918 qui réserve les espaces IP suivants aux réseaux privés :

 10.*.*.*
 172.16.*.* - 172.31.*.*
 192.168.*.*

Je pourrais donc vérifier si l'IP du client se trouve dans l'un de ces sous-réseaux privés ? Est-il possible que des utilisateurs extérieurs au réseau aient une telle IP ? Ou que les utilisateurs connectés au réseau de l'école n'aient pas d'IP dans l'une de ces plages ?

2 votes

Pourquoi ne pas les obliger à se connecter, quel que soit le lieu où ils se trouvent ? Ne serait-ce pas la solution la plus simple ?

0 votes

Un utilisateur sur n'importe quel réseau privé pourrait avoir ces IP. Le wifi d'un café, derrière un routeur domestique...

2 votes

Mais est-ce que leur externe IP est en dehors de cette fourchette ? Par exemple, mon wifi domestique est 10.0.1.*, mais mon IP externe est celle que les serveurs voient.

5voto

Evan Anderson Points 140581

Si votre école filtre les adresses entrantes à l'entrée, l'utilisation de l'espace d'adressage RFC 1918 comme sentinelle pour être "sur le LAN" est probablement correcte. Franchement, cela me semble un peu douteux d'utiliser l'adresse IP comme une sorte d'authentification implicite, mais cela peut fonctionner.

Si votre école ne filtre pas l'espace d'adressage RFC 1918 à l'entrée, il est théoriquement possible qu'un attaquant extérieur puisse introduire dans votre serveur des paquets provenant de l'espace d'adressage RFC 1918 qui n'est pas utilisé par l'école. Cela dépend de la façon dont le FAI en amont de l'école filtre le trafic.

Lorsque quelqu'un accède à votre application à partir d'un réseau local qui utilise l'espace d'adressage RFC 1918, le périphérique de l'utilisateur distant va NATer son adresse source vers une IP publique, de sorte que vous ne verrez pas de trafic RFC 1918 provenant d'Internet (sauf si quelqu'un essaie de faire quelque chose de sournois).

1voto

mfinni Points 35332

Ça ne marchera jamais. Il est fort probable que les utilisateurs, lorsqu'ils se trouvent sur un autre réseau privé, découvrent qu'ils utilisent une plage RFC1918. La RFC ne dit pas qu'elles sont réservées à l'usage privé de votre seule école. Pratiquement toutes les organisations qui n'ont pas d'IP publiques à jeter (presque toutes) utilisent des adresses RFC1918 pour leurs points d'accès.

La meilleure méthode, voire la seule fiable, est d'avoir un nom d'hôte qui soit l'un ou l'autre ou les deux :

  1. Résolvable uniquement par les serveurs DNS de votre université que le client utiliserait.
  2. Accessible uniquement depuis l'intérieur de votre réseau.

C'est ainsi que des choses comme Microsoft NLA (network location awareness) dans Direct Access fonctionnent. Si vous ne pouvez pas accéder à privateserver.myuni.edu, vous êtes sur le réseau public et vous devez passer par le hall.

/edit Bah. J'ai mal compris la question. Je n'ai pas vu que c'était un système web, je pensais que le demandeur développait un composant logiciel client. La réponse d'Evan est la réponse approprié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