Thanks for the reply, Andrej.  Additional comments below.

On 5/10/18 10:45, Andrej Ota wrote:
>>>> 9.1.  General Security of The Protocol
>>>>
>>>>   TACACS+ protocol does not include a security mechanism that would
>>>>   meet modern-day requirements.  Support for MD5-based crypto pad
>>>>   encryption fails to provide any kind of transport integrity, which
>>>>   presents at least the following risks:
>>>>
>>>>      Accounting information may be modified by the man-in-the-middle
>>>>      attacker, making such logs unsuitable and untrustable for auditing
>>>>      purposes.
>>>>
>>>>      Only the body of the request is encrypted which leaves all header
>>>>      fields open to trivial modification by the man-in-the-middle
>>>>      attacker.  For this reason, connections with
>>>>      TAC_PLUS_UNENCRYPTED_FLAG are disallowed, as mentioned in the
>>>>      recommendations section.
>>>
>>> JC: Disallowed for discouraged?  This is a doc defining a
>>> currently-deployed protocol.  Implementations MAY allow for this to
>>> work.  However, from a best current practice standpoint, this should be
>>> strongly discouraged.
> 
> So strongly to put it as SHOULD NOT or just "strongly"?

I think SHOULD NOT is fine.

> 
> 
> 
> I think this paragraph is a bit wonky as well as it sounds to me like header 
> is vulnerable, but the "encrypted" body isn't, which is very far from the 
> truth.
> 
> One thing is s/encrypted/obfuscated/.

Good catch.

> 
> The other thing is lack of integrity checking and known or chosen plaintext 
> combo leading to MitM, where I can claim I'm Ann or Bob, even though my 
> authorization attempt was using username Eve in most trivial of ways. I 
> wouldn't want to even remotely imply that the obfuscation is somewhat saver 
> that plain-text header, when I can do trivial MitM things like this.

I think additional clarification as to why this should not be used is
good.  I just want the document to maintain its connection to the fact
that T+ is deployed today.  While we can influence new implementations,
this is an informational doc on how this protocol is currently designed
while documenting known pitfalls to hopefully avoid.

>>>
>>>
>>>> 9.3.  Security of Authorization Sessions
>>>>
>>>>   Authorization sessions MUST be used via secure transport only as it's
>>>>   trivial to execute a successful man-in-the-middle attacks that
>>>>   changes well-known plaintext in either requests or responses.
>>>
>>> JC: Your statement makes a lot of sense, but I struggle with how this
>>> can be achieved in the current implementation of T+.  To use normative
>>> language here, you are saying that all T+ servers and all NASes must
>>> implement something like an IPSec tunnel to exchange authz details?
>>> Again, I get the recommendation, but in light of existing, interoperable
>>> implementations, I don't see this being a reality.
>>>
> 
> Maybe we could reword this that it would be clear to the audience that one 
> could also declare a transport path where it's very unlikely to perform a 
> MitM, to be secure enough for the purpose of this RFC.
> 
> Ideally the RFC should make it clear that it is up to the operator to 
> determine what technology to deploy (IPSec or steel pipes without dynamic 
> routing protocols both work for me), but they should be acutely aware that no 
> matter what they do, T+ is inherently MitM prone and they really, really 
> should act accordingly.

Agreed.  I think some rewording is good.  In that context, I think
strong normative text is fine as there are options to a NAS-to-server
IPSec tunnel.

