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" <al...@deployingradius.com> wrote: >On May 20, 2017, at 8:24 AM, Douglas Gash (dcmgash) <dcmg...@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. > _______________________________________________ OPSAWG mailing list OPSAWG@ietf.org https://www.ietf.org/mailman/listinfo/opsawg