Date: Fri, 10 Jul 1998 04:45:49 -0400 From: Mark Mayo <mark@vmunix.com> To: Archie Cobbs <archie@whistle.com>, Garance A Drosihn <drosih@rpi.edu> Cc: freebsd-current@FreeBSD.ORG Subject: Re: Rate limit for system calls to prevent denial of service attacks? Message-ID: <19980710044549.A26780@vmunix.com> In-Reply-To: <199807091815.LAA09514@bubba.whistle.com>; from Archie Cobbs on Thu, Jul 09, 1998 at 11:15:28AM -0700 References: <v0401172cb1c9b215dc36@[128.113.24.47]> <199807091815.LAA09514@bubba.whistle.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jul 09, 1998 at 11:15:28AM -0700, Archie Cobbs wrote:
> Garance A Drosihn writes:
> > >>The following small program:
> > >>
> > >> main(){while(1) fork();}
> > >>
> > >> is a very effective denial of service attack against FreeBSD-2.2.6,
> > >> despite reasonable defaults in login.conf. The problem is *not* the
> > >> number of processes, but the system call rate. It's actually kind of
> > >> amazing to follow this with vmstat, and see that the box is suddenly
> > >> doing 395000 system calls per second :-) (this is a P-166).
> >
> > The subject of this thread asks about adding a rate-limit for
> > system calls. I don't think that's a good idea, but I would like
> > to see some kind of throttling of calls to fork() in particular.
>
> Why would 100 processes doing
>
> main(){while(1) getpid();}
>
> be accounted for any differently than 100 processes doing
>
> main(){while(1) /* infinite loop in user mode */;}
Well, in my short test, while doing while(1) fork(); my mpg123
player basically stopped - a few short cracks and squawks here
and there. Login.conf was limiting me to 64 processes, and
although I could still type, that's about it. :-)
Syscall rate approached 700,000/sec for a short time, then fell
back to about 340,000/sec.
while(1) getpid(); basically had no effect on my mp3 player, and
I was able to run netscape, etc. Still about 380,000 syscalls per
second, but context switches per second were about 300, as opposed
to 40/sec during the fork() loop.
So forking definately seems to be worse in terms of denial of
service type attacks..
I'm not qualified to comment on why.. :-)
I would assume scheduling that rapidly would be a source of
problems.
System was 3.0-CURRENT/June-10 on a PPro 200.
-Mark
>
> ? Or am I misunderstanding something.
>
> -Archie
>
> ___________________________________________________________________________
> Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com
--
------------------------------------------------------------------------
Mark Mayo mark@vmunix.com
RingZero Comp. http://www.vmunix.com/mark
------------------------------------------------------------------------
"The problem is how do you build tools that understand your programs
at a deeper semantic level." - James Gosling
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980710044549.A26780>