> 
>>>
>>>> 9.6.  TACACS+ Server Implementation Recommendations
>>>>
>>>>   The following recommendations are made when implementing a TACACS+
>>>>   server:
>>>>
>>>>   The Server SHOULD NOT accept any connections which have the
>>>>   TAC_PLUS_UNENCRYPTED_FLAG set and SHOULD reject those packets with
>>>>   applicable ERROR response for type of packet.
>>>>
>>>>   The configuration of dedicated secret keys per individual client MUST
>>>>   be supported by the Server implementation.  It is also recommended
>>>>   that Servers SHOULD warn administrators if secret keys are not unique
>>>>   per client.
>>>>
>>>>   If an invalid shared secret is detected, Servers MUST NOT accept any
>>>>   new sessions on a connection, and terminate the connection on
>>>>   completion of any sessions previously established with a valid shared
>>>>   secret.
>>>>
>>>>   The Server implementation must allow the administrator to mandate:
>>>
>>> JC: Should this be MUST?  I ask while still grappling with the use of
>>> such strong language for an informational doc citing recommendations
>>> when so many existing implementations exist in the wild.
> 
> This one is a mixed bag and maybe we should throw this one out and simply 
> state that plain login has one set of problems (e.g. clear-text passwords on 
> the wire), but CHAP has the other set of problems (e.g. central repository of 
> clear-text passwords).
> 
> Maybe we should clarify that and leave it to operators to decide which risk 
> is more acceptable in their environment.

That works for me.

> 
>>>
>>>>
>>>>   TAC_PLUS_AUTHEN_TYPE_CHAP for authen_type
>>>>
>>>>   TAC_PLUS_AUTHEN_METH_TACACSPLUS for authen_method in authorization
>>>>
>>>>   Minimum length for shared secrets.
>>>>
>>>> 9.7.  TACACS+ Deployment Best Practices
>>>>
>>>>   Due to above observations about the TACACS+ protocol, it is critical
>>>>   to only deploy it using secure transport.  A secure transport for
>>>>   TACACS+ is defined as any means that ensure privacy and integrity of
>>>>   all data passed between clients and servers.  There are multiple
>>>>   means of achieving this, all of them beyond the scope of this
>>>>   document.
>>>>
>>>>   Symmetric encryption key represents a possible attack vector at the
>>>>   protocol itself.  For this reason, servers SHOULD accept only those
>>>>   network connection attempts that arrive from known clients.  This
>>>>   limits the exposure and prevents remote brute force attacks from
>>>>   unknown clients.
>>>>
>>>>   Due to the security deficiencies of the protocol, it is critical that
>>>>   it be deployed in a secure manner.  The following recommendations are
>>>>   made for those deploying and configuring TACACS+ as a solution for
>>>>   device administration:
>>>>
>>>>      Secure the Deployment: TACACS+ MUST BE deployed over networks
>>>>      which ensure an appropriate privacy and integrity of the
>>>>      communication.  The way this is ensured will depend upon the
>>>>      organizational means: a dedicated and secure management network
>>>>      where available in enterprise deployments, or IPsec where
>>>>      dedicated networks are not available.
>>>
>>> JC: This dedicated and restricted network, I agree with.  This is
>>> realistic in the vast majority (if not all) of T+ implementations.  But
>>> this dedicated network is not necessarily secure in the IPSec sense.  I
>>> can run a physical wire from all NASes back to my T+ server, but that
>>> doesn't mean that the transport ensures integrity or confidentiality.
> 
> Hmm ... maybe we should not use the word "transport" above as this primes the 
> reader to start thinking about "OSI transport layer" or "Transport Layer 
> Security"

> 
> How can we better describe that private (and presumably physically reasonably 
> secure)  network infrastructure suffices, even though there's no integrity or 
> privacy guarantees in the crypto sense?

You could say like you stated above that ideally T+ is deployed over a
transport that is cryptographically secure (i.e., one that does ensure
integrity and confidentiality), or it is deployed onto a network that is
dedicated to T+ and thus physically isolated from other user traffic.

> 
> 
>>>
>>> JC: My (contributor) recommendation is to say MUST to this and SHOULD to
>>> the encrypted transport given that the latter is likely not done in the
>>> majority of deployments today (though I'm willing to hear the argument
>>> here).
> 
> So, if I understand correctly: MUST have network which is MitM-resistant and 
> sniffing-resistant (terms subject to further refinement) and SHOULD use some 
> kind of crypto to be on the safe side.

Yes, that's my recommendation.

Joe

_______________________________________________
OPSAWG mailing list
OPSAWG@ietf.org
https://www.ietf.org/mailman/listinfo/opsawg

Reply via email to