[OpenAFS] Re: 'afs/' principal rekeying instructions may be incomplete
Peter Grandi
pg@afs.list.sabi.co.UK
Thu, 23 Jan 2014 19:18:58 +0000
>> [ ... ] results in the loss of the existing single-DES key
>> from the KDB,
> That is intentional and expected.
Perhaps it should be noted in the procedure then. I have noticed
that the language in the procedure is somewhat ambiguous on
keeping or removing the single DES keys from the principal, for
example:
"(even if the service principal contains a DES long-term key,
which is okay)."
I have appended the notes I had written based on the sometimes
ambiguous (in retrospect it is not always clear whether "key"
means the key in 'KeyFile' or in the KDB) language of the
upgrade procedures.
> It does not prevent any already-issued tokens from working, but
> it does make authentication not work correctly for any new
> tokens until you distribute the new rxkad.keytab file.
[ ... ]
> That part of the document is talking about the krbtgt/ service
> principal, which is a special case. If you retain the old DES
> key while rekeying the afs/ service principal, it doesn't
> really... do anything. At least, I can't think of any
> differences that actually results in.
As mentioned in another reply, I wonder about renewing existing
single-DES tickets from 'k5start', whether existing keytabs have
only single-DES entries, and whether there is any technical reason
why preserving the single-DES key is more risky than letting it
go.
> The KDC should only issue tickets encrypted with the new kvno,
Even if a 'k5start' keytab only contains single-DES keys? Even if
a ticket is being renewed? Then perhaps I should generated a new
single-DES key with the same KVNO as the new keys, and add it to
the 'KeyFile' too (as a colleague here mentioned as a
possibility).
> and after tickets are issued, the KDC will never look at the
> ticket again. This is different for the krbtgt/ service
> principal, since for that, the KDC _does_ need to look at the
> service ticket again after it's issued (for issuing other
> tickets).
Ah then I wonder then about renewals of tickets with single-DES
keys.
The notes mentioned above:
-----------------------------------------------------------------------=
-
* Phase 1: Add new keys to the principal
There is no simple afs principal.
** Crucial details for adding new keys
- The new keys must be added to the afs service principal, as the DES
keys need to continue to be used for already issued tokens.
- The keytab containing a copy of the new keys must contain only the
new keys and not the DES key(s):
> The default encryption types given by the KDC are probably fine,
> as long as single-DES is not one of them."
> Note that the resulting rxkad.keytab file must NOT contain any
> single DES keys (even if the service principal contains a DES
> long-term key, which is okay)."
* Phase 2: Activation of the new key and keytab
At some point the service principal must have both old and new
keys, and the new keys must be activated.
** Crucial details for activation
- The newly created keytab can contain multiple keys and all be looked
at:
> The Kerberos keytab format allows the rxkad.keytab to hold keys
> for both afs/cell@REALM and afs/cell@DOMAIN regardless of their
> respective kvnos. All keys in the rxkad.keytab will be tried for
> decrypting incoming requests,
- The new keys will be used immediately (without any need to restart th=
e
AFS server daemons) but only for new client connections as clients as=
k
for new tokens:
> Once the key is changed in the Kerberos database, any new service
> tickets issued to clients (e.g., by running aklog) will be
> encrypted with the new key; AFS servers will be able to decrypt
> the tokens generated from those service tickets as soon as the
> rxkad.keytab file is in place. [ =E2=80=A6 ] Since the KeyFile rema=
ins in
> place, existing AFS tokens continue to work."
Therefore connections to the AFS service will fail if:
* They use AFS tokens obtained after the new keys have been added.
* They are made before the corresponding keytabs have
been distributed to the servers and restarted. Thus the
extraction and copy should be as quick as possible:
> make the time gap between generating a new key in the Kerberos
> database and the installation of the rxkad.keytab on the AFS
> servers as small as possible.
- The old KeyFile key will be used for existing connections, including
those among AFS-servers:
> The creation of an rxkad.keytab file only changes the behavior of
> running server processes by allowing them to decrypt incoming
> tokens. Existing server-to-server connections will continue to use
> the preexisting printed tokens,
Therefore:
* bos services must at some point be restarted on all servers:
> so the next step is to use =E2=80=99bos restart -all=E2=80=99 to =
refresh the
> server-to-server communications. Again, there may be a
> user-visible =E2=80=99blip=E2=80=99 to clients accessing a server=
when its
> processes are restarted. =E2=80=99bos restart -bosserver=E2=80=99=
should not be
> needed at this step.
Note: this will fail if done remotely with a newly issued token,
because the new token will use the new keys, and the existing
daemon processes will only contain the old keys.
* Keep the old DES keys for a significant period:
> For a minimal-impact transition, the old keys in the KeyFile
> should be retained until all existing tokens have expired.
Phase 3: Completion
After the new keys are generated and activated both old DES and new key=
s
will be used for authentication, as in the rxkad-k5 scheme.
Eventually the old DES key should no longer be used. This can be done b=
y
making the KeyFile containing its copy unavailable, and then optionally=
purging the DES key from the service principal.
** Crucial details for completion
- The DES key can be removed from the afs service principal only if all=
clients have been upgraded:
> rxkad-kdf, permits the use of non-DES Kerberos session keys and
> removes the dependency on DES in the KDC. Unfortunately, this
> modification requires changes to the OpenAFS client software on
> every machine that makes authenticated connections to the cell.
- The OpenAFS server daemons will reconfigure and as a side effect stop=
using the keys in a removed KeyFile when they detect that CellServDB
is modified:
> Be sure to run =E2=80=99touch CellServDB=E2=80=99 so that the confi=
guration change
> is detected.
> The asetkey utility updates the =E2=80=9Clast modified=E2=80=9D tim=
e on the server
> CellServDB file so that the presence of the new key is detected
> immediately
- The client caches, as long as they include the rxkad patches (1.4.15,=
1.6.5, or equivalent with backports) don=E2=80=99t need restarting, b=
ecause
what matters is the tokens, which are not part of their state:
> Note that the client modifications to accommodate rxkad-kdf do not
> require a restart of the OpenAFS client in order to take effect.
> The modifications only affect the userspace tools used to acquire
> tokens.