контекст

У меня есть две сети, доверенные: 10.0.1.0/24 и ненадежные: 10.0.2.0/24, с довольно стандартной настройкой, которая выполняет следующие действия:

  • NAT/ MASQ
  • гости обеих сетей могут подключаться к интернету
  • гости в обеих сетях могут подключаться к службам (dns, dhcp) на брандмауэре

В настоящее время все гости обеих сетей могут видеть других гостей в своей сети.

проблема

Какое правило может помешать клиентам в ненадежной сети видеть друг друга или клиентов в доверенной сети?

Например, 0.0.2.12 не должен видеть 10.0.2.13 или 10.0.1.11.

Клиенты в доверенной сети должны видеть друг друга и ненадежных клиентов (это работает сейчас).

1 ответ1

1

У вас есть три вопроса в одном. Учитывая, что у меня нет полной конфигурации, я даю простые команды, которые могут работать или могут быть адаптированы к вашей конфигурации

  • как запретить доступ к защищенной локальной сети из ненадежной локальной сети?

    iptables -A FORWARD -s  10.0.2.0/24 -d 10.0.1.0/24 -j DROP
    

Самоочевидно: пакеты из источника 10.0.2.0/24 никогда не могут пересекаться с 10.0.1.0/24.

  • как разрешить доступ к ненадежной локальной сети из защищенной локальной сети?

    iptables -I FORWARD -s  10.0.2.0/24 -d 10.0.1.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -I FORWARD 2 -s 10.0.1.0/24 -d 10.0.2.0/24 -j ACCEPT
    

Обратите внимание на использование -I чтобы эти команды помещались перед командой в ответе на первый вопрос, а 2 для сохранения обычного порядка. Вторая команда не требуется, она здесь, чтобы дать намерение, и это зависит от вашей конфигурации, если вам это нужно или нет. Первая команда позволяет ответным пакетам из ненадежных возвращаться в доверенные, запрашивая средство conntrack netfilter. Это будет работать между двумя локальными сетями только для соединений, ранее инициированных от доверенных к ненадежным. Обычно эта первая команда записывается глобально один раз (без использования -s и -d ограничивая ее этими двумя локальными сетями).

  • Как предотвратить доступ ненадежных хостов с других ненадежных хостов в той же локальной сети?

Хотя два первых вопроса можно решить с помощью маршрутизатора, работающего на уровне 3: IP, последний вопрос не может быть решен так легко: хосты не маршрутизируются (т.е. на уровне 3) между собой в своей локальной сети, они совместно используют уровень 2 оборудование, такое как выключатель, и инструменты, работающие на этом уровне должны быть использованы. iptables работающий на уровне 3, не может использоваться отдельно. Соответствующая реализация изоляции называется Private VLAN. Эта функция обычно реализуется непосредственно на сетевом оборудовании.

Если бы это было сделано на стандартном сервере Linux, для работы в качестве коммутатора потребовалось бы большое количество сетевых интерфейсов (управление виртуальной средой упрощается, так как интерфейсы становятся свободными для добавления). Брандмауэр на уровне 2 для этого выполняется с использованием ebtables . Вот некоторые вопросы и ответы по этой теме:https://unix.stackexchange.com/questions/12026/private-vlans-under-linux https://serverfault.com/questions/388544/is-it-possible-to -enable-порт-изоляция-на-Linux-мосты

Если бы у сервера Linux было ограниченное количество портов, и, следовательно, он сам не выступал в качестве коммутатора, ему потребовался бы способ получения всего трафика из ненадежной локальной сети и наличие некоторого тега на каждом пакете для идентификации его источника, вероятно, требующего аномально большого числа VLAN и в любом случае конкретной конфигурации на сетевом оборудовании.

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