> Hi Douglas et al.,
> 
> I'd suggest to reduce your proposed model to:
> 
> - The TACACS+ authentication is extended to allow the TACACS+
> client to request the SSH client's public key from the TACACS+ server,
> based on the client's public key fingerprint, for verification.
> 
> This results in a simple one-time request-response exchange for each key
> the client presents:
> 
>  1. SSH client connects to SSH server (once)
>  2. SSH server calculates public key fingerprint/hash
>  3. SSH server queries TAC+ server for user/fingerprint
>  4. TAC+ server replies with PASS and fingerprint, or FAIL
>  5. SSH server verifies fingerprint
>      1. if match: continue with next step
>      2. if not match: continue with next client key (step 2)
>  6. SSH server accepts connection based on fingerprint match

Hey Marc,
Thanks for your suggestion.  It is a great idea.  We would like to ask
or present a few clarifying questions or comments, as follows.

Does the Tacacs Server return the matching key to the Tacacs Client or
the fingerprint?  In step 4, you wrote fingerprint, but wrote key below.
We believe returning the key is not strictly necessary, but might be
necessary to fit into the openssh AuthorizedKeysCommand behavior, and is
not a burden.

We think that you are suggesting that both the Tacacs Server *and* the
Tacacs Client/SSH Server validate the key, rather than the SSH server
blindly accepting the Tacacs PASS/FAIL.  Is that correct?

We think that the hash type for the fingerprint must be included in the
packets between the Tacacs speakers.  The hash type has changed before and
we should expect it will change again.

Are you suggesting the tacacs exchange of fingerprints be binary or encoded
to an ascii representation?  I presume base64 encoded.

Does step 5.2 imply a Tacacs session per-key offered by the SSH client,
or a continuation of the existing session?  Suspect you are omitting the
detail here, but a continuation is our expectation.

It seems like there must be a step 7, where the Tacacs Client informs the
Tacacs Server of the result of Step 2 (eg: no more keys to offer) or 6 (eg:
fingerprint match result).

> This is even compatible with OpenSSH's "AuthorizedKeysCommand" model. It
> can't get easier than that, and it just works.
> 
> On the TAC+ side:
> 
>   * #define TAC_PLUS_AUTHEN_TYPE_SSHKEY or whatever (my PoC code uses
>     "8", but YMMV)
>   * let the TAC+ client start an authC request with that code, with
>     username set and the data field set to the key hash
>   * let the TAC+ server return an approriate return code, with the
>     public key in the data field, preferably in OpenSSH format
      ^^^^^^^^^^

We, or I, do not understand the argument for the openssh format.  The
ietf has the rfc4716 format.  Why wouldn't we use that?  I realize that
might be a whole lot of opinion, which is ok.

> Please support this approach. I've even managed to released PoC code for
> that, which virtually proves that all this is trivial to implement, both
> on the client and server side.

We'd like to see your code, if you can share it.

> Thanks,
> 
> Marc

Thanks again, Marc.

Prost

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

Reply via email to