Помогите разобратся с PF

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-27 9:41:11

Добрый день, первый раз в жизни настраиваю PF, в связи с этим возникли некоторые вопросы, буду премного благодарен за помощь. Сразу приведу конфиг PF и упрощу его немного чтобы не загромождать...

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

#########
#Макросы#
#########
        ext_if="ngeth0"
        int_if="ngeth1"
        IpOut="внешний ИП шлюза"
        MailSRV="ИП сервака в инете"
        m9="ещё 1 ИП сервака в инете"
        lo_if="lo0"
        NetIn="10.20.0.0/16"
        DenyLan="{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, 0.0.0.0/8, 240.0.0.0/4 }"
        icmp_types="{ echoreq, unreach }"
#########
#Таблицы#
#########
        table <good_hosts> persist

#######
#Опции#
#######
        set skip on lo0
        set block-policy drop
        set loginterface ngeth0

########################
#Параметры нормализации#
########################
        scrub in all

##################
#Очереди или AltQ#
##################

###########
#NAT и RDR#
###########
        #RDR
                #Mail
                rdr inet proto tcp from $NetIn to $MailSRV port 25 -> $MailSRV port 26

                #Servers
                rdr on $ext_if proto tcp from any to $IpOut port 50000 -> 10.20.3.110 port 5550
                rdr on $ext_if proto tcp from any to $IpOut port 50001 -> 10.20.3.110 port 5550

                #Cars
                rdr on $ext_if proto tcp from $MailSRV to $IpOut port 3341 -> 10.20.3.30 port 1433

        #NAT
                nat pass on $ext_if from any to any -> ($ext_if)

####################
#Правила фильтрации#
####################
        #Deny
        block all
        block drop in quick on $ext_if from $DenyLan to any
        antispoof quick for { $lo_if, $int_if, $ext_if }

        #Pass lo
        pass on $lo_if

        #allow internal
        pass in on $int_if from any to $NetIn keep state
        pass out on $int_if from $NetIn to any keep state

        #Allow GW inet
        pass out on $ext_if proto { tcp,udp,icmp } from $IpOut to any keep state

        #pass from m9
        pass in on $ext_if from $m9 to $IpOut keep state
        pass in on $ext_if from $MailSRV to $IpOut  keep state

        #DNS
        pass on $int_if proto udp from any to any port 53 keep state
        pass on $int_if proto udp from any port 53 to any keep state
        pass on $ext_if proto udp from any port 53 to any keep state

        #Time
        pass on $int_if proto udp from $NetIn to any port 123 keep state

        #Inet
        pass in on $ext_if proto tcp from any port 80 to $IpOut keep state
        pass on $int_if from 10.20.3.200 to any keep state

        #Without Proxy
        pass on $int_if proto { tcp,udp } from $NetIn to any port { 1100,5550 } keep state
        pass on $int_if from any to $MailSRV keep state
        pass on $int_if from any to $m9 keep state
        pass on $int_if from 10.20.1.10 to any keep state
        pass on $int_if from 10.20.0.15 to any keep state
        pass on $int_if from $NetIn to $portsnap keep state
        #Pass rdr to servers
        pass in on $ext_if proto tcp from any to $IpOut port 50000
        pass in on $ext_if proto tcp from any to $IpOut port 50001

        #TEMP
        pass in on $ext_if proto tcp from any to $IpOut port 3307


        #ICMP
        pass log inet proto icmp all icmp-type $icmp_types
        pass on $int_if proto icmp from $NetIn to any

        #Table knock
        pass in on $ext_if proto tcp from any to $IpOut port { 60000:65000 }
        pass in on $ext_if proto tcp from <good_hosts> to $ext_if port 1723 keep state

        #VPN_IF
        pass on { ng0, ng1, ng2, ng3, ng4, ng5, ng6, ng7, ng8, ng9, ng10, ng11, ng12, ng13, ng14, ng15, ng16, ng17, ng18, ng19, ng20, ng21, ng22, ng23, ng24 }

Собственно проблема при загрузке этого конфига
1)Не работают редиректы(если убрать block all то работают)
2)не работает пинг изнутри сети наружу - хотя он вроде как прописан
3)не работает Tracert из сети наружу

И всячески преветствую любую критику как сделать фаер лучше, заранее спасибо огромное.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Помогите разобратся с PF

Непрочитанное сообщение skeletor » 2009-04-27 12:37:52

Насчёт пинга и трассировки - попробуй сделать как здесь описано
http://skeletor.ho.ua/index.php?name=ar ... t=17&cat=1
и поубирайте лишние посылания на icmp, а то у вас оно мало того, что 2-ды описано, так ещё и только 2 типа описано. Что касается редиректов, дык у вас block all находится ниже, чем редиректы. Поставьте block all в самом начале файла.

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-27 12:55:48

Так по идее нельзя перемешывать команды из разных секций - а в своей секции он у меня находится в самом верху равзе не так?

Аватара пользователя
rnd
мл. сержант
Сообщения: 112
Зарегистрирован: 2007-11-06 20:36:25
Откуда: RonDon

Re: Помогите разобратся с PF

Непрочитанное сообщение rnd » 2009-04-27 13:19:32

Что касается редиректов сделайте так:

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

