pf.conf

classic Classic list List threaded Threaded
26 messages Options
12
Reply | Threaded
Open this post in threaded view
|

pf.conf

s.kembel
Добрый день.
не поможете создать правила для pf.

есть 3 сетевых интерфейса. скажем in1, in2, in3

in1 - internet
in2 - сеть 1
in3 - сеть 2

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

заранее спасибо


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

BSW-2
s.Kembel пишет:

> Добрый день.
> не поможете создать правила для pf.
>
> есть 3 сетевых интерфейса. скажем in1, in2, in3
>
> in1 - internet
> in2 - сеть 1
> in3 - сеть 2
>
> нужно сделать так чтоб из обеих сетей можно было в интернет, но чтоб сети
> друг друга не видели.
> тоесть чтоб из сети 2 нельзя было попасть в сеть2.
>
> заранее спасибо
>
Общая идея такова:
pass quick in all
pass quick out on in1 from in2:network to any
pass quick out on in1 from in3:network to any
block all

Добавить 'proto udp', 'proto tcp', 'keep state', 'flags ...' по вкусу и
необходимости.


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Pavel Labushev-3
BSW пишет:
..
> Общая идея такова:
> pass quick in all

Не учите плохому. :) quick в правилах - первый симптом геморроя. ;)

s.Kembel, попробуйте, для начала, сами разобраться. man pf.conf - в
опене замечательные маны.


Reply | Threaded
Open this post in threaded view
|

Re[2]: pf.conf

Алексей Бабкин
Здравствуйте, Pavel.

Вы писали 12 ноября 2008 г., 0:01:36:

> BSW пишет:
> ..
>> Общая идея такова:
>> pass quick in all

> Не учите плохому. :) quick в правилах - первый симптом геморроя. ;)

  Ну это как посмотреть. Если работать с очередями queue, то лучше
  использовать quick, чтоб пакет гарантированно не попал в другие
  очереди.



--
С уважением,
 Алексей                          mailto:[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Dinar Talypov
In reply to this post by Pavel Labushev-3
On Wed, 12 Nov 2008 04:01:36 +0700
Pavel Labushev <[hidden email]> wrote:

> BSW пишет:
> ..
> > Общая идея такова:
> > pass quick in all
>
> Не учите плохому. :) quick в правилах - первый симптом геморроя. ;)

верно сказано :)

block all
pass on in1 all
pass on in2 from in2:network to any
pass on in3 from in3:network to any
block on in2 from in3:network to in2:network
block on in3 from in2:network to in3:network  

> s.Kembel, попробуйте, для начала, сами разобраться. man pf.conf - в
> опене замечательные маны.
>
>
>
> !DSPAM:10,491a01d513721234514069!
>
>
> __________ NOD32 3600 (20081110) Information __________
>
> This message was checked by NOD32 antivirus system.
> http://www.eset.com
>
>


--
Динар Талыпов
т.+7(8555) 455010
ООО "Камател-Янтел"


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Дмитрий Веселов
In reply to this post by s.kembel
> есть 3 сетевых интерфейса. скажем in1, in2, in3
>
> in1 - internet
> in2 - сеть 1
> in3 - сеть 2
>
> нужно сделать так чтоб из обеих сетей можно было в интернет, но чтоб сети
> друг друга не видели.
> тоесть чтоб из сети 2 нельзя было попасть в сеть2.

ext_if          = "vlan5"
int_if1         = "vlan1"
int_if2         = "vlan2"

set skip on { lo }

scrub in all no-df

nat on $ext_if  inet from !(self) -> ($ext_if:0)

block all
block return on $ext_if inet proto tcp

pass out on $int_if1 to !($int_if2)
pass out on $int_if2 to !($int_if1)


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

damir-7
In reply to this post by BSW-2
Hi, All!

BSW wrote:

> Общая идея такова:
> pass quick in all
> pass quick out on in1 from in2:network to any
> pass quick out on in1 from in3:network to any
> block all
>
> Добавить 'proto udp', 'proto tcp', 'keep state', 'flags ...' по вкусу
> и необходимости.
>
>

Я в этом вопросе не мастер, но как-то режут глаз такие правила.
Насколько я понял из "The Book of PF" (кстати, неплохая книга и свободно
доступна), PF правила пишутся, по отношению к правилам iptables, задом
наперёд. Правильнее сказать, правила iptables пишутся задом наперёд, а
правила PF пишутся передом вперёд, то есть сначала block all, а потом
уже всё остальное. В общем, написал не флейма ради, а чтобы опытные люди
подсказали, правильно ли я понимаю pf.


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Dinar Talypov
On Wed, 12 Nov 2008 09:05:23 +0300
damir <[hidden email]> wrote:

