pf FREEBSD

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
iner
проходил мимо

pf FREEBSD

Непрочитанное сообщение iner » 2010-03-28 20:45:30

Добрый!!!

Помогите с pf , пытаюсь настроить чтоб все было запрещено кроме машинок в сети, то есть ip машинки указать и только у нее все работает , а другие шли лесом.
Но только включаю block all все блочит, хочется защитить сервак как снаружи так и изнутри чтоб комар и носа не подточил.
киньте pf.conf пожалуйста.

Хостинговая компания 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/

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

Re: pf FREEBSD

Непрочитанное сообщение manefesto » 2010-03-28 21:14:38

почитай здесь http://www.openbsd.org/faq/pf/ru/index.html
сам читал
я такой яростный шо аж пиздеЦ
Изображение

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

Re: pf FREEBSD

Непрочитанное сообщение iner » 2010-03-28 21:25:22

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

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: pf FREEBSD

Непрочитанное сообщение Shuba » 2010-03-28 23:23:36

Может и мне кто-нибудь сделает одну большую кнопку "чтобы всё работало"??? Помогите, люди добрые!!! Мне так лянива читать мануалы!!! :cry:
Сила ночи, сила дня - одинакова фигня!

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

Re: pf FREEBSD

Непрочитанное сообщение n00b » 2010-03-29 8:56:57

рабочие конфиги лежат в /usr/share/examples/pf/

Аватара пользователя
---nebo---
старшина
Сообщения: 424
Зарегистрирован: 2008-11-01 21:06:23
Откуда: Киев
Контактная информация:

Re: pf FREEBSD

Непрочитанное сообщение ---nebo--- » 2010-03-29 9:31:34

Лично мне, вот это очень нравится

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

http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html
...участки под застройку в живописном месте Интернет

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

Re: pf FREEBSD

Непрочитанное сообщение iner » 2010-03-29 10:59:49

Всем огромное спасибо!!!
рассчитывал увидеть во очее рабочий конфиг от гуру и сравнить со своими косяками.
Обидно досадно да ладно не буду отвлекать.
Ушел курить маны дальше!!!

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: pf FREEBSD

Непрочитанное сообщение tyler56 » 2010-03-29 18:19:34

Убрал все лишнее. Получилось роутер с локалкой и ADSL модемом подымающий нет. Доступ к сервисам роутера есть только с локалки.

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

#pfctl -t ssh-bruteforce -T show
#1 макросы
#2 таблицы
#3 опции
#4 параметры нормализации
#5 qltq
#6 правила трансляции
#7 правила фильтра

###############
#макросы      #
###############

#локалка
local_if="rl2"
local_ip="192.168.0.1"
local_net="192.168.0.1/24"

#штырнет
byfly_if="ng0"


#################
#опции          #
#################
set loginterface none
set optimization normal
set block-policy drop
set skip on lo0
#######################
#опции нормализации   #
#######################
#scrub in all

#####################
#правила трансляции #
#####################

#нат  'inet' в инет
nat on $byfly_if from 192.168.5.1/25 to any -> ($byfly_if)

###################
#правила фильтра  #
###################

#блокировали весь входящий трафик
block in

# block the ssh bruteforce bastards
block drop in quick from <ssh-bruteforce>

pass out keep state

#pass multicast and IGMP traffic
pass quick on rl1 inet from any to 224.0.0.0/4 allow-opts keep state

#
pass in on  $local_if proto udp from any \
to any port 67:68 keep state

#локалка к серверу ssh,http,ftp,dc++,radio
#pfctl -t ssh-bruteforce -T show

pass in proto tcp from any \
to { $local_ip} port 22 keep state \
(max-src-conn-rate 3/30, overload <ssh-bruteforce> flush global)

#http
pass in proto tcp from any \
to { $local_ip } port=80 keep state

#dc++
pass in on { $local_if } proto tcp from {  $local_net } \
to { $local_ip } port=411 keep state

#radio
pass in on { $local_if } proto tcp from { $local_net } \
to { $local_ip } port=8000 keep state

#ftp
pass in on { $local_if } proto tcp from { $local_net } \
to { $local_ip } port {20,21} keep state

pass in on { $local_if } proto tcp from { $local_net } \
to { $local_ip } port 49152:65535 keep state

#vpn mpd 1723 and gre
pass in on { $local_if } proto tcp from { $local_net } \
to { $local_ip } port = 1723 keep state

pass proto gre from any to any
anchor "ng-int/*"

#трафик от сервера
pass out from { $local_ip } to any keep state
pass out from (byfly_if) to any keep state


_9 мая
проходил мимо

Re: pf FREEBSD

Непрочитанное сообщение _9 мая » 2010-03-29 19:50:56

вобще-то гостем темы содают только истиные ананимусы

Простой вариант NAT+PF

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

