All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Gale <mgale@utilitran.com>
To: netfilter@lists.netfilter.org
Subject: Re: Protecting against DoS
Date: Tue, 9 Dec 2003 09:02:21 -0700	[thread overview]
Message-ID: <20031209090221.413b7286.mgale@utilitran.com> (raw)
In-Reply-To: <20031209154333.GB17221@edu.joroinen.fi>


Hello,

	First make sure you are using tcpsyn_cookies:

echo 1 > /proc/sys/net/ipv4/tcp_syncookies -- if you have not compiled it into the kernel. This will help prevent DOS by assigning each incoming syn packet a cookie instead of a actually connection state. A connection state will be created once the three way hand shake is completed.

Second -- you should be dropping all packets on all interfaces and then only allow connections you have to pass.

Michael.


On Tue, 9 Dec 2003 17:43:34 +0200
Pasi Kärkkäinen <pasik@iki.fi> wrote:

> Hello!
> 
> I was thinking about the correct or best way to protect my Linux/netfilter 
> box againts DoS-attacks. 
> 
> Some time ago one of the windows users in my LAN managed to get nimda (or
> some other) worm to his computer. The worm started scanning the internet
> for other vulnerable boxes, opening big amount of tcp-connections all the
> time without closing them. 
> 
> So after a while I hit the limit of max. open connections
> (/proc/sys/net/ipv4/ip_conntrack_max), and the firewall-box is basicly
> DoS:ed. With the default settings, open tcp-connections stay in the state
> table for 5 days, so it takes a looong time to get things running again if
> you don't reload the modules or reboot the box..
> 
> Now I have a couple of questions to be sure about the facts while setting 
> up the correct limits to prevent this kind of DoS-attacks..
> 
> 
> 1) Is the correct formula to calculate the maximum number of connections
> (for /proc/sys/net/ipv4/ip_conntrack_max) free_memory_in_bytes / 350 ? This
> is what I got from the Netfilter FAQ: "You can easily increase the number of
> maximal tracked connections, but be aware that each tracked connection eats
> about 350 bytes of non-swappable kernel memory!"
> 
> 2) Netfilter FAQ: "To optimize performance, please also raise the number of
> hash buckets by using the hashsize module loadtime parameter of the
> ip_conntrack.o module." What's the correct formula to calculate good value
> for hashsize?
> 
> 3) Is there some problem other than the idle tcp-connections dying sooner if I
> lower the the value of TCP_CONNTRACK_ESTABLISHED in
> /usr/src/linux/net/ipv4/netfilter/ip_conntrack_proto_tcp.c from 5 days to 1
> day or even less (to get the possible non-closed tcp-connections out from the state
> table sooner) ?
> 
> 4) What's the correct place to set up limits for new connections (to prevent
> the state table being filled up in DoS) ? Is it better to do in the 
> mangle-table/PREROUTING-chain something like "-m state --state NEW -m limit 
> --limit 5/sec -j RETURN && -j DROP" than later in the filter-table/FORWARD-chain?
> I'm thinking about performance here..
> 
> 5) I'm thinking about measuring average "new connections per second"-rate
> and setting up limits to obey that.. is this good way?
> 
> 6) Do you have some other tips? What are the biggest problems in addition to
> getting the state table filled up..
> 
> 
> Thanks for your replies!
> 
> -- Pasi Kärkkäinen
>        
>                                    ^
>                                 .     .
>                                  Linux
>                               /    -    \
>                              Choice.of.the
>                            .Next.Generation.
> 


-- 
Michael Gale
Network Administrator
Utilitran Corporation


  reply	other threads:[~2003-12-09 16:02 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-09 15:43 Protecting against DoS Pasi Kärkkäinen
2003-12-09 16:02 ` Michael Gale [this message]
2003-12-09 16:28   ` Pasi Kärkkäinen
2003-12-09 16:40     ` Michael Gale
2003-12-09 16:51       ` Pasi Kärkkäinen
2003-12-09 17:06         ` Michael Gale
2003-12-09 17:13           ` Pasi Kärkkäinen
2003-12-09 19:20             ` Geffrey Velásquez
2003-12-09 20:10               ` Arnt Karlsen
2003-12-10 16:53             ` Pasi Kärkkäinen
2004-01-11  1:50               ` Peter Frischknecht
2004-01-11  8:04                 ` bridge vlans in HP 2524 switch Computer Security
2004-01-26 10:45                 ` Protecting against DoS Pasi Kärkkäinen
  -- strict thread matches above, loose matches on Subject: below --
2003-12-09 19:11 Geffrey Velásquez
2003-12-09 18:01 ` John A. Sullivan III
2003-12-09 18:16   ` Ralf Spenneberg
2003-12-09 18:41     ` John A. Sullivan III

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031209090221.413b7286.mgale@utilitran.com \
    --to=mgale@utilitran.com \
    --cc=netfilter@lists.netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.