Estou tendo problemas para exportar e importar chaves Kerberos para openafs.
Meu primeiro problema é que ao usar comandos addprinc
e ktadd
em kadmin.local
, a opção de tipo de chave de criptografia -e
parece ser ignorada. Por exemplo, quando tento adicionar uma chave do tipo des-cbc-crc:v4
, uma chave do tipo aes256-cts-hmac-sha1-96
parece ser adicionada:
kadmin.local: ktadd -e des-cbc-crc:v4 -k /tmp/afs.ktab afs
Entry for principal afs with kvno 4, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/tmp/afs.ktab.
Entry for principal afs with kvno 4, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/tmp/afs.ktab.
O mesmo acontece com addprinc, tento especificar -e DES-CBC-CRC:md5
o tipo de chave, mas isso parece ser ignorado e acabo com uma aes128-cts-hmac-sha1-96
chave:
$ kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local: addprinc -policy service -randkey -e DES-CBC-CRC:md5 afs
WARNING: policy "service" does not exist
Principal "[email protected]" created.
kadmin.local: getprinc afs
Principal: [email protected]
Expiration date: [never]
Last password change: Mon May 27 18:22:21 EDT 2024
Password expiration date: [never]
Maximum ticket life: 0 days 10:00:00
Maximum renewable life: 7 days 00:00:00
Last modified: Mon May 27 18:22:21 EDT 2024 (root/[email protected])
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 2
Key: vno 1, aes256-cts-hmac-sha1-96
Key: vno 1, aes128-cts-hmac-sha1-96
MKey: vno 1
Attributes: REQUIRES_PRE_AUTH
Policy: service [does not exist]
kadmin.local:
Além disso, quando tento importar essa chave usando asetkey
, recebo uma mensagem de erro ilegível:
sudo asetkey add 4 /tmp/afs.ktab afs
asetkey: unknown RPC error (-1765328203) for keytab entry with Principal [email protected], kvno 4, DES-CBC-CRC/MD5/MD4
Lendo a asetkey
página de manual, vejo uma forte recomendação contra o uso do des-cbc-crc
tipo de chave e a rxkad-k5
extensão:
A modern AFS cell should be using the rxkad-k5 extension, or risks terribly insecure operation (complete cell compromise for $100 in 1 day). The
keys used for rxkad-k5 operation are stored in the KeyFileExt. Cells not using the rxkad-k5 extension (i.e., stock rxkad) use keys of the des-cbc-
crc encryption type, which are stored in the KeyFile.
Lendo mais, a KeyFileExt
página de manual diz que tentar adicionar rxkad-k5
chaves requer a especificação de a krb5 encryption type number
, que é distinto de um identificador de string:
Using asetkey(8) to add rxkad-k5 keys to the KeyFileExt also requires specifying a krb5 encryption type number.
Since the encryption type must be specified by its number (not a symbolic or string name), care must be taken to determine the correct encryption
type to add.
Estou preso com muitas questões relacionadas:
Por que
kadmin
parece ignorar meu tipo de criptografia especificado?Como posso determinar se meu openafs está usando a
rxkad-k5
extensão? Eu procurei pacotes debian viaapt-cache search rxkad-k5
erxkad
não encontrei nada.Como
aes256-cts-hmac-sha1-96
se parece com um identificador de string, como posso determinar o "número do tipo de criptografia krb5" para esta criptografia para importá-la via asetkey?Percebi
openafs-krb5
que é um pacote separado doopenafs-{fileserver,dbserver,client}
. Existe uma maneira recomendada de gerenciar a autenticação openafs no debian sem configurar o kerberos?Descobri que
akeyconvert
afirma ajudar na importação de chavesfrom the krb5 keytab format to the KeyFileExt format
. Devo usarakeyconvert
para converter minhaafs.keytab
chave em openafs?
Depois de ler mais sobre
akeyconvert
, parece que é a ferramenta que eu precisava para importar chavesopenafs
. A ferramenta espera encontrar akrb5
chave de entrada/etc/openafs/server/rxkad.keytab
e gerar a chave compatível com openafs em/etc/openafs/server/KeyFileExt
:O MIT Kerberos desativou o DES único por padrão no Krb5 1.17 (com a
allow_weak_crypto
opção de reativá-lo) e removeu completamente o suporte ao DES único no Krb5 versão 1.18.Muito provavelmente, porém, você não precisa disso; todas as versões recentes do OpenAFS ( 1.6.5 ou posterior , com backport para 1.4.15+) suportam chaves de serviço não-DES – se você tinha uma
rxkad.keytab
antes, então já estava executando uma versão do OpenAFS que tinha suporte para rxkad-k5.rxkad-k5 e rxkad-kdf foram adicionados no OpenAFS 1.6.5 (e portados para 1.4.15 para a série 1.4).
Todas as versões do OpenAFS usadas
KeyFileExt
(ou seja, 1.8.x) já suportam rxkad-k5 e rxkad-kdf.Mesmo o rxkad-k5 original já está obsoleto, pois ainda espera que o KDC retorne chaves de sessão DES no ticket Kerberos (devido ao formato de token rxkad do AFS ter espaço apenas para uma chave de sessão de 56 bits). Como isso não acontecerá mais com um KDC moderno, você
aklog
usará uma variante chamada rxkad-kdf , que deriva a chave de sessão AFS de 56 bits de qualquer chave forte fornecida pelo ticket Kerberos.(De qualquer forma, ainda é uma chave de sessão de 56 bits... mas pelo menos tem uma vida útil muito limitada - ainda muito melhor do que ter uma chave de serviço de 56 bits que ninguém gira há séculos.)
Supõe-se que o OpenAFS 1.9 tenha suporte adequado ao Kerberos 5 via rxgk , mas isso levará mais uma ou duas décadas para ser lançado.
Você pode pesquisar no registro de parâmetros Kerberos da IANA .
Este pacote provavelmente existe por motivos de dependência de empacotamento (o Debian gosta de dividir as coisas) e/ou como uma relíquia da era kaserver do OpenAFS.
A autenticação AFS sempre foi baseada em Kerberos, mas originalmente tinha um
kaserver
componente que implementava um tipo AFS ligeiramente incompatível de Kerberos IV (ou seja, o "rxkad" original). O kaserver era essencialmente um KDC Kerberos IV com ferramentas de administração estilo AFS (o comando 'kas' semelhante a 'pts') e, claro, com replicação de banco de dados Ubik.(A propósito, é daí que vem a limitação "somente DES" do AFS - Kerberos IV suportava apenas DES e o kaserver AFS também, portanto, os tokens rxkad são dimensionados para caber apenas em chaves de 56 bits até hoje.)
Então, do ponto de vista do empacotamento Debian, alguns lançamentos atrás, você teria a opção de instalar um
aklog
que obtivesse tokens rxkad diretamente de um kaserver e umaklog
que obtivesse tickets Krb5 e os convertesse em tokens rxkad.Mas como o Krb4 está completamente obsoleto hoje em dia (ele tinha alguns problemas críticos além de ser limitado ao DES único), o kaserver foi removido do OpenAFS e você deve executar um KDC Kerberos 5 padrão ao lado.
Sim, você deveria usar
akeyconvert
, mas se quisesse usar asetkey, poderia ser feito assim: