Назад | Перейти на главную страницу

Управление параллельными правилами для ipv4 и ipv6 iptables?

Недавно мы начали экспериментировать с IPv6, и одна из первых проблем, с которыми нам приходится бороться, - это иметь дело с совершенно отдельным набором правил брандмауэра (Linux iptables / ip6ables) для двух стеков протоколов. Логика нашего брандмауэра в основном основана на ряде специализированных сетей (например, 10.0.0.0/24 - это сеть рабочих станций персонала, 10.1.0.0/24 - это сеть баз данных, 10.2.0.0/24 - это сеть веб-серверов и т. Д. ), и логика как для IPv6, так и для IPv4 будет в значительной степени одинаковой, по модулю разных сетевых префиксов.

Что люди делают в таких ситуациях? В идеале я хотел бы иметь возможность генерировать наборы правил iptables и ip6table из одного и того же исходного файла (ов). Я уже собрал кое-что с помощью bash, но это не обязательно красиво, и я подозреваю, что где-то там должно быть лучшее решение.

Я был бы особенно заинтересован в решении на основе Puppet, которое эффективно использует собственные механизмы зависимости Puppet для реализации относительного упорядочения правил (или групп правил).

В Firewall Builder есть именно то, что вам нужно. Вы можете создать один набор правил, пометить его как «комбинированный ipv4 + ipv6» и разместить свои сети ipv4 и ipv6, назначенные одному и тому же сегменту (например, «сеть баз данных» etC) в одном правиле. Затем программа генерирует две отдельные конфигурации iptables: одну для ipv4, а другую - для ipv6. Эта глава Руководства пользователя иллюстрирует это, хотя в качестве примера используются списки доступа маршрутизаторов Cisco. Точно так же работает iptables.

http://www.fwbuilder.org/4.0/docs/users_guide5/combined-ipv4-ipv6-rule-set.html

Я также недавно столкнулся с созданием правил iptables для IPv4 и IPv6. После некоторых поисков я закончил использовать Филиал IPv6 FireHOL, Фил Уинрей.

FireHOL - это генератор брандмауэра iptables, создающий брандмауэры с фильтрацией пакетов iptables с отслеживанием состояния на хостах и ​​маршрутизаторах Linux с любым количеством сетевых интерфейсов, любым количеством маршрутов, любым количеством обслуживаемых сервисов, любым уровнем сложности между вариантами сервисов (включая положительные и отрицательные выражения). (Источник: сайт FireHOL)

К сожалению, в официальной версии отсутствует поддержка IPv6. Но Фил Уинрей добавил поддержку в неофициальной ветке.

Несколько примеров того, как выглядит конфигурация:

# allowing outgoing http and https requests for ipv4 and ipv6 (default setting when nothing is specified):
client "http https" accept

# allow incoming ssh only on ipv4
ipv4 server ssh accept

# allow incoming IMAP requests only for ipv6
ipv6 server imap accept

Вы можете проверить эту ветку firehol по адресу:

git clone git://repo.or.cz/fireholvi.git

Дополнительную документацию можно найти в официальной документации FireHOL или на дополнительных Ознакомительные сведения об IPv6.

Лично я, вероятно, был бы осторожен при использовании его на производственной машине, где важен 100% надежный брандмауэр. Но все же посмотреть стоит.

В интересах продолжения евангелизации дела, я предлагаю использовать Puppet для вашей работы. В настоящее время нет хорошего сценария для обработки правил iptables 4 и 6, но написать его после адаптации к языку не составит особого труда.

Mediawiki's публичный репозиторий git это фантастический кладезь шаблонов конфигурации и включает iptables класс это обеспечит хорошую основу для начала. Вы можете отредактировать его, чтобы по умолчанию применять правила к обоим стекам одновременно и иметь флаги для разных правил, когда вы основываете что-то на правилах IPv4 или IPv6.

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

Отвечая на свой вопрос здесь, но я подумал, что эта информация может представлять общий интерес:

Изучая этот вопрос, я наткнулся на ufw (Несложный FireWall) от разработчиков Ubuntu. Если IPV6 включен в конфигурации ufw, ufw будет управлять правилами iptables и ip6tables параллельно. Это означает, что вы можете сделать что-то вроде этого:

# ufw allow ssh/tcp

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

# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere (v6)

В результате правила iptables / ip6tables выглядят следующим образом:

# iptables-save | grep 'dport 22'
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
# ip6tables-save | grep 'dport 22'
-A ufw6-user-input -p tcp -m tcp --dport 22 -j ACCEPT

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

# ufw allow 'WWW Full'

И в конечном итоге открываем оба порта 80 и 443 (как для IPv4, так и для IPv6).

Я только начал смотреть на него, но, похоже, он довольно хорошо собран.

Поскольку он все еще отсутствует в списке: Shorewall - это широко распространенный и регулярно обновляемый многофункциональный инструмент настройки фильтра пакетов. Это было Поддержка IPv6 на какое-то время.