Re: [nfsv4] AD review of draft-ietf-nfsv4-rpc-tls

Chuck Lever <chuck.lever@oracle.com> Thu, 16 April 2020 20:49 UTC

Return-Path: <chuck.lever@oracle.com>
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 7FB973A108C for <nfsv4@ietfa.amsl.com>; Thu, 16 Apr 2020 13:49:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.267
X-Spam-Level:
X-Spam-Status: No, score=-2.267 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.168, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=oracle.com
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 gxG06BQN-JNH for <nfsv4@ietfa.amsl.com>; Thu, 16 Apr 2020 13:49:10 -0700 (PDT)
Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) (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 12F6C3A108A for <nfsv4@ietf.org>; Thu, 16 Apr 2020 13:49:10 -0700 (PDT)
Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 03GKmHX0097666; Thu, 16 Apr 2020 20:49:04 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=content-type : mime-version : subject : from : in-reply-to : date : cc : content-transfer-encoding : message-id : references : to; s=corp-2020-01-29; bh=sC0pobkkW9NWTzSmDUZ74a1ePTPNvyTJ3weu1d7rRMU=; b=Z/250aJ+08Z2LBhSe0fnyyq7SuvGiwwLIe2hNKhUA4PKYiG10iIm/v9//qIUsBVZI7j5 xiaUTxb+48XWQoQ49sT3CTXZDRaSTTRg3oVxXny5tNIL3dEov+1sAlguH5tw4kS2vawE HoppR7Mi/hmBa/L7GeEX7WlhmlyrSXxTaSuz//qnad1yf/d4nSg8oIt2L5XEJiXS5Abn JPinCYjkWHZm0624ey7PWYXgE3wo1UAxZzaR/q9oI4MThDcKDCpX9h88XigRjWbAyFve pSa2kGKTXTzwva3P767d5YI3ZFxYD1/DSBF2KNxU6uDsjQXMcFCZnzv8OsFGvg8ISO/N Xw==
Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 30dn95uurj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 16 Apr 2020 20:49:04 +0000
Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 03GKl7fE072674; Thu, 16 Apr 2020 20:49:03 GMT
Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3020.oracle.com with ESMTP id 30emep0g0d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 16 Apr 2020 20:49:03 +0000
Received: from abhmp0016.oracle.com (abhmp0016.oracle.com [141.146.116.22]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 03GKn2lM032031; Thu, 16 Apr 2020 20:49:02 GMT
Received: from anon-dhcp-153.1015granger.net (/68.61.232.219) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 16 Apr 2020 13:49:01 -0700
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <4e7912c6c55680f50b05aaa2cdc98f59733cd5b2.camel@ericsson.com>
Date: Thu, 16 Apr 2020 16:49:00 -0400
Cc: Trond Myklebust <trondmy@gmail.com>, "nfsv4@ietf.org" <nfsv4@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <D807E24F-6770-4564-B3CC-EDA86B2E0F3B@oracle.com>
References: <VI1PR0702MB3775838FD12AB8A89392C17B95C90@VI1PR0702MB3775.eurprd07.prod.outlook.com> <FA2D661E-A787-4772-8F9D-A7594AE82F38@oracle.com> <CADaq8jciLWhL_FMmPcsdrVVS=9Gee8SYAsqi36H5v9iuNo7Pgw@mail.gmail.com> <E414F060-532B-4017-AC7E-5869884B2153@oracle.com> <e5796752c6204ffdd78503b1a9c9045cfd761e52.camel@gmail.com> <F9AC44CE-750E-416A-944D-E2382524020E@oracle.com> <19d2513b1093fc71223e361afca90d1a1ad6183a.camel@gmail.com> <E8D24949-C2A3-463A-953F-FAE7F46D4D23@oracle.com> <4e7912c6c55680f50b05aaa2cdc98f59733cd5b2.camel@ericsson.com>
To: Magnus Westerlund <magnus.westerlund@ericsson.com>
X-Mailer: Apple Mail (2.3445.104.11)
X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9593 signatures=668686
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 spamscore=0 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2004160144
X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9593 signatures=668686
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 clxscore=1015 malwarescore=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 mlxscore=0 phishscore=0 spamscore=0 impostorscore=0 suspectscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2004160144
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/PhHpcEDtzOgND9gRlA7gEfr4Epg>
Subject: Re: [nfsv4] AD review of draft-ietf-nfsv4-rpc-tls
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: Thu, 16 Apr 2020 20:49:12 -0000


> On Apr 16, 2020, at 4:30 PM, Magnus Westerlund <magnus.westerlund@ericsson.com> wrote:
> 
> Hi, 
> 
> I have reviewed the text proposal and have this comment. 
> 
> On Tue, 2020-04-14 at 11:39 -0400, Chuck Lever wrote:
>>   o  If a client uses an ephemeral source port for a TCP connection and
>>      does not present authentication material to initiate TLS host
>>      authentication, the server MUST abort the TLS handshake with a
>>      handshake_failure alert.
> 
> So what is this paragraph trying to say really. Is this a mix of OS/Socket level
> concerns with the transport protocol level.

NFS server implementations have traditionally required clients to use a
privileged source port when using weak authentication like AUTH_SYS.
When a client uses a flavor like krb5 that provides strong host
authentication, the privileged source port requirement is waived.

This bullet simply states that the server does not have to require a
privileged source port when using TLS, just like with krb5/i/p. So
a client using AUTH_SYS with TLS would be permitted to use an ephemeral
source port, which is a much less rare resource than a privileged source
port.

We could leave this statement for a subsequent NFS-specific document
but there are some non-NFS user space RPC implementations that have
the same requirement.

Or, I could move this bullet to the Security Considerations section.


> Becasue from my perspective, I don't
> see why it would matter if the NFS client use a single arbitrary source port for
> its TCP connection to the server, where it determines that it has reached the
> server with a requested SNI. After the TCP connection has been established it
> will have a specific 5-tuple. Then the client use RPC level authentication to
> prove to the server which user it is. Yes, that has certain weakness in that it
> doesn't identify the client host system, however for cases where one don't
> require that.  
> 
> 
> So related to my AD reveiw comment:
> 
>> 6. Section 5.1.1:
>>   After establishing a TLS session, an RPC server MUST reject with a
>>   reject_stat of AUTH_ERROR any subsequent RPC requests over a TLS-
>>   protected connection that are outside of a TLS session.
>> 
>> I assume this is actually bound to a host or a user identity? Because reading
>> the above sentence immediately made me ask how can the RPC server determine
>> that the RPC request is coming from an entity that already has an TLS session?
>> Can you please clarify this question?
> 
> For TCP I think the new text addresses this to simply stating the fact that once
> the TLS connection is established over the TCP connection it is impossible to
> use it in an non-secured way. 
> 
> However, for UDP I think an aspect of this question remains. 
> 
>>   Once an RPC client establishes a DTLS session for an RPC program, the
>>   RPC server MUST reject UDP-transported Calls in that RPC prgram from
>>   that RPC client that are not protected by the established DTLS
>>   session.
>> 
> 
> Is this on a per 5-tuple level? Can you make that explicit. If not can you
> please specify in which way the server will make the deterination that they
> should be in some other 5-tuple an the associated DTLS association?

Sure. I will try to make this more specific. I'll propose something in a
day or two.


> My understanding of DTSL is that over UDP for incoming packets it will look at
> the 5-tuple, The destination port for which DTLS server/client that receives the
> packet. And the source port + address for determining security context. After an
> DTLS association has been created on a 5-tuple incoming UDP datagram payloads
> needs to contain either DTLSplaintext or DTLS cipher text (see Section 4.1 of 
> https://datatracker.ietf.org/doc/draft-ietf-tls-dtls13/). If it doesn't match or
> succesfully deprotects then the paylaod is rejected. Thus it will not be on the
> same 5-tuple possible to receive any unprotected datagrams.
> 
> For issue 7, this fully addresses that one.
> 
> For issue 8. I think it is clear that you need to do the RPC call to find out
> support and that is scoped to the transport protocol and 5-tuple the request was
> done to. That is all fine with me. So issue resolved.

Thanks for your review. I think the clarifications you requested make this a
stronger document.


--
Chuck Lever