Подскажите где почитать про настройку PF, желательно на русском. Имеется в виду создание правил и все такое.
Если не сложно, то приведите пример правила, которое разрешает только определенному удаленному адресу зайти на 22 порт.
>Подскажите где почитать про настройку PF, желательно на русском. Имеется в виду
>создание правил и все такое.
>Если не сложно, то приведите пример правила, которое разрешает только определенному удаленному
>адресу зайти на 22 порт.по русски читать запрещается, я серьезно, там на английском на сайте openbsd.org есть pf faq лучше него никогда небыло и скорее всего не будет, вообще у опенка очень хорошая дока.
про 22 порт
pass in on $EXT proto есз from XXX.XXX.XXX.XXX to $EXT port 22 keep state
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
вот из доки, только про запрет портов с адресовзапрещает исходящие пакеты на интерфейсе 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
не пускать никого кроме 10.1.2.3block in on fxp0 from !10.1.2.3 порт траляля
>Подскажите где почитать про настройку PF, желательно на русском. Имеется в виду
>создание правил и все такое.
>Если не сложно, то приведите пример правила, которое разрешает только определенному удаленному
>адресу зайти на 22 порт.
http://dreamcatcher.ru/docs/pf.html
Ну вот почитал немного, пытаюсь настроить, но не получается.
Помогите решить такую задачу.Значит необходимо поставить файервол в режим что неразрешено, то запрещено, как это сделать незнаю, но начал рыть в сторону 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
И полная блокировка того, что явно не разрешено.
>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 statepass 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
>И полная блокировка того, что явно не разрешено.
>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 state3. 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 statequick - используется для того чтобы по всем правилам не бегал если уже нашел удовлетворяющее правило то прекращал дальнейшую обработку для соответствующего пакета
keep state - благодаря этому не надо писать обратное правило(в pf даже для udp и icmp сделали)в pf чем ниже правило тем выше у него приоритет (после ipfw по началу крышу сносит с такой обработкой)
>
>Из за которого подключение к ftp и ssh с ОГРОМНЫМИ тормозами. Подсказали,
>что мешает block in all так как блокирует dns и от
>этого тормоза. Хотя в настройках proftpd у меня стоит отключение dns.
>Может я пошел не по правильному пути? Как еще можно расписать
>правилами мою ситуацию?
>
>Повторю задачу.
>Удаленное администрирование привязаное к определенным удаленным IP. (по 22TCP)
>Раздача по ftp для всех в активном и пассивном режиме. (пассив 3000-3010,
>активный на любой адаленный 20TCP)
>Доступ к веб серверу, который на php+mysql+apache
>И полная блокировка того, что явно не разрешено.
>quick - используется для того чтобы по всем правилам не бегал если уже нашел удовлетворяющее правило то прекращал дальнейшую обработку для соответствующего пакета.
Это уяснил из русских доков.>pass quick on lo0 all
Это то, что называют loopback?>$proftpd_listen_on_sk0 port
Я так понял эта строка привязывает правило к демону?>keep state - благодаря этому не надо писать обратное правило(в pf даже для udp и icmp сделали)
Не понял, какое обратное правило?>в pf чем ниже правило тем выше у него приоритет (после ipfw по началу крышу сносит с такой обработкой)
Я пришёл с outpost, долго настраивал методом тыка, в этоге поняв суть, офигел :)>flags S/SA
Что за зверь?
Вот поправил конфиг, выполнил это 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Это что?
>Вот поправил конфиг, выполнил это 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 адреса
>вместо 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.
Опять же, где ошибка?
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