Hi all,

I am a ipfilter user, today when i reread the document "ip filter based
firewalls howto" i find  something  puzzled me. In this document,the
author wrote:
----snip----
"State is pretty handy, but it��s also a bit tricky. You can shoot
yourself in the foot in strange and   mysterious ways. Consider the
following ruleset:

pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 23
pass out quick on tun0 proto tcp from any to any keep state
block in quick all
block out quick all

At first glance, this seems to be a good setup. We allow incoming
sessions to port 23, and outgoing   sessions anywhere. Naturally packets
going to port 23 will have reply packets, but the ruleset is setup   in
such a way that the pass out rule will generate a state entry and
everything will work perfectly. At   least, you��d think so.
The unfortunate truth is that after 60 seconds of idle time the state
entry will be closed (as opposed to
the normal 5 days). This is because the state tracker never saw the
original SYN packet destined to port   23,it only saw the SYN ACK. IPF
is very good about following TCP sessions from start to finish, but it��
s   not very good about coming into the middle of a connection, so
rewrite the rule to look like this:

pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 23 keep
state
pass out quick on tun0 proto tcp from any to any keep state
block in quick all
block out quick all"
----snip----

Ok, I really think the concept is quite good. So i gonna have a test on
my solaris 2.7 box with ipfilter 3.4.30 installed, my ipf.conf  is like
this

block return-icmp (3) in log quick proto tcp from any to any port = 80
block in log quick proto tcp/udp from a.b.c.d to any  port = 22
pass in quick on hme0 proto tcp from any to x.x.x.x/32 port = 22
pass out quick on hme0 proto tcp from any to any keep state
block in quick all
block out quick all

when i ssh x.x.x.x from a client y.y.y.y using this config, i was
astonished to notice that the  connection is in "4/4" manner! and now
the idle time is 5 days.

below is the output of "ipftables -t"

                               nms - IP Filter: v3.4.30 - state top
10:37:54

Src = 0.0.0.0  Dest = 0.0.0.0  Proto = any  Sorted by = # bytes

Source IP             Destination IP         ST   PR   #pkts    #bytes
ttl

x.x.x.x,22              y.y.y.y,32931 4/4  tcp      32      5324
119:58:31

and below is a part of "ipmon -a" command output

07/12/2002 11:32:00.939096 hme0 @0:3 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 60 -S IN
07/12/2002 11:32:00.939282 hme0 @0:1 p x.x.x.x,22 -> y.y.y.y,32931 PR
tcp len 20 64 -AS K-S OUT
07/12/2002 11:32:00.939495 hme0 @0:3 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 52 -A IN
07/12/2002 11:32:00.954671 hme0 @0:1 p x.x.x.x,22 -> y.y.y.y,32931 PR
tcp len 20 75 -AP K-S OUT
07/12/2002 11:32:00.954864 hme0 @0:3 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 52 -A IN
07/12/2002 11:32:00.954991 hme0 @0:3 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 74 -AP IN
07/12/2002 11:32:00.955033 hme0 @0:1 p x.x.x.x,22 -> y.y.y.y,32931 PR
tcp len 20 52 -A K-S OUT
07/12/2002 11:32:00.955477 hme0 @0:1 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 588 -AP K-S IN
07/12/2002 11:32:00.960599 hme0 @0:1 p x.x.x.x,22 -> y.y.y.y,32931 PR
tcp len 20 588 -AP K-S OUT
07/12/2002 11:32:00.998472 hme0 @0:1 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 52 -A K-S IN
07/12/2002 11:32:01.053009 hme0 @0:1 p x.x.x.x,22 -> y.y.y.y,32931 PR
tcp len 20 52 -A K-S OUT
07/12/2002 11:32:01.053213 hme0 @0:1 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 76 -AP K-S IN
07/12/2002 11:32:00.939274 STATE:NEW x.x.x.x,22 -> y.y.y.y,32931 PR tcp
07/12/2002 11:32:01.060155 hme0 @0:1 p x.x.x.x,22 -> y.y.y.y,32931 PR
tcp len 20 332 -AP K-S OUT
07/12/2002 11:32:01.060386 hme0 @0:1 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 52 -A K-S IN
07/12/2002 11:32:01.077661 hme0 @0:1 p y.y.y.y,32931 -> x.x.x.x,22 PR
tcp len 20 324 -AP K-S IN
07/12/2002 11:32:01.193016 hme0 @0:1 p x.x.x.x,22 -> y.y.y.y,32931 PR
tcp len 20 52 -A K-S OUT
07/12/2002 11:32:01.272056 hme0 @0:1 p x.x.x.x,22 -> y.y.y.y,32931 PR
tcp len 20 644 -AP K-S OUT

I noticed the state on the seventh packet has been "established" and
from this packet,all the communication are using output policy @0:1
which keep state the established connection without checking the input
policy anymore.

I don't know what's wrong, so anybody can tell me the reason?

TIA!

-- 
��Ҫ���õ����� 
 
 
 
Yiming Gong 
Senior System Administrator 
China Netcom
[EMAIL PROTECTED] 
http://security.zz.ha.cn 
0086-371-7934907

Reply via email to