MIT Kerberos V5-1.20.1

Introdução a MIT Kerberos V5

MIT Kerberos V5 é uma implementação livre do Kerberos 5. Kerberos é um protocolo de autenticação de rede de comunicação. Ele centraliza a base de dados de autenticação e usa aplicativos kerberizados para trabalhar com servidores ou serviços que suportem Kerberos, permitindo logins únicos e comunicação criptografada em redes internas de comunicação ou na Internet.

Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.

Informação do Pacote

  • Transferência (HTTP): https://kerberos.org/dist/krb5/1.20/krb5-1.20.1.tar.gz

  • Transferência (FTP):

  • Soma de verificação MD5 da transferência: 73f5780e7b587ccd8b8cfc10c965a686

  • Tamanho da transferência: 8,3 MB

  • Espaço em disco estimado exigido: 94 MB (adicionar 14 MB para os testes)

  • Tempo de construção estimado: 0,3 UPC (Usando paralelismo=4; adicione 5,8 UPC para os testes)

Dependências do MIT Kerberos V5

Opcionais

Utilitários BIND-9.18.12, GnuPG-2.4.0 (para autenticar o pacote), keyutils-1.6.1, OpenLDAP-2.6.4, Valgrind-3.20.0 (usado durante a suíte de teste), yasm-1.3.0, libedit, cmocka, kdcproxy, pyrad e resolv_wrapper

[Nota]

Nota

Algum tipo de recurso de sincronização de tempo em seu sistema (como o ntp-4.2.8p15) é necessário, pois o Kerberos não autenticaria se houvesse uma diferença de horário entre um cliente kerberizado e o servidor KDC.

Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/mitkrb

Instalação do MIT Kerberos V5

Construa MIT Kerberos V5 executando os seguintes comandos:

cd src &&

sed -i -e '/eq 0/{N;s/12 //}'    plugins/kdb/db2/libdb2/test/run.test &&
sed -i '/t_kadm5.py/d'           lib/kadm5/Makefile.in                &&

./configure --prefix=/usr           \
            --sysconfdir=/etc        \
            --localstatedir=/var/lib \
            --runstatedir=/run       \
            --with-system-et         \
            --with-system-ss         \
            --with-system-verto=no   \
            --enable-dns-for-realm &&
make

Para testar a construção, emita como o(a) usuário(a) root: make -k -j1 check. Alguns testes possivelmente falhem com a versão mais recente de dejagnu e glibc. Alguns testes possivelmente travem por um tempo longo e falhem se o sistema não estiver conectado a uma rede de comunicação.

Agora, como o(a) usuário(a) root:

make install &&

install -v -dm755 /usr/share/doc/krb5-1.20.1 &&
cp -vfr ../doc/* /usr/share/doc/krb5-1.20.1

Explicações do Comando

Os dois comandos sed removem os testes que são conhecidos por falharem.

--localstatedir=/var/lib: Essa opção é usada de forma que os dados variáveis de tempo de execução do Kerberos estejam localizados em /var/lib em vez de /usr/var.

--runstatedir=/run: Essa opção é usada de forma que a informação de estado em tempo de execução do Kerberos esteja localizada em /run em vez do obsoleto /var/run.

--with-system-et: Essa chave faz com que a construção use as versões instaladas do sistema do software de suporte à tabela de erros.

--with-system-ss: Essa chave faz com que a construção use as versões instaladas do sistema do software de interface de linha de comando do subsistema.

--with-system-verto=no: Essa chave corrige um defeito no pacote: ele não reconhece a própria biblioteca verto dele instalada anteriormente. Isso não é um problema, se reinstalar-se a mesma versão; mas, se estiver atualizando, [então] a biblioteca antiga é usada como a do sistema, ao invés de instalar a nova versão.

--enable-dns-for-realm: Essa chave permite que os domínios sejam resolvidos usando o servidor DNS.

--with-ldap: Use essa chave se desejar compilar o módulo de estrutura de retaguarda da base de dados OpenLDAP.

Configurando o MIT Kerberos V5

Arquivos de Configuração

/etc/krb5.conf e /var/lib/krb5kdc/kdc.conf

Informação de Configuração

Configuração do Kerberos
[Dica]

Dica

Você deveria considerar instalar algum tipo de dicionário de verificação de senha, de forma que consiga configurar a instalação para aceitar somente senhas fortes. Um dicionário adequado para usar é mostrado nas instruções do CrackLib-2.9.8. Observe que somente um arquivo pode ser usado, mas você pode concatenar muitos arquivos em um. O arquivo de configuração mostrado abaixo assume que você tenha instalado um dicionário em /usr/share/dict/words.

Crie o arquivo de configuração do Kerberos com os seguintes comandos emitidos pelo(a) usuário(a) root:

cat > /etc/krb5.conf << "EOF"
# Início /etc/krb5.conf

[libdefaults]
    default_realm = <EXAMPLE.ORG>
    encrypt = true

[realms]
    <EXAMPLE.ORG> = {
        kdc = <belgarath.example.org>
        admin_server = <belgarath.example.org>
        dict_file = /usr/share/dict/words
    }

[domain_realm]
    .<example.org> = <EXAMPLE.ORG>

[logging]
    kdc = SYSLOG:INFO:AUTH
    admin_server = SYSLOG:INFO:AUTH
    default = SYSLOG:DEBUG:DAEMON

# Fim /etc/krb5.conf
EOF

Você precisará substituir seu domínio e nome adequado do dispositivo para as ocorrências dos nomes <belgarath> e <example.org>.

default_realm deveria ser o nome do seu domínio mudado para TUDO EM MAIÚSCULAS. Isso não é obrigatório, mas tanto o Heimdal quanto o MIT o recomendam.

encrypt = true fornece encriptação de todo o tráfego entre clientes e servidores kerberizados. Não é necessário e pode ser deixado de lado. Se você deixá-lo desativado, [então] consegue encriptar todo o tráfego procedente do cliente para o servidor usando uma chave no aplicativo cliente.

Os parâmetros [realms] dizem aos aplicativos clientes onde procurar pelos serviços de autenticação do KDC.

A seção [domain_realm] mapeia um domínio para um reino.

Crie a base de dados do KDC:

kdb5_util create -r <EXEMPLO.ORG> -s

Agora você deveria povoar a base de dados com principais (usuários(as)). Por enquanto, apenas use seu nome normal de login ou root.

kadmin.local
kadmin.local: add_policy dict-only
kadmin.local: addprinc -policy dict-only <nome_login>

O servidor KDC e qualquer máquina executando processos de segundo plano de servidor kerberizados precisam ter uma chave de dispositivo instalada:

kadmin.local: addprinc -randkey host/<belgarath.exemplo.org>

Depois de escolher os padrões quando solicitado, você terá que exportar os dados para um arquivo de tabela de chave:

kadmin.local: ktadd host/<belgarath.exemplo.org>

Isso deveria ter criado um arquivo em /etc chamado krb5.keytab (Kerberos 5). Esse arquivo deveria ter permissões 600 (somente leitura e escrita por root). Manter os arquivos de tabela de chave do acesso público é crucial para a segurança geral da instalação do Kerberos.

Saia do aplicativo kadmin (use quit ou exit) e retorne ao prompt do shell. Inicie o processo de segundo plano KDC manualmente, apenas para testar a instalação:

/usr/sbin/krb5kdc

Tente obter um tíquete com o seguinte comando:

kinit <nome_login>

Você será solicitado(a) a fornecer a senha que criou. Depois de obter seu tíquete, você consegue listá-lo com o seguinte comando:

klist

Informação a respeito do tíquete deveriam ser exibidas na tela.

Para testar a funcionalidade do arquivo de tabela de chave, emita o seguinte comando como o(a) usuário(a) root:

ktutil
ktutil: rkt /etc/krb5.keytab
ktutil: l

Isso deveria despejar uma lista do principal do dispositivo, juntamente com os métodos de encriptação usados para acessar o principal.

Crie um arquivo ACL vazio que possa ser modificado posteriormente:

touch /var/lib/krb5kdc/kadm5.acl

Neste ponto, se tudo deu certo até agora, [então] você pode se sentir bastante confiante na instalação e configuração do pacote.

Informação Adicional

Para informação adicional, consulte a documentação para krb5-1.20.1 na qual as instruções acima são baseadas.

Unidade do Systemd

Se você deseja iniciar os serviços Kerberos na inicialização, [então] instale a unidade krb5.service incluída no pacote blfs-systemd-units-20220720 usando o seguinte comando:

make install-krb5

Conteúdo

Aplicativos Instalados: gss-client, gss-server, k5srvutil, kadmin, kadmin.local, kadmind, kdb5_ldap_util (opcional), kdb5_util, kdestroy, kinit, klist, kpasswd, kprop, kpropd, kproplog, krb5-config, krb5-send-pr, krb5kdc, ksu, kswitch, ktutil, kvno, sclient, sim_client, sim_server, sserver, uuclient e uuserver
Bibliotecas Instaladas: libgssapi_krb5.so, libgssrpc.so, libk5crypto.so, libkadm5clnt_mit.so, libkadm5clnt.so, libkadm5srv_mit.so, libkadm5srv.so, libkdb_ldap.so (opcional), libkdb5.so, libkrad.so, libkrb5.so, libkrb5support.so, libverto.so e alguns plugins sob a árvore /usr/lib/krb5
Diretórios Instalados: /usr/include/{gssapi,gssrpc,kadm5,krb5}, /usr/lib/krb5, /usr/share/{doc/krb5-1.20.1,examples/krb5}, /var/lib/krb5kdc e /run/krb5kdc

Descrições Curtas

gss-client

é um cliente de teste da API GSS

gss-server

é um servidor de teste da API GSS

k5srvutil

é um utilitário de manipulação da tabela de chaves do dispositivo

kadmin

é um utilitário usado para fazer modificações na base de dados Kerberos

kadmin.local

é um utilitário semelhante ao kadmin, mas se a base de dados for db2, [então] o cliente local kadmin.local, destina-se a executar diretamente no KDC mestre sem autenticação Kerberos

kadmind

é um servidor para acesso administrativo a uma base de dados Kerberos

kdb5_ldap_util (opcional)

permite que um(a) administrador(a) gerencie reinos, serviços Kerberos e políticas de tíquete

kdb5_util

é o utilitário de base de dados KDC

kdestroy

remove o conjunto atual de tíquetes

kinit

é usado para se autenticar no servidor Kerberos como um(a) principal e adquirir um tíquete que concede tíquete que consegue posteriormente ser usado para obter tíquetes para outros serviços

klist

lê e exibe os tíquetes atuais no cache de credenciais

kpasswd

é um aplicativo para mudar as senhas do Kerberos 5

kprop

pega uma base de dados principal em um formato especificado e a converte em um fluxo de registros de base de dados

kpropd

recebe uma base de dados enviada pelo kprop e a grava como uma base de dados local

kproplog

exibe o conteúdo do registro de atualização da base de dados KDC na saída gerada padrão

krb5-config

fornece informação a respeito do como vincular aplicativos a bibliotecas

krb5kdc

é o servidor Kerberos 5

krb5-send-pr

envia um Informe de Problema (IP) para um sítio central de suporte

ksu

é o aplicativo de superusuário(a) que usa o protocolo Kerberos. Exige um /etc/shells configurado adequadamente e ~/.k5login contendo principais autorizados a se tornarem superusuários(as)

kswitch

torna o cache especificado de credenciais o cache primário para a coleção, se uma coleção de cache estiver disponível

ktutil

é um aplicativo para gerenciar tabelas de chave do Kerberos

kvno

imprime os números de versão de chave dos principais do Kerberos

sclient

é usado para contactar um servidor de amostra e autenticar-se nele usando tíquetes Kerberos 5 e, em seguida, exibir a resposta do servidor

sim_client

é um simples aplicativo cliente de amostra baseado em UDP, para demonstração

sim_server

é um simples aplicativo servidor baseado em UDP, para demonstração

sserver

é o servidor de amostra Kerberos 5

uuclient

é outro cliente de amostra

uuserver

é outro servidor de amostra

libgssapi_krb5.so

contém as funções Generic Security Service Application Programming Interface (GSSAPI) que fornecem serviços de segurança para chamadores de forma genérica, compatíveis com uma variedade de mecanismos e tecnologias subjacentes e, portanto, permitindo a portabilidade de nível de fonte de aplicativos para diferentes ambientes

libkadm5clnt.so

contém as funções administrativas de autenticação e verificação de senha exigidas pelos aplicativos Kerberos 5 do lado do cliente

libkadm5srv.so

contém as funções administrativas de autenticação e verificação de senha exigidas pelos servidores Kerberos 5

libkdb5.so

é uma biblioteca de acesso à base de dados de autenticação/autorização Kerberos 5

libkrad.so

contém a biblioteca interna de suporte para a funcionalidade RADIUS

libkrb5.so

é uma biblioteca Kerberos 5 multifuncional