> Hi, All!
>
> BSW wrote:
> > Общая идея такова:
> > pass quick in all
> > pass quick out on in1 from in2:network to any
> > pass quick out on in1 from in3:network to any
> > block all
> >
> > Добавить 'proto udp', 'proto tcp', 'keep state', 'flags ...' по вкусу
> > и необходимости.
> >
> >
>
> Я в этом вопросе не мастер, но как-то режут глаз такие правила.
> Насколько я понял из "The Book of PF" (кстати, неплохая книга и свободно
> доступна), PF правила пишутся, по отношению к правилам iptables, задом
> наперёд. Правильнее сказать, правила iptables пишутся задом наперёд, а
> правила PF пишутся передом вперёд, то есть сначала block all, а потом
> уже всё остальное. В общем, написал не флейма ради, а чтобы опытные люди
> подсказали, правильно ли я понимаю pf.
>
>
хоть задом наперед, хоть передом в зад :)
Это логики не меняет, главное иметь меньшее кол-во правил, при сохранении
функциональности


--
Динар Талыпов
т.+7(8555) 455010
ООО "Камател-Янтел"


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Pavel Labushev-3
In reply to this post by Алексей Бабкин
Алексей Бабкин пишет:

>> Не учите плохому. :) quick в правилах - первый симптом геморроя. ;)
>
>   Ну это как посмотреть. Если работать с очередями queue, то лучше
>   использовать quick, чтоб пакет гарантированно не попал в другие
>   очереди.

quick'и нарушают порядок применения правил, а это чревато странными
ошибками. Особенно, когда в правилах со временем что-то меняют. Здесь в
листе такие проблемы всплывали не раз. В вашем примере пакет может
попасть не в ту очередь, если совпадет выше по списку с другим правилом
с quick. Конечно, есть и полезные исключения, вроде block drop quick
inet6 all, но их мало.


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Anton Maksimenkov-2
In reply to this post by Dinar Talypov
>> доступна), PF правила пишутся, по отношению к правилам iptables, задом
>> наперёд. Правильнее сказать, правила iptables пишутся задом наперёд, а
>> правила PF пишутся передом вперёд, то есть сначала block all, а потом
>>
> хоть задом наперед, хоть передом в зад :)

спасибо, я поржал %)
--
engineer
Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

BSW-2
In reply to this post by Pavel Labushev-3
Pavel Labushev пишет:
> Алексей Бабкин пишет:
> В вашем примере пакет может попасть не в ту очередь, если совпадет выше по списку с другим правилом
> с quick.
Пакет может попасть не в ту очередь и в том случае, если он совпадет с правилом без quick, но ниже. То же самое относится и к tag/tagged.
Главное - чтобы автор pf.conf знал, что он делает. А уж помнить правила до текущей точки, или после нее - дело привычки, религии и т.д. и т.п.


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

BSW-2
In reply to this post by Dinar Talypov
Dinar Talypov пишет:

> On Wed, 12 Nov 2008 04:01:36 +0700
> Pavel Labushev <[hidden email]> wrote:
>
>  
>> BSW пишет:
>> ..
>>    
>>> Общая идея такова:
>>> pass quick in all
>>>      
>> Не учите плохому. :) quick в правилах - первый симптом геморроя. ;)
>>    
>
> верно сказано :)
>
>  
Во накинулись! :-)  Я же сказал, "общая идея", а не "завещано Богом" /*
s/Богом/Theo/, по вкусу. */
А геморрой можно огрести практически на ровном месте, независимо от quick.


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

BSW-2
In reply to this post by Pavel Labushev-3
Pavel Labushev пишет:
> Алексей Бабкин пишет:
> В вашем примере пакет может попасть не в ту очередь, если совпадет выше по списку с другим правилом
> с quick.
Пакет может попасть не в ту очередь и в том случае, если он совпадет с правилом без quick, но ниже. То же самое относится и к tag/tagged.
Главное - чтобы автор pf.conf знал, что он делает. А уж помнить правила до текущей точки, или после нее - дело привычки, религии и т.д. и т.п.


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Stanislav Kruchinin
In reply to this post by Pavel Labushev-3
Pavel Labushev wrote:
>
> quick'и нарушают порядок применения правил, а это чревато странными
> ошибками. Особенно, когда в правилах со временем что-то меняют. Здесь в
> листе такие проблемы всплывали не раз. В вашем примере пакет может
> попасть не в ту очередь, если совпадет выше по списку с другим правилом
> с quick. Конечно, есть и полезные исключения, вроде block drop quick
> inet6 all, но их мало.
>

Зачем вы травите хорошее слово quick? От него порядок применения правил не
нарушается, просто пакет не обрабатывается по всем далее идущим правилам. Так
делается по умолчанию в iptables, в IOS ACL и многих других пакетных фильтрах,
где срабатывает первое подходящее правило ("first rule wins"), а не последнее,
как в pf. quick приводит к бардаку если пакет удовлетворяет сразу нескольким
правилам, что говорит об их избыточности. В неизбыточном наборе правил quick
полезен, т.к. сокращает время прохождения пакета.


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Pavel Labushev-3
Stanislav Kruchinin пишет:

