URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 65416
[ Назад ]

Исходное сообщение
"Настройка PF"

Отправлено Azureus , 06-Апр-06 00:59 
Подскажите где почитать про настройку PF, желательно на русском. Имеется в виду создание правил и все такое.
Если не сложно, то приведите пример правила, которое разрешает только определенному удаленному адресу зайти на 22 порт.

Содержание

Сообщения в этом обсуждении
"Настройка PF"
Отправлено Myers , 06-Апр-06 09:15 
>Подскажите где почитать про настройку PF, желательно на русском. Имеется в виду
>создание правил и все такое.
>Если не сложно, то приведите пример правила, которое разрешает только определенному удаленному
>адресу зайти на 22 порт.

по русски читать запрещается, я серьезно, там на английском на сайте openbsd.org есть pf faq лучше него никогда небыло и скорее всего не будет, вообще у опенка очень хорошая дока.

про 22 порт

pass in on $EXT proto есз from XXX.XXX.XXX.XXX to $EXT port 22 keep state


"Настройка PF"
Отправлено Myers , 06-Апр-06 09:17 
ftp://ftp.openbsd.org/pub/OpenBSD/doc/pf-faq.txt

поправка опечаток
pass in(out) on INTERFACE proto tcp from XXX.XXX.XXX.XXX to INTERFACE port 22


"Настройка PF"
Отправлено Myers , 06-Апр-06 09:23 
вот из доки, только про запрет портов с адресов

запрещает исходящие пакеты на интерфейсе fxp0 по tcp и udp с адресов указанных на любые адреса по портам ssh telnet

block out on fxp0 proto { tcp udp } from { 192.168.0.1, 10.5.32.6 } to any port { ssh telnet }

block out on fxp0 proto tcp from 192.168.0.1 to any port 22


"Настройка PF"
Отправлено Myers , 06-Апр-06 09:26 
не пускать никого кроме 10.1.2.3

block in on fxp0 from !10.1.2.3 порт траляля


"Настройка PF"
Отправлено idle , 06-Апр-06 10:11 
>Подскажите где почитать про настройку PF, желательно на русском. Имеется в виду
>создание правил и все такое.
>Если не сложно, то приведите пример правила, которое разрешает только определенному удаленному
>адресу зайти на 22 порт.
http://dreamcatcher.ru/docs/pf.html


"Настройка PF"
Отправлено Azureus , 06-Апр-06 16:07 
Ну вот почитал немного, пытаюсь настроить, но не получается.
Помогите решить такую задачу.

Значит необходимо поставить файервол в режим что неразрешено, то запрещено, как это сделать незнаю, но начал рыть в сторону block in all.

После того, как отсекается всё, что не разрешено, пытаюсь все-таки разрешить все по порядку.

1. Для удаленного администрирования пишу правило:
pass in on sk0 proto tcp from {1.1.1.1, 1.1.1.2} to any port 22
С этим все вроде понятно.

2. Для использования ftp пишу следущее правило:

pass in on sk0 proto tcp from any to any port {21, 3000-3010} - где 3000-3100 - это диапазон TCP портов прописанных в proftpd для работы в пассив режиме.
А теперь мне нужно дать правило, которое разрешить любое соединение с моего компьютера на удаленный 20TCP порт. Вот этого то я и не могу осилить. Помогите с синтаксисом.

3. Для работы http пишу правило:

pass in on sk0 proto tcp from any to any port 80
pass in on sk0 proto tcp from 127.0.0.1 to any port 3306

С доступом к апачу проблем нет, а дальше как я понимаю к базе данных апач подключается из под 127.0.0.1 или из под моего сетевого IP ?

4. Есть такой непоняток. В Win фаеры имели привязку к приложениям, то есть я мог спокойно выставить диапазон портов для пассива на ftp с 1024 по 65535 и знать, что это правило работает только для ftp демона. Если я напишу тут правило разрешающее такой диапапзон на входящее, то весь смысл правил пропадет. Можно ли в PF привязать правило к демону?

5. Как итог получаю следущий синтаксис:

block in all
pass in on sk0 proto tcp from {1.1.1.1, 1.1.1.2} to any port 22
pass in on sk0 proto tcp from any to any port {21, 3000-3010}
pass in on sk0 proto tcp from any to any port 80
pass in on sk0 proto tcp from 127.0.0.1 to any port 3306

Из за которого подключение к ftp и ssh с ОГРОМНЫМИ тормозами. Подсказали, что мешает block in all так как блокирует dns и от этого тормоза. Хотя в настройках proftpd у меня стоит отключение dns. Может я пошел не по правильному пути? Как еще можно расписать правилами мою ситуацию?

Повторю задачу.
Удаленное администрирование привязаное к определенным удаленным IP. (по 22TCP)
Раздача по ftp для всех в активном и пассивном режиме. (пассив 3000-3010, активный на любой адаленный 20TCP)
Доступ к веб серверу, который на php+mysql+apache
И полная блокировка того, что явно не разрешено.



