Re: [nfsv4] NFS over TLS for floating clients

Rick Macklem <rmacklem@uoguelph.ca> Fri, 06 March 2020 22:47 UTC

Return-Path: <rmacklem@uoguelph.ca>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 384E53A0CC5 for <nfsv4@ietfa.amsl.com>; Fri, 6 Mar 2020 14:47:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=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 LRx8tN8nB1Ba for <nfsv4@ietfa.amsl.com>; Fri, 6 Mar 2020 14:47:32 -0800 (PST)
Received: from CAN01-TO1-obe.outbound.protection.outlook.com (mail-eopbgr670071.outbound.protection.outlook.com [40.107.67.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 17B373A0CC2 for <nfsv4@ietf.org>; Fri, 6 Mar 2020 14:47:31 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; =?utf-8?q?b=3Dj5lTBTn7c8GJE/TM42dnwnk2Jzm9h8U29GfOIFXtDIZCrrt/gdZmpukRW28Ou?= =?utf-8?q?wWlBiFpbRQeG7BgeOphXdkQhUwAqbBEuF+RQqaYRL0tVxucJCDnsYCnHOkbPEktkd?= =?utf-8?q?/d6b/Z9UW53Za/hhv79qYgrFKSmcJml0aUA7qNan3Z7ky/AED6ogp2/65EYyAcJF5?= =?utf-8?q?xGl7G/R40Smmmr2G/rW25y+7s+4lUoFG+RtiQs6uj3zlCXIVLdwcxkH6cq4YJ53e4?= =?utf-8?q?rlmz1e3/3f541MBMBL51IwvtDs01FgG6ACrpsaj17VppNpfbvoI+bTfMCZjkitF+n?= =?utf-8?q?akAijznWKAB+nBBGK7kXQ=3D=3D?=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; =?utf-8?q?h=3DFrom=3ADate=3ASubject=3AMessage-ID=3ACont?= =?utf-8?q?ent-Type=3AMIME-Version=3AX-MS-Exchange-SenderADCheck=3B?= =?utf-8?q?bh=3DbVfEVs2jaHWZogl0uLqwxd2TW40v14rnsrVOZPUbuwk=3D=3B_b=3DiOfPTl?= =?utf-8?q?hzjXg2r+g3i8lqnpcnCdif8YI01lZ6AV0LIoFcr6qx09RPyeSCPXfX3cnUu2oII1o?= =?utf-8?q?RUJ3pkPBykmrmrMIs/uWwvgjuFPxZsYmELnwR4lBSv45d7Fg/MhqAHe0411xUEFNk?= =?utf-8?q?6eEp/a1/5XRvtQ3knXfD0hGQAIjIEId0bdK6Ffl77qnMJovyJWyKYFWgUj1XmxaJp?= =?utf-8?q?YBv8kJpj+r/nh8JdFNcyuQm1eegUY9MvyfPDEnDB/3ZdFvx+B63ZAjKbAVqtQLkEJ?= =?utf-8?q?vlLIrKzkEBjnxLibhv0nvkD1YTGehQEdYkRaF9zDxr9iOCbFMOvIiRDzALQ4qNk6d?= =?utf-8?q?ACwtlkGO6Ig=3D=3D?=
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=uoguelph.ca; dmarc=pass action=none header.from=uoguelph.ca; dkim=pass header.d=uoguelph.ca; arc=none
Received: from YTBPR01MB3374.CANPRD01.PROD.OUTLOOK.COM (10.255.46.82) by YTBPR01MB2654.CANPRD01.PROD.OUTLOOK.COM (10.255.46.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.14; Fri, 6 Mar 2020 22:47:30 +0000
Received: from YTBPR01MB3374.CANPRD01.PROD.OUTLOOK.COM ([fe80::a50d:6237:4074:f9c4]) by YTBPR01MB3374.CANPRD01.PROD.OUTLOOK.COM ([fe80::a50d:6237:4074:f9c4%6]) with mapi id 15.20.2772.019; Fri, 6 Mar 2020 22:47:30 +0000
From: Rick Macklem <rmacklem@uoguelph.ca>
To: Craig Everhart <cfeverhart@gmail.com>, Trond Myklebust <trondmy@gmail.com>
CC: "nfsv4@ietf.org" <nfsv4@ietf.org>
Thread-Topic: [nfsv4] NFS over TLS for floating clients
Thread-Index: AQHV82BAxp9O6fa7qEu4EnWyACrtOKg77jqAgAAISoCAADDgOw==
Date: Fri, 6 Mar 2020 22:47:29 +0000
Message-ID: =?utf-8?q?=3CYTBPR01MB337418573DE1D692BC029012DDE30=40YTBPR01MB3?= =?utf-8?q?374=2ECANPRD01=2EPROD=2EOUTLOOK=2ECOM=3E?=
References: =?utf-8?q?=3CYTBPR01MB337482A9420C1AEF05466D3FDDE30=40YTBPR01MB3?= =?utf-8?q?374=2ECANPRD01=2EPROD=2EOUTLOOK=2ECOM=3E?= <CAABAsM7mSfULv974gPQmCSt+Nt2zdH1wMvemwPXw365SeEGTQg@mail.gmail.com>, <CAMhwm99ZUf5fshkkOtRyf2u8DjeRLdVk=Q05H8YF4A+ycZi8fA@mail.gmail.com>
In-Reply-To: <CAMhwm99ZUf5fshkkOtRyf2u8DjeRLdVk=Q05H8YF4A+ycZi8fA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=rmacklem@uoguelph.ca;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 5ed4e0b7-5b89-40b8-48ca-08d7c22059fe
x-ms-traffictypediagnostic: YTBPR01MB2654:
x-microsoft-antispam-prvs: =?utf-8?q?=3CYTBPR01MB26540A22801B404B00FF811FDDE?= =?utf-8?q?30=40YTBPR01MB2654=2ECANPRD01=2EPROD=2EOUTLOOK=2ECOM=3E?=
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0334223192
x-forefront-antispam-report: SFV:NSPM; =?utf-8?q?SFS=3A=2810009020=29=283760?= =?utf-8?b?MDIpKDM5NjAwMykoMzY2MDA0KSgxMzYwMDMpKDM5ODYwNDAwMDAyKSgzNDYwMDIp?= =?utf-8?b?KDE4OTAwMykoMTk5MDA0KSg2NTA2MDA3KSg4NjM2MjAwMSkoNDc4NjAwMDAxKSgy?= =?utf-8?b?NjAwNSkoODkzNjAwMikoOTY4NjAwMykoNDMyNjAwOCkoNTM1NDYwMTEpKDI5?= =?utf-8?b?MDYwMDIpKDE4NjAwMykoODExNjYwMDYpKDgxMTU2MDE0KSgzMzY1NjAwMiko?= =?utf-8?q?966005=29=288676002=29=285660300002=29=2852536014=29=2855016002?= =?utf-8?b?KSg3NjExNjAwNikoNzg2MDAzKSgzMTYwMDIpKDkxOTU2MDE3KSg3MTIwMDQw?= =?utf-8?q?0001=29=2866446008=29=2866476007=29=2866556008=29=2864756008=29?= =?utf-8?q?=287696005=29=28110136005=29=2866946007=29=2866574012=29=3B?= DIR:OUT; SFP:1101; SCL:1; SRVR:YTBPR01MB2654; H:YTBPR01MB3374.CANPRD01.PROD.OUTLOOK.COM; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: uoguelph.ca does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: =?utf-8?q?PWlxfps83FwMunb8+vPSUYf4Z57huak?= =?utf-8?q?75x4G/3ZH/HHSDp1DEjIgJyQMbIMUEVwEWOBu/6y34tzjD+0CB1PJjYOe38lfjSTL?= =?utf-8?q?neTlHwUAsPH8qbiI+P0PeXZN3tqdsv3cB5yOghEICHfArh9kBgEBvcMgIhgptP5Bt?= =?utf-8?q?LhAj0iUK8Cx6Wuima7p6QVlhKGFVhYznqbS/93+uLA1DxHgJY07ZWpZtAGVPo0DXy?= =?utf-8?q?0zjPyH7h1fTwxCU7K3ua49crWPm3vrfyZwYIWsWFrVevdN2nshmYMmutfRKtQnBlg?= =?utf-8?q?195XpCazO7NscWGuF6Tn9gRlrHIavTn4ULXxnbTL7d+uXfqTG4hfh7eQUoxeP50aV?= =?utf-8?q?WPSRoLGqmaGSwrjgb6os14MorGh3RPLy9tAu17drjZJ1F5XUwfMELbFpciGn9MUxH?= =?utf-8?q?p/+NpiSuV8K7FeBWoez2XvlaBRqUSHmchU8LZziOYp3ie4Xh9wadY5bQvTqJWB4GP?= =?utf-8?q?YmhiohUt2UCOxUi0rPtfGkHGC9cbOObrk/KhBRD4HtNpgBRA=3D=3D?=
x-ms-exchange-antispam-messagedata: =?utf-8?q?UJyzFV4qDE6lpwyp/p3/yMqtH2S2z0?= =?utf-8?q?DC0ArGNbczRCpd5vKB/EQe6VrToxeyXRfKsbXDWCgMTrhd54pqwsU92advxvtGuIQ?= =?utf-8?q?VYlMELWoSYJJAPIs2flgzs2Xbn3EGwOAFH4VQ+H0nK2lrNHLjU/eoFg=3D=3D?=
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: uoguelph.ca
X-MS-Exchange-CrossTenant-Network-Message-Id: 5ed4e0b7-5b89-40b8-48ca-08d7c22059fe
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Mar 2020 22:47:30.0103 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: be62a12b-2cad-49a1-a5fa-85f4f3156a7d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: =?utf-8?q?EBFsNH5pfToQaF2D2lk2R?= =?utf-8?q?GacoKb/VI+6XUOVYURznegTUNdxMMh5tMfNsr+TevdrSl+R0rK71DNbN+Pj6s+S3A?= =?utf-8?q?=3D=3D?=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: YTBPR01MB2654
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/uGPBHKmdzGL3RR4M26L1pKGCkMA>
Subject: Re: [nfsv4] NFS over TLS for floating clients
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 06 Mar 2020 22:47:34 -0000

Craig Everhart wrote:
>I think the problem statement contains the issue here:
>> Here's an example scenario:
>> - The client is a laptop that wants to mount a server from "anywhere" using
>>   TLS, so that data is encrypted on the wire.
>>   The server understandably wants to use "mutual authentication" to determine
>>   that the client is indeed one that is allowed to mount the server.
>What attribute is the server looking for that will "allow" the server to be mounted?
>And can it be done anonymously, which this "anywhere" laptop really wants to be?
>
>Note that on-the-wire encryption will be done even if there is no client certificate--as long as >the server has a certificate (or if the client/server are using a pre-shared key, which is a little >further afield).
Yes, but I wouldn't be comfortable with "any" client mounting from anywhere.

>If the client owns a domain, somehow, then the PKI machinery is available to it; a certificate >will allow it to prove that it is able to speak for that domain name.  Is that what's being >checked as this stuff about "allowing" the mount?
Well, I didn't envision the laptop owning a domain, but I suppose that might work.
(Since the laptop's IP address/DNS host name wouldn't match this domain, it sounds
 a bit sketchy, but so is the use of a certificate signed by the NFS admin using a site
 local CA, see below.)

>I think that there's a problem with the NFS server wanting to know much about the client, >unless it's limited to a DNS name.
Well, my thinking is that, if the NFS admin. is running a site local CA and the client has
a certificate signed by that site local CA, then the certificate must have been issued by
the NFS admin. I don't think the contents of the certificate is of much use in this case,
just the fact it was signed by the NFS admin. using the site local CA.
Creating the site local CA just seems easier and cheaper than trying to register a
domain name for a laptop and getting a certificate signed by a trusted CA.
After all, some of the motivation for doing NFS over TLS is that NFS admins. don't
seem willing to run KDCs, etc and use sec=krb5p. To get it widely adopted, I think
it needs to be relatively simple to set up and use.

Obviously, if the laptop is compromised and the certificate signed by the site local CA
is copied to a different system, then that system could mount the server.
(I think exactly the same risk exists for a certificate for a domain owned by the laptop
 and signed by a trusted CA. ie. Copy the certificate to a different system and it
 would allow that system to mount the server.)
Whether or not that is an acceptable risk is up to the NFS admin, I think?

rick
Craig

On Fri, Mar 6, 2020 at 2:08 PM Trond Myklebust <trondmy@gmail.com<mailto:trondmy@gmail.com>> wrote:
On Thu, 5 Mar 2020 at 22:06, Rick Macklem <rmacklem@uoguelph.ca<mailto:rmacklem@uoguelph.ca>> wrote:
>
> Hi,
>
> As I am working through implementation of NFS over TLS, I have run into
> a couple of things related to certificates.
> Here's an example scenario:
> - The client is a laptop that wants to mount a server from "anywhere" using
>   TLS, so that data is encrypted on the wire.
>   The server understandably wants to use "mutual authentication" to determine
>   that the client is indeed one that is allowed to mount the server.
>
> Ok, so now how do you get a certificate for the client that the server can
> reasonably verify?
> --> After a discussion over on a FreeBSD mailing list, it sounds like the easy
>       (maybe only?) way to do this is for the NFS server admin. to run a site local
>       CA and generate certificates against that.
>       - Although I'm sure there are other ways, you can create a site local CA
>          certificate with two openssl commands and sign a certificate for a client
>          with two more openssl commands.
>      Then the server can verify the certificate using the CAcert that was used to
>      sign the client's certificate.

It really boils down to the question of who do you trust to assert
what information.

If you own a domain, you can usually buy SSL certificates for it that
assert a given name within that domain. As long as you trust the major
CA vendors not to sell such a certificate to someone who does not own
the rights to the domain, then you might have your server use that
chain of trust to verify that this is indeed a trusted laptop. You
might decide to compare the full name appearing in the certificate to
a trusted list, or maybe just verify that the domain or subdomain info
matches a list of trusted domains or subdomains. Yes, you can do this
more cheaply by creating your own site-local CA, but it is essentially
the same process of setting up a chain of trust for your source of
information and then of asserting that information in a certificate.

> Now, when I read the sections around Page 6 of the draft...
>    Mutual Host Authentication
>       In this type of deployment, the client possesses a unique global
>       identity (e.g., a certificate).  As part of the TLS handshake,
>       both peers authenticate using the presented TLS identities.  If
>       authentication of either peer fails, or if authorization based on
>       those identities blocks access to the server, the client
>       association MUST be rejected.
> For the above, the client does not possess a unique global identity,
> it might more correctly be called a "site local identity" that the server
> can authenticate.
> Is the "unique global identity" requirement necessary? It seems to me
> that a site local CA issued certificate might be appropriate.
> (RFC 5280 page 12, second (a) item seems to allow site local CA
>  certificates).

It might be better to word in terms of the language of chains of
trust. "...the client possesses an identity (e.g. a certificate) that
is backed by a trusted entity."

> Also, w.r.t. server certificates, the draft says:
>    Each RPC server that supports RPC-over-TLS MUST possess a unique
>    global identity (e.g., a certificate that is signed by a well-known
>    trust anchor).  Such an RPC server MUST request a TLS peer identity...
> I wonder if the above must be a MUST?
> For example, I have an NFS server at home. It doe not have a well known
> fixed DNS address (residential internet connection, where it sits behind
> a NAT gateway where the address stays the same most of the time).
> --> If I want to mount this server from anywhere, I do want to use TLS
>       so that data is encrypted on the wire. Although it would be nice for
>       the laptop to be able to verify the server's identity, I don't see how I
>       can get a certificate for it from a well known trust anchor. I can live
>       with it having a self-signed certificate.
>
> Also, although an NFS server administrator can get a certificate from a
> well known trust anchor, it might cost $$ or it might not be easy. (Lets
> Encrypt expects to be able to use ACME on a web site or similar to issue
> a certificate, if I understand their setup?)
>
> Acquiring a certificate from a "well known trust anchor" might be a
> significant effort that will discourage use of TLS. (Again, you can easily
> create a self-signed certificate with a couple of openssl commands.)
> --> Maybe this could be a recommendation instead of a MUST and
>        the choice of accepting a self-signed certificate be left up to the
>        client via configuration?
>
> So, what do others think about this? rick
>
>
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org<mailto:nfsv4@ietf.org>
> https://www.ietf.org/mailman/listinfo/nfsv4

_______________________________________________
nfsv4 mailing list
nfsv4@ietf.org<mailto:nfsv4@ietf.org>
https://www.ietf.org/mailman/listinfo/nfsv4