Intereting Posts
Где установлен grub и нужен ли мне новый для отдельной Linux-установки? Как безопасно выполнять php-файл как другой пользователь? Может ли root / superuser прочитать мои защищенные от чтения файлы? Объяснение вывода скрипта Кто-нибудь знает, как настроить планшет Wacom Bamboo для работы с левым рулем? Прокси-сервер с аутентификацией, не работающей в командной строке Получить зависимости для создания пакета из источника Разделить несколько столбцов на два столбца на основе первого столбца Создание временного файла vs подстановка процесса и расширение переменной? Пустой экран Ubuntu после входа в систему Как найти имя / хэширование докеров, чтобы его можно было экспортировать? Какой порт Squid работает в OS X / BSD Восстановление из Sys Rq + r Snapper делать снимки только в том случае, если что-то изменилось, или при более низкой каденции В каком году была выпущена программа Unix «tar»?

dd-wrt: запретить доступ VAP к Интернету

Я пытаюсь настроить вторичную сеть для своих вещей IOT. Я хочу разрешить только нескольким устройствам доступ в Интернет, а остальные должны быть «заключены» в эту сеть. Кроме того, все устройства в сети IOT должны иметь доступ к моему серверу MQTT, который находится в моей основной сети.

Моя установка выглядит следующим образом:

  • Прошивка: DD-WRT v3.0-r34015M kongac (12/09/17) – Более поздние версии доставляют мне много проблем с беспроводным подключением. Wi-Fi продолжает падать через 10 минут, и единственный способ это исправить – перезагрузить роутер.
  • Аппаратное обеспечение: Netgear R7000

Моя сеть настроена так, что:

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

После некоторого поиска я добавил эти правила брандмауэра (кажется, что dd-wrt всегда предшествует правилам, поэтому сначала нужно ввести DROP):

iptables -I FORWARD -i br2 -j DROP iptables -I FORWARD -i br2 -o br0 -d 192.168.1.38 -p tcp --dport 1883 -m state --state NEW -j ACCEPT iptables -I FORWARD -i br0 -o br2 -m state --state NEW -j ACCEPT 

В следствии,

  • IOT -> Интернет = ОТКЛОНЕН
  • Главная -> IOT = ОТКАЗ
  • IOT -> 192.168.1.38:1883 = ОТКАЗ

Я уверен, что мне чего-то не хватает с iptables, но не уверен что.

Также можно предположить, что добавление:

 iptables -I FORWARD -i br2 -o br0 -s 192.168.7.5 -m state --state NEW -j ACCEPT 

разрешит 192.168.7.5 доступ в интернет?

Любое руководство с благодарностью.

Обновление: вывод запрошенных команд (с отредактированным WAN IP):

 root@DD-WRT:~# ip -br link root@DD-WRT:~# ip -4 -br address root@DD-WRT:~# ip route default via 73.70.220.1 dev vlan2 XXXX/23 dev vlan2 proto kernel scope link src XXXX 127.0.0.0/8 dev lo scope link 169.254.0.0/16 dev br0 proto kernel scope link src 169.254.255.1 172.16.0.0/24 via 172.16.0.1 dev vlan3 172.16.0.0/24 dev vlan3 proto kernel scope link src 172.16.0.3 192.168.1.0/24 via 192.168.1.1 dev br0 scope link 192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1 192.168.7.0/24 via 192.168.7.1 dev br2 scope link 192.168.7.0/24 dev br2 proto kernel scope link src 192.168.7.1 192.168.15.0/24 dev br1 proto kernel scope link src 192.168.15.1 root@DD-WRT:~# ip rule 0: from all lookup local 32766: from all lookup main 32767: from all lookup default 

Первое: – я -I виду вставку в голову, т. Е. Препенд . Используйте -A чтобы добавить в конце. -A может на самом деле работать не так, как ожидалось, если вы не посмотрите на другие правила iptables, которые, возможно, уже были установлены ранее. Так что давайте продолжим использовать -I но с увеличенным номером строки после, чтобы выбрать, куда вставлять и иметь правила в обычном порядке.

Ваша проблема связана с обработкой правил с отслеживанием состояния Поток контратаки NEW с первым пакетом. Любой ответный пакет не будет новым, но запустит состояние ESTABLISHED . Ваши правила допускают только NEW состояния, поэтому ничто не может работать правильно.

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

Сначала добавьте общие правила, которые позволят отвечать, а также связанные (например: для ошибок udp с icmp или для вспомогательных модhive, таких как для данных ftp ) пакеты, одно правило для каждого направления. Эти правила не разрешают трафик в одиночку, потому что новый stream всегда NEW (то есть не ESTABLISHED или RELATED ) по определению. Таким образом, вам нужно заботиться только о NEW состояниях ( -m conntrack --ctstate superseded -m state --state так что вам лучше использовать его, если он доступен, иначе просто замените все эти строки обратно на -m state --state ):

 iptables -I FORWARD 1 -i br2 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD 2 -i br0 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 

Теперь вы можете иметь дело (только) с новыми streamами:
Обратите внимание, что предыдущее правило и следующее правило могут быть объединены только в одном правиле со всеми 3 состояниями или вообще без проверки состояния, поскольку это всегда будет одно из этих 3 состояний (хорошо, кроме INVALID)

 iptables -I FORWARD 3 -i br0 -o br2 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD 4 -i br2 -o br0 -d 192.168.1.38 -p tcp --dport 1883 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD 5 -i br2 -j DROP 

Что касается вашего последнего вопроса, я сомневаюсь, что то, что вы написали, разрешило бы доступ в Интернет, потому что интернет, возможно, не был бы доступен на интерфейсе br0 . Это будет доступно на интерфейсе, который имеет публичный IP. Это должно работать, не зная, какой это интерфейс, просто не указав его (запустите после предыдущих команд или измените порядок номеров соответственно. iptables-save и iptables-restore – ваши друзья):

 iptables -I FORWARD 5 -o br2 -d 192.168.7.5 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD 6 -i br2 -s 192.168.7.5 -m conntrack --ctstate NEW -j ACCEPT 

Но эта недостающая информация, добавленная в вопрос, наверняка помогла бы: ip -br link ; ip -4 -br address ; ip route ; ip rule (и, возможно, iptables-save ). Тогда правила, вероятно, можно сделать более общими, не снижая при этом безопасность.

ОБНОВЛЕНИЕ: соответствие mac для соответствия MAC-адресу.

Можно сопоставить MAC-адрес вместо IP. Эта информация может использоваться только в качестве источника и имеет смысл только в правильной сети. Так что -o br2 нельзя использовать для соответствия MAC. Давайте просто заменим правило 5, приведенное выше, на более общее правило (которое по-прежнему подходит для безопасности). Используя -R для замены правил 5 и 6 выше, пожалуйста, настройте (снова: iptables-save удобен):

 iptables -R FORWARD 5 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -R FORWARD 6 -i br2 -m mac --mac-source 02:03:04:05:06:07 -m conntrack --ctstate NEW -j ACCEPT 

И в итоге вы получите:

 iptables -I FORWARD 1 -i br2 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD 2 -i br0 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD 3 -i br0 -o br2 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD 4 -d 192.168.1.38/32 -i br2 -o br0 -p tcp -m tcp --dport 1883 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD 5 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD 6 -i br2 -m mac --mac-source 02:03:04:05:06:07 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD 7 -i br2 -j DROP 

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