[4311] in North American Network Operators' Group

home help back first fref pref prev next nref lref last post

Re: SYN Resisting

daemon@ATHENA.MIT.EDU (Chris Layton)
Wed Sep 11 18:00:20 1996

Date: Wed, 11 Sep 1996 17:54:02 -0400 (EDT)
From: Chris Layton <cll@cais.cais.com>
To: Avi Freedman <freedman@netaxs.com>
cc: nanog@merit.edu, alexis@panix.com
In-Reply-To: <199609111808.OAA15697@netaxs.com>



On Wed, 11 Sep 1996, Avi Freedman wrote:

> 
> In order to build a SYN-resistant BSD kernel, you need to modify one
> file in src/sys/os, uipc_socket2.c, and you also need to modify 
> src/sys/netinet/tcp_timer.h and you have to rebuild tcp_usrreq.c and
> tcp_input.c in the netinet directory.

For those of you running Solaris 2.5, this can be done using ndd. The man
page and the "ndd /dev/tcp \?" command will get you started. You will have
to tweak the following variables "tcp_conn_req_max" and
"tcp_conn_grace_period". This will have roughly the same effects as Avi's
patches. 

> 
> >From the bottom level up, change TCPTV_KEEP_INIT from 75*PR_SLOWHZ
> to 7*PR_SLOWHZ (or whatever # you want).  This timeout (the 75) is
> the number of seconds that the kernel will keep un-established TCP
> PCB/sockets around for...  When the SYN is received, it is acknowledged
> and the PCB && socket are set up for the embryonic session; the goal
> is to rip those things out of any queues they're in more aggressively.

On web servers, remote users routinely take longer than this to set up
connections. Anything less than 15-20 seconds and you will start loosing
hits from those ISP's that Metcalfe seems to frequent.  This isn't a
criticism of Avi's patch. Its just something to be aware of.

> 
> On a Sparc 1+ w/ 4.1.4, I could sustain a 200-400 SYN-packet/sec attack
> and still remain functional (and quick for a 1+), but the machine didn't
> normally run web servers...  Even when I nailed it with 1000 SYNs/sec,
> the machine continued functioning but I couldn't connect to the socket
> being nailed.  A second after stopping the heavier attack, I could.
> 

I have no idea what this will do for performance on Solaris 2.5 machines.

-chris

PS Does anyone have a good source of info on the Solaris implementation
for those of us not lucky enough to have source licenses?


home help back first fref pref prev next nref lref last post