Re: [Isms] ISMS/SSH and notifications
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Isms] ISMS/SSH and notifications
--On Friday, May 16, 2008 01:40:46 PM +0300 Pasi.Eronen at nokia.com wrote:
> snmpSSHOutgoingTable:
>
> index:
> snmpSSHTransportAddress 192.0.2.1:162
> snmpSSHSecurityName "Alice"
> columns:
> snmpSSHUserName "Adam" (I say "I'm Adam")
> snmpSSHUserCredentialType 1 (1 = userPublicKey,
> 2 = userPassword,
> 3 = hostPublicKey
> ... enum list)
If you're going to do this, the correct thing to record is not a made-up
"credential type" number, but an ssh user auth method name. The problem is
that then you need some way to record information about the credentials to
be used (which may be one or more keys, or just a reference to something),
and that's going to be specific not only to the method being used, but also
potentially to the implementation and how it is configured.
For example, it's fairly straightforward that "publickey" requires a key
pair of some sort, and "password" requires a password, but what does
"keyboard-interactive" require? The answer is that it depends on how the
server implements keyboard-interactive and what questions it is going to
ask. Similarly, what does "gssapi-with-mic" require? Well, at a minimum
it requires a GSS-API mechanism OID, which is really not part of the
credential but a sub-negotiation parameter, like a public key algorithm
identifier. And then it's going to require some mechanism-specific
credentials; for example, if you're using the Kerberos GSS-API mechanism,
then you need some way to get a Kerberos ticket, which might involve
knowing a symmetric key, but might not, depending on your Kerberos
deployment.
In other words, this is difficult to standardize, and if we're going to
try, we had better leave holes into which it is possible to shove whatever
kinds of credentials are required, instead of telling someone that he can't
use SNMP with his existing authentication infrastructure (remember: this is
the goal of ISMS) because we didn't anticipate what form of credentials his
NO's would have.
In addition, while I don't think this is very common in practice, the SSH
protocol allows servers to require _multiple_ authentications with
different methods before granting a client access. So you probably
actually need a set of (method, credential) tuples.
> snmpSSHRemoteHostPublicKey +++ (the public key
> expected from peer)
Again, you can't assume a public key is involved. Not all SSH key exchange
mechanisms identify hosts by public keys. Some may use certificates, or
underlying security mechanisms that do not involve public keys at all.
What you actually end up needing here, I think, is a set of (keyex-method,
keyex-data, key-type, public-key) tuples, where either of keyex-method or
key-type can be "don't care". The implication is that the host is
legitimate if there is a tuple for which
- keyex-method matches the key exchange used
- keyex-data matches the host in some key-exchange-specific way
- key-type and public-key match the key presented by the host
For example, the list for the sshd running on my desktop machine might look
like this:
(*,*, 'ssh-rsa', 'AAAA...GR/E=')
(*,*, 'ssh-dss', 'AAAA.../HRU=')
('gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==', 'host at sirius.fac.cs.cmu.edu',
*,*)
The first two lines match my server's two public keys; the third allows use
of GSS-krb5 regardless of host key, as long as the service name matches.
On the SSH server side, I think you have a much easier time of it, because
SSH does more of the work for you. Once an SSH session is set up, the SSH
server knows the authenticated and authorized user name of the client. How
the authentication mechanisms work and how the server decides what
credentials are adequate to use what username are not things I believe are
in scope for ISMS. It might be appropriate for some group to define an SSH
server MIB someday that allows some configuration of this policy, but I do
not believe that is within our charter and I'm not convinced enough of the
SSH community is engaged in this group to get it right. Fortunately, we
don't have to -- simple use the SSH user name as the SNMP securityName, as
we had previously agreed, and the problem is solved. If people think it is
necessary to introduce a mapping from SSH user names to SNMP securityNames,
I won't object.
-- Jeff
_______________________________________________
Isms mailing list
Isms at ietf.org
https://www.ietf.org/mailman/listinfo/isms
Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.