VLANs niveau 2

Position du problème

Le principe des VLANs étant compris, la dernière étape va consister à mettre en ?uvre une commutation automatique des ports du SWITCH sur l'un ou l'autre VLAN, suivant que la machine qui s'y connecte sera authentifiée ou non.

Conformément au cahier des charges, nous utilisons simplement l'adresse MAC de la machine, ce qui évitera d'avoir à installer sur chaque client un système d'authentification plus sophistiqué (un certificat, par exemple, comme nous le verrons avec WPA2-TLS). Cette méthode n'est pas parfaite, loin de là, dans la mesure où une adresse MAC peut être falsifiée, mais elle a le mérite d'être simple à mettre en ?uvre.

Il nous faudra tout de même disposer de SWITCHs capables d'interroger un serveur RADIUS, en lui envoyant l'adresse MAC du client en guise de nom d'utilisateur et de mot de passe. Nous utilisons ici un SWITCH HP Procurve 2650.

Remarques à propos du ProCurve 2650

Lorsqu'il sort de sa boîte, ce SWITCH est configuré avec un seul VLAN, nommé « DEFAULT_VLAN » (et qui est aussi le « PRIMARY_VLAN »). Tous les ports du SWITCH sont affectés à ce VLAN, si bien que sans aucune configuration particulière, ce SWITCH fonctionnera comme un SWITCH de base.

Pour le configurer, plusieurs solutions sont proposées, à commencer par une liaison série RS232 (gardez au moins un vieux PC), qui est initialement le seul moyen possible pour accéder à la configuration (In the factory default configuration, the SWITCH has no IP (Internet Protocol) address and subnet mask, and no passwords. In this state, it can be managed only through a direct console connection).

Par la suite, nous pourrons accéder au SWITCH par le réseau, via telnet, un mini serveur web embarqué (mais vraiment minimaliste), ou même ssh. En effet les SWITCHs administrables peuvent recevoir une adresse IP pour accéder à l'administration par le réseau. Sur ce modèle de SWITCH, nous pourrons même assigner une adresse IP par VLAN, ce qui n'est absolument pas nécessaire, voire dangereux. Comme notre propos est plutôt de parler des VLANs, nous passerons ces détails sordides.

Nous supposons donc que la configuration de base du SWITCH est faite, et principalement la configuration IP du DEFAULT_VLAN :

 Internet (IP) Service

  IP Routing : Disabled

  Default Gateway : 192.168.10.1
  Default TTL     : 64
  Arp Age         : 20

  VLAN         | IP Config  IP Address      Subnet Mask
  ------------ + ---------- --------------- ---------------
  DEFAULT_VLAN | Manual     192.168.10.11   255.255.255.0

Donc, nous avons un « DEFAULT_VLAN » qui est aussi le « PRIMARY_VLAN », et qui contient tous les ports du SWITCH. Il y a quelques contraintes à connaître à propos de ces deux VLANs :

  • DEFAULT_VLAN ne peut pas être supprimé et a le VID 1, en revanche, rien n'interdit de ne lui assigner aucun port,
  • PRIMARY_VLAN est nécessaire à certaines fonctions d'administration que nous n'utiliserons pas forcément ici, comme le pseudo empilage de SWITCHs. Cette fonction de PRIMARY_VLAN peut être assignée à n'importe quel VLAN existant, pas forcément au DEFAULT_VLAN, mais il doit exister. Nous laissons la configuration par défaut.

Nous n'allons conserver que quelques ports, dont les deux ports 1GB/s sur DEFAULT_VLAN, laisser PRIMARY_VLAN  dessus, tous les autres ports étant réservés à deux autres VLANs qu'il nous reste à créer :

  • PARADIS_VLAN, de VID 2, qui accueillera le LAN des hôtes connus,
  • ENFER_VLAN de VID 3, qui accueillera toutes les machines que l'on ne sait pas identifier.

