Открытие конкретных портов демона

IPv6 (apparently) does not support NAT.

Специалисты по стандартизации категорически не одобряют IPv6 NAT, но это не мешает людям внедрять его. Нет принципиальной разницы, которая делает IPv6 NAT проще или сложнее, чем IPv4 NAT. Тема IPv6 NAT в Linux была спорной, но в конечном итоге она была реализована в Linux 3.7.

ip6tables — аналог iptables для ipv6. Настройка базового брандмауэра, который разрешает все исходящие, но разрешает только определенные входящие данные и не ограничивает доступ к самому брандмауэру, довольно проста.

  1. Установите политику цепочки переадресации на удаление (Я всегда рекомендую устанавливать политику цепочки на удаление, чтобы при сбросе и сбросе правил вы не оставляли себя широко открытыми)
  2. Добавьте правило в таблицу переадресации, разрешающее передачу пакетов изнутри наружу.
  3. Добавить правило в таблицу переадресации, разрешающее пакеты с состояниями отслеживания «установлено» и «связанное» соединение. Это позволяет отвечать на ваши исходящие соединения, не открывая вас для Интернета в целом.
  4. Добавьте правила для всего, что вы хотите разрешить.

Если вы хотите ограничить доступ к самому брандмауэру, жизнь становится немного сложнее, потому что вы должны убедиться, что разрешаете такие вещи, как SLACC. Есть несколько примеров наhttps://www.sixxs.net/wiki/IPv6_Firewalling

Если вы пытаетесь ограничить трафик к/от самого маршрутизатора (, а не просто ограничивать пересылаемый трафик ), вам необходимо разрешить обнаружение соседей и рекламу соседей.

Думаю, то, что вам нужно, (взято изhttps://www.cert.org/downloads/IPv6/ip6tables_rules.txt)

ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type redirect -m hl --hl-eq 255 -j ACCEPT
0
14.11.2017, 17:31
1 ответ

Если вы знаете идентификатор процесса (pid )вашего демона, вы можете довольно легко написать сценарий для динамического изменения правил вашего брандмауэра. Вы не сказали, какой брандмауэр вы использовали, или это РАЗРЕШИТЬ ВСЕ ЗАПРЕЩАЕТСЯ, или набор правил ЗАПРЕЩАТЬ ВСЕ РАЗРЕШИТЬ, но вот базовый сценарий, из которого вы можете получить некоторую идею и развить ее.

Этот скрипт запускает прослушиватель netcat на случайно выбранном TCP-порту с 4000 по 5000.

nc -l $((RANDOM%1000+4000)) &
echo $!
sleep 2 #avoid bad way to avoid a race condition.
DYNAMICPORT=`netstat -lpdn | grep $! |  awk '{print $4}'`. 

echo $DYNAMICPORT
0.0.0.0:4078

Затем вы можете использовать $DYNAMICPORT для изменения правил вашего брандмауэра на лету.

Имея в виду, что по завершении процесса необходимо удалить все правила, которые вы добавили динамически.

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

Проблема #1 с этим решением :вы можете столкнуться с несколькими состояниями гонки между моментом открытия/закрытия порта демоном и моментом его обнаружения сценарием.

Проблема #2 :динамическое управление набором правил iptables из скрипта может привести к полной неразберихе..

Проблема #3 :Если демон разветвляется, и это разветвление открывает порты, то этот сценарий завершится ошибкой

Проблема #4 :Если демон продолжает открывать порты для прослушивания, тогда сценарий нужно будет запускать постоянно, опять же, это гонка.

Проблема #5 :Отслеживание прослушивающих портов, которые больше не прослушиваются и активны, будет сложной задачей, что делает невозможным удаление правил брандмауэра.

0
19.07.2020, 10:29

Теги

Похожие вопросы