Date: Mon, 3 Jan 2005 23:21:55 -0600 (CST) From: Mike Silbersack <silby@silby.com> To: Don Lewis <truckman@FreeBSD.org> Cc: net@FreeBSD.org Subject: Re: Fixing "Slipping in the window" before 4.11-release Message-ID: <20050103230259.G68869@odysseus.silby.com> In-Reply-To: <200501031855.j03Itnmh002076@gw.catspoiler.org> References: <200501031855.j03Itnmh002076@gw.catspoiler.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 3 Jan 2005, Don Lewis wrote: >> For the life of me, I can't figure out why SYN packets (other than delayed >> retransmissions of the original SYN) would ever show up once a connection >> is in the ESTABLISHED state. > > It can happen if one side of the connection crashes and tries to > reconnect using the same source port. The BGP case, which is the case > where attacks are of most concern, likes to connect from port 179 to > port 179. Argh. I was assuming that the client would be using ephemeral ports, and therefore pick a different one after the crashed. Apps like BGP throw a wrench into this, I guess. :) I just went and took a look at the REVISED version of the draft for this issue: http://www.ietf.org/internet-drafts/draft-ietf-tcpm-tcpsecure-02.txt And it turns out that I should have looked at it earlier; this version actually provides useful advice on the SYN case. Specifically, it suggests that in response to all SYNs, an ACK for the left edge of the window be sent; no SYNs are allowed to reset the connection. Sounds like that's the way to go, with the addition of rate limiting those ACKs. The TCP state machine is pretty complex, so it seems like we'd better use something which does not alter the state in any way to send out the ACKs here. Does this look like it'd do the trick? (Stolen from the keepalive code): t_template = tcpip_maketemplate(inp); if (t_template) { tcp_respond(tp, t_template->tt_ipgen, &t_template->tt_t, (struct mbuf *)NULL, tp->rcv_nxt, tp->snd_una - 1, 0); (void) m_free(dtom(t_template)); } Mike "Silby" Silbersack
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050103230259.G68869>