Nous allons restreindre le DEFAULT_VLAN aux ports 33-50 (sans tag). Ce VLAN nous servira à administrer le SWITCH, à accueillir les DNS, DHCP, RADIUS et autres services « administratifs ».

Les ports 1 à 6 seront assignés au PARADIS_VLAN de façon statique (sans tag). Nous y placerons par la suite les ressources du réseau à offrir aux stations « connues ».

Comme ce SWITCH ne supporte pas d'avoir des ports assignés à aucun VLAN, nous allons mettre les ports 7 à 32 dans le ENFER_VLAN. Nous reviendrons éventuellement sur ce choix plus tard.

Les ports 49 et 50 seront quant à eux assignés aux trois VLANs. Bien entendu, ici, il faudra utiliser les tags. L'un des deux ports servira à connecter le routeur et l'autre sera réservé aux extensions futures (un second SWITCH, par exemple).

Au final, la (magnifique) interface web nous montrera ceci :

Mais qu'importe la beauté lorsque le travail est bien fait, n'est-ce pas ?

Notez que tout le travail fait jusqu'ici a pu l'être par l'entremise de cette interface. Pour la suite, ce sera quelque peu différent.

Choix VLAN suivant l'authentification

Il nous reste maintenant à expliquer au SWITCH que les ports 7 à 32 doivent être attribués au VLAN 2 ou au VLAN 3, suivant que l'authentification par adresse MAC sera réussie ou non. Pour réaliser cette opération, l'interface web n'est pas exploitable, le menu en mode texte via telnet, ssh ou rs232 non plus. Il nous faut passer par le moyen le plus rustique, la ligne de commande. C'est la documentation qui va venir à notre secours,

  • Access Security Guide : SWITCH 2600 Series SWITCH 2600-PWR Series SWITCH 2800 Series
    SWITCH 4100 Series SWITCH 6108
    • Web and MAC Authentication for the Series 2600/2600-PWR and 2800 SWITCHes
      • Configuring MAC Authentication on the SWITCH
        • Configure the SWITCH for MAC-Based Authentication

Voici la procédure. Dans la console :

configure

(Pour entrer dans le mode configuration)

aaa port-access mac-based addr-format multi-colon
aaa port-access mac-based 7-32

