e.g. myserver.foo.local has an IP address of 10.250.20.10 and myserver.test has an IP address of 10.253.20.10 when inside the foo.local domain, but sees itself as 10.250.20.10 when inside the .test domain.
O endereçamento é geralmente irrelevante para o Kerberos, contanto que os clientes possam resolver os nomes DNS e falar com os servidores (enviar / receber pacotes IP).
myLogin$ kinit -V mylogin@test
mylogin@test's password:
kinit: krb5_get_init_creds: unable to reach any KDC in realm test, tried 0 KDCs
Você está tentando autenticar no test
realm. Para o Kerberos, isso não é o mesmo que o TEST
realm que você tem em krb5.conf - ao contrário dos domínios DNS ou domínios do AD, um nome de território Kerberos faz distinção entre maiúsculas e minúsculas.
Como o minúsculo test
realm não está em [reinos] em seu krb5.conf, kinit usa outros métodos para localizar o servidor KDC - ele procura por registros SRV _kerberos._udp.<realm>
do DNS após a conversão o reino de volta para um domínio DNS.
Por exemplo, quando você estiver fazendo a autenticação em relação a …@test
ou …@TEST
e não houver uma subseção [reinos] correspondente, você precisará de registros SRV em _kerberos._udp.test
no mínimo. (O Active Directory deve adicioná-los automaticamente.)
Use kinit mylogin@TEST
com o caso correto ou ajuste a configuração [realms] ou verifique se há registros SRV no seu domínio test
DNS apontando para o controlador de domínio.
(Além disso: Se você optar por usar o kinit mylogin@test
minúsculo, os KDCs do Active Directory reconhecerão o formato minúsculo, mas os tickets retornados terão o reino em maiúsculas canônicas e a maioria das versões kinit rejeitará o resposta incompatível. Você permitirá a canonização usando kinit -C
.)
Se o seu software cliente for o MIT Krb5, use export KRB5_TRACE=/dev/stderr
para obter mais informações sobre o que exatamente ele está fazendo. (macOS provavelmente usa Heimdal embora.)
2) Once done, how do I ensure that when connecting to myserver.test it uses the token derived from the kinit mylogin@test when attempting a connection?
Verifique qual tipo de cache de credenciais está sendo usado (como mostrado por klist
em "Cache de ticket" ou definido na variável de ambiente $ KRB5CCNAME).
O cache de credenciais "FILE:" tradicional só pode ter tickets para um principal de cliente em primeiro lugar. Se você kinit como mylogin @ TEST, você sempre estará usando tickets para mylogin @ TEST. Nesse caso, você terá que alternar manualmente entre diferentes caches, configurando $ KRB5CCNAME para diferentes caminhos.
$ export KRB5CCNAME="FILE:/tmp/krb5cc_1000_prod" && kinit user@PROD && klist
$ export KRB5CCNAME="FILE:/tmp/krb5cc_1000_test" && kinit user@TEST && klist
$ kset() { export KRB5CCNAME="FILE:/tmp/krb5cc_$(id -u)_$1"; }
$ kset prod && kinit user@PROD && klist
Ao usar o MIT Krb5, as caches de credenciais "DIR:" e (no Linux) "KEYRING:" suportam vários princípios de cliente de uma só vez. Você pode simplesmente copiar várias vezes, depois alternar a entidade 'ativa' usando kswitch
ou até definir regras personalizadas no arquivo ~/.k5identity
(man 5 k5identity).
Infelizmente, alguns programas importantes (como o smbclient ou o Apache Directory Studio) não entendem caches "DIR:" ainda (ou qualquer coisa exceto FILE: na verdade).
Ao usar o macOS, o mesmo que acima se aplica, mas acredito que o tipo de cache de credencial padrão seja "KCM:", o que pode provavelmente conter vários princípios do cliente. Ou talvez não ¯ \ _ (ツ) _ / ¯
O Windows funciona de maneira diferente; o cache do ticket é strongmente ligado à sua sessão de login e (novamente) suporta apenas um principal do cliente. Para iniciar programas como outro principal sem um logout / login completo, use runas /netonly
:
runas /netonly /user:mylogin@test cmd