Керування паралельними правилами для ipv4 та ipv6 iptables?


10

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

Що люди роблять, щоб керувати такою ситуацією? В ідеалі я хотів би мати можливість генерувати як iptables, так і ip6table набори правил з одного і того ж вихідного файлу. Я вже кинув щось разом, використовуючи bash, але це не обов'язково досить, і я підозрюю, що краще рішення повинно існувати десь там.

Мене б особливо зацікавило рішення, засноване на ляльках, яке добре використовує власні механізми залежності Ляльки для здійснення відносного впорядкування правил (або груп правил).

Відповіді:


5

У 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


4

Також я нещодавно зіткнувся зі створенням 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

Ви можете замовити цю гілку спирту за адресою:

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

Додаткову документацію можна знайти в офіційній документації FireHOL або в додатковій Readme про IPv6 .

Особисто я, мабуть, був би обережним, використовуючи його на виробничих машинах, де важливим є 100% надійний брандмауер. Але варто все-таки подивитися.


3

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

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

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


Я погляну. Я, як правило, поки не вражений типовими рішеннями на основі ляльок для управління iptables. Зокрема, вони, схоже, виконують замовлення явно, або через назви файлів фрагментів, або через явні індекси, передбачені правилами лялькок, а не за допомогою механізмів вирішення залежності лялечки, чого я дійсно хочу. Якщо рішення, пов'язане тут, уникає цих проблем, я все за це.
larsks

@larsks Я погоджуюсь і був так само розчарований, що хорошого загального рішення не було випущено ... але, можливо, саме час я це зробив сам. Лялька дозволить використовувати before => Resource['declared_name']будь-яке визначення, тому ви можете замовити їх за допомогою програми, яка не намагається замовити речі з фрагментами. Гарне використання Augueas для структури також запобігло б це питання - зробіть свої коментарі до верхнього дерева та замовлення нижче, як хочете.
Джефф Ферланд

Мої власні спроби вирішити це не надто далеко. Я зараз зробив це: (а) встановити фрагменти у підкаталог, а потім (б) використовувати відеомагнітофон, щоб перевести їх у порядок залежності. Він працює, але оскільки він заснований виключно на керуванні фрагментами файлів, він не піддається змішаному середовищу ipv4 / ipv6. Я не дуже уважно придивився до використання Augeas для вирішення проблеми. Мені буде цікаво, якщо у вас є якийсь код прототипу.
larsks

2

Відповідаючи на власне запитання тут, але я вважав, що ця інформація може бути загальною цікавістю

Дивлячись на це питання, я наткнувся на ufw (Нескладний FireWall) від людей Ubuntu. Якщо в конфігурації ufw увімкнено IPV6, 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).

Я тільки що почав це дивитись, але це, здається, досить добре складено разом.


0

Оскільки він ще відсутній у списку: Shorewall - це широко прийнятий і регулярно оновлюваний багатофункціональний інструмент конфігурації пакетних фільтрів. У нього вже деякий час була підтримка IPv6 .


1
Я розумію, що "shorewall" - це лише ipv4, а "shorewall6" - лише ipv6, анод повинен використовувати обидва, щоб охопити обидва протоколи. Чи можуть вони мати спільну конфігурацію?
larsks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.