"Настройка PF"
Отправлено tester , 06-Апр-06 17:12 
>5. Как итог получаю следущий синтаксис:
>
>block in all
>pass in on sk0 proto tcp from {1.1.1.1, 1.1.1.2} to any port
>22
>pass in on sk0 proto tcp from any to any port {21,
>3000-3010}
>pass in on sk0 proto tcp from any to any port 80
>
>pass in on sk0 proto tcp from 127.0.0.1 to any port 3306
>


table <ssh_allow> { 1.1.1.1 1.1.1.2 }
1.block in on sk0 all
pass quick on lo0 all #- вместо (pass in on sk0 proto tcp from 127.0.0.1 to any port 3306) #- если mysql на этой же машине запущен иначе
pass out quick on sk0 proto tcp from sk0 to $mysqld_host port 3306 flags S/SA keep state

pass in quick on sk0 proto tcp from <ssh_allow> to $sshd_listen_on_sk0 port 22 flags S/SA keep state
pass in quick on sk0 proto tcp from any to $proftpd_listen_on_sk0 port { 21, 3000:3010 } flags S/SA keep state
pass in quick on sk0 proto tcp from any to $httpd_listen_on_sk0 port 80 flags S/SA synproxy state
#для запросов к внешним дns
pass out quick on sk0 proto udp from sk0 to any port 53 keep state


quick - используется для того чтобы по всем правилам не бегал если уже нашел удовлетворяющее правило то прекращал дальнейшую обработку для соответствующего пакета
keep state - благодаря этому не надо писать обратное правило(в pf даже для udp и icmp сделали)

в pf чем ниже правило тем выше у него приоритет (после ipfw по началу крышу сносит с такой обработкой)


>
>Из за которого подключение к ftp и ssh с ОГРОМНЫМИ тормозами. Подсказали,
>что мешает block in all так как блокирует dns и от
>этого тормоза. Хотя в настройках proftpd у меня стоит отключение dns.
>Может я пошел не по правильному пути? Как еще можно расписать
>правилами мою ситуацию?
>
>Повторю задачу.
>Удаленное администрирование привязаное к определенным удаленным IP. (по 22TCP)
>Раздача по ftp для всех в активном и пассивном режиме. (пассив 3000-3010,
>активный на любой адаленный 20TCP)
>Доступ к веб серверу, который на php+mysql+apache
>И полная блокировка того, что явно не разрешено.



"Настройка PF"
Отправлено tester , 06-Апр-06 17:16 
>5. Как итог получаю следущий синтаксис:
>
>block in all
>pass in on sk0 proto tcp from {1.1.1.1, 1.1.1.2} to any port
>22
>pass in on sk0 proto tcp from any to any port {21,
>3000-3010}
>pass in on sk0 proto tcp from any to any port 80
>
>pass in on sk0 proto tcp from 127.0.0.1 to any port 3306
>


table <ssh_allow> { 1.1.1.1 1.1.1.2 }
1. block in on sk0 all
2. pass quick on lo0 all #- вместо (pass in on sk0 proto tcp from 127.0.0.1 to any port 3306) #- если mysql на этой же машине запущен иначе 2.1
2.1 pass out quick on sk0 proto tcp from sk0 to $mysqld_host port 3306 flags S/SA keep state

3. pass in quick on sk0 proto tcp from <ssh_allow> to $sshd_listen_on_sk0 port 22 flags S/SA keep state
4. pass in quick on sk0 proto tcp from any to $proftpd_listen_on_sk0 port { 21, 3000:3010 } flags S/SA keep state
5. pass in quick on sk0 proto tcp from any to $httpd_listen_on_sk0 port 80 flags S/SA synproxy state
# для запросов к внешним дns
6. pass out quick on sk0 proto udp from sk0 to any port 53 keep state
# для active ftp
7. pass out quick on proto tcp from sk0 port 20 to any flags S/SA keep state

quick - используется для того чтобы по всем правилам не бегал если уже нашел удовлетворяющее правило то прекращал дальнейшую обработку для соответствующего пакета
keep state - благодаря этому не надо писать обратное правило(в pf даже для udp и icmp сделали)

в pf чем ниже правило тем выше у него приоритет (после ipfw по началу крышу сносит с такой обработкой)


>
>Из за которого подключение к ftp и ssh с ОГРОМНЫМИ тормозами. Подсказали,
>что мешает block in all так как блокирует dns и от
>этого тормоза. Хотя в настройках proftpd у меня стоит отключение dns.
>Может я пошел не по правильному пути? Как еще можно расписать
>правилами мою ситуацию?
>
>Повторю задачу.
>Удаленное администрирование привязаное к определенным удаленным IP. (по 22TCP)
>Раздача по ftp для всех в активном и пассивном режиме. (пассив 3000-3010,
>активный на любой адаленный 20TCP)
>Доступ к веб серверу, который на php+mysql+apache
>И полная блокировка того, что явно не разрешено.



