Criando uma keytab com o ktutil

Estou agora dando prosseguimento ao último post sobre Linux autenticando no Active Directory usando SAMBA/KERBEROS/WINBIND, post esse destinado aos usuários do Ubuntu Precise 12.04

Qual a necessidade de se criar uma keytag para o Kerberos?

  • Uma vez feitas as configurações, seria necessário sempre dar um refresh no ticket que é gerado pelo kerberos junto ao Active directory. Ao reiniciar a máquina, o ticket não ganha um refresh automaticamente, surgindo assim a necessidade de se criar um script para que ele gere o ticket na inicialização da máquina. O grande problema seria colocar a senha em texto no script, o que causaria uma falha de segurança.
  • O keytag cria um hash criptografado que será usado para fazer a comunicação entre o kerberos e o Active Directory, evitando que você precise adicionar em modo texto as senhas de acesso ao seu servidor.

Então vamos à prática:

# ktutil     // iniciando o aplicativo

Para este caso, eu criei um usuário com permissão de domain admin no Active Directory e uma senha padrão. Este usuário será utilizado apenas para o refresh em todas as keytags nas inicializações das máquinas. O nome do usuário que eu criei foi  “principal”.

ktutil: addent -password -p principal@DOMINIO.LOCAL -k 1 -e rc4-hmac 
Password for principal@ADS.IU.EDU: [Digite agora a senha do usuário principal]
ktutil: addent -password -p principal@DOMINIO.LOCAL -k 1 -e aes256-cts 
Password for principal@ADS.IU.EDU: [Digite agora a senha do usuário principal]
ktutil: wkt username.keytab
ktutil: quit

O comando wkt username.keytab salva no arquivo “username.keytab” os dois hashs criados anteriormente. Vale salientar que ele vai criar o arquivo no diretório onde você estiver no momento, por isso aconselho estar no /etc/ quando executar a ferramenta.

Pronto! Nossa keytab foi criada. Mas, e agora? como fazer para que o ticket seja atualizado automaticamente?

Eu criei um pequeno script que é inicializado sempre que a máquina é iniciada. Segue abaixo:

# touch /etc/init.d/kticket.sh

# vim /etc/init.d/kticket.sh

#!/bin/bash
 # Script que reinicia o ticket do kinit para Active Directory
 # Criado por Humberto Junior - 06/09/2012
# Inicia o servico
 start() {
 echo -n "Iniciando recuperacao de Ticket: "
 /usr/bin/kinit principal@DOMINIO.LOCAL -k -t /etc/usuario.keytab &
 sleep 5
 echo "Ticket foi registrado com sucesso"
}
stop() {
 echo -n "Parando recuperacao de Ticket: "
 /usr/bin/kdestroy
 sleep 5
 echo "Ticket apagado"
 }
case "$1" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 status)
res=$(/usr/bin/klist)
echo "Status do Ticket:"
 echo $res
 ;;
 restart|reload|condrestart)
 stop
 start
 ;;
 *)
 echo $"Use com: $0 {start|stop|restart|reload|status}"
 exit 1
 esac
 exit 0

Vale lembrar que você deverá sempre mudar DOMINIO.LOCAL para o domínio que você usa na sua rede.

Mudando o script para executável

# chmod +x /etc/init.d/kticket.sh

Adicionando o script à inicialização automática do ubuntu

# update-rc.d kticket.sh defaults enable

Pronto, terminamos agora nosso tutorial. Só fazer o reboot da máquina e testar se tudo está OK!

[]’s

Anúncios
Etiquetado ,