Re: pf FREEBSD

Непрочитанное сообщение iner » 2010-03-29 20:16:19

Благодарствую tyler56.
как раз с твоего конфига я и начал экспериментировать , как то ты мне уже кидал подобный конфиг , за что отдельное спасибо!!!
не хочу наглеть но если есть возможность кинуть есчо , кидайте буду благодарен.

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

Re: pf FREEBSD

Непрочитанное сообщение iner » 2010-04-03 16:06:08

Выручайте мозг на бекрень :cz2:
настраиваю сервак тестовый с pf , он подключен к серваку который раздает инет через squid (10.0.0.1:3128).
вот что пишет
tcpdump -nettti pflog0
00:00:00.999972 rule 0/0(match): block in on vr0: 10.0.0.1.445 > 192.168.1.50.56583: [|tcp]
00:00:00.000024 rule 0/0(match): block in on vr0: 10.0.0.1.139 > 192.168.1.50.56584: [|tcp]

00:00:00.604730 rule 0/0(match): block in on vr0: 10.0.0.1.3128 > 192.168.1.50.56598: [|tcp]
00:00:00.141607 rule 0/0(match): block in on vr0: 10.0.0.1.3128 > 192.168.1.50.56594: [|tcp]

00:00:00.263264 rule 0/0(match): block in on vr0: 10.0.0.1.3128 > 192.168.1.50.56607: tcp 28 [bad hdr length 0 - too short, < 20]
00:00:00.215737 rule 0/0(match): block in on vr0: 10.0.0.1.3128 > 192.168.1.50.56609: tcp 28 [bad hdr length 0 - too short, < 20]
это я подключил к тестовому серваку ноут .
подскажите какое правило прописать ?
инет пашит когда я вместо block all указываю block out all. а как же block in all

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

Re: pf FREEBSD

Непрочитанное сообщение iner » 2010-04-03 17:06:26

инет->ng0|server|dc0->vr0|server_test|ue0->ноутбук

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

Re: pf FREEBSD

Непрочитанное сообщение iner » 2010-04-04 5:51:17

инет->ng0|server|dc0(10.0.0.1)->vr0(10.0.0.5)|server_test|ue0(192.168.1.1)->ноутбук(192.168.1.50)
Поможайте кто может

Аватара пользователя
budmo
рядовой
Сообщения: 18
Зарегистрирован: 2010-04-04 11:48:38

Re: pf FREEBSD

Непрочитанное сообщение budmo » 2010-04-04 16:56:02

#Это пример конфига pf.conf (адреса изменены):
#--------------------------------------------------------------------------
#-MACROS
adm1 = "{ 10.10.10.5, 10.10.20.5, 10.10.11.5 }"
locn1 = "{ 192.168.10.0/24 }"
norm = "{ 10.10.20.0/24,10.10.21.0/24 }"
norb = "{ 10.10.10.0/24,10.10.11.0/24 }"
#--------------------------------------------------------------------------
#-TABLES
#--/usr/mbn/users/_spamd.sh
table <spamd> persist
#--------------------------------------------------------------------------
#-OPTIONS
set limit { states 20000, frags 20000, src-nodes 2000 }
set optimization normal
set block-policy drop
set state-policy if-bound
set skip on lo0
#--------------------------------------------------------------------------
#-NORMALIZATION (NOT TURN ON THIS: scrub { in, out } all)
#--------------------------------------------------------------------------
#-ALTQ (uses dummynet from ipfw /usr/local/etc/rc.firewall)
#--------------------------------------------------------------------------
#-NAT(SNAT)
nat on vlan20 inet tagged TAGSTT -> 210.10.10.11
#-RDR(DNAT)
rdr inet proto tcp from <spamd> to any port 25 -> 127.0.0.1 port 25
rdr inet proto tcp from any to 10.10.10.2/32 port 53 -> 10.10.10.3 port 53
#--------------------------------------------------------------------------
#-FILTER RULESET
#------------------------
#-RULES PART DROP:
#-Block all Netbios traffic:
block quick proto tcp from any to any port { 134><140, 445 }
block quick proto udp from any to any port { 134><140, 445, 8167 }
#------------------------
#-RULES PART ACCEPT:
#-counts:
pass in on vlan20 from 210.10.10.15 to !<spam> label "world_in"
pass out on vlan20 from !<spam> to 210.10.10.15 label "world_out"
#-Admin to Local Hardware access
pass quick from $adm1 to $locn1
#-For Our NET not NAT
pass quick from $norm to $norm
pass quick from $norm to $norb
#-Target traffics
pass quick on vlan20 tagged TAGSTT
#------------------------
#-TAGS:
pass in inet proto tcp from any to 210.10.10.10/32 tag TAGSTT
pass in route-to ( vlan20 210.10.10.12 ) tagged TAGSTT
#------------------------
#-Enable all other traffic
#-NOT TURN ON THIS: pass { in, out } all
#--------------------------------------------------------------------------

