The debian-private mailing list leak, part 1. Volunteers have complained about Blackmail. Lynchings. Character assassination. Defamation. Cyberbullying. Volunteers who gave many years of their lives are picked out at random for cruel social experiments. The former DPL's girlfriend Molly de Blanc is given volunteers to experiment on for her crazy talks. These volunteers never consented to be used like lab rats. We don't either. debian-private can no longer be a safe space for the cabal. Let these monsters have nowhere to hide. Volunteers are not disposable. We stand with the victims.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Denial-of-service attack against INETD. Redhat 4.X and others...



On Wed, Aug 27, 1997 at 09:28:53AM -0400, David Holland wrote:
>  > I have implemented changes to the inetd program that address this
>  > problem, as follows:  The program still limits the number of services
>  > that will be launched within a 60 second window, but it does so by
>  > refusing to "accept()" new connections too rapidly.  The listening
>  > socket is never closed, and users never get a "Connection refused"
>  > error.  They just see a slower response.  
> 
> Um, have you actually tried this? If you make these changes, and then
> connect-bomb a service, you'll still get ECONNREFUSED when the
> listen() queue fills.

I don't think there's a reasonable cure against inetd DoS attacks
apart from firewalling all those services that are not supposed to be
accessible from the world at large.

>  > In the course of making this change, I discovered and fixed another 
>  > small problem with inetd.  It used to be that inetd would sleep
>  > (ignoring all connection attempts) for one second after receiving
>  > any signal.  
> 
> I cannot find either this problem or your supposed fix for it.

The original problem I think is in inetd.c around line 425 (netkit-base-0.10):

            if ((n = select(maxsock + 1, &readable, (fd_set *)0,
                (fd_set *)0, (struct timeval *)0)) <= 0) {
                    if (n < 0 && errno != EINTR)
                        syslog(LOG_WARNING, "select: %m\n");
                    sleep(1);
                    continue;
            }

The sleep() should probably be executed only if (n >= 0 || errno != EINTR)

Cheers
Olaf
-- 
Olaf Kirch         |  --- o --- Nous sommes du soleil we love when we play
okir@monad.swb.de  |    / | \   sol.dhoop.naytheet.ah kin.ir.samse.qurax
okir@lst.de        +-------------------- Why Not?! -----------------------


--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-private-request@lists.debian.org . 
Trouble?  e-mail to templin@bucknell.edu .