Страница 1 из 1
pf FREEBSD
Добавлено: 2010-03-28 20:45:30
iner
Добрый!!!
Помогите с pf , пытаюсь настроить чтоб все было запрещено кроме машинок в сети, то есть ip машинки указать и только у нее все работает , а другие шли лесом.
Но только включаю block all все блочит, хочется защитить сервак как снаружи так и изнутри чтоб комар и носа не подточил.
киньте pf.conf пожалуйста.
Re: pf FREEBSD
Добавлено: 2010-03-28 21:14:38
manefesto
Re: pf FREEBSD
Добавлено: 2010-03-28 21:25:22
iner
читаю и подставляю правила уже неделю, если не сложно кинуть рабочий конфиг хорошо защищенного сервера, буду очень признателен.
Re: pf FREEBSD
Добавлено: 2010-03-28 23:23:36
Shuba
Может и мне кто-нибудь сделает одну большую кнопку "чтобы всё работало"??? Помогите, люди добрые!!! Мне так лянива читать мануалы!!!

Re: pf FREEBSD
Добавлено: 2010-03-29 8:56:57
n00b
рабочие конфиги лежат в /usr/share/examples/pf/
Re: pf FREEBSD
Добавлено: 2010-03-29 9:31:34
---nebo---
Лично мне, вот это очень нравится
Код: Выделить всё
http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html
Re: pf FREEBSD
Добавлено: 2010-03-29 10:59:49
iner
Всем огромное спасибо!!!
рассчитывал увидеть во очее рабочий конфиг от гуру и сравнить со своими косяками.
Обидно досадно да ладно не буду отвлекать.
Ушел курить маны дальше!!!
Re: pf FREEBSD
Добавлено: 2010-03-29 18:19:34
tyler56
Убрал все лишнее. Получилось роутер с локалкой и 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
Re: pf FREEBSD
Добавлено: 2010-03-29 19:50:56
_9 мая
вобще-то гостем темы содают только истиные ананимусы
Простой вариант NAT+PF
Re: pf FREEBSD
Добавлено: 2010-03-29 20:16:19
iner
Благодарствую tyler56.
как раз с твоего конфига я и начал экспериментировать , как то ты мне уже кидал подобный конфиг , за что отдельное спасибо!!!
не хочу наглеть но если есть возможность кинуть есчо , кидайте буду благодарен.
Re: pf FREEBSD
Добавлено: 2010-04-03 16:06:08
iner
Выручайте мозг на бекрень
настраиваю сервак тестовый с 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
Re: pf FREEBSD
Добавлено: 2010-04-03 17:06:26
iner
инет->ng0|server|dc0->vr0|server_test|ue0->ноутбук
Re: pf FREEBSD
Добавлено: 2010-04-04 5:51:17
iner
инет->ng0|server|dc0(10.0.0.1)->vr0(10.0.0.5)|server_test|ue0(192.168.1.1)->ноутбук(192.168.1.50)
Поможайте кто может
Re: pf FREEBSD
Добавлено: 2010-04-04 16:56:02
budmo
#Это пример конфига 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
Re: pf FREEBSD
Добавлено: 2010-04-06 16:22:06
iner
НЕ пашит хоть ты тресни.
Код: Выделить всё
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 ]
Где туплю подскажите???
Re: pf FREEBSD
Добавлено: 2010-04-06 22:00:26
budmo
Зачем раскометировать "pass log all" ? Если надо логировать - надо ставить "log" в ту строчкау, которую надо логировать. А так получается комманда pass all последняя, а все остальные ниже не учитывается. (как только пакет нашел свое правило, он на нем выходит(или убивается) и дальше не обрабатывается).