По скрипту проверяем, как отрабатывают счетчики прохождения пакетов в правилах:
#! /bin/sh
tmp=/tmp/pf.tmp
while [ 1 -eq 1 ] ; do
clear
echo " PF STATISTICS PRINT:"
echo ""
echo " 1. Rules list"
echo " 2. Rules list verbose"
echo " 3. Rules NAT verbose"
echo " 4. Label COUNTS "
echo " 5. Table show"
echo " q. Quit"
echo ""
echo -n " Choice and press ENTER: "; read k
echo ""
if [ "$k" = "1" ] ; then pfctl -sr > $tmp; mcview $tmp; fi
if [ "$k" = "2" ] ; then pfctl -sr -v > $tmp; mcview $tmp; fi
if [ "$k" = "3" ] ; then pfctl -sn -v > $tmp; mcview $tmp; fi
if [ "$k" = "4" ] ; then pfctl -sl -v > $tmp; mcview $tmp; fi
if [ "$k" = "5" ] ; then pfctl -t spam -T show -v > $tmp; mcview $tmp; fi
if [ "$k" = "q" ] ; then exit; fi
done

Скрипт построения таблицы спамеров для pf из файла _spamd.txt
#!/bin/sh
pfctl -t spamd -T flush
for a in `cat _spamd.txt`
do
pfctl -t spamd -T add $a
done

Файл _spamd.txt (адрес на строку):
210.10.10.21
210.10.10.25
210.10.10.37
210.10.10.55
210.10.10.220

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

Re: pf FREEBSD

Непрочитанное сообщение iner » 2010-04-06 16:22:06

НЕ пашит хоть ты тресни.

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

int_if="ue0"
int_ip="192.168.1.1"
int_net="192.168.1.0/24"

#inet
ext_if="vr0"

icmp_types = "echoreq"
allowed_icmp_types="{ echoreq, unreach }"

SERVERS_table="{192.168.1.5, 192.168.1.50}"
table <pf-allow-pc> {192.168.1.5, 192.168.1.50}
#################
#опции          #
#################
set loginterface vr0
set optimization normal
set block-policy return
set skip on lo0
scrub in all fragment reassemble
scrub out all random-id max-mss 1460
#######################
#опции нормализации   #
#######################
#scrub out all
#scrub in all

#####################
#правила трансляции #
#####################

nat on $ext_if proto { tcp udp icmp gre } from $int_if:network to any -> ($ext_if)
rdr pass log on $int_if proto {tcp,udp} from {$int_if:network} to any port {http,https,3128} -> 10.0.0.1 port 3128

###test###
#rdr pass on $ext_if inet proto tcp from any to 10.0.0.5 port 3128 -> 10.0.0.1
rdr inet proto tcp from any to any port 3128 -> 10.0.0.1 port 3128
rdr inet proto tcp from any to $int_if:network port 3128 -> 10.0.0.1 port 3128
#rdr inet proto tcp from any to 10.0.0.1 port 3128 -> $int_if:network port 3128
###test###
#antispoof quick for $ext_if
#block in log on $ext_if proto {tcp udp icmp} from any to any
#block in log all
#block out log all
#block log all
#pass in log all
pass log all
#pass in keep state
#pass out keep state
pass on lo0
pass on $int_if
pass out from $ext_if to any keep state

pass out quick on $ext_if inet proto tcp from any to 10.0.0.1 port 3128 keep state
#pass in quick on $int_if inet proto tcp from any to 10.0.0.1 port 3128 keep state

pass in on $ext_if from any to any
pass in quick inet proto icmp all icmp-type $icmp_types keep state

pass in quick proto tcp from any \
to { $int_ip, ($ext_if) } port 86 flags S/SA keep state \
(max-src-conn-rate 3/30, overload <ssh-bruteforce> flush global)

pass in on $int_if from $int_if:network to any
pass out on $int_if from any to $int_if:network

pass out on $ext_if from $ext_if to any
Вот так все робит но только я раскоментирую block log all нету нета .

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

scrub in all fragment reassemble
  [ Evaluations: 2781267   Packets: 1693786   Bytes: 654856160   States: 0     ]
  [ Inserted: uid 0 pid 436 ]
scrub out all random-id max-mss 1460 fragment reassemble
  [ Evaluations: 1087481   Packets: 1087481   Bytes: 349728691   States: 0     ]
  [ Inserted: uid 0 pid 436 ]
pass log all flags S/SA keep state
  [ Evaluations: 334749    Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
pass on lo0 all flags S/SA keep state
  [ Evaluations: 334749    Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
pass on ue0 all flags S/SA keep state
  [ Evaluations: 334749    Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
pass out inet from 10.0.0.5 to any flags S/SA keep state
  [ Evaluations: 334749    Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
pass out quick on vr0 inet proto tcp from any to 10.0.0.1 port = 3128 flags S/SA keep state
  [ Evaluations: 24642     Packets: 4858      Bytes: 2340089     States: 0     ]
  [ Inserted: uid 0 pid 436 ]
pass in on vr0 all flags S/SA keep state
  [ Evaluations: 334220    Packets: 60073     Bytes: 7590814     States: 189   ]
  [ Inserted: uid 0 pid 436 ]
pass in quick inet proto icmp all icmp-type echoreq keep state
  [ Evaluations: 310411    Packets: 71108     Bytes: 4265712     States: 4     ]
  [ Inserted: uid 0 pid 436 ]
pass in quick inet proto tcp from any to 192.168.1.1 port = mfcobol flags S/SA keep state (source-track rule, max-src-conn-rate 3/30, overload <ssh-bruteforce> flush global, src.track 30)
  [ Evaluations: 310102    Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
pass in quick proto tcp from any to (vr0) port = mfcobol flags S/SA keep state (source-track rule, max-src-conn-rate 3/30, overload <ssh-bruteforce> flush global, src.track 30)
  [ Evaluations: 290941    Packets: 1386      Bytes: 135872      States: 1     ]
  [ Inserted: uid 0 pid 436 ]
pass in on ue0 inet from 192.168.1.0/24 to any flags S/SA keep state
  [ Evaluations: 310101    Packets: 534405    Bytes: 355120281   States: 694   ]
  [ Inserted: uid 0 pid 436 ]
pass out on ue0 inet from any to 192.168.1.0/24 flags S/SA keep state
  [ Evaluations: 48558     Packets: 11078     Bytes: 1525605     States: 6     ]
  [ Inserted: uid 0 pid 436 ]
pass out on vr0 inet from 10.0.0.5 to any flags S/SA keep state
  [ Evaluations: 310377    Packets: 569780    Bytes: 357302318   States: 696   ]
  [ Inserted: uid 0 pid 436 ]
---------------------------------------
nat on vr0 inet proto tcp from 192.168.1.0/24 to any -> (vr0) round-robin
  [ Evaluations: 25187     Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
nat on vr0 inet proto udp from 192.168.1.0/24 to any -> (vr0) round-robin
  [ Evaluations: 12219     Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
nat on vr0 inet proto icmp from 192.168.1.0/24 to any -> (vr0) round-robin
  [ Evaluations: 3         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
nat on vr0 inet proto gre from 192.168.1.0/24 to any -> (vr0) round-robin
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
rdr pass log on ue0 inet proto tcp from 192.168.1.0/24 to any port = http -> 10.0.0.1 port 3128
  [ Evaluations: 311832    Packets: 3115      Bytes: 1508775     States: 0     ]
  [ Inserted: uid 0 pid 436 ]
rdr pass log on ue0 inet proto tcp from 192.168.1.0/24 to any port = https -> 10.0.0.1 port 3128
  [ Evaluations: 12516     Packets: 503       Bytes: 35274       States: 0     ]
  [ Inserted: uid 0 pid 436 ]
rdr pass log on ue0 inet proto tcp from 192.168.1.0/24 to any port = 3128 -> 10.0.0.1 port 3128
  [ Evaluations: 12462     Packets: 1241      Bytes: 796088      States: 0     ]
  [ Inserted: uid 0 pid 436 ]
rdr pass log on ue0 inet proto udp from 192.168.1.0/24 to any port = http -> 10.0.0.1 port 3128
  [ Evaluations: 24687     Packets: 4         Bytes: 302         States: 0     ]
  [ Inserted: uid 0 pid 436 ]
rdr pass log on ue0 inet proto udp from 192.168.1.0/24 to any port = https -> 10.0.0.1 port 3128
  [ Evaluations: 12248     Packets: 6         Bytes: 561         States: 0     ]
  [ Inserted: uid 0 pid 436 ]
rdr pass log on ue0 inet proto udp from 192.168.1.0/24 to any port = 3128 -> 10.0.0.1 port 3128
  [ Evaluations: 12245     Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
rdr inet proto tcp from any to 192.168.1.0/24 port = 3128 -> 10.0.0.1 port 3128
  [ Evaluations: 299357    Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 436 ]
Где туплю подскажите???

Аватара пользователя
budmo
рядовой
Сообщения: 18
Зарегистрирован: 2010-04-04 11:48:38

Re: pf FREEBSD

Непрочитанное сообщение budmo » 2010-04-06 22:00:26

Зачем раскометировать "pass log all" ? Если надо логировать - надо ставить "log" в ту строчкау, которую надо логировать. А так получается комманда pass all последняя, а все остальные ниже не учитывается. (как только пакет нашел свое правило, он на нем выходит(или убивается) и дальше не обрабатывается).