Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Jul 2008 21:28:05 +0300
From:      "Ivan Petrushev" <ivanatora@gmail.com>
To:        freebsd-pf@freebsd.org
Subject:   Why this rule doesn't score a match?
Message-ID:  <d39744a20807231128j6641996i95ee8fec03053b6e@mail.gmail.com>
In-Reply-To: <d39744a20807231127u11df822rc2022a70b1a1af3e@mail.gmail.com>
References:  <d39744a20807231025w42fc4a99ha1e99be5fd5c76b0@mail.gmail.com> <48876DAD.9080100@optiksecurite.com> <d39744a20807231127u11df822rc2022a70b1a1af3e@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hmmm, yes I'm on FreeBSD 7
I tried these pass rules before - nothing gets logged.
I thought traffic is going both TO these ports and FROM these ports.
Let's take for example a simple HTTP connection. The browser
communicates to the remote server trough remote port 80 and says 'GET
/index.html', then closes the connection. The HTTP server on the
remote side opens a connection to the local machine (on some of our
local port range)... but what is the port number on his side? I think
that it is again 80.
About pass in/pass out - I think that in/out keyword can be dropped?
PF can do without that, right?

These are my current filter rules, still nothing gets logged:
##############################
pass log on $if proto tcp from any port $tcp_services
pass log on $if proto udp from any port $udp_services
pass log on $if proto tcp from any to $ext_ip port $tcp_services
pass log on $if proto udp from any to $ext_ip port $udp_services
#############################

Regards, Ivan.

On Wed, Jul 23, 2008 at 8:43 PM, FreeBSD <freebsd@optiksecurite.com> wrote:
> Ivan Petrushev a =E9crit :
>>
>> Hello,
>> I'm trying very simple 'block all, allow a few' firewall, but
>> something doesn't seem right.
>> As far as I remember 'the right matched rule' is taken and executed -
>> this doesn't seem working here.
>> Here is my firewall:
>> #####################
>> #macros
>> if =3D "re0"
>> ext_ip =3D "10.10.10.21"
>> tcp_services =3D "{http, https, ssh, domain, 5190, 5222, ftp, 1025}"
>> udp_services =3D "{domain, 5190, 5222, ftp}"
>>
>> #filter
>> block in log on $if
>> pass on $if proto tcp from any port $tcp_services
>> pass on $if proto udp from any port $udp_services
>> ####################
>> The point here is that if a packet for some of the listed service is
>> matching against the rules, it will match the block rule, but after
>> that will match some of the last two and get passed. Instead it gets
>> blocked and I see it into the log:
>> tcpdump -n -i pflog0
>> 19:54:57.657194 IP 64.12.161.185.5190 > 10.10.10.21.54111:  tcp 24
>> [bad hdr length 0 - too short, < 20]
>> (there are many of these, including on the other ports)
>>
>> Now, there is something different. I tried removing the block rule,
>> and added logging for the 'pass' rules. In that case a packet
>> traveling down the rules should match only on the 'pass' rules and get
>> logged.
>> ####################
>> #filter
>> #block in log on $if
>> pass log on $if proto tcp from any port $tcp_services
>> pass log on $if proto udp from any port $udp_services
>> ####################
>>
>> Well, it doesn't get logged. The only thing I see into the log is:
>> 20:12:53.185368 IP 10.10.10.1.53 > 10.10.10.21.60918: [|domain]
>> And more DNS requests. There is nothing from 5190 (ICQ) or 5222 (Gtalk) =
or
>> 80...
>>
>> What could be wrong here - it is fairly simple ruleset?
>>
>
> You should try "pass in on $if proto tcp from any to $ext_ip port
> $tcp_services flags S/SA keep state" and "pass in on $if proto udp from a=
ny
> to $ext_ip port $udp_services keep state"
>
> Your rule expect the traffic to came FROM $tcp_services but it is goint T=
O
> those ports.
>
> You can omit the "flags S/SA keep state" and the "keep state" if you're
> using FreeBSD 7, it is added automatically.
>
> I would also suggest you to use "block all log" instead of "block in log"
> and specifiy rules for your outgoing traffic too.
>
> Good luck
>
> Martin
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d39744a20807231128j6641996i95ee8fec03053b6e>