1 votes

Mise sur liste noire des adresses MAC, mais elles obtiennent toujours un bail DHCP

Sur mon lieu de travail, nous disposons d'un réseau Wifi public, ainsi que de notre réseau Wifi privé. Le côté privé a accès pour voir d'autres ordinateurs, les imprimantes, les serveurs et l'accès à Internet. Du côté public, les utilisateurs doivent s'authentifier avec un portail captif avec un combo nom d'utilisateur/mot de passe de notre serveur (uniquement pour les appareils personnels de notre personnel).

La clé a été divulguée bien avant mon arrivée à ce poste, et j'ai nettoyé la plupart des choses. J'ai des scripts (écrits par d'autres membres de l'équipe, pas moi-même !) qui parcourent les baux DHCP sur Debian Wheezy, et affichent le fabricant, le nom DNS, l'adresse IP et l'adresse MAC de tous les appareils avec lesquels le serveur DHCP interagit. Avec ces scripts, je peux créer une liste noire des adresses MAC et iptables les bloque pour moi. Je mets à jour /etc/blacklist.txt, et lorsque iptables démarre, il exécute iptables -A INPUT $if -m mac --mac-source $i -j DROP (avec $i lu à partir du fichier).

Cela empêchera leur appareil de se connecter à nos ressources réseau et à Internet. Malheureusement, cela n'entrera en vigueur qu'après que l'appareil a obtenu une adresse IP du isc-dhcp-server. Alors, mon problème est, comment puis-je les empêcher d'obtenir même une adresse IP qui leur est assignée? Oui, je sais qu'ils pourraient simplement s'attribuer une adresse IP statique et contourner le serveur DHCP, mais je veux quand même que iptables les bloque, en fonction de leur adresse MAC (espérons non-changeante). Oui, je sais que je pourrais augmenter la plage sur mon serveur DHCP, mais je veux que la direction comprenne la difficulté de gérer les appareils appartenant à des particuliers qui utilisent nos ressources de travail en se connectant et en contournant notre portail captif.

Une solution (en partie) à laquelle quelqu'un a pensé était de créer une classe trou noir dans mon fichier /etc/dhcp/dhcpd.conf et de remplir avec les adresses MAC des appareils auxquels je ne veux pas me connecter. Cela fonctionnerait, mais nécessite de mettre à jour les adresses MAC à plusieurs endroits, ce que je ne veux pas. Je veux pouvoir mettre à jour les MAC dans un seul fichier, puis éventuellement exécuter un script qui ajoutera les modifications à mon fichier DHCP et à mes règles iptables.

3voto

MikeyB Points 38317

Utilisez ebtables au lieu de iptables pour bloquer les adresses MAC au niveau 2 :

ebtables -A INPUT -s 00:11:22:33:44:55 -j DROP

1voto

Jeff Waltzer Points 363

Bien que je pense que l'utilisation de ebtables pourrait être la réponse, c'est une autre couche que je ne voulais pas ajouter à ma configuration. Un des autres techs m'a aidé à créer un script pour parcourir la liste noire des adresses IP et les ajouter à un nouveau pool, qui ne distribue aucune adresse IP du tout. Il prend la liste noire régulière (une adresse MAC par ligne) que j'ajoute également à iptables, et crée simplement le nouveau pool.

Dans mon fichier /etc/dhcp/dhcpd.conf, je crée une nouvelle classe près du haut :

class "blacklist" {
    match hardware;
}

Dans mes pools du "côté privé du LAN", j'ajoute ceci :

deny members of "blacklist";

... et à la toute fin, j'ai ajouté :

include "/etc/dhcp/blacklist.conf";

Ensuite, je crée un script Python comme ci-dessous :

#!/usr/bin/perl

my $if;
my @macs;
my $line = 0;

if ($ARGV[0]) {
    $if = "-i $ARGV[0]";
}

while () {
    $line++;

    next if /^$/;
    next if /^\s*#/;

    chomp;

    if (/^([a-f0-9]{2}((:|-)[a-f0-9]{2}){5})$/) {
        push(@macs, $_);
    }
    else {
        die("erreur de syntaxe à la ligne $line\n");
    }
}

open(OUT, ">/etc/dhcp/blacklist.conf");
foreach my $i (@macs) {
    $i =~ tr/-/:/;
    print OUT "subclass \"blacklist\" 1:$i;\n";
}
close(OUT);

Je sauvegarde ceci, puis j'ajoute le bit d'exécution avec chmod +x /usr/local/sbin/dhcpd-macblock.py, et je mets en place une tâche cron qui alimente la liste noire dans le script chaque heure :

cat /etc/blacklist.txt | dhcpd-macblock.py

Chaque heure, il passe en revue, créant un nouveau fichier avec toutes les adresses MAC bloquées que je ne veux pas, et elles n'obtiennent même pas de réservation DHCP, et mes emplacements se libèrent lentement.

0voto

Ale Points 1533

Si vous avez accès à ce réglage, et si le matériel le permet, une solution plus simple pourrait être de configurer votre point d'accès pour rejeter les adresses MAC que vous souhaitez filtrer, au lieu de les filtrer "plus tard" avec iptables. Cela résoudrait également le problème des personnes attribuant une adresse IP statique à leur appareil, car elles pourraient simplement ne pas s'associer au réseau si elles sont filtrées au niveau du point d'accès. Bien sûr, cela ne peut pas résoudre le problème des adresses MAC "non statiques"...

0voto

aseq Points 4490

Autant que je sache, il n'est pas possible de le faire sauf en utilisant quelque chose comme etables comme cela a été suggéré, avec la gestion supplémentaire.

J'ai déjà rencontré ce problème et la solution que j'ai trouvée en cours d'utilisation était à peu près la même que ce que vous utilisez déjà. Si vous exécutez le script toutes les quelques minutes, alors le temps pendant lequel le périphérique non autorisé peut être sur le réseau est minimal, cela pourrait être un compromis acceptable.

Vous devriez également envisager de lier l'authentification sans fil à un serveur LDAP, en supposant que vous utilisez déjà quelque chose comme ça, cela devrait être facile. Sinon, incorporez LDAP ou un autre système d'authentification centralisé dès que possible (les comptes d'utilisateurs locaux sont une mauvaise idée dans la plupart des cas). Ensuite, créez un compte invité générique ou un compte invité au cas par cas. De cette façon, même si les utilisateurs ont la clé sans fil, ils ne pourront pas se connecter au sans fil tant qu'ils ne se sont pas authentifiés. Normalement, cela se fait via une page web vers laquelle le routeur sans fil redirigera le trafic. Seulement après l'authentification, une route sera créée pour permettre le trafic.

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