"Настройка PF"
Отправлено Azureus , 06-Апр-06 17:32 
>quick - используется для того чтобы по всем правилам не бегал если уже нашел удовлетворяющее правило то прекращал дальнейшую обработку для соответствующего пакета.
Это уяснил из русских доков.

>pass quick on lo0 all
Это то, что называют loopback?

>$proftpd_listen_on_sk0 port
Я так понял эта строка привязывает правило к демону?

>keep state - благодаря этому не надо писать обратное правило(в pf даже для udp и icmp сделали)
Не понял, какое обратное правило?

>в pf чем ниже правило тем выше у него приоритет (после ipfw по началу крышу сносит с такой обработкой)
Я пришёл с outpost, долго настраивал методом тыка, в этоге поняв суть, офигел :)

>flags S/SA
Что за зверь?


"Настройка PF"
Отправлено Azureus , 07-Апр-06 04:33 
Вот поправил конфиг, выполнил это pfctl -f /etc/pf.conf -e и вижу:

/etc/pf.conf:84: macro 'sshd_listen_on_sk0' not defined
/etc/pf.conf:84: syntax error
/etc/pf.conf:85: macro 'proftpd_listen_on_sk0' not defined
/etc/pf.conf:86: macro 'httpd_listen_on_sk0' not defined
pfctl: Syntax error in config file: pf rules not loaded

Что неправильно? почему он не принимает синтаксис?

И еще при выполнении pfctl -f /etc/pf.conf -e выпадает это:

No ALTQ support in kernel
ALTQ related functions disabled

Это что?


"Настройка PF"
Отправлено tester , 07-Апр-06 07:18 
>Вот поправил конфиг, выполнил это pfctl -f /etc/pf.conf -e и вижу:
>
>/etc/pf.conf:84: macro 'sshd_listen_on_sk0' not defined
>/etc/pf.conf:84: syntax error
>/etc/pf.conf:85: macro 'proftpd_listen_on_sk0' not defined
>/etc/pf.conf:86: macro 'httpd_listen_on_sk0' not defined
>pfctl: Syntax error in config file: pf rules not loaded
>
>Что неправильно? почему он не принимает синтаксис?
>
>И еще при выполнении pfctl -f /etc/pf.conf -e выпадает это:
>
>No ALTQ support in kernel
>ALTQ related functions disabled
ALTQ- не скомпилин в ядре поэтому pf выдает сообщение(ALTQ - шейпер в pf)
>
>Это что?


вместо sshd_listen_on_sk0, proftpd_listen_on_sk0, proftpd_listen_on_sk0, - пишы ip адреса


"Настройка PF"
Отправлено Azureus , 07-Апр-06 13:12 
>вместо sshd_listen_on_sk0, proftpd_listen_on_sk0, proftpd_listen_on_sk0, - пишы ip адреса

Это как так? sshd_listen_on_1.1.1.1  или как?

>ALTQ- не скомпилин в ядре поэтому pf выдает сообщение(ALTQ - шейпер в pf)
Ядро компилировал так:

# Suppord packet filter
device pf
device pflog
device pfsync

Какой аргумент добавить для включения ALTQ и наксолько это нужно?

Так как я не понял что имелось ввиду тут:
>вместо sshd_listen_on_sk0, proftpd_listen_on_sk0, proftpd_listen_on_sk0, - пишы ip адреса
Временно стер proftpd_listen_on_sk0 и получил следующий синтаксис:

table <ssh_allow> { 1.1.1.1, 1.1.1.2 }
#block in on sk0 all
pass in quick on sk0 proto tcp from <ssh_allow> port 22
pass in quick on sk0 proto tcp from any port { 21, 3000:3010 }
pass in quick on sk0 proto tcp from any port 80 flags S/SA synproxy state
pass out quick on sk0 proto udp from sk0 to any port 53 keep state
pass quick on lo0 all

Так вот если я раскомментирую #block in on sk0 all не одно разрешающее правило не работает, приходится идти к серверу и через монитор обратно ее комментировать, чтобы зайти удаленно или на ftp.
Опять же, где ошибка?


"Настройка PF"
Отправлено KES , 22-Авг-06 03:41 
oneNat    = "192.168.0.0/24"
twoNat  = "192.168.1.0/24"
allNat     = "{" $oneNat $twoNat "}"

#в этой строке выдаёт ошибку /etc/pf.conf:ХХ: syntax error
Почему?

Вот цитата с конфига:
Macros can be defined recursively. Since macros are not expanded within quotes the following syntax must be used:

host1 = "192.168.1.1"
host2 = "192.168.1.2"
all_hosts = "{" $host1 $host2 "}"

Так работает:
allNat = "{ 192.168.0.0/24 192.168.1.0/24 }"
и так тоже:
allNat = "{ $oneNat $twoNat }"
Но в это случае выдаёт ошибку 'syntax error'
в следующиз строках
так
pass out quick from $allNat to any
и так
pass out quick from { $allNat } to any
и даже так, если allNat = "$oneNat $twoNat"
pass out quick from "{" $allNat "}" to any