Миграция из ipfw на pf

Обсуждаем OS FreeBSD и сервисы на ней.

Миграция из ipfw на pf

Сообщение mlevel » 27 фев 2011, 14:52

Переписывая правила, возникло несколько вопросов:
1. Как задается тип файрвола(открытый/закрытый), нужны ли в конце правила как в ipfw - allow/deny ip from any to any ?
2. Где задаються стандартные значения макроса <me>? Можно ли сходу использовать его, не меняя значения по умолчанию?
3. В какой последовательности pf обрабатывает правила, если там нет номера для каждого правила?
4. Можно ли увидеть количество пакетов что пройшли через правило pf (аналог ipfw show)?
5. Обязательно ли в правилах pf указывать атрибуты in/out (block in quick from any to any)?
Насколько я понял одним правилом pf - block quick from 10.10.10.10 to any,
можно заменить два правила ipfw -
1. deny ip from 10.10.10.10 to any
2. deny ip from any to 10.10.10.10 ?
mlevel
новичок
 
Сообщения: 24
Зарегистрирован: 26 фев 2011, 22:57

Re: Миграция из ipfw на pf

Сообщение Андрей » 28 фев 2011, 09:45

mlevel писал(а):1. Как задается тип файрвола(открытый/закрытый), нужны ли в конце правила как в ipfw - allow/deny ip from any to any ?

Да. Если стенка закрытая, то в начале указываете открытые порты, а потом пишите запрещающее правило. Т.е. Вы открываете только то, что можно.
mlevel писал(а):2. Где задаються стандартные значения макроса <me>? Можно ли сходу использовать его, не меняя значения по умолчанию?

Код: Выделить всё
table <me> { 1_ip, 2_ip, ... , n_ip}

Задается, желательно, в самом верху конфига. Вообще есть вариант пользовать self (т.е. себя) self подразумевает все "свои" ip (ip ифейсов машины).
mlevel писал(а):3. В какой последовательности pf обрабатывает правила, если там нет номера для каждого правила?

Если нет номера, то это не значит что номера нет вообще, есть номера строк. Вот по ним он и обрабатывает.
mlevel писал(а):4. Можно ли увидеть количество пакетов что пройшли через правило pf (аналог ipfw show)?

man pfctl
mlevel писал(а):5. Обязательно ли в правилах pf указывать атрибуты in/out (block in quick from any to any)?

А это от вас зависит, вы пишите конфиг под себя. А что блокировать входящий, исходящий или всё - решать вам.
mlevel писал(а):Насколько я понял одним правилом pf - block quick from 10.10.10.10 to any,

Правило запретит хождение трафика с 10.10.10.10 на любой. Если честно - бессмысленное правило, либо уточните, что за машина 10.10.10.10.

ЗЫ. На форуме я задавал подобный вопрос по миграции с pf на ipfw. Но мигрировать не стал.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: Миграция из ipfw на pf

Сообщение lehisnoe » 28 фев 2011, 10:29

mlevel писал(а):1. Как задается тип файрвола(открытый/закрытый), нужны ли в конце правила как в ipfw - allow/deny ip from any to any ?
PF по умолчанию не блокирует трафик. Для закрытого типа последним должно быть правило:
Код: Выделить всё
block in quick from any to any
.
mlevel писал(а):2. Где задаються стандартные значения макроса <me>? Можно ли сходу использовать его, не меняя значения по умолчанию?

Можно самом создать таблицу с названием, например, "me" и поместить туда нужные хосты. Либо же использовать встроенное макро - "self":
Код: Выделить всё
pass in quick from "self" to "self"

mlevel писал(а):3. В какой последовательности pf обрабатывает правила, если там нет номера для каждого правила?
Сверху вниз.

mlevel писал(а):4. Можно ли увидеть количество пакетов что пройшли через правило pf (аналог ipfw show)?
У меня не так много опыта в использовании PF, но я такой статы не наблюдал.

mlevel писал(а):5. Обязательно ли в правилах pf указывать атрибуты in/out (block in quick from any to any)?
Это зависит от того, какой цели ты хочешь достичь. Можно указывать, а можно и нет (прям как в ipfw).

