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

сценарий блокировки iptables с использованием поиска в таблице arp

Мне нужно заблокировать определенные хосты (с несколькими ОС) в нашей локальной сети от доступа в Интернет. Я решил попытаться заблокировать определенные хосты по MAC-адресу через iptables, но я не могу использовать MAC-адрес рабочей станции, поскольку он проходит через коммутатор L3, и фрейм перестраивается с помощью интерфейса Mac коммутатора. Я подтвердил это с помощью wirehark tshark утилита.

Я знаю, что могу заблокировать по IP-адресу, но я не могу контролировать, изменил ли пользователь свой IP-адрес и, таким образом, блокировку можно было бы обойти. Я думаю, что решение может быть достигнуто с помощью сценария, который выполняет следующие действия:

  1. Обновите таблицу arp с помощью fping: fping -c 1 -g 10.10.10.0/24
  2. Grep таблица arp, чтобы получить IP из списка MAC-адресов, скажем, в файле: arp -n | grep "00:11:22:aa:bb:cc" | awk '{print $1}'
  3. Создайте хэш или массив и динамически обновляйте iptables IP-адресами, которые необходимо заблокировать. Я бы, наверное, использовал файл и сделал бы что-нибудь вроде iptables-restore < ips_to_deny.
  4. Запускайте этот сценарий каждые 5 минут или около того. (Не уверен в сроках)

Итак ... вопрос. Видите ли вы недостатки в этом методе? Или способы сделать это лучше?

Я бы использовал для сценария perl или ruby, если это важно.

Мне все это кажется слишком сложным и может стать одним из тех «индивидуальных» решений, которые, как правило, станут проблемой в будущем (то есть «такой-то и такой-то настроил это задолго до ухода из компании, и никто не знает, как это сделать. Измени это"). Итак, я бы лично посмотрел на то, что немного больше основано на стандартах.

Если вам не нужно, чтобы устройства с доступом в Интернет и без доступа в Интернет находились в одном и том же сетевом сегменте L2, я бы реализовал обход проверки подлинности Mac 802.1X (MAB). Вы можете сделать это так, чтобы аутентифицированным устройствам была предоставлена ​​одна VLAN, а устройства, которые не прошли аутентификацию, были помещены во вторую VLAN.

Если ваши коммутаторы не поддерживают только MAB (т.е. MAB вступает в силу только после сбоя аутентификации IEEE 802.1X), вы можете уменьшить значения повтора и тайм-аута для аутентификации IEEE до минимальных значений. Поскольку вас не заботит аутентификация IEEE, и она быстро завершится ошибкой, вам не потребуется настраивать какой-либо соискатель, если вы сами этого не сделаете.

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

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

Мне пришлось столкнуться с подобной ситуацией при организации больших LAN-вечеринок (> 500 пользователей), когда у вас нет контроля над рабочими станциями, что довольно интересно.

если ваш коммутатор L3 (технически маршрутизатор) достаточно высокого класса, он, вероятно, управляется SNMP, и вы можете прочитать его таблицу ARP для соответствующей подсети (той, которая напрямую подключается к станциям), чтобы получить эффективный mac / ip сопоставления.

Однако, если вы боитесь, что машина меняет IP-адреса без вашего согласия, вам, вероятно, также следует беспокоиться о том, что машина меняет MAC. Если вы уверены, что машина не меняет MAC-адреса, мы использовали еще один вариант - анализировать журналы DHCP-сервера. В качестве бонуса вы также можете сопоставить журналы DHCP и таблицы ARP для обнаружения спуферов.

Если ваши коммутаторы поддерживают это, вы также можете использовать аутентификацию 802.1x. В этом режиме машина должна пройти аутентификацию на коммутаторе через Radius, прежде чем она начнет фактическую коммутацию пакетов, и для каждой аутентификации сервер Radius получает идентификационные данные, физическое местоположение и MAC-адрес станции.