Re: Solaris OOW issue?

Darren Reed <[email protected]>
Newsgroups gmane.comp.security.firewalls.ipfilter
Message-ID <25834_1242199448_4A0A7598_25834_1211_1_4A0A74E9.4070401@reed.wattle.id.au>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
Vincent Fox wrote:
| Darren Reed wrote:
|> -----BEGIN PGP SIGNED MESSAGE-----
|> Hash: SHA1
|>
|> This problem isn't about 'out of window', it is that the check to
|> allow a new session is not working right - I think.
|>
|> Unfortunately there's only so much I can do with what's shipped
|> with Solaris 10 (can't get you to recompile with printf's.)
|>
|> btw, please add this to sourceforge as a bug:
|> https://sourceforge.net/tracker/?func=add&group_id=169098&atid=849053
|>
| I added a bug entry, let me know if it needs more details.
|
| I have compiled 4.1.32rc5 and can recompile install and
| test with that if you tell me what you need.  We have 5
| identical Solaris 10 systems running in a pool I can pull
| one of them out for testing.

I would like to see you at least try the attached patch.

There is code in ipfilter that recognises a SYN packet arriving for
a connection that is "closing" but it may be that it was still interfering
with things. The code that looks for this is in fr_tcpstate():

~        /*
~         * If a SYN packet is received for a connection that is on the 
way out
~         * but hasn't yet departed then advance this session along the way.
~         */
~        if ((tcp->th_flags & TH_OPENING) == TH_SYN) {
~                if ((is->is_state[0] > IPF_TCPS_ESTABLISHED) &&
~                    (is->is_state[1] > IPF_TCPS_ESTABLISHED)) {
~                        is->is_state[!source] = IPF_TCPS_CLOSED;
~                        fr_movequeue(&is->is_sti, is->is_sti.tqe_ifq,
~                                     &ips_deletetq);
~                        MUTEX_EXIT(&is->is_lock);
~                        return 0;
~                }
~        }

so we may need to add in some debugging there...

Darren

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
 
iEYEARECAAYFAkoKdOkACgkQP7JIXtvLbFX7VQCeJ/8lHDoDSc8ovm3R+8KQ+SqE
I34AoJxvTMkYt43wncXjcyCr9fIhSbli
=rXEg
-----END PGP SIGNATURE-----
ipsd.patch (text/plain, 1.1 KB)
Index: ip_state.c
===================================================================
RCS file: /devel/CVS/IP-Filter/ip_state.c,v
retrieving revision 2.186.2.93
diff -c -r2.186.2.93 ip_state.c
*** ip_state.c	14 Feb 2009 01:53:05 -0000	2.186.2.93
--- ip_state.c	12 May 2009 21:19:10 -0000
***************
*** 2056,2061 ****
--- 2062,2074 ----
  	u_32_t cflx;
  	void *ifp;
  
+ 	/*
+ 	 * If a connection is about to be deleted, no packets
+ 	 * are allowed to match it.
+ 	 */
+ 	if (is->is_sti.tqe_ifq == &ips_deletetq)
+ 		return NULL;
+ 
  	rev = IP6_NEQ(&is->is_dst, dst);
  	ifp = fin->fin_ifp;
  	out = fin->fin_out;
***************
*** 2649,2661 ****
  		hvm = DOUBLE_HASH(hv);
  		for (isp = &ips_table[hvm]; ((is = *isp) != NULL); ) {
  			isp = &is->is_hnext;
- 			/*
- 			 * If a connection is about to be deleted, no packets
- 			 * are allowed to match it.
- 			 */
- 			if (is->is_sti.tqe_ifq == &ips_deletetq)
- 				continue;
- 
  			if ((is->is_p != pr) || (is->is_v != v))
  				continue;
  			is = fr_matchsrcdst(fin, is, &src, &dst, NULL, FI_CMP);
--- 2662,2667 ----
ipsd.patch.sig (application/octet-stream, 72 B) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.