Vérifiez que vous obtenez un message indiquant que LACP a été désactivé (LACP est un protocole de gestion d'agrégations de liens, qui sort du cadre de cette étude, mais qui est incompatible avec les VLANs de niveau 2).

  • La première ligne indique que les adresses MAC doivent être envoyées sous la forme xx:yy:zz:aa:bb:cc. D'autres formats sont possibles, tout dépendra de la façon qui nous est la plus commode pour collecter et enregistrer ces adresses MAC dans notre futur RADIUS,
  • la seconde ligne indique que les ports 7 à 32 seront assignés à un VLAN en fonction de l'adresse MAC du client connecté.
aaa port-access mac-based 7-32 auth-vid 2
aaa port-access mac-based 7-32 unauth-vid 3
  • La première ligne indique que les ports 7 à 32 devront être assignés au VLAN de VID 2 si l'authentification est réussie.
  • La seconde ligne indique que les ports 7 à 32 devront être assignés au VLAN de VID 3 si l'authentification est ratée.
show port-access 7-32 mac-based config

Cette ligne permet de vérifier que notre configuration est bien enregistrée :

Port Access MAC-Based Configuration
  MAC Address Format : multi-colon

                 Client Client Logoff    Re-Auth   Unauth   Auth
  Port  Enabled  Limit  Moves  Period    Period    VLAN ID  VLAN ID
  ----- -------- ------ ------ --------- --------- -------- --------
  7     Yes      1      No     300       0         3        2
  8     Yes      1      No     300       0         3        2
  9     Yes      1      No     300       0         3        2
  10    Yes      1      No     300       0         3        2
  11    Yes      1      No     300       0         3        2
  12    Yes      1      No     300       0         3        2
  13    Yes      1      No     300       0         3        2
  14    Yes      1      No     300       0         3        2
  15    Yes      1      No     300       0         3        2
  16    Yes      1      No     300       0         3        2
  17    Yes      1      No     300       0         3        2
  18    Yes      1      No     300       0         3        2
  19    Yes      1      No     300       0         3        2
  20    Yes      1      No     300       0         3        2
  21    Yes      1      No     300       0         3        2
  22    Yes      1      No     300       0         3        2
  23    Yes      1      No     300       0         3        2
  24    Yes      1      No     300       0         3        2
  25    Yes      1      No     300       0         3        2
  26    Yes      1      No     300       0         3        2
  27    Yes      1      No     300       0         3        2
  28    Yes      1      No     300       0         3        2
  29    Yes      1      No     300       0         3        2
  30    Yes      1      No     300       0         3        2
  31    Yes      1      No     300       0         3        2
  32    Yes      1      No     300       0         3        2

C'est correct. Nous pouvons écrire le tout en mémoire :

write memory

En ce qui concerne « l'auth-vid », ce paramètre pourra éventuellement être écrasé par une valeur renvoyée, en cas d'authentification réussie, par le serveur RADIUS, ce qui apporte plus de souplesse si l'on doit disposer de plus de deux VLANs suivant les clients.

C'est presque fini, mais pas tout à fait. Notre SWITCH ne devinera pas tout seul qui est notre serveur RADIUS, il faut le lui indiquer.

Notre futur serveur RADIUS aura l'adresse 192.168.10.2. Comme nous le verrons plus loin, il faudra définir une clé de chiffrement partagée entre le serveur et ses « clients ». Nous allons choisir quelque chose de difficile à trouver : chutt

radius-server host 192.168.10.2 key epikoi

Vérifions :

show radius

Status and Counters - General RADIUS Information

  Deadtime(min) : 0
  Timeout(secs) : 5
  Retransmit Attempts : 3
  Global Encryption Key :

                  Auth  Acct
  Server IP Addr  Port  Port  Encryption Key
  --------------- ----- ----- --------------------------------
  192.168.10.2    1812  1813  epikoi

C'est ok

write memory

Il ne reste plus qu'à mettre en place le serveur RADIUS, que nous connecterons sur le DEFAULT_VLAN (que nous avons configuré pour un réseau IP 192.168.10.0/24).

Revenir en arrière

Il peut se faire par la suite que l'on souhaite redonner à des ports leur fonctionnement « normal » après les avoir attribués à une authentification par RADIUS. Pour ce faire, il faudra sur ces ports successivement :

  • inhiber l'authentification par adresse MAC ;
  • supprimer le VID en cas d'authentification réussie ;
  • supprimer le VID en cas d'authentification ratée.

Supposons que l'on veuille remettre les ports 30 à 32 dans leur état « normal » :

configure
no aaa port-access mac-based 30-32
no aaa port-access mac-based 30-32 auth-vid
no aaa port-access mac-based 30-32 unauth-vid
write memory

Vérifions :

show port-access 7-32 mac-based config

Port Access MAC-Based Configuration
  MAC Address Format : multi-colon

                 Client Client Logoff    Re-Auth   Unauth   Auth
  Port  Enabled  Limit  Moves  Period    Period    VLAN ID  VLAN ID
  ----- -------- ------ ------ --------- --------- -------- --------
 ...
  24    Yes      1      No     300       0         3        2
  25    Yes      1      No     300       0         3        2
  26    Yes      1      No     300       0         3        2
  27    Yes      1      No     300       0         3        2
  28    Yes      1      No     300       0         3        2
  29    Yes      1      No     300       0         3        2
  30    No       1      No     300       0         0        0
  31    No       1      No     300       0         0        0
  32    No       1      No     300       0         0        0