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

Как настроить что-то вроде «Reflexive ACL» на OpenBSD?

В моем модеме U-Verse есть что-то под названием "Reflexive ACL", описанное как

Рефлексивный ACL: когда IPv6 включен, вы можете включить рефлексивные списки контроля доступа для запрета входящего трафика IPv6, если этот трафик не является результатом возврата исходящих пакетов (кроме случаев, настроенных с помощью правил брандмауэра).

Это кажется довольно хорошим способом избежать необходимости поддерживать брандмауэр на каждом компьютере за моим маршрутизатором, которому передается адрес IPv6. Это похоже на NAT, который для моей маленькой домашней сети - это все, что мне сейчас нужно.

Теперь мой модем отстой как маршрутизатор, поэтому я настраиваю для этого маршрутизатор OpenBSD. У меня есть поддержка IPv6 и все такое, и мой маршрутизатор OpenBSD будет раздавать адреса IPv6 через rtadvd. Теперь я хочу, чтобы люди не имели мгновенного доступа к моей локальной сети через IPv6.

Как мне лучше всего сделать что-то вроде Reflexive ACL с pf в OpenBSD 5.0?

Это будет делать:

pass on $int_if all
pass out on $ext_if all
block in on $ext_if all

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

Для меня это звучит как фильтрация с отслеживанием состояния.

В Справочная страница OpenBSD pf.conf говорит следующее о сохранении состояния:

По умолчанию pf (4) фильтрует пакеты с отслеживанием состояния: когда пакет впервые соответствует правилу передачи, создается запись состояния. Фильтр пакетов проверяет каждый пакет на соответствие существующему состоянию. Если это так, пакет передается без оценки каких-либо правил. После закрытия соединения или истечения времени ожидания запись состояния автоматически удаляется.

pf сохранит состояние по умолчанию.