Мне нужно заблокировать определенные хосты (с несколькими ОС) в нашей локальной сети от доступа в Интернет. Я решил попытаться заблокировать определенные хосты по MAC-адресу через iptables, но я не могу использовать MAC-адрес рабочей станции, поскольку он проходит через коммутатор L3, и фрейм перестраивается с помощью интерфейса Mac коммутатора. Я подтвердил это с помощью wirehark tshark
утилита.
Я знаю, что могу заблокировать по IP-адресу, но я не могу контролировать, изменил ли пользователь свой IP-адрес и, таким образом, блокировку можно было бы обойти. Я думаю, что решение может быть достигнуто с помощью сценария, который выполняет следующие действия:
fping -c 1 -g 10.10.10.0/24
arp -n | grep "00:11:22:aa:bb:cc" | awk '{print $1}'
iptables-restore < ips_to_deny
.Итак ... вопрос. Видите ли вы недостатки в этом методе? Или способы сделать это лучше?
Я бы использовал для сценария 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-адрес станции.