У меня есть сеть с 80 ПК и Ubuntu 12.04 как GW. Из соображений безопасности я хочу ограничить количество компьютеров, подключенных к этой сети, с использованием предварительно скомпилированной таблицы ARP. Другими словами, мне нужен инструмент, который разрешает доступ в интернет, только если пара ARP --> [IP-MAC] предварительно настроена и игнорирует любую другую комбинацию. С помощью этой техники я хочу запретить пользователям изменять их IP-адресатов, которые назначены из резервирования DHCP, а затем получать доступ к неограниченным сетям и избегать применения правил escape from iptable . Спасибо

3 ответа3

2

Что вы действительно ищете, так это 802.1x Network Access Control. Это работает на RADIUS и требует проверки подлинности клиента перед доступом к сети. Существует несколько решений на основе Linux, в том числе:

Для клиентов:

Для сервера NAC:

  • PacketFence
  • OpenNAC
  • FreeNAC (в настоящее время этот проект только для обслуживания, а не для активной разработки)

Предполагая, что у вас нет управляемых коммутаторов, способных работать с виртуальными локальными сетями, вы можете перейти с PacketFence во встроенном режиме, как описано в документации. Это использует ipset для изменения правил брандмауэра, чтобы разрешить трафик, но требует определенного разделения топологии (DNS на отдельном сегменте от хостов). Коммутаторы, которые может использовать PacketFence, перечислены здесь


ИСПРАВЛЕНИЕ !: Существует еще один встроенный способ управления arp-таблицами в Linux, см. man 5 ethers . Вы добавляете записи в виде ethernet ip в /etc/ethers затем запускаете arp -f чтобы обновить таблицу на основе этого. Смотрите man arp для подробностей и http://gwallgofi.com/static-arp-linux/ для более подробных инструкций.


Чтобы ответить на ваш конкретный вопрос о таблицах arp, создайте в файле static-arp.conf такие записи, как:

10.0.0.6 00:0c:29:c0:91:bf
10.0.0.7 00:0c:29:c0:92:bf
10.0.0.8 00:0c:29:c0:93:bf
10.0.0.9 00:0c:29:c0:94:bf

Затем запустите:

while read -u 10 arpentry ; do arp -s $arpentry ; done 10<static-arp.conf

По какой-то причине for I in cat static-arp.conf не работал, и мне пришлось переключиться на чтение -u, чтобы настроить дескриптор файла, не знаю почему ... но это добавило записи, перечисленные в списке. Затем вы можете распространять этот static-arp.conf через nfs, git, rsync и т.д.

Vlans, вероятно, будет лучшей идеей, однако. Информация по использованию linux-pure vlan находится здесь.

1

Вы ищете что-то простое, как это?

iptables -A FORWARD -m mac --mac-source 00:01:11:11:11:11 -j ПРИНЯТЬ

Таким образом, вы можете установить только разрешенные mac-адреса для доступа в Интернет (вы также можете включить ip-адрес, и вам, скорее всего, понадобится хороший скрипт для его поддержки). Другие решения уже обсуждались в комментариях.

Изменить: я не смог решить отрицание (не сработало), но вы можете сделать это:

iptables -P FORWARD DROP

iptables -A FORWARD -s 192.168.1.1 -m mac --mac-source 00:01:02:03:04:05 -j ПРИНЯТЬ

«Отбрасывает ли это правило все пакеты, полученные из 192.168.1.1, и имеют ли они другой MAC-адрес, указанный в правиле?» Я думаю, это то, что вы просили.

Обратите внимание на несколько изменений - "пропавших без вести"!"и" -p tcp "- который отбрасывает только tcp пакеты.

Примечание 2. Помните, что упомянутый IP-адрес с другим MAC-адресом может, например, пинговать маршрутизатор. Чтобы предотвратить это, вы должны сделать то же самое в цепочке INPUT.

0

Я проверил и, кажется, работает

iptables -A FORWARD -s 192.168.1.1 -m mac! --mac-source 00:01:02:03:04:05 -j DROP

Отбросьте, если пакеты пришли с того ip с другим MAC, как указано в правиле. Единственная проблема заключается в том, что мне нужно вручную добавлять каждый ip, который я должен "защитить". На данный момент у меня есть только 2

*A illusion of protect since exist MAC spoofing любом случае, это препятствует пользователям пытаться

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .