Назад | Перейти на главную страницу

Внесение MAC-адресов в черный список, но они по-прежнему берут в аренду DHCP

На моем рабочем месте у нас есть общедоступная сеть Wi-Fi, а также наша частная сеть Wi-Fi. Частная сторона имеет доступ к другим компьютерам, принтерам, серверам и доступ к Интернету. На общедоступной стороне пользователям необходимо пройти аутентификацию с помощью адаптивного портала, используя комбинацию имени пользователя и пароля с нашего сервера (только для личных устройств наших сотрудников).

Ключ просочился задолго до того, как я пришел на эту работу, и почти все вещи я убрал. У меня есть сценарии (написанные другими членами команды, а не мной!), Которые проходят через аренду DHCP в Debian Wheezy и выдают производителя, DNS-имя, IP-адрес и MAC-адрес всех устройств, с которыми взаимодействует DHCP-сервер. . С помощью этих скриптов я могу создать черный список MAC-адресов, и iptables заблокирует их для меня. Я обновляю /etc/blacklist.txt, и когда iptables запускается, он выполняет iptables -A INPUT $if -m mac --mac-source $i -j DROP (с участием $i читается из файла).

Это предотвратит подключение их устройств к нашим сетевым ресурсам и Интернету. К сожалению, это не вступит в силу до тех пор, пока после устройство получило IP-адрес от isc-dhcp-server. Так, моя проблема в том, как я могу предотвратить их даже получение назначенный им IP-адрес? Да, я знаю, что они могут просто назначить себе статический IP-адрес и обойти DHCP-сервер, но я все равно хочу iptables чтобы заблокировать их на основе их (надеюсь, неизменяемого) MAC-адреса. Да, я знаю, что могу увеличить диапазон на моем DHCP-сервере, но я хочу, чтобы руководство осознало борьбу с управлением частными устройствами, занимающими наши работай ресурсы путем подключения и обхода нашего адаптивного портала.

Одно из решений (ну, частичное), которое кто-то придумал, заключалось в создании класса черной дыры в моем /etc/dhcp/dhcpd.conf файл и заполните его MAC-адресами устройств, к которым я не хочу подключаться. Это сработает, но требует обновления MAC-адресов в нескольких местах, чего я не хочу. Я хочу иметь возможность обновлять MAC-адреса в одном файле, а затем, возможно, запустить скрипт, который добавит изменения в мой файл DHCP, и мой iptables правила.

Использовать ebtables вместо того iptables для блокировки MAC-адресов на уровне 2:

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

Если у вас есть доступ к этой настройке, и если это позволяет оборудование, более простым решением может быть настройка вашей точки (точек) доступа на отклонение MAC-адресов, которые вы хотите фильтровать, вместо их фильтрации «позже» с помощью iptables. Это также решит проблему назначения людям статического IP-адреса своему устройству, поскольку они могут просто не подключиться к сети, если они будут отфильтрованы на уровне AP. Конечно, это не решит проблему «нестатических» MAC-адресов ...

Насколько я знаю, это невозможно сделать, кроме как использовать что-то вроде etables, как было предложено, с дополнительной бухгалтерией.

Я видел эту проблему раньше, и решение, которое я нашел, было почти таким же, как то, что вы уже используете. Если вы заставляете скрипт запускаться каждые несколько минут, то время, в течение которого неавторизованное устройство может находиться в сети, будет минимальным, что может быть приемлемым компромиссом.

Вам также следует изучить возможность связывания беспроводной аутентификации с сервером LDAP, если вы уже используете что-то подобное, это должно быть легко. В противном случае как можно скорее включите LDAP или другую централизованную систему аутентификации (учетные записи локальных пользователей в большинстве случаев - плохая идея). Затем либо создайте общую гостевую учетную запись, либо гостевую учетную запись в каждом конкретном случае. Таким образом, даже если у пользователей есть беспроводной ключ, они все равно не смогут подключиться к беспроводной сети, пока не пройдут аутентификацию. Обычно это делается через веб-страницу, на которую беспроводной маршрутизатор перенаправляет трафик. Только после аутентификации будет создан маршрут, разрешающий трафик.

Хотя я думаю, используя ebtables может быть ответом, это еще один уровень, который я не хотел добавлять в свою конфигурацию. Один из других технических специалистов помог мне создать сценарий для анализа черного списка IP-адресов и добавления их в новый пул, который не выдает никаких IP-адресов. Требуется обычный черный список (по одному MAC-адресу на строку), в который я тоже плюю iptables, и просто создает новый пул.

В моем /etc/dhcp/dhcpd.conf файла, я создаю новый класс в верхней части:

class "blacklist" {
    match hardware;
}

В моих пулах с "частной стороной LAN" я добавляю следующее:

deny members of "blacklist";

... и в самом конце добавил:

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

Затем я создаю сценарий Python, как показано ниже:

#!/usr/bin/perl

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

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

while (<stdin>) {
    $line++;

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

    chomp;

    if (/^([a-f0-9]{2}((:|-)[a-f0-9]{2}){5})$/) {
        push(@macs, $_);
    }
    else {
        die("syntax error on line $line\n");
    }
}


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

Я сохраняю это, затем добавляю бит Execute с помощью chmod +x /usr/local/sbin/dhcpd-macblock.pyи задайте задание cron, которое каждый час загружает черный список в скрипт:

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

Каждый час он проходит, создавая новый файл со всеми заблокированными MAC-адресами, которые мне не нужны, и они даже не получают резервирования DHCP, и мои места постепенно освобождаются.