25 pensamentos sobre “Criando uma keytab com o ktutil

  1. Rodrigo disse:

    Sabe como fazer com o “net ads join”? Pois alem do kerberos, tambem seria necessario automatizar o ingresso no dominio.

    No mais, excelente tutorial.

  2. Gustavo disse:

    Olá amigo!
    Primeiramente parabéns pelo post sensacional!
    Eu travei no ktutil. Acho que não tenho aqui.
    Como faço para instala-lo?

    • halencarjunior disse:

      Olá gustavo. Muito obrigado pelo Feedback.

      Em um post anterior onde falo sobre Autenticação linux em Active Directory eu inicio com as instalações dos pacotes necessários.
      Um abraço

      • Gustavo disse:

        Obrigado pela rapida resposta halencarjunior.
        infelizmente eu ainda estou travado no ktutil.
        Assim que entro com:

        ktutil: addent -password -p principal@DOMINIO.LOCAL -k 1 -e rc4-hmac

        Recebo
        No command ‘ktutil:’ found, did you mean:
        Command ‘ktutil’ from package ‘heimdal-clients’ (universe)
        Command ‘ktutil’ from package ‘krb5-user’ (universe)
        ktutil:: command not found

        😦

      • halencarjunior disse:

        você precisa instalar o pacote krb5-user

        # apt-get install krb5-user

  3. Gustavo disse:

    Isso eu tb não entendi…

    root@proxy:/usr/bin# ktutil:
    No command ‘ktutil:’ found, did you mean:
    Command ‘ktutil’ from package ‘heimdal-clients’ (universe)
    Command ‘ktutil’ from package ‘krb5-user’ (universe)

  4. Gustavo disse:

    Poxa cara, ainda da a mesma coisa… Estou usando um Ubuntu 12

  5. Arthur Melo disse:

    Tá dando esse erro aqui: kinit: Preauthentication failed while getting initial credentials.

    Fiz tudo de acordo com meu domínio, já está lendo os usuários do AD, quando uso o kinit funciona normalmente mas com o arquivo dos hashes não…

  6. natan disse:

    Se tem alguem ai me ajude! na hora de colocar o scrip na inicialização não funciona da o seguinte erro

    /etc/init.d/kticket.sh missing LSB information

    • halencarjunior disse:

      Tenta executar dessa forma:

      # sudo update-rc.d -f kticket.sh remove
      E depois
      # sudo update-rc.d kticket.sh defaults

      Faz isso dentro do diretório /etc/init.d

      • natan disse:

        Valeu mesmo por me responder,

        A mensagem que retornou foi essa:

        Se o script não funcionar tem alguma maneira de gerar uma nova key? Pois estou com uma maquina virtual que não consegui mais logar.

        update-rc.d: warning: /etc/init.d/kticket.sh missing LSB information
        update-rc.d: see
        Adding system startup for /etc/init.d/kticket.sh …
        /etc/rc0.d/K20kticket.sh -> ../init.d/kticket.sh
        /etc/rc1.d/K20kticket.sh -> ../init.d/kticket.sh
        /etc/rc6.d/K20kticket.sh -> ../init.d/kticket.sh
        /etc/rc2.d/S20kticket.sh -> ../init.d/kticket.sh
        /etc/rc3.d/S20kticket.sh -> ../init.d/kticket.sh
        /etc/rc4.d/S20kticket.sh -> ../init.d/kticket.sh
        /etc/rc5.d/S20kticket.sh -> ../init.d/kticket.sh

  7. halencarjunior disse:

    As últimas mensagens estão confirmando a adição do comando no startup do sistema.

    • natan disse:

      Muito obrigado por me responder amigo, infelizmente não rolou, expirou a key e não consigo mais logar kkkk
      tem como eu corrigir sem ter que refazer a máquina?

      • halencarjunior disse:

        Você pode entrar na máquina utilizando os métodos de recuperação de senha pelo Grub ou Lilo.

        http://www.vivaolinux.com.br/dica/Recuperando-a-senha-de-root-pelo-Grub

        Aí então é só refazer os passos no cliente e verificar se toda a comunicação do kerberos está sendo feita normalmente. Desabilite o script na inicialização e refaça os passos e todos os testes.

      • natan disse:

        CARA VC É O MAXIMO, está me ajudando muito.
        De vários tutoriais que segui o seu foi o único que pelo menos cheguei ao final.

        Recuperei a máquina, fiz tudo novamente, acontece que eu acho que o script roda, mas não está gerando a Key.
        Para teste eu rodei o script logo após criar ele, a mensagem que recebo uma mensagem de erro( Generic preauthentication failure while getting inicial credentials), mas o final retorna: TICKET FOI REGISTRADO COM SUCESSO.

        Mas se eu rodar o klist, diz : No credentials cache found.

        Se eu gerar o ticket manualmente como você ensinou no outro tutorial, e rodar o klist recebo a mensagem de geração do ticket, mas via script não consigo.

        Tem alguma ideia, ou luz do que pode estar rolando?

        Muito obrigado mesmo

      • halencarjunior disse:

        Me cole aqui no seu script essa linha do jeito que vocÊ configurou:

        /usr/bin/kinit principal@DOMINIO.LOCAL -k -t /etc/usuario.keytab &

        Também preciso saber qual o seu domínio e seu usuário com direitos administativos que você criou para essa comunicação

  8. natan disse:

    dominio: microsoft.com.br
    usuário: administrador

    /usr/bin/kinit administrador@MICROSOFT.COM.BR -k -t /etc/usuario.keytab & sleep 5

    Obrigado

    • halencarjunior disse:

      Você tem certeza de que gerou o arquivo corretamente e que ele está no diretório /etc/ com esse nome usuario.keytab ?

      Você pode tentar gerar novamente esse arquivo refazendo os passos antes do script.

      • natan disse:

        halencarjunior, obrigado pela ajuda. Refiz todo o processo com calma e atenção e funcionou perfeitamente.
        obrigado mais uma vez, salvou um trabalho 😀

  9. João Paulo disse:

    Excelente tutorial, está de parabéns. Havia testado diversos e nenhum funcionava, porém este foi de primeira.

    Estou apenas com um problema. O script não funciona na inicialização, ele exibe uma mensagem de erro informando que não encontrou o ‘realm’ e não funciona corretamente. Porém o script está correto pois se executado manualmente logo após o login ele funciona adequadamente. Será que o problema está na ordem de execução, tem idéia de como posso corrigir isto?

    Obrigado

    • halencarjunior disse:

      Olá,

      Talvez repassar todos os passos novamente para ter certeza de que tudo foi feito na ordem que está no tutorial. Ou até reaplicar tudo como está.

      • João Paulo disse:

        Pois é, já fiz isto e o erro continua. É como se ele não tivesse iniciado ainda o samba ou o kerberos e não consegue achar o “realm”. O mais curioso é que antes de aplicar ao servidor eu testei em uma maquina virtual e nem precisei fazer o script, as credenciais eram mantidas mesmo após a reinicialização.

      • João Paulo disse:

        Eu havia colocado um sleep de 5 segundos e parecia ter funcionado, então deixei pra ver isto mais tarde, porém, agora após terminar tudo descobri o que errei. Eu deixei em DHCP (com reserva de ip no servidor) e o ip demorava a ser configurado, agora que eu coloquei ip fixo voltou a funcionar como deveria (sem o sleep).

        Você saberia me dizer como fazer a conta do administrador ser reconhecida no servidor como o root ou do grupo do root?

        Obrigado,

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: