Re: [OPSAWG] draft-ietf-opsawg-tacacs-06 Contributions, Status and Plans

"Douglas Gash (dcmgash)" <dcmgash@cisco.com> Fri, 26 May 2017 17:05 UTC

Return-Path: <dcmgash@cisco.com>
X-Original-To: opsawg@ietfa.amsl.com
Delivered-To: opsawg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9EE0D129406; Fri, 26 May 2017 10:05:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.522
X-Spam-Level:
X-Spam-Status: No, score=-14.522 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.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 XTmTlUBfNorp; Fri, 26 May 2017 10:05:02 -0700 (PDT)
Received: from rcdn-iport-3.cisco.com (rcdn-iport-3.cisco.com [173.37.86.74]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3F0CD126B7F; Fri, 26 May 2017 10:05:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=10462; q=dns/txt; s=iport; t=1495818302; x=1497027902; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=IJ42bQsF7/gPeQR4R3tltiTuVyd52jIpcRwm24xDXxM=; b=bv1Kbaveo7GPNhRoiln29xhfuRHwIEn5keNtLFzjQylZKRVSF7LFc5sZ rnUTjHa2TbAyWH2OeN1C5IaOxzaXsFJatuVqB4spFKA/8ebrtdVJAZYoM Pz9vyrGhrmZACMarLHDboGdyfwwh+qgh6RaMBh8db53/R00Md+lgk//Xb 4=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AIAQCgXyhZ/4oNJK1cGQEBAQEBAQEBAQEBBwEBAQEBg1VigQ0Hg2iKGJFlcpUHgg8shXgCGoJwPxgBAgEBAQEBAQFrKIUZAQQBNEUQAgEIHBQUAgIwJQIEDgWKIggQjT+dWAaCKItVAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAWBBYc4gmg0hEMNAhQXN4I+gmYFniMBhx+MCIIGhTyKNYkBi0wBHziBCnQVhUkcgWN2AYZMgS+BDQEBAQ
X-IronPort-AV: E=Sophos;i="5.38,398,1491264000"; d="scan'208";a="239905466"
Received: from alln-core-5.cisco.com ([173.36.13.138]) by rcdn-iport-3.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 26 May 2017 17:05:01 +0000
Received: from XCH-RCD-014.cisco.com (xch-rcd-014.cisco.com [173.37.102.24]) by alln-core-5.cisco.com (8.14.5/8.14.5) with ESMTP id v4QH51IE010086 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Fri, 26 May 2017 17:05:01 GMT
Received: from xch-aln-014.cisco.com (173.36.7.24) by XCH-RCD-014.cisco.com (173.37.102.24) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Fri, 26 May 2017 12:05:00 -0500
Received: from xch-aln-014.cisco.com ([173.36.7.24]) by XCH-ALN-014.cisco.com ([173.36.7.24]) with mapi id 15.00.1210.000; Fri, 26 May 2017 12:05:00 -0500
From: "Douglas Gash (dcmgash)" <dcmgash@cisco.com>
To: Alan DeKok <aland@deployingradius.com>
CC: "opsawg@ietf.org" <opsawg@ietf.org>, "draft-ietf-opsawg-tacacs@ietf.org" <draft-ietf-opsawg-tacacs@ietf.org>
Thread-Topic: [OPSAWG] draft-ietf-opsawg-tacacs-06 Contributions, Status and Plans
Thread-Index: AQHSy08ttZSP0sW41keg1j/jrc0SIqHxblMAgADBTACAA2Ki4oAAEfVNgAB2p4CAAUHjJIAAZjOA///0HoCAABakgIABKmYAgASd+oCABMHUAIAE+m8A
Date: Fri, 26 May 2017 17:05:00 +0000
Message-ID: <D54DBEE7.23D0F4%dcmgash@cisco.com>
References: <D53BBCC7.22ECC8%dcmgash@cisco.com> <61D9FC7A-6F10-44E6-8400-578C4FEE1988@deployingradius.com> <D53C62F4.22F82E%dcmgash@cisco.com> <E7D62944-46B9-4091-BF16-0AF8CA47626D@deployingradius.com> <fc8a1ff5-db6f-d463-8ff7-77ec03f1f25f@gmail.com> <006101d2cd9c$e8c0afe0$4001a8c0@gateway.2wire.net> <D53FAB1A.23396E%dcmgash@cisco.com> <010d01d2ce79$477ceda0$4001a8c0@gateway.2wire.net> <D5411107.2340EF%dcmgash@cisco.com> <632EB4D0-15C0-4BF7-9187-9AFCD7EDE306@ll.mit.edu> <D54116DA.23412A%dcmgash@cisco.com> <6B9DFA23-41BD-4896-B80C-EC0EAB51D5FD@deployingradius.com> <D545E6EC.235D3D%dcmgash@cisco.com> <460D8E65-E5B1-4E32-9E5D-8965F2FB4F01@deployingradius.com>
In-Reply-To: <460D8E65-E5B1-4E32-9E5D-8965F2FB4F01@deployingradius.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/14.7.1.161129
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.55.1.6]
Content-Type: text/plain; charset="euc-kr"
Content-ID: <17CD968C4CD4E44EA01CC7EBBBB7B167@emea.cisco.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/opsawg/r0JfHZi4p9aImptIg4ivFzITzHk>
Subject: Re: [OPSAWG] draft-ietf-opsawg-tacacs-06 Contributions, Status and Plans
X-BeenThere: opsawg@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: OPSA Working Group Mail List <opsawg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/opsawg>, <mailto:opsawg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/opsawg/>
List-Post: <mailto:opsawg@ietf.org>
List-Help: <mailto:opsawg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/opsawg>, <mailto:opsawg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 26 May 2017 17:05:04 -0000

Hi Alan,

Thanks again for responses, please see inline:

Just for accounting: I do owe you an initial response to one batch of your
comments that I missed first item, and we have the security section as a
whole. Below though, are the responses to the comments form Tuesday,
thanks!

On 23/05/2017 15:03, "Alan DeKok" <aland@deployingradius.com> wrote:

>On May 20, 2017, at 8:24 AM, Douglas Gash (dcmgash) <dcmgash@cisco.com>
>wrote:
>>> If the field is unused, the spec should say the field is ignored, and
>>> treated as if it did not exist.
>> 
>> Agreed, though I¹m not sure how an unused field would not be ignored,
>> almost by definition,. The only circumstance I can think of where a
>>field
>> has data but is unused may not be ignored is for logging, are you
>>thinking
>> we should preclude such?
>
>  No.  Nut the draft needs to say what to do.
>
>  If the protocol has provisions for something to happen, then the draft
>needs to say what implementations should do when that thing happens.
>
>  In this case, it should state that unused fields are ignored, and
>treated as if they were not present.

Agreed, will clarify that, within the context of the protocol flow. These
may still be logged.


>
>>> The original RADIUS RFC used a secret key, but didn't forbid a key of
>>> zero length.  I ran into at least one vendor who didn't allow for the
>>> entry of secret keys, and always set it to a zero-length string.  The
>>> next rev of the RFC forbade that...
>> 
>> So I think the specification of secrets for obfuscated option is, as you
>> say, critical, and will provide some guidance such as non-empty. Also
>>will
>> make sure we include that servers MUST support capability of secret per
>> client-server tuple (see next comment).
>
>  And it should suggest a minimum secret length.
>
>> But I¹m not so sure what we should say about storage.
>
>  "secret keys need to be kept secret".

Sure, I’d hope this would be an axiom ;-) but not harm in emphasising.


> 
>
>>> OK. And if there's still no username?
>> 
>> Do you mean, if client replies to the request to
>> TAC_PLUS_AUTHEN_STATUS_GETUSER with an empty username. I would simply
>> repeat the request in case it was a user error. We can document this.
>>The
>> protocol has a built-in limit of the number of interactions due to the
>> seq_no, but implementations can limit interactions.
>> 
>> We can add this detail.
>
>  Thanks.  My $0.02 is that the username SHOULD be in the first packet.
>If not, it MUST be in the second packet.  If not, the session is broken,
>and the server returns ERROR.
>
>  i.e. relying on the 256 packet limit for authentication is probably too
>lax.

Sure, makes sense.


