Re: [Fwd: I-D Action: draft-carpenter-6man-why64-00.txt]

Lorenzo Colitti <lorenzo@google.com> Fri, 10 January 2014 13:58 UTC

Return-Path: <lorenzo@google.com>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1CAA51AE033 for <ipv6@ietfa.amsl.com>; Fri, 10 Jan 2014 05:58:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.316
X-Spam-Level:
X-Spam-Status: No, score=-1.316 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_37=0.6, RP_MATCHES_RCVD=-0.538, SPF_PASS=-0.001] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lKNngWHxcCpz for <ipv6@ietfa.amsl.com>; Fri, 10 Jan 2014 05:58:47 -0800 (PST)
Received: from mail-ie0-x22f.google.com (mail-ie0-x22f.google.com [IPv6:2607:f8b0:4001:c03::22f]) by ietfa.amsl.com (Postfix) with ESMTP id C29D11AE008 for <ipv6@ietf.org>; Fri, 10 Jan 2014 05:58:47 -0800 (PST)
Received: by mail-ie0-f175.google.com with SMTP id x13so5126991ief.20 for <ipv6@ietf.org>; Fri, 10 Jan 2014 05:58:37 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=UbYGX8BFSI679QRrSFC5I5nAcUJTD3NFUblzjH1sbi4=; b=lQ+yPdXhM7sBuggSpec/Vyt38Y4+ZZaGvrRxLbU6q0BmOIfuuJOO5HNQWlAW4z5pOR RSekk0At/8j0vLg2Tqcv2QzDGldzneCNON6WWVZqsJ8HI5UPl6d31A9j0odzrvSSoKdD 9xM/s261brfdpGoo/LGJstRgzBRb1HWJRK0FAe0bi2jlFsulTjB925WzEFBc15GgAyWf GpMmF72F7eHrrZz2lkuqfozweic0F4IIVZL7aIqmAvZRTz8hVO5X6nrVK0RSufQNd9hB cqmqPBhSEATC4lJl0DcvnLbTHXqeY5uhAgWRnYbKSzrM8x+o9NuIL5IL0ODJ+Se41qoc m+zQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=UbYGX8BFSI679QRrSFC5I5nAcUJTD3NFUblzjH1sbi4=; b=Rd93Z0q8JFar87fcLqZV2eFEAVpsvEfxburig1ZwD+T70zw3EOpmTjkIpOV79O02nQ /8tuTJ79dKC2AOZYKdYN9QJqYUtGd6nhaZhYhPfJ2KpGTJjKnj3zMzE38IT2wx94WRco ZdwNFOlKJeri4sxliCYYtP8fwSS+ButJfzf9fM47PAhtZjKHtrW6W47GkJd8aQE9x+rx uFVeINTCFfIPigy2hg9F43ercNEfLULnYHROjNYSs+2eiFtpNp59RiXL49Qi7b/qmjmk UD3l15jlCAOCOHipv9KX3XhVfy5PypZ0XtxhWpuVP/nTqhfpOsZgszl65mNq0r3FI8tq jvBg==
X-Gm-Message-State: ALoCoQmRCnD/HAPwpRnjRh/n/jbY24oMOqgKM6/dmUHbtZMGNPSjQny0yK8OqeKE9kb8Mm39CJ4PmOYZR8j8L68319gAvSOiMxfTFNFBTzGKVaOC1fF26Ghm683Ag0XMoL4fbXlSK41raJ47ySTdcr0xZL/qPsQ5FO51xBSS/0tb7aAUjTmca/SQD3c8rJqhYlFsFTP25a1i
X-Received: by 10.50.61.137 with SMTP id p9mr3446423igr.45.1389362317749; Fri, 10 Jan 2014 05:58:37 -0800 (PST)
MIME-Version: 1.0
Received: by 10.64.7.36 with HTTP; Fri, 10 Jan 2014 05:58:17 -0800 (PST)
In-Reply-To: <52CFD061.6080807@globis.net>
References: <52C9D788.8060606@gmail.com> <52CBE0E6.5020107@globis.net> <CAKD1Yr2yPzQHCJHUWBa9-+=nn9BbjLhBB4e896NPWne_Unnwgg@mail.gmail.com> <52CECC76.1030706@globis.net> <CAKD1Yr3rvnDRPpkBEV4EVrrSAQYLutGg0qoweZkKv5em=4-dRw@mail.gmail.com> <52CFAB11.4070404@globis.net> <CAKD1Yr0PTXRRBwLWJfA77hv2WnmPZXqn72ahmhm4RbN3MpLkig@mail.gmail.com> <52CFD061.6080807@globis.net>
From: Lorenzo Colitti <lorenzo@google.com>
Date: Fri, 10 Jan 2014 22:58:17 +0900
Message-ID: <CAKD1Yr3AbyaLgv-aRpVObH=t7pXOydvAaT6iwq-VJqH2qoUNPQ@mail.gmail.com>
Subject: Re: [Fwd: I-D Action: draft-carpenter-6man-why64-00.txt]
To: Ray Hunter <v6ops@globis.net>
Content-Type: multipart/alternative; boundary="047d7bdca5dc6a272304ef9e1f6f"
Cc: 6man <ipv6@ietf.org>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 10 Jan 2014 13:58:50 -0000

On Fri, Jan 10, 2014 at 7:50 PM, Ray Hunter <v6ops@globis.net> wrote:
>
> When an individual IPv4 source address sends "too many requests too
> quickly", postfix does not even open the TCP session with this client.
> The main postfix process daemon can then continue to serve other
> well-behaved nodes whilst the rogue node is "shut out".
>
> With IPv6 /64, and massively oversized allocations, that defence approach
> is invalidated, because the anvil process itself becomes a weakness, as it
> cannot track to /128.
> You could possibly track at /64, although even that might be too big to
> handle in memory, with the consequence that one rogue node can create false
> positives, and take down a whole LAN or site.
>

But Postfix mail servers are exposed to the Internet. And the Internet
already connects tens of millions of users that have /56 prefixes at their
beck and call to mount an attack. Obviously, the naive approach of tracking
to /128 is not going to scale. But neither does the naive approach of
storing BGP tables in linked lists. Fortunately, router implementations use
patricia tries and hash tables, and equivalently, fortunately it's possible
to do better than to track at the /128 level.


> How do you know that the remote rogue site or rogue host is a single /64
> and not a /52 or /56 or /48?
> Do you track all of the above simultaneously? That has potential for even
> bigger false positives.
>

Three minutes of thought suggest that you could have separate /64, /56 and
/48 tables (or whatever) and when a certain threshold of entries in one
table match the entries in the table one level shorter, delete them and
block the covering prefix at the shorter prefix level. Thinking about it
for three hours instead of three minutes will probably produce several more
sophisticated ideas - one example is looking for evenly-spaced spikes in
prefix usage patterns in historical log data to detect ISP assigned prefix
sizes in particular blocks, and then track that region of the IPv6 space at
that block size.


> In general, if you want to provide a third party access to your mail
> server or other server for information exchange, you probably want some way
> of throttling access at the Network Network Interface (NNI) from individual
> rogue nodes without cutting off well-behaved nodes.
>

Why individual rogue nodes? In most networks (maybe yours is an exception;
but in general, anything exposed to residential users), you can't see the
nodes. You can see NAT pool IPs. So we're already tracking by the block,
even in IPv4.


> Address scarcity has some upside too, in that it limits attack source
> surface, and allows tracking at node level, and I do not feel that has been
> sufficiently acknowledged.
>

If address scarcity is what you want, there's a well-supported,
ubiquitously deployed protocol you can use: IPv4. Unfortunately, its main
problem is... address scarcity. We're trying to fix that problem. We can't
fix it by creating more scarcity.

It's would also be nice to know who these people are (admittedly we only
> "know" that today due to some level of trust linked to address allocation
> schemes e.g. this person is assigned this IPv4address in DHCP or via their
> SSL VPN connection login).


Why can't you associate an SSLVPN connection login with a /64? It's still
one login.


> Some of that could be translated into IPv6 with prefix lengths >>64e.g.:
> an SSL VPN with a /127 = a person.
>

Why a /127? Why not a /64? It's the same number of state entries - one per
login. And a /127 (or even a /128) is not one machine. It could be one
machine, or it could be a distributed cluster of machines running a
transparent TCP proxy for 100000 clients. For example:

star.c10r.facebook.com has IPv6 address 2a03:2880:f00f:300:face:b00c:0:1

You don't think that's one machine, right?

For example, a single source IPv4 /32 with access to 1 port on 4
> destination IPv4 servers is never ever going to be able to saturate a
> flow-based WFQ session table, even if it is compromised. This source
> machine can only ever create 4 flows simply because of the ACL at the NNI.
>

But WFQ scales in terms of the buffer size (i.e., the total length of the
queue), not in the number of flows, right? If what you're queueing is
packets, then the queue is not unbounded and there is no scaling issue.


> Even an ACL for a single /64 for a single port is massively bigger than
> the biggest access we grant today. Which probably leaves static addressing
> as the only option. Because alternative defence mechanisms simply aren't in
> place yet.
>

In this case, what you want DHCP for is not tracking - it's predictability.
You want to assign a given client an address that will pass through the
security pinhole.

There's nothing stopping you from doing this even if the client is on a /64
subnet with SLAAC turned on - just assign addresses via DHCPv6 or
statically, configure the firewall to pass one /128, and configure the
application to use the "magic" address you gave it. You don't need to
create scarcity for that to work; it would work perfectly well if the host
had a SLAAC address and 5 temporary addresses for Internet access, for
example.