Re: [Add] WG Adoption Call draft-reddy-add-enterprise-split-dns

Ben Schwartz <bemasc@google.com> Fri, 06 May 2022 17:38 UTC

Return-Path: <bemasc@google.com>
X-Original-To: add@ietfa.amsl.com
Delivered-To: add@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5CCDDC14F72C for <add@ietfa.amsl.com>; Fri, 6 May 2022 10:38:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Level:
X-Spam-Status: No, score=-17.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1L41c36jxtUB for <add@ietfa.amsl.com>; Fri, 6 May 2022 10:38:18 -0700 (PDT)
Received: from mail-vs1-xe35.google.com (mail-vs1-xe35.google.com [IPv6:2607:f8b0:4864:20::e35]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E519CC14F72B for <add@ietf.org>; Fri, 6 May 2022 10:38:18 -0700 (PDT)
Received: by mail-vs1-xe35.google.com with SMTP id a127so7881603vsa.3 for <add@ietf.org>; Fri, 06 May 2022 10:38:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=LJWpAI+W8gv9DRkkvBRnBj0xyUKCqnGQ/48u+4DE4IE=; b=cpdX+MwcSdsghZ3Ef96heSkKJIYdmQ4hRQwBFr0MOcaAn+BZDbaNJQ0nZmHgWk1ggt 08PJse1pv65gtCm6xLLWIrfTSwSu69cQlY4UVT4QROcmsIqAx4XaRtwjCHNXvEwAUUfB CXgi2Xp9WMfE8nsobPuGVK5wJa0p+SJfSZMjHhnIGVqwezunDqq2NDs9R8t0UXL4kE3x UnPA/wmgt1W1BuxvIFHyhvm33Fkh+MfBoQmRgHXX76BFdrXftEe4xAGIFI1nZqVbCFuw FzEkxrho2BWvvBb6Y80kh/Rkn18j+Gthu9iy/LZGUqbZK7HL4EARX1kpdQsNOXWP9I8S 4JRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LJWpAI+W8gv9DRkkvBRnBj0xyUKCqnGQ/48u+4DE4IE=; b=z3BqCMw0zOp5xfnqefEeWlWiSDwpBTegVJo2C7bPemquJvpA03D/IxqYVW2vD52UO7 VuZC7U1IFNUJRY2SggwqI+lFYrItJSLRlm0tXEgxztNlpOWvPIYfMDWD38n2q0sXa1nQ Q52kgROJKiIC3yWO2rcJ0H+0MQVwWaNGQtGnKCJQ1L8IeqE5kjCqZbYPKHLUIGs5Tvej PJIwlE+JIIPrBN5vkFDHx7GfqqfxwJUEy69Cwp/WOT+PN1pIgEnpmnu5l7oiDdluwvIm 6Zvs3WmKCqQTVCeaXI/1zvVkOeTtprSV6xF6Yv/rEmt1Eiwa8ngYALPfPiUDzZQxUMH2 BJ0A==
X-Gm-Message-State: AOAM533/PsabS0GcY0PC8HxtXobht3dQNbXFgWF8q+a85gdqIWohEc0j MvNlPHtMA6A/yI6CmJ3uuQS8TXsYBjqtvJOtzaNxjg7mb9j/gQ==
X-Google-Smtp-Source: ABdhPJzpguhjbc106zJIFdyOG0IZQADrXmYRUcrQJp+rTx3gvXEqhHvFDrSulqkmj6tVgsIXuWwStTaIOhsdjdEhDlQ=
X-Received: by 2002:a67:c19a:0:b0:32d:2d43:4d94 with SMTP id h26-20020a67c19a000000b0032d2d434d94mr1434731vsj.6.1651858697504; Fri, 06 May 2022 10:38:17 -0700 (PDT)
MIME-Version: 1.0
References: <BYAPR11MB3111FD2D0FF61231304A5F3DEAC29@BYAPR11MB3111.namprd11.prod.outlook.com> <CAHbrMsAcpHFon+JS9jsLdqANt+1FmkA_VDAwW4PSUDMJwtbavA@mail.gmail.com> <14b56185-4fe3-8e4b-adcf-22ddb624329@nohats.ca> <CAHbrMsDywOYmFzhruD4CK=Jze-sDR8ao253kWxR6+FpTpGLmYA@mail.gmail.com> <2cf6eb22-fe45-67af-2373-522ee9aa2ec4@nohats.ca>
In-Reply-To: <2cf6eb22-fe45-67af-2373-522ee9aa2ec4@nohats.ca>
From: Ben Schwartz <bemasc@google.com>
Date: Fri, 06 May 2022 13:38:06 -0400
Message-ID: <CAHbrMsD=92K3SDuUMe5WtzCBfww49ACQuavZThCPT-fPStjzFg@mail.gmail.com>
To: Paul Wouters <paul@nohats.ca>
Cc: "Deen, Glenn" <Glenn_Deen@comcast.com>, ADD Mailing list <add@ietf.org>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha-256"; boundary="000000000000e8ded305de5b52d5"
Archived-At: <https://mailarchive.ietf.org/arch/msg/add/Zil77KSV2dfIglxh1zQvVzQcDXQ>
Subject: Re: [Add] WG Adoption Call draft-reddy-add-enterprise-split-dns
X-BeenThere: add@ietf.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: Applications Doing DNS <add.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/add>, <mailto:add-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/add/>
List-Post: <mailto:add@ietf.org>
List-Help: <mailto:add-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/add>, <mailto:add-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 06 May 2022 17:38:23 -0000

On Fri, May 6, 2022 at 12:33 PM Paul Wouters <paul@nohats.ca> wrote:

> On Thu, 5 May 2022, Ben Schwartz wrote:
>
...

> > The draft does enable local resolution of domains that do not exist
> globally.
>
> [This speaking as an individual with no hats on]
>
> The mechanism for that is:
>
>     To validate the network's authority over a domain name, participating
>     clients MUST resolve the NS record for that name.  If the resolution
>     result is NODATA, the client MUST remove the last label and repeat
>     the query until a response other than NODATA is received.
>
>     Once the NS record has been resolved, the client MUST check if each
>     local encrypted resolver's Authentication Domain Name appears in the
>     NS record.  The client SHALL regard each such resolver as
>     authoritative for the zone of this NS record.
>
> So let's say I have internal.nohats.ca served by ns1.internal.nohats.ca
> on IP 10.1.1.1.
>
> Let's assume that the first paragraph means "using a non-local
> preconfigured DNS server" because we can't yet trust the local one.
>
> Problem #1: The enterprise would not want to allow DoT/DoH, but to
> entice the client to not use it, it has to use it first. So the
> network cannot block it.
>
> If one queries for NS of internal.nohats.ca using DoH/DoT, one would
> get:
>
> paul@bofh:~$ dig ns internal.nohats.ca
>
> ; <<>> DiG 9.16.24-RH <<>> ns internal.nohats.ca
> ;; global options: +cmd
> ;; Got answer:
> ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60608
> ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
>
> Note that NXDOMAIN is not NODATA.
>

Yes, in this case the NS record needs to exist publicly.

Now, if you meant to use the internal / local server for this, then I am
> confused as well. Let's say we got an ADN for "internal.nohats.ca", I
> think the text states it must have an NS record for internal.nohats.ca,
> but those can be arbitrarilly created. So finding things on the local
> server doesn't help me prove anything ?
>

Clients can only prove ownership through the local resolver if the zone is
signed and the client is fully validating, as described in Section 6.2.

> The only thing this draft declares as out of scope, in effect, are
> domains with a fake TLD.  If you use a real TLD, then this draft can be made
> > to work.  You just have to register the registrable part and delegate it
> (or a sub-zone that contains local names) to your local resolver.  There
> > is no need for this nameserver to be reachable publicly, and if it is
> reachable, it does not need to serve the same zone contents as the local
> > version.
>
> So what record would I need to add to the public nameserver that both
> authorizes internal.nohats.ca without leaking the existance of
> internal.nohats.ca?
>

You have three options:

1. Claim all of nohats.ca, and provision the local resolver with a
certificate for ns1.nohats.ca (or another name appearing in the NS record
for nohats.ca).
2. Publish an NS record for internal.nohats.ca, and structure your names as
<confidential>.internal.nohats.ca.  This is typical in large enterprises
(e.g. payroll.corp.example.com).
3. Register a new domain (e.g. nohats-internal.ca) for this purpose.  This
is also common in large enterprises.

> As noted in Section 7, this means that payroll.internal.example.com can
> be made resolvable internally, even though internal.example.com is "lame"
> > or empty externally.  This "internal.example.com" or "corp.example.com"
> structure is likely the most common split-DNS arrangement in enterprise
> > settings.
>
> Reading this, I think you mean there would be something like:
>
> internal.nohats.ca.     IN      NS      ns1.internal.nohats.ca.
> ns1.internal.nohats.ca. IN      A       192.168.1.1
>

No, this is not what I'm suggesting.  Rather, you should either:

1. Publish this NS record as a non-apex record in the public nohats.ca
zone.  No A/AAAA record is required, and there is no zone cut in the public
zone.
2. Create a real zone cut and operate a public nameserver for
internal.nohats.ca that has an empty zone file (except for necessary
records like NS, A, SOA, and DNSSEC records).

Either way, the client will resolve NS for "internal.nohats.ca", and
determine that the answer is "ns1.internal.nohats.ca".  That's all it needs
to know.

...

> >    Clients SHOULD
> >    apply whatever acceptance rules they would otherwise apply when using
> >    this resolver (e.g. checking the AD bit, validating RRSIGs).
>
> The VPN DNS configuration comes with its own DNSSEC Trust Anchors to
> support split-DNS with DNSSEC on both views. It is exactly that point
> that made the TLS people very worried wrt TLSA records being overridden.
> This "SHOULD" should therefor be a "MUST"


I think that's a reasonable change.

and should be on the public
> DNS, not the internal trust anchors (yet).


I don't follow.  What is an internal trust anchor?

But such a "MUST" is not
> possible on currently deployed devices and does not seem to be imminent
> either, and thus this draft will only be usable if one omits the
> security requirement of DNSSEC.
>

No, the normative text is "Clients SHOULD apply whatever acceptance rules
they would otherwise apply when using this resolver".   The following
clause provides examples of possible acceptance rules, and is not
normative.  Changing the SHOULD to a MUST would not require the client to
adopt any specific acceptance rules; it would only require the client to
apply its rules consistently.

>       For example, deployments
> >       of mandatory DoH/DoT servers by ISPs or nations that perform domain
> >       overrides that this document would still consider "tamperproof"
> which
> >       in the presense of DNSSEC could not be possible, but this document
> now
> >       enables.
> >
> > No, it doesn't.  If domain overrides are prevented by DNSSEC despite a
> compromised resolver, that must mean that the client is validating DNSSEC,
> > in which case the clause above ("validating RRSIGs") applies and the
> client will also enforce DNSSEC during these checks.
>
> While good that this all requires DNSSEC, how realistic is this at the
> moment? Will Operating Systems of laptops and phones really start doing
> DNSSEC to support this split-DNS scenario? Or will they use it ignoring
> the DNSSEC reuqirements of this document?


This document does not require any use of DNSSEC.  The only requirement is
"if you're already doing DNSSEC, you have to keep doing DNSSEC".


> Which then brings us back to
> the point where this protocol can be abused to claim any public domain
> name as its own.
>

If the client is not DNSSEC-validating, or the zone is unsigned, and the
client is using a third-party resolver for tamperproof resolution (Section
6.1), then this abuse is only possible if the local network resolver and
the third-party resolver are both hostile.  In the absence of this draft,
the client was going to use one of those resolvers anyway, so they would
still be vulnerable to that abuse.  Thus, this change hasn't made anything
worse in this regard.

Taking a step back, what is it that we really want to accomplish?
>
> If I connect to the office network, I need to resolve the corporate
> domain using the office nameservers, eg:
>
>         The network is requesting ownership of the domain name "
> internal.nohats.ca."
>         Allow this? Y/N
>

As someone who has worked on end-user UIs for DNS configuration, I would
have grave concerns about implementing a feature like this.  I would expect
coercive use of such a feature to appear very shortly after it is
implemented.  That's why I believe we should pursue an alternative that can
operate securely without user intervention and can support as many use
cases as possible.

...

> The complexity suggested by this document and it companion documents for
> a very partial fix, specifying security requirements that are simply not
> available on most mobile devices and are not being planned to be rolled
> out on those devices,


The only client-side requirements for this draft are DoT or DoH (already
widely implemented on mobile devices) and DNR.


> makes me believe this set of documents is not a
> working solution.
>

In a sense, I agree!  This document depends on DNR, which is still not
quite final and certainly not widely implemented.  The point of this
document is that DNR, somewhat unexpectedly, enables a new approach to the
split DNS problem.