Внесение в черный список 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 правила.

4 ответа

Решение

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

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

class "blacklist" {
    match hardware;
}

В мои пулы с "частной стороной локальной сети" я добавляю это:

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);

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам