Вопросы по правилам в pf.conf

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
Trojan
Сообщения: 359
Статус: Системный ламер
ОС: CentOS 7

Вопросы по правилам в pf.conf

Сообщение Trojan »

Прошу помочь в написании правил. Читал не одну книжку по pf, но видимо все же нужно ткнуть носом чтобы понял.

Вобщем для начала вопрос такой: нужно разрешить вход по ssh а также пинговать FreeBSD сервер только одной машине. Создал такое правило:

Код: Выделить всё

pass in on $int_if from 192.168.1.250 to 192.168.1.1
pass out on $int_if from 192.168.1.1 to 192.168.1.250
block in
pass out

Вроде бы pfctl -f /etc/pf.conf ничего против не имеет однако ни пинг до машины не проходит ни по ssh не зайти.

Что не так?

P.S. Еще такой вопрос: правила по умолчанию block in all и block out all должны находится выше написанных правил или ниже?
Всегда думай то, что говоришь и никогда не говори то, что думаешь.

Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Вопросы по правилам в pf.conf

Сообщение arachnid »

смотри, как pf обрабатывает правила - пакет проверяется по всем правилам. срабатывает последнее совпадающее. последним у тебя стоит правило блокировка всех входящих.
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
Trojan
Сообщения: 359
Статус: Системный ламер
ОС: CentOS 7

Re: Вопросы по правилам в pf.conf

Сообщение Trojan »

А разве вот это правило

pass in on $int_if from 192.168.1.250 to 192.168.1.1

не должно разрешать входящий трафик от машины 192.168.1.250 до 192.168.1.1 (FreeBSD) на внутреннем интерфейсе?
Всегда думай то, что говоришь и никогда не говори то, что думаешь.

Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Вопросы по правилам в pf.conf

Сообщение arachnid »

Троян, уж извини, но я тебя к.н. забаню :) за невнимательность.
ты прочел, что я написал?
еще раз - пакет проверяется по всем правилам! срабатывает последнее, под которое пакет подпадает. ну и что, что пакет подошел под первое правило? дальше есть еще, которые его успешно блокируют
http://www.lissyara.su/?id=1671 вот сюда посмотри, тут разбор небольшой с комментами

и вот сюда http://www.dreamcatcher.ru/bsd/018_pf1.html
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
ivan2ksusr
Сообщения: 882
ОС: Mac OS X, openSUSE

Re: Вопросы по правилам в pf.conf

Сообщение ivan2ksusr »

если совсем уже плохо будет то можешь воспользоваться вот этим
за невнимательность.

скорее всего за не понимание того что он делает

2arachnid - 2я ссылочка зачетная :)
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Вопросы по правилам в pf.conf

Сообщение arachnid »

ivan2ksusr писал(а):
30.07.2009 11:00
если совсем уже плохо будет то можешь воспользоваться вот этим
за невнимательность.

скорее всего за не понимание того что он делает

2arachnid - 2я ссылочка зачетная :)

"за всё" (с)

а что касаемо второй ссылки - на том же сайте есть второй перевод - по оптимизации правил
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
Trojan
Сообщения: 359
Статус: Системный ламер
ОС: CentOS 7

Re: Вопросы по правилам в pf.conf

Сообщение Trojan »

Вот из примеров:

Код: Выделить всё

# Pass traffic in on dc0 from the local network, 192.168.0.0/24,
# to the OpenBSD machine's IP address 192.168.0.1. Also, pass the
# return traffic out on dc0.
pass in  on dc0 from 192.168.0.0/24 to 192.168.0.1
pass out on dc0 from 192.168.0.1 to 192.168.0.0/24

В принципе тоже самое что и у меня:

Код: Выделить всё

block in all
 pass out all
 pass in on $int_if from 192.168.1.250 to 192.168.1.1
 pass out on $int_if from 192.168.1.1 to 192.168.1.250

Скажите, почему у меня проходит ssh до сервера проходит а пинги нет?
Правило ведь, я так понимаю, должно пропускать и выпускать весь трафик.
Всегда думай то, что говоришь и никогда не говори то, что думаешь.

Спасибо сказали:
Аватара пользователя
z24
Сообщения: 23
ОС: FreeBSD7.2,Slackware13

Re: Вопросы по правилам в pf.conf

Сообщение z24 »

рабочие правила, самые простые , сначало запрещаешь :crazy: , а потом , что можно разрешаешь

block in quick on $ext_if proto tcp from any to any flags FUP/FUP
block in quick on $ext_if proto tcp from any to any flags SF/SFRA
block in quick on $ext_if proto tcp from any to any flags /SFRA
block all
pass out keep state
pass in quick on $int_if from $internal_net
pass in inet proto icmp all icmp-type $icmp_types keep state
pass out on $ext_if proto { tcp, udp } all keep state
pass in on $ext_if proto { tcp, udp } from any to any flags S/SA keep state
Спасибо сказали:
Abigor
Сообщения: 100

Re: Вопросы по правилам в pf.conf

Сообщение Abigor »

с наскоку в конфиге z24 непонятно

Код: Выделить всё

pass out keep state

Код: Выделить всё

pass out on $ext_if proto { tcp, udp } all keep state

в чем отличие?
и где интерфейс lo0 ? или это не полный Ваш конфиг ?
Спасибо сказали:
Аватара пользователя
Trojan
Сообщения: 359
Статус: Системный ламер
ОС: CentOS 7

Re: Вопросы по правилам в pf.conf

Сообщение Trojan »

Схема сети такая: Подсеть 1 192.168.1.0/25 .1|------FreeBSD------|.129 192.168.1.128/25 Подсеть 2

Делаю так:

Код: Выделить всё

pass in all
pass out all

все работает.

Делаю так:

Код: Выделить всё

 pass in on $lan1_if from $lan1_net to $lan2_net
 pass out on $lan1_if from $lan2_net to $lan1_net
 pass in on $lan2_if from $lan2_net to $lan1_net
 pass out on $lan2_if from $lan1_net to $lan2_net

Соединение между подсетями пропадает.

Где ошибка?
Всегда думай то, что говоришь и никогда не говори то, что думаешь.

Спасибо сказали:
Abigor
Сообщения: 100

Re: Вопросы по правилам в pf.conf

Сообщение Abigor »

интерфейсы то пингуются ?
Спасибо сказали:
Аватара пользователя
Trojan
Сообщения: 359
Статус: Системный ламер
ОС: CentOS 7

Re: Вопросы по правилам в pf.conf

Сообщение Trojan »

Abigor писал(а):
02.08.2009 09:51
интерфейсы то пингуются ?

Самое странное что шлюз Подсети 1 пингуется нормально, а шлюз Подсети 2 не пингуется.

Попробовал добавить такое:

Код: Выделить всё

pass quick on { $lan1_if $lan2_if } from { $lan1_net $lan2_net } \
to { $lan1_net $lan2_net } keep state

но и так не работает.
Всегда думай то, что говоришь и никогда не говори то, что думаешь.

Спасибо сказали:
Аватара пользователя
z24
Сообщения: 23
ОС: FreeBSD7.2,Slackware13

Re: Вопросы по правилам в pf.conf

Сообщение z24 »

вам дали ссылки , где всё разжёвано , ошибки в конфиге pf "детские", прочитайте то , что вам дали и вопросы отпадут сами собой
Спасибо сказали:
Аватара пользователя
DFNdn
Сообщения: 2
ОС: FreeBSD/Ubuntu/WinXP

Re: Вопросы по правилам в pf.conf

Сообщение DFNdn »

Trojan
Покажи все содержимое pf.conf
Спасибо сказали:
Аватара пользователя
Trojan
Сообщения: 359
Статус: Системный ламер
ОС: CentOS 7

Re: Вопросы по правилам в pf.conf

Сообщение Trojan »

Ребята, проблему с форвардингом решил.
Правда сам не понял в чем была причина.
Точно не в правилах.
Всегда думай то, что говоришь и никогда не говори то, что думаешь.

Спасибо сказали:
Аватара пользователя
ivan2ksusr
Сообщения: 882
ОС: Mac OS X, openSUSE

Re: Вопросы по правилам в pf.conf

Сообщение ivan2ksusr »

Trojan писал(а):
03.08.2009 08:17
Ребята, проблему с форвардингом решил.
Правда сам не понял в чем была причина.
Точно не в правилах.

хотя бы решение показали бы
Спасибо сказали:
Аватара пользователя
Trojan
Сообщения: 359
Статус: Системный ламер
ОС: CentOS 7

Re: Вопросы по правилам в pf.conf

Сообщение Trojan »

ivan2ksusr писал(а):
03.08.2009 15:37
хотя бы решение показали бы

Я даже не знаю можно ли это назвать решением, в общем проделал следующее: изначально были две подсети 192.168.1.0/25 и 192.168.1.128/25. На интерфейсах FreeBSD роутера IP адреса были соответственно 192.168.1.1 и 192.168.1.129. При таком раскладе были проблемы с форвардингом о чем я собственно и писал.

Затем я решил не делить одну подсеть на две части, а сделал две полные подсети 192.168.1.0/24 и 192.168.2.0/24 с IP адресами 192.168.1.1 и 192.168.2.1 соответственно. Перебил TCP/IP свойства на узлах ну и естественно поправил IP адреса pf.conf. После этого форвардинг как говориться пошел. Но т.к. мне нужны две разделенные подсети и я вернул все так как было изначально, т.е. две подсети 192.168.1.0/25 и 192.168.1.128/25 ну и все остальное.

И вот после всех этих рукоприкладств вдруг все непонятным образом заработало. При этом самих правил я не менял, а только подправлял IP адреса в зависимости от того как у меня были организованы подсети. Так я и не понял в чем была проблема и каким образом или почему она решилась таким странным образом.

-------------------------------------------------------------------------------------------------------------------------------------------

Есть такая вещь в PF:

Код: Выделить всё

В pf.conf таблицы создаются используя директиву table. Следующие атрибуты могут быть определены для каждой таблицы:

    * const - содержание таблицы не может быть изменено после ее создания. Когда этот атрибут не определен, pfctl(8) может использоваться, чтобы добавлять или удалять адреса из таблицы в любое время, при выполнении с securelevel(7), равным двум и выше.
    * persist - заставляет ядро сохранять таблицу в памяти, даже когда никакие правила к ней не обращаются. Без этого атрибута, ядро автоматически удалит таблицу, когда последнее правило, ссылающееся на нее будет отработано.

Большая просьба к знатокам PF, объяснить простым языком и если не трудно на примере как работают эти настройки.

Например как работает такое правило:

Код: Выделить всё

table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8 }
table <spammers> persist
Всегда думай то, что говоришь и никогда не говори то, что думаешь.

Спасибо сказали: