Страница 1 из 1

SQUID+PF

Добавлено: 2010-02-04 11:07:36
gfer
долго бьюсь не могу никак завернуть в PF определенных клиентов на прокси.
в squid.conf стоит http_port 3128 transparent

pf.conf

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

ext_if="em0"
int_if="em1"
local_if="lo0"
trusted_lan="172.16.10.0/24"
alpha="172.16.10.101"
vserver="172.16.10.100"
noroute="{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
tcp_services="{ 22, 21, 80, 443 }"
icmp_types="echoreq"

table <badhosts> persist
table <users> { 172.16.10.0/24 !172.16.10.100, !172.16.10.101, !172.16.10.102, !172.16.10.103 }
table <clients> persist file "/etc/clients"

set block-policy return
set loginterface $ext_if
set skip on $int_if
set skip on lo

scrub in all fragment reassemble

rdr on $int_if proto tcp from <clients> to any port www -> 127.0.0.1 port 3128
nat on $ext_if from $trusted_lan to any -> ($ext_if)

block all
block inet6 all
block in quick from any os NMAP
block drop in quick from <badhosts>
block in quick on $ext_if inet from $noroute to any
block out quick on $ext_if inet from any to $noroute
block drop in quick on $ext_if proto tcp from any port { 135 136 137 138 139 445 1433 } to any
block drop in quick on $ext_if proto udp from any port { 135 136 137 138 139 445 1434 } to any

### Block bad tcp flags from malicious people and nmap scans

block in log quick on $ext_if proto tcp from any to any flags /S
block in log quick on $ext_if proto tcp from any to any flags /SFRA
block in log quick on $ext_if proto tcp from any to any flags /SFRAU
block in log quick on $ext_if proto tcp from any to any flags A/A
block in log quick on $ext_if proto tcp from any to any flags F/SFRA
block in log quick on $ext_if proto tcp from any to any flags U/SFRAU
block in log quick on $ext_if proto tcp from any to any flags SF/SF
block in log quick on $ext_if proto tcp from any to any flags SF/SFRA
block in log quick on $ext_if proto tcp from any to any flags SR/SR
block in log quick on $ext_if proto tcp from any to any flags FUP/FUP
block in log quick on $ext_if proto tcp from any to any flags FUP/SFRAUPEW
block in log quick on $ext_if proto tcp from any to any flags SFRAU/SFRAU
block in log quick on $ext_if proto tcp from any to any flags SFRAUP/SFRAUP

antispoof quick for $ext_if inet

pass in on $ext_if inet proto tcp from any to $ext_if flags S/SA keep state
pass out on $ext_if from $ext_if to any keep state
pass out on $ext_if from $trusted_lan to any keep state
pass in on $int_if proto tcp from $trusted_lan to $int_if port ssh keep state \
   (max-src-conn 100, max-src-conn-rate 5/300, overload <badhosts> flush)
pass in on $ext_if proto tcp from any to $ext_if port ssh keep state \
   (max-src-conn 100, max-src-conn-rate 5/300, overload <badhosts> flush)
pass log inet proto icmp all icmp-type $icmp_types keep state

управляю всем этим делом через SAMS ну и там в учете трафика одни нули бьюсь давно хоть убейте!

Re: SQUID+PF

Добавлено: 2010-02-04 15:10:55
reLax
Как это вы управляете SAMS'ом pf ? )))
Если в pf у вас указан редирект на lo0, соответственно должно иметь место правило pass из $int_if:network на 127.0.0.1:3128 (образно говоря, там свои значения подставляйте)

Re: SQUID+PF

Добавлено: 2010-02-04 15:14:26
gfer
не PF ом а SQUIDом

Re: SQUID+PF

Добавлено: 2010-02-04 15:19:00
gfer
конфиг то хоть правильный кроме pass а то может че не так сделал

Re: SQUID+PF

Добавлено: 2010-02-04 15:44:53
reLax
Да знаю чем эта поделка SAMS управляет :) По сути своей меняет в squid.conf правила, что легко делается руками.
По поводу конфига pf не вникал. Но первое что посоветую - это во всех правилах поставить log. А потом уже очень легко будет определить если что не так например командой

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

# tcpdump -netttvvvi pflog0 | grep block
И прямо в реальном времени будешь видеть в каком месте у тебя pass срабатывает, а в какой block

Re: SQUID+PF

Добавлено: 2010-02-04 15:49:25
gfer
за совет спасибо. Если точнее я имел ввиду не весь конфиг а set skip int_if может надо только set skip lo0

Re: SQUID+PF

Добавлено: 2010-02-04 17:51:33
reLax
Ну вообще-то с позиции безопасности set skip on $int_if я бы не делал. Со сквидом set skip on lo0 надо обязательно, у него там внутренний свой DNS крутится на lo0. Короче делай пасс на 127.0.0.1, что-то типа pass in log on $int_if inet proto tcp from <clients> to 127.0.0.1 port 3128, а если не пойдет - то смотри уже tcpdump'ом. Да и на будущее пригодится ))

Re: SQUID+PF

Добавлено: 2010-02-05 9:26:49
gfer
спасибо!

Re: SQUID+PF

Добавлено: 2010-02-06 22:42:55
pimlab
тоже не вникал особо в правила и можно ещё так

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

rdr pass on $int_if proto tcp from <clients> to any port www -> 127.0.0.1 port 3128