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

Re: ICMP pokes holes in firewalls...



In some mail from Daniel Hartmeier, sie said:
> 
> On Fri, Sep 26, 2003 at 10:13:56AM +1000, Darren Reed wrote:
> 
> > There's also a general problem here, that needs attention and that
> > is you really shouldn't allow more ICMP error packets through than
> > you see normal connection packets.  ie. one UDP packet out should
> > not allow more than one ICMP error message back in.
> 
> Technically, a single packet may cause multiple legitimate ICMP errors.
> As per RFC 792, an ICMP redirect does not imply that the packet was dropped
> (quite the contrary) and ICMP source quench may be sent without dropping
> the packet. Hence, further hops may send further ICMP errors for the
> same packet.

Only if a sending host is misbehaving will you ever get more than 1
redirect per packet flow as routers beyond the first hop should not
be sending redirects that make it back to the origin.

So what if a source quench gets dropped ? In situations where it's
likely to be sent, it getting dropped is more likely than normal.

And since you're quoting RFC's...

I have to wonder whether or not you read the OpenBSD source code before
saying this or maybe the OpenBSD source code is missing this comment
that I can see in NetBSD's IP code:

                 * a router should not generate ICMP_SOURCEQUENCH as
                 * required in RFC1812 Requirements for IP Version 4 Routers.
                 * source quench could be a big problem under DoS attacks,
                 * or if the underlying interface is rate-limited.

RFC 1812, section 4.3.3.3 (page 57) discusses this.

> Rate limiting the ICMP errors with a strict 1:1 ratio would break
> traceroute through a gateway that forwards back to the same network, or
> one operating near its capacity limit, for instance.

It won't break any version of traceroute that I'm aware of.

> So, what do we gain by rate limiting the ICMP errors?

If I send 1 UDP packet out, how many ICMP errors should I ever
receive that match it ?  1 ?  10 ?  100 ?  Up to the ttl value
of the packet as it passed through ?  What does your experience
tell you?  What do you consider "normal" vs what should be
considered "acceptable" ?

On the other end of this, have *you* had any experience with rate
limited ICMP error message generation ?  If you did, did traceroute
not work because it was present ?

Darren