#RDR
                #Mail
                rdr inet proto tcp from $NetIn to $MailSRV port 25 -> $MailSRV port 26

                #Servers
                rdr pass on $ext_if proto tcp from any to $IpOut port 50000 -> 10.20.3.110 port 5550
                rdr pass on $ext_if proto tcp from any to $IpOut port 50001 -> 10.20.3.110 port 5550

                #Cars
                rdr pass on $ext_if proto tcp from $MailSRV to $IpOut port 3341 -> 10.20.3.30 port 1433

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-27 13:34:32

Я правильно понял что эти 4 строчки которые у меня сейчас

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

rdr on $ext_if proto tcp from any to $IpOut port 50000 -> 10.20.3.110 port 5550                
rdr on $ext_if proto tcp from any to $IpOut port 50001 -> 10.20.3.110 port 5550
pass in on $ext_if proto tcp from any to $IpOut port 50000        
pass in on $ext_if proto tcp from any to $IpOut port 50001
можно заменить двумя?

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

rdr pass on $ext_if proto tcp from any to $IpOut port 50000 -> 10.20.3.110 port 5550                
rdr pass on $ext_if proto tcp from any to $IpOut port 50001 -> 10.20.3.110 port 5550
Или же нужно оставить моих 4 строчки, а просто написание строчек rdr не правильное?

Аватара пользователя
rnd
мл. сержант
Сообщения: 112
Зарегистрирован: 2007-11-06 20:36:25
Откуда: RonDon

Re: Помогите разобратся с PF

Непрочитанное сообщение rnd » 2009-04-27 13:42:25

да можно оставить только эти две строки

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-27 13:43:43

Ок спасибо, завтра пока юзеров нету грузану новый фаер :)

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Помогите разобратся с PF

Непрочитанное сообщение skeletor » 2009-04-27 13:47:16

Archi писал(а):Так по идее нельзя перемешывать команды из разных секций - а в своей секции он у меня находится в самом верху равзе не так?
Подождите, какие секции? Где вы определяете начало\конец секции? Разве в pf есть секции? :shock:

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-27 13:56:42

гм
Вообще говоря, конфиг делится на несколько секций, которые должны иметь строгий порядок и не должны
пересекаться. Порядок следующий :



1) макросы

2) таблицы

3) опции

4) параметры нормализации

5) приоретизация и очереди ALTQ

6) правила трансляции

7) правила фильтра
http://www.lissyara.su/?id=1671


в соседней статье по PF тоже правла поделены на секции, у меня в конфиги названия секций вынесены в ###

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Помогите разобратся с PF

Непрочитанное сообщение skeletor » 2009-04-27 15:23:22

Не знал. Теперь буду знать :)

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-28 8:07:52

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

rdr pass on $ext_if proto tcp from any to $IpOut port 50000 -> 10.20.3.110 port 5550                
rdr pass on $ext_if proto tcp from any to $IpOut port 50001 -> 10.20.3.110 port 5550
не пашет вместе с block all :( проверял телнетом снаружи...

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-28 10:37:12

Вот что самое странное что если в rdr включить слово pass то пакет не должен попадать в секцию фильтрации...почему же тогда с включенным block all редирект не работает а без него работает?)))

Гость
проходил мимо

Re: Помогите разобратся с PF

Непрочитанное сообщение Гость » 2009-04-28 14:14:44

Archi
попробуй включить журналирование в rdr, может в логах что-то толковое нарисуется

раз уж пошла тема последовательности записи правил.... попробуй поставить rdr после nat

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-28 14:30:51

Перестановка ниже НАТа не помогла, подскажите как включить журналирование rdr?

Роберт Полсон
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-04-28 12:58:18

Re: Помогите разобратся с PF

Непрочитанное сообщение Роберт Полсон » 2009-04-28 14:41:10

какбуд-то так:

правило:
rdr pass log (all) on $ext_if proto tcp from any to $IpOut port 50000 -> 10.20.3.110 port 5550
для просмотра журнала:
tcpdump -n -e -ttt -r /var/log/pflog

если не получится, то почитай про журналирование в pf

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-28 15:20:31

Честно говоря прочитав мануалы на опеннете и ещё в паре мест не нашёл как же правильно логгировать rdr, rdr log pass и rdr pass log не пашут...

Роберт Полсон
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-04-28 12:58:18

Re: Помогите разобратся с PF

Непрочитанное сообщение Роберт Полсон » 2009-04-28 15:54:25

Archi, здесь хорошо написано про pf http://house.hcn-strela.ru/BSDCert/BSDA-course/apc.html

Archi
рядовой
Сообщения: 24
Зарегистрирован: 2009-04-15 14:31:59

Re: Помогите разобратся с PF

Непрочитанное сообщение Archi » 2009-04-28 16:11:40

Посмотрел этот мануал а имено параграф 2.3.1
Там упоминается вскользь про логирование rdr, но синтаксис не описан
как я уже писал rdr pass log и rdr log pass считается неверным синтаксисом.

Ocr
проходил мимо

Re: Помогите разобратся с PF

Непрочитанное сообщение Ocr » 2009-05-01 19:03:58

Такая же история с правилом блокировки.... Поступил по другому, а именно создал все разрешающие правила через quick после поставил блок правило, как в ipfw блок все по умолчанию последнее правило. Quick правильнее использовать так, как экономятся ресурсы.