> Зачем вы травите хорошее слово quick? От него порядок применения правил
> не нарушается, просто пакет не обрабатывается по всем далее идущим

Потому что в злоупотреблении quick'ами нет ничего хорошего. А ими в
большинстве случаев именно злоупотребляют. Порядок применения правил
именно нарушается (а не меняется): вместо последнего совпадения начинает
работать первое, _но не для всех пакетов_, как в ipfw и iptables, а
только для некоторых.

> ("first rule wins"), а не последнее, как в pf. quick приводит к бардаку
> если пакет удовлетворяет сразу нескольким правилам, что говорит об их
> избыточности.

В некоторых случаях "избыточность" целесообразна. Типичный случай:
antispoof + фильтрация. С проблемами с antispoof quick в лист уже
обращались.

> В неизбыточном наборе правил quick полезен, т.к. сокращает время прохождения пакета.
В неизбыточном, большом, при больших нагрузках. Да. Но это процент от
случаев применения, и занимаются этим, как правило, люди, которые
понимают, что делают, а не задают вопросы в листах рассылки. :)


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Pavel Labushev-3
In reply to this post by Дмитрий Веселов
Дмитрий Веселов пишет:

> ext_if          = "vlan5"
> int_if1         = "vlan1"
> int_if2         = "vlan2"
>
> set skip on { lo }
>
> scrub in all no-df
>
> nat on $ext_if  inet from !(self) -> ($ext_if:0)
>
> block all
        ^^^
> block return on $ext_if inet proto tcp
>
> pass out on $int_if1 to !($int_if2)
> pass out on $int_if2 to !($int_if1)
       ^^^

Если это все правила, то ничего работать не будет, включая входящий ssh. :)


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Дмитрий Веселов
В чт, 13/11/2008 в 06:18 +0700, Pavel Labushev пишет:
> Если это все правила, то ничего работать не будет, включая входящий ssh. :)

не все конечно :)
ну вот примерно полный набор:


ext_if          = "if0"
int_if1         = "if1"
int_if2         = "if2"

set skip on { lo }

scrub in all no-df

nat on $ext_if  inet from !(self) -> ($ext_if:0)

block all
block return on $ext_if inet proto tcp

pass out on $int_if1 to !($int_if2)
pass out on $int_if2 to !($int_if1)
pass in on { $int_if1 $int_if2 } from (self)


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Pavel Labushev-3
Дмитрий Веселов пишет:

> ext_if          = "if0"
> int_if1         = "if1"
> int_if2         = "if2"
>
> set skip on { lo }
>
> scrub in all no-df
>
> nat on $ext_if  inet from !(self) -> ($ext_if:0)
>
> block all
        ^^^
Без уточнения направления == в обоих направлениях. Вы блокируете весь
трафик.
> block return on $ext_if inet proto tcp
>
> pass out on $int_if1 to !($int_if2)
> pass out on $int_if2 to !($int_if1)
> pass in on { $int_if1 $int_if2 } from (self)

Это все не будет работать. Даже по ssh не подцепитесь, чтобы исправить
ошибки. Сначала вы запрещаете трафик в обоих направлениях на всех
интерфейсах (block all), а затем разрешаете только исходящий трафик.
Любой входящий пакет с реальных интерфейсов будет отброшен, кроме
нелегальных (см. ниже).

Правило pass in on { $int_if1 $int_if2 } from (self) вообще не имеет
смысла (а вернее, разрешает спуфинг), поскольку разрешает только
входящие пакеты с адресов (а не подсетей) интерфейсов роутера, которые
на внешние интерфейсы не попадают - в обоих направлениях все локальные
пакеты ходят по lo0. Поэтому для разрешения роутеру коннекта к самому
себе достаточно было set skip on { lo }. В общем, не роутер это, а
черная дыра. :)


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

BSW-2
Pavel Labushev пишет:
> Это все не будет работать. Даже по ssh не подцепитесь, чтобы исправить
> ошибки. Сначала вы запрещаете трафик в обоих направлениях на всех
> интерфейсах (block all), а затем разрешаете только исходящий трафик.
>  
Именно так. Сработает последнее правило, которому удовлетворяет пакет.
/* Это к вопросу о вреде и пользе quick. */


Reply | Threaded
Open this post in threaded view
|

Re: pf.conf

Pavel Labushev-3
BSW пишет:
> Именно так. Сработает последнее правило, которому удовлетворяет пакет.
> /* Это к вопросу о вреде и пользе quick. */

Не понял, что вы хотели сказать.


12