Principal errado na requisição (SSH / GSSAPI / Kerberos / Debian)

2

Eu configurei duas VMs em uma rede "interna" (no sentido VirtualBox), sendo uma delas um servidor DNS (dns1.example.com) e a outra - um servidor admin KDC e Kerberos (kdc.example.com ). O padrão e o único domínio são EXAMPLE.COM. Ambas as máquinas usam o Debian Squeeze recém-instalado.

O problema: Eu posso fazer o login via ssh em kdc.example.com de kdc.example.com, mas não consigo fazer login via ssh em dns1.example.com.

Em kdc.example.com, o sshd no modo de depuração diz:

debug1: Unspecified GSS failure.  Minor code may provide more information
Wrong principal in request

debug1: Got no client credentials
debug3: mm_request_send entering: type 41
debug3: mm_request_receive entering
debug1: userauth-request for user tom service ssh-connection method gssapi-with-mic
debug1: attempt 2 failures 1
debug2: input_userauth_request: try method gssapi-with-mic
debug1: userauth-request for user tom service ssh-connection method gssapi-with-mic
debug1: attempt 3 failures 1
debug2: input_userauth_request: try method gssapi-with-mic

ponto em que o cliente é solicitado por uma senha. Um arquivo tcpdump processado pelo Wireshark mostra que houve alguma troca de pacotes criptografados, mas não posso deduzir mais como estão, bem, criptografados :). Depois de dois dias pesquisando, estou preso e gostaria de receber ajuda.

Ainda mais eu apreciaria qualquer conselho / links / dicas sobre uma estratégia geral de depuração de configuração, quando se trata de Kerberos e amigos. Por exemplo, estou sem ideias para procurar o que há de errado com 'Principal errado' e qual é o principal que o servidor recebe em vez do direito. Algo me diz que as aventuras reais ainda estão por vir:).

Abaixo estão as configurações e as saídas de diagnóstico. Espero não ter esquecido nada.

kdc:~# cat /etc/krb5kdc/kdc.conf 
[kdcdefaults]
    kdc_ports = 750,88

[realms]
    EXAMPLE.COM = {
        database_name = /var/lib/krb5kdc/principal
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
        acl_file = /etc/krb5kdc/kadm5.acl
        key_stash_file = /etc/krb5kdc/stash
        kdc_ports = 750,88
        max_life = 10h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        master_key_type = des3-hmac-sha1
        supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
        default_principal_flags = +preauth
    }

kdc:~# kadmin.local -q 'listprincs'
Authenticating as principal root/[email protected] with password.
K/[email protected]
host/[email protected]
host/[email protected]
host/[email protected]
host/[email protected]
kadmin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
krbtgt/[email protected]
root/[email protected]
[email protected]

kdc:~# cat /etc/ssh/sshd_config |grep '^[^#]'
Port 22
ListenAddress 172.16.3.3
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPIKeyExchange yes
GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes

/etc/krb5.conf é idêntico no kdc e no dns1.

dns1:~$ cat /etc/krb5.conf 
[libdefaults]
    default_realm = EXAMPLE.COM
    dns_lookup_realm = true
    dns_lookup_kdc = true 
    forwardable = true
[realms]
    EXAMPLE.COM={
        admin_server = kdc.example.com
    }
[domain_realm]
    example.com = EXAMPLE.COM
    .example.com = EXAMPLE.COM
[logging]
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmin.log
    default = FILE:/var/log/krb5lib.log

O TGT é transitável. No cliente ssh:

dns1:~$ klist -f
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]

Valid starting     Expires            Service principal
01/03/12 20:00:03  01/04/12 06:00:03  krbtgt/[email protected]
    renew until 01/04/12 20:00:00, Flags: FRIA
01/03/12 20:00:21  01/04/12 06:00:03  host/[email protected]
    renew until 01/04/12 20:00:00, Flags: FRAT

O Keytab também parece estar bem:

dns1:~# klist -k
Keytab name: WRFILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   5 host/[email protected]
   5 host/[email protected]
   5 host/[email protected]
   5 host/[email protected]

O DNS (incl. PTR, TXT, SRV) funciona como deveria.

dns1:~# cat /var/cache/bind/db.example.com 
$ORIGIN example.com.
$TTL    86400
@   IN  SOA dns1.example.com. root.example.com. (
            2012010301  ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
              86400 )   ; Negative Cache TTL
;
@   IN  NS  dns1.example.com.
dns1    IN  A   172.16.3.2
www IN  A   172.16.3.8
mail    IN  A   172.16.3.9
fed IN  A   172.16.3.100

kdc IN  A   172.16.3.3
;kds    IN  A   172.16.3.4

_kerberos   TXT "EXAMPLE.COM"

krb IN  CNAME   kdc

_kerberos._udp      SRV 0 0 88  kdc
_kerberos-master._udp   SRV 0 0 88  kdc
_kerberos-adm._tcp  SRV 0 0 749 kdc
_kpasswd._udp       SRV 0 0 464 kdc

dns1:~# cat /var/cache/bind/db.3.16.172.in-addr.arpa 
$ORIGIN 3.16.172.in-addr.arpa.
$TTL    86400
@   IN  SOA dns1.example.com. root.example.com. (
            2012010102  ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
              86400 )   ; Negative Cache TTL
;
@   IN  NS  dns1.example.com.
2   IN  PTR dns1.example.com.
3   IN  PTR kdc.example.com.

8   IN  PTR example.com.
9   IN  PTR mail.example.com.
    
por badbishop 03.01.2012 / 19:52

3 respostas

3

Descobri isso enquanto pesquisei exatamente o mesmo erro em uma nova compilação de servidor - apontei na direção certa :)

No meu caso, eu tinha DNS reverso incorreto - quando eu atualizava isso e limpava os caches dos meus servidores de nomes de cache, funcionava.

    
por 19.10.2012 / 11:24
2

Eu tenho que ser mais atencioso. Havia uma linha deixada em / etc / hosts resolvendo 127.0.0.1 para o FQDN (agora comentado):

kdc:~$ cat /etc/hosts
127.0.0.1   localhost
#127.0.0.1  kdc.example.com kdc
172.16.3.3  kdc.example.com kdc

Depois de limpar os principais relacionados do banco de dados e do keytab e reiniciar as duas VMs, tudo funciona conforme desejado. Ufff ...

    
por 04.01.2012 / 13:27
-4

Tente isso abaixo.

edite o arquivo / etc / ssh / sshd_config

encontre o PermitRootLogin no

altere PermitRootLogin = > sim

comando > /etc/init.d/sshd restart

    
por 20.06.2015 / 08:17