mlevel писал(а):Насколько я понял одним правилом pf - block quick from 10.10.10.10 to any,
можно заменить два правила ipfw -
1. deny ip from 10.10.10.10 to any
2. deny ip from any to 10.10.10.10 ?
Нет, не верно, т.к. от отсутствия указания интерфейса src и dst не поменяются: почувствуй разницу между from 10.10.10.10 и to 10.10.10.10
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: Миграция из ipfw на pf

Сообщение Андрей » 28 фев 2011, 10:45

lehisnoe писал(а):4. Можно ли увидеть количество пакетов что пройшли через правило pf (аналог ipfw show)?

pfctl -s all -вся доступная справка по текущему состоянию pf/

А вот примеры из man'а. Может оно?
Код: Выделить всё
                   # pfctl -t test -vTshow
                      129.128.5.191
                       Cleared:     Thu Feb 13 18:55:18 2003
                       In/Block:    [ Packets: 0        Bytes: 0        ]
                       In/Pass:     [ Packets: 10       Bytes: 840      ]
                       Out/Block:   [ Packets: 0        Bytes: 0        ]
                       Out/Pass:    [ Packets: 10       Bytes: 840      ]


Код: Выделить всё
                   # pfctl -vvsTables
                   --a-r-  test
                       Addresses:   1
                       Cleared:     Thu Feb 13 18:55:18 2003
                       References:  [ Anchors: 0        Rules: 1        ]
                       Evaluations: [ NoMatch: 3496     Match: 1        ]
                       In/Block:    [ Packets: 0        Bytes: 0        ]
                       In/Pass:     [ Packets: 10       Bytes: 840      ]
                       In/XPass:    [ Packets: 0        Bytes: 0        ]
                       Out/Block:   [ Packets: 0        Bytes: 0        ]
                       Out/Pass:    [ Packets: 10       Bytes: 840      ]
                       Out/XPass:   [ Packets: 0        Bytes: 0        ]
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: Миграция из ipfw на pf

Сообщение mlevel » 28 фев 2011, 11:00

lehisnoe писал(а):Можно самом создать таблицу с названием, например, "me" и поместить туда нужные хосты. Либо же использовать встроенное макро - "self":
Код: Выделить всё
pass in quick from "self" to "self"

По умолчанию в макрос self записани все интерфейсы? Или нужно вручную вбивать?

lehisnoe писал(а):Нет, не верно, т.к. от отсутствия указания интерфейса src и dst не поменяются: почувствуй разницу между from 10.10.10.10 и to 10.10.10.10

В ipfw у меня такие правила работают, применяется ко всем интерфейсам(без фактического указания интерфейса). В системе 2 интерфейса(внутренний, внешний).

lehisnoe писал(а):Это зависит от того, какой цели ты хочешь достичь. Можно указывать, а можно и нет (прям как в ipfw).

Если мне нужно заблокировать входящий и исходящий трафик с определенного ІР - адреса?

Андрей писал(а):Правило запретит хождение трафика с 10.10.10.10 на любой. Если честно - бессмысленное правило, либо уточните, что за машина 10.10.10.10.

Это роутер, блокирует клиентов.
mlevel
новичок
 
Сообщения: 24
Зарегистрирован: 26 фев 2011, 22:57

Re: Миграция из ipfw на pf

Сообщение lehisnoe » 28 фев 2011, 12:23

mlevel писал(а):
lehisnoe писал(а):Можно самом создать таблицу с названием, например, "me" и поместить туда нужные хосты. Либо же использовать встроенное макро - "self":
Код: Выделить всё
pass in quick from "self" to "self"

По умолчанию в макрос self записани все интерфейсы? Или нужно вручную вбивать?
Смотрим man:
man 5 pf.conf писал(а):the self keyword - all addresses assigned to the interface(s)

mlevel писал(а):
lehisnoe писал(а):Нет, не верно, т.к. от отсутствия указания интерфейса src и dst не поменяются: почувствуй разницу между from 10.10.10.10 и to 10.10.10.10

В ipfw у меня такие правила работают, применяется ко всем интерфейсам(без фактического указания интерфейса). В системе 2 интерфейса(внутренний, внешний).
Не вопрос, как я уже говорил выше, в PF правила тоже могут работать без указания интерфейса.

mlevel писал(а):
lehisnoe писал(а):Это зависит от того, какой цели ты хочешь достичь. Можно указывать, а можно и нет (прям как в ipfw).

Если мне нужно заблокировать входящий и исходящий трафик с определенного ІР - адреса?
Если заранее известно, с какого интерфейса может придти пакет с этого определенного адреса, то я бы указал интерфейс (но можно этого и не делать).

PS: А что подвигло на миграцию с ipfw?
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: Миграция из ipfw на pf

Сообщение Андрей » 28 фев 2011, 13:20

lehisnoe писал(а):По умолчанию в макрос self записани все интерфейсы? Или нужно вручную вбивать?

Я же писал:
Андрей писал(а):Вообще есть вариант пользовать self (т.е. себя) self подразумевает все "свои" ip (ip ифейсов машины).


т.е. установлено на вешей машине 2 карты, присвоено на каждуйю по 1 ip. соответственно self будет подразумевать только те ip которые прописаны на машине. Будет алиасом 100 адресов указано - они тоже будут попадать в self. Очень удобно.

mlevel писал(а):В ipfw у меня такие правила работают, применяется ко всем интерфейсам(без фактического указания интерфейса). В системе 2 интерфейса(внутренний, внешний).

А извиняюсь нафига такие тогда проблемы?
пишем:
Код: Выделить всё
block in quick from any to 10.10.10.10
block out quick from 10.10.10.10 to any

2 правила. В чем проблема я не пойму.

Если таких машин как 10.10.10.10. много то делаем так:
Код: Выделить всё
table <enemy_host> {10.10.10.11, 10.10.10,12, 10.10.10.13}

block in quick from any to <enemy_hosts>
block out quick from <enemy_hosts> to any


Вот только я не понимаю зачем оно?

+1 к Lehisnoe, что подвигло на миграцию с ipfw?
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: Миграция из ipfw на pf

Сообщение mlevel » 28 фев 2011, 17:18

Сейчас работает и pf и ipfw.
PF - выступает в роли NAT, ipfw - фильтрует трафик (около 30 правил). Но нагрузка на сервер растет, и работать будет лучше при одном файрволе. Выбрал PF, так как round-robin NAT проще реализовать.

У меня такая конструкция чудесно работает, проверил, менше правил надо писать(зачем усложнять с in/out):
Код: Выделить всё
block quick from <deny_clients> to any
mlevel
новичок
 
Сообщения: 24
Зарегистрирован: 26 фев 2011, 22:57

Re: Миграция из ipfw на pf

Сообщение lehisnoe » 28 фев 2011, 20:21

mlevel писал(а):У меня такая конструкция чудесно работает, проверил, менше правил надо писать(зачем усложнять с in/out)
Я и не говорил, что она не будет работать, а привел пример того, как это сделал бы я (не вижу смысла в доп. анализе хэдеров пакета, если заранее известно, что он не попадет под правило).

PS: Попутно нашел в инете интересную схему прохождения пакета в PF:
Изображение

PPS: PF на данный момент не поддерживает многоядерность, соотв. показания pps при использовании PF будут ниже, чем при примении ipfw.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: Миграция из ipfw на pf

Сообщение root » 28 фев 2011, 21:48

mlevel писал(а):Сейчас работает и pf и ipfw.
PF - выступает в роли NAT, ipfw - фильтрует трафик (около 30 правил). Но нагрузка на сервер растет, и работать будет лучше при одном файрволе. Выбрал PF, так как round-robin NAT проще реализовать.

решать конечно тебе, но kernel nat на ipfw тоже хорошо работает и я бы остался на ipfw
когда то у меня тоже так было как у тя, а сейчас все на IPFW в том числе и NAT
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

След.

Вернуться в FreeBSD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4