>
>...  RE: CHAP challenges and length
>>> That reply make implementation-specific assumptions.  There are TACACS+
>>> implementations which don't get the challenge from a third-party.
>> 
>> Just to clarify my comment: it is not an aspect of the processing of the
>> T+ protocol that chooses the challenge. The protocol will get the
>> challenge and response as pre-packaged unit.
>
>   If the protocol transports data without looking at it, it's fine to
>treat that data as an opaque blob.  If the protocol looks at the data,
>the draft should have requirements on the data format.
>
>   For an example, see:
>
>https://tools.ietf.org/html/rfc2865#section-5.40
>
>  The CHAP-Challenge attribute in RADIUS is defined to have at least 5
>octets of challenge data.



We can follow a similar path with T+. I Will add. (covers below comment
too).



>
>> So I think we can demand that challenges be generated according to the
>> spec for CHAP. But reaching into that spec to add our own criteria
>>would,
>> I think, be a mixing of concerns.
>
>  Nope.  The TACACS+ server which authenticates the user should be secure
>by design.  This means rejecting zero-length challenges, and challenges
>which "too short".
>
>  I would suggest that the challenges are a minimum of 8 octets in length.
>
>... RE: password changes.
>> Ok, I see what you mean. We can add the SHOULD not clause here.
>> 
>> Interesting though, as this is a significant use case for T+. Will be
>> insteresting to see what the main objects were for why it was removed
>>from
>> RADIUS.
>
>  It was insecure, and no one liked it.  The other reasons have been
>largely lost to time.
>
>>>>   The START and STOP flags are mutually exclusive.  When the WATCHDOG
>>>>   flag is set along with the START flag, it indicates that the update
>>>>   record is a duplicate of the original START record.
>>>> 
>>>> * why would an update duplicate the original START record?  This seems
>>>> redundant.
>>>> [Well, here we are constrained by a clear definition form original
>>>> draft.]
>>> 
>>> What does it mean, tho?  This document should say.  i.e. portions of
>>> the protocol should not be left as "we have no idea what this means".
>> 
>> I think it is more a case of: it is redundant, but it was specified, so
>>we
>> cannot choose to change it to make it more efficient.
>
>  It's not about being "more efficient".  It's about specifying what this
>means.
>
>  I have no idea what it means to duplicate a START record.  Is the data
>in the second START the same?  Is it different?  What is done in either
>case?
>
>  Again, you need to document the protocol.  I'm not sure this point is
>getting across.  If you don't know what a portion of the protocol means,
>then either find out and document it, or document that "this exists, but
>we have no idea what it is, what it does, and we don't recommend that
>people use it".
>
>  Leaving portions of the protocol entirely undefined and
>implementation-defined is bad.
>
>  In RADIUS, I've authored or co-authored about 4 RFCs fixing things
>which were missed or undefined, and which cause interoperability issues.
>And I'm still finding things which are broken in the specs.  Two in the
>last month, in fact...
>
>  If TACACS is to be a standard, it should be clear what portions are
>well defined, and what portions are "I dunno...".  That gives guidance
>for future drafts as to what works, and what needs fixing.

I think then I committed a misunderstanding here. I thought you were
suggesting to drop the redundant accounting request, now I realist your
comment is to explain why it is used. Sure, can clarify this.



>
>>>> * how often do the updates get sent?  Saying "implementation defined"
>>>>is
>>>> OK, but some recommendations would be good.  i.e. not more than 100x
>>>>per
>>>> second, and not less than 1 day apart (as extreme examples)
>>>> [so lets stick with implementation defined, the range of T+ devices we
>>>> see is so diverse and use cases are such that I would not like to
>>>> constrain.]
>>> 
>>> It would be good to have recommendations.  e.g. "updates more than once
>>> per second are NOT RECOMMEND, updates more than an hour apart are NOT
>>> RECOMMENDED".
>>> 
>>> The goal is to guide implementors to choosing values which won't cause
>>> problems for everyone else.
>> 
>> Sure, will recommend minimum of 5 seconds, but I¹m not sure we can
>>specify
>> an upper limit as it is not mandatory.
>
>   It's always good to recommend best practices, even if the behaviour
>isn't mandatory.


I was thinking rather about the scenario that it may not recur at all...
However, we can say: for recurring accounting, this is the range (5
seconds to 1 hour), or updates are not sent at all.

>
>  Alan DeKok.
>