Differences

This shows you the differences between two versions of the page.

Link to this comparison view

servidor_kerberos_master_slave_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Servidor Kerberos Master/​Slave + Debian Squeeze ======
  
 +  - Nome servidor master: kdc1.douglasqsantos.com.br
 +  - IP servidor master: 10.0.0.25
 +  - Domínio: douglasqsantos.com.br
 +  - Realm: DOUGLASQSANTOS.COM.BR
 +  - Nome servidor slave: kdc2.douglasqsantos.com.br
 +  - IP servidor slave: 10.0.0.26
 +  - Domínio: douglasqsantos.com.br
 +  - Realm: DOUGLASQSANTOS.COM.BR
 +  - Nome cliente: cliente.douglasqsantos.com.br
 +  - IP cliente: 10.0.0.27
 +  - Domínio: douglasqsantos.com.br
 +  - Realm: DOUGLASQSANTOS.COM.BR
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +
 +Vamos preparar o ambiente primeiro ​
 +
 +Vamos acertar o /etc/hosts do servidor master
 +<sxh bash>
 +
 +vim /etc/hosts
 +127.0.0.1 ​      ​localhost
 +10.0.0.25 ​      ​kdc1.douglasqsantos.com.br ​      kdc1
 +10.0.0.26 ​      ​kdc2.douglasqsantos.com.br ​      kdc2
 +10.0.0.27 ​      ​cliente.douglasqsantos.com.br ​   cliente
 +</​sxh>​
 +
 +Vamos ajustar o nome do servidor master em /​etc/​hostname ​
 +<sxh bash>
 +
 +vim /​etc/​hostname
 +kdc1
 +</​sxh>​
 +
 +Vamos acertar o /etc/hosts do servidor slave 
 +<sxh bash>
 +
 +vim /etc/hosts
 +127.0.0.1 ​      ​localhost
 +10.0.0.25 ​      ​kdc1.douglasqsantos.com.br ​      kdc1
 +10.0.0.26 ​      ​kdc2.douglasqsantos.com.br ​      kdc2
 +10.0.0.27 ​      ​cliente.douglasqsantos.com.br ​   cliente
 +</​sxh>​
 +
 +Vamos ajustar o nome do servidor slave em /​etc/​hostname ​
 +<sxh bash>
 +
 +vim /​etc/​hostname
 +kdc2
 +</​sxh>​
 +
 +Vamos desabilitar o IPV6 nos dois servidores ​
 +<sxh bash>
 +
 +echo "​net.ipv6.conf.all.disable_ipv6=1"​ >> /​etc/​sysctl.conf
 +</​sxh>​
 +
 +Agora vamos reiniciar os dois servidores ​
 +<sxh bash>
 +
 +reboot
 +</​sxh>​
 +Agora vamos instalar as dependências para podermos trabalhar com o kerberos
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y && apt-get install ssh ntp ntpdate xinetd nmap -y
 +</​sxh>​
 +
 +Agora vamos instalar os serviços do servidor kerberos
 +<sxh bash>
 +
 +apt-get install krb5-{admin-server,​user} libpam-krb5 -y
 +</​sxh>​
 +
 +Responda as perguntas da seguinte forma somente mudando o domínio de acordo com a necessidade ​
 +  - DOUGLASQSANTOS.COM.BR
 +  - kdc1.douglasqsantos.com.br
 +  - kdc1.douglasqsantos.com.br
 +
 +Agora vamos acertar o Xinetd para ele fazer a propagação da base do kerberos
 +<sxh bash>
 +
 +vim /​etc/​xinetd.d/​krb_prop
 +service krb_prop
 +{
 +        disable ​        = no
 +        socket_type ​    = stream
 +        protocol ​       = tcp
 +        user            = root
 +        wait            = no
 +        server ​         = /​usr/​sbin/​kpropd
 +}
 +</​sxh>​
 +
 +Agora vamos reiniciar ele
 +<sxh bash>
 +
 +/​etc/​init.d/​xinetd restart
 +</​sxh>​
 +
 +Agora vamos criar o nosso domínio com o comando krb5_newrealm ​
 +<sxh bash>
 +
 +krb5_newrealm
 +This script should be run on the master KDC/admin server to initialize
 +a Kerberos realm. ​ It will ask you to type in a master key password.
 +This password will be used to generate a key that is stored in
 +/​etc/​krb5kdc/​stash. ​ You should try to remember this password, but it
 +is much more important that it be a strong password than that it be
 +remembered. ​ However, if you lose the password and /​etc/​krb5kdc/​stash,​
 +you cannot decrypt your Kerberos database.
 +Loading random data
 +Initializing database '/​var/​lib/​krb5kdc/​principal'​ for realm '​DOUGLASQSANTOS.COM.BR',​
 +master key name '​K/​M@DOUGLASQSANTOS.COM.BR'​
 +You will be prompted for the database Master Password.
 +It is important that you NOT FORGET this password.
 +Enter KDC database master key: #informe a senha
 +Re-enter KDC database master key to verify: #confirme a senha
 +
 +
 +Now that your realm is set up you may wish to create an administrative
 +principal using the addprinc subcommand of the kadmin.local program.
 +Then, this principal can be added to /​etc/​krb5kdc/​kadm5.acl so that
 +you can use the kadmin program on other computers. ​ Kerberos admin
 +principals usually belong to a single user and end in /​admin. ​ For
 +example, if jruser is a Kerberos administrator,​ then in addition to
 +the normal jruser principal, a jruser/​admin principal should be
 +created.
 +
 +Don't forget to set up DNS information so your clients can find your
 +KDC and admin servers. ​ Doing so is documented in the administration
 +guide.
 +</​sxh>​
 +
 +Agora vamos acertar as acls do kerberos
 +<sxh bash>
 +
 +vim /​etc/​krb5kdc/​kadm5.acl
 +[...]
 +*/admin *
 +admin *
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo de configuração krb5.conf
 +
 +Vamos fazer um backup do arquivo
 +<sxh bash>
 +
 +cp /​etc/​krb5.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora deixe ele como abaixo
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +        default_realm = DOUGLASQSANTOS.COM.BR
 +        forwardable = true
 +        proxiable = true
 +
 +[realms]
 +        DOUGLASQSANTOS.COM.BR = {
 +                kdc = kdc1.douglasqsantos.com.br
 +                admin_server = kdc1.douglasqsantos.com.br
 +        }
 +
 +[domain_realm]
 +        .douglasqsantos.com.br = DOUGLASQSANTOS.COM.BR
 +        douglasqsantos.com.br = DOUGLASQSANTOS.COM.BR
 +
 +[logging]
 +        kdc = FILE:/​var/​log/​krb5/​kdc.log
 +        admin_server = FILE:/​var/​log/​krb5/​kadmin.log
 +        default = FILE:/​var/​log/​krb5/​klib.log
 +</​sxh>​
 +
 +Agora vamos criar o diretório que vai armazenar os logs
 +<sxh bash>
 +
 +mkdir /​var/​log/​krb5
 +</​sxh>​
 +
 +Agora vamos configurar o logrotate para fazer rotação dos logs do kerberos
 +<sxh bash>
 +
 +vim /​etc/​logrotate.d/​krb5
 +/​var/​log/​krb5/​kadmin.log /​var/​log/​krb5/​kdc.log /​var/​log/​krb5/​klib.log {
 +        daily
 +        missingok
 +        rotate 7
 +        compress
 +        delaycompress
 +        notifempty
 +}
 +</​sxh>​
 +
 +
 +Agora vamos mudar o tempo de vida do ticket ​
 +<sxh bash>
 +
 +kadmin.local
 +Authenticating as principal root/​admin@DOUGLASQSANTOS.COM.BR with password.
 +#Vamos mudar o tempo de vida do ticket
 +kadmin.local: ​ modprinc -maxlife "1 day" -maxrenewlife "90 day" krbtgt/​DOUGLASQSANTOS.COM.BR
 +Principal "​krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR"​ modified.
 +kadmin.local: ​ q
 +</​sxh>​
 +
 +Agora vamos acertar o kdc.conf com o novo tempo de vida máximo do ticket
 +<sxh bash>
 +
 +vim /​etc/​krb5kdc/​kdc.conf
 +[...]
 +max_life = 1d 0h 0m 0s
 +max_renewable_life = 90d 0h 0m 0s
 +</​sxh>​
 +
 +Agora vamos reiniciar os serviços
 +<sxh bash>
 +
 +/​etc/​init.d/​krb5-admin-server restart ; /​etc/​init.d/​krb5-kdc restart
 +</​sxh>​
 +
 +Agora vamos criar o nosso admin 
 +<sxh bash>
 +
 +kadmin.local
 +Authenticating as principal root/​admin@DOUGLASQSANTOS.COM.BR with password.
 +#Vamos criar o admin
 +kadmin.local: ​ addprinc admin
 +WARNING: no policy specified for admin@DOUGLASQSANTOS.COM.BR;​ defaulting to no policy
 +Enter password for principal "​admin@DOUGLASQSANTOS.COM.BR":​ #informe a senha
 +Re-enter password for principal "​admin@DOUGLASQSANTOS.COM.BR":​ #informe a senha
 +Principal "​admin@DOUGLASQSANTOS.COM.BR"​ created.
 +kadmin.local: ​ q
 +</​sxh>​
 +
 +Agora vamos criar a nossa keytab e adicionar o nosso host 
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR:​ #informe a senha do admin
 +#Agora vamos criar um host no kerberos
 +kadmin: ​ addprinc -randkey host/​kdc1.douglasqsantos.com.br
 +WARNING: no policy specified for host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR;​ defaulting to no policy
 +Principal "​host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR"​ created.
 +#Agora vamos adicionar o host ao keytab
 +kadmin: ​ ktadd host/​kdc1.douglasqsantos.com.br
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/​etc/​krb5.keytab.
 +kadmin: ​ q
 +</​sxh>​
 +
 +Agora vamos aos testes, vamos criar um ticket para o nosso admin
 +<sxh bash>
 +
 +kinit admin
 +Password for admin@DOUGLASQSANTOS.COM.BR:​ #informe a senha
 +</​sxh>​
 +
 +Agora vamos confirmar se o nosso ticket foi criado
 +<sxh bash>
 +
 +klist
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: admin@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +10/10/11 11:​43:​59 ​ 10/11/11 11:​43:​58 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Agora vamos destruir o nosso ticket
 +<sxh bash>
 +
 +kdestroy
 +</​sxh>​
 +
 +Agora vamos listar novamente para confirmar que destruímos o ticket
 +<sxh bash>
 +
 +klist
 +klist: No credentials cache found (ticket cache FILE:/​tmp/​krb5cc_0)
 +</​sxh>​
 +
 +Como pode ser notado não temos mais o ticket
 +
 +Agora vamos a algumas operações do kerberos
 +
 +Vamos listar a base de dados do nosso kerberos
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR:​ #senha
 +#Vamos listar a base do kerberos
 +kadmin: ​ listprincs
 +K/​M@DOUGLASQSANTOS.COM.BR
 +admin@DOUGLASQSANTOS.COM.BR
 +host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +kadmin/​admin@DOUGLASQSANTOS.COM.BR
 +kadmin/​changepw@DOUGLASQSANTOS.COM.BR
 +kadmin/​history@DOUGLASQSANTOS.COM.BR
 +kadmin/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Agora vamos obter os possíveis comandos que podemos utilizar no console do Kerberos
 +<sxh bash>
 +
 +#Vamos listar os possíveis comandos
 +kadmin: ​ ?
 +Available kadmin requests:
 +
 +add_principal,​ addprinc, ank
 +                         Add principal
 +delete_principal,​ delprinc
 +                         ​Delete principal
 +modify_principal,​ modprinc
 +                         ​Modify principal
 +change_password,​ cpw     ​Change password
 +get_principal,​ getprinc ​ Get principal
 +list_principals,​ listprincs, get_principals,​ getprincs
 +                         List principals
 +add_policy, addpol ​      Add policy
 +modify_policy,​ modpol ​   Modify policy
 +delete_policy,​ delpol ​   Delete policy
 +get_policy, getpol ​      Get policy
 +list_policies,​ listpols, get_policies,​ getpols
 +                         List policies
 +get_privs, getprivs ​     Get privileges
 +ktadd, xst               Add entry(s) to a keytab
 +ktremove, ktrem          Remove entry(s) from a keytab
 +lock                     Lock database exclusively (use with extreme caution)
 +unlock ​                  ​Release exclusive database lock
 +list_requests,​ lr, ?     List available requests.
 +quit, exit, q            Exit program.
 +kadmin: ​ q
 +</​sxh>​
 +
 +
 +Agora vamos mudar a senha do admin 
 +<sxh bash>
 +
 +#Comando para alterar a senha do admin
 +kadmin: ​ cpw admin
 +Enter password for principal "​admin@DOUGLASQSANTOS.COM.BR":​ #informe a senha
 +Re-enter password for principal "​admin@DOUGLASQSANTOS.COM.BR":​ #confirme a senha
 +Password for "​admin@DOUGLASQSANTOS.COM.BR"​ changed.
 +</​sxh>​
 +
 +Agora vamos obter informações a respeito de um determinado usuário
 +<sxh bash>
 +
 +#Comando para obter informações ​
 +kadmin: ​ getprinc admin
 +Principal: admin@DOUGLASQSANTOS.COM.BR
 +Expiration date: [never]
 +Last password change: Mon Oct 10 11:41:09 BRT 2011
 +Password expiration date: [none]
 +Maximum ticket life: 1 day 00:00:00
 +Maximum renewable life: 90 days 00:00:00
 +Last modified: Mon Oct 10 11:41:09 BRT 2011 (root/​admin@DOUGLASQSANTOS.COM.BR)
 +Last successful authentication:​ Mon Oct 10 11:52:11 BRT 2011
 +Last failed authentication:​ [never]
 +Failed password attempts: 0
 +Number of keys: 8
 +Key: vno 1, AES-256 CTS mode with 96-bit SHA-1 HMAC, no salt
 +Key: vno 1, ArcFour with HMAC/md5, no salt
 +Key: vno 1, Triple DES cbc mode with HMAC/sha1, no salt
 +Key: vno 1, DES cbc mode with CRC-32, no salt
 +Key: vno 1, DES cbc mode with RSA-MD5, Version 4
 +Key: vno 1, DES cbc mode with RSA-MD5, Version 5 - No Realm
 +Key: vno 1, DES cbc mode with RSA-MD5, Version 5 - Realm Only
 +Key: vno 1, DES cbc mode with RSA-MD5, AFS version 3
 +MKey: vno 1
 +Attributes: REQUIRES_PRE_AUTH
 +Policy: [none]
 +</​sxh>​
 +
 +Vamos ver como deletamos um host
 +<sxh bash>
 +
 +#Comando que deleta um host
 +kadmin: ​ delprinc host/​kdc1.douglasqsantos.com.br
 +Are you sure you want to delete the principal "​host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR"?​ (yes/no): yes
 +Principal "​host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR"​ deleted.
 +Make sure that you have removed this principal from all ACLs before reusing.
 +</​sxh>​
 +
 +Vamos adicionar o nosso host novamente ​
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR:​ #informe a senha do admin
 +#Agora vamos criar um host no kerberos
 +kadmin: ​ addprinc -randkey host/​kdc1.douglasqsantos.com.br
 +WARNING: no policy specified for host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR;​ defaulting to no policy
 +Principal "​host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR"​ created.
 +#Agora vamos adicionar o host ao keytab
 +kadmin: ​ ktadd host/​kdc1.douglasqsantos.com.br
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/​etc/​krb5.keytab.
 +kadmin: ​ q
 +</​sxh>​
 +
 +Vamos listar a base do kerberos para verificar a exclusão
 +<sxh bash>
 +
 +kadmin: ​ listprincs
 +K/​M@DOUGLASQSANTOS.COM.BR
 +admin@DOUGLASQSANTOS.COM.BR
 +kadmin/​admin@DOUGLASQSANTOS.COM.BR
 +kadmin/​changepw@DOUGLASQSANTOS.COM.BR
 +kadmin/​history@DOUGLASQSANTOS.COM.BR
 +kadmin/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Agora vamos verificar como adicionamos mais um usuário na base
 +<sxh bash>
 +
 +kadmin: ​ addprinc douglas
 +WARNING: no policy specified for douglas@DOUGLASQSANTOS.COM.BR;​ defaulting to no policy
 +Enter password for principal "​douglas@DOUGLASQSANTOS.COM.BR": ​ #informe a senha
 +Re-enter password for principal "​douglas@DOUGLASQSANTOS.COM.BR":​ #informe a senha
 +Principal "​douglas@DOUGLASQSANTOS.COM.BR"​ created.
 +</​sxh>​
 +
 +Vamos listar a base novamente para verificar a criação do novo usuário
 +<sxh bash>
 +
 +kadmin: listprincs
 +K/​M@DOUGLASQSANTOS.COM.BR
 +admin@DOUGLASQSANTOS.COM.BR
 +douglas@DOUGLASQSANTOS.COM.BR
 +host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +kadmin/​admin@DOUGLASQSANTOS.COM.BR
 +kadmin/​changepw@DOUGLASQSANTOS.COM.BR
 +kadmin/​history@DOUGLASQSANTOS.COM.BR
 +kadmin/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Vamos mudar o tempo de vida padrão de um ticket ​
 +<sxh bash>
 +
 +kadmin: ​ modprinc -maxlife "100 day" douglas
 +Principal "​douglas@DOUGLASQSANTOS.COM.BR"​ modified.
 +</​sxh>​
 +
 +Vamos vamos listar o ticket
 +<sxh bash>
 +
 +kadmin: ​ getprinc douglas
 +Principal: douglas@DOUGLASQSANTOS.COM.BR
 +Expiration date: [never]
 +Last password change: Wed Sep 28 11:57:30 BRT 2011
 +Password expiration date: [none]
 +Maximum ticket life: 100 days 00:00:00
 +Maximum renewable life: 90 days 00:00:00
 +Last modified: Wed Sep 28 12:00:30 BRT 2011 (admin@DOUGLASQSANTOS.COM.BR)
 +Last successful authentication:​ [never]
 +Last failed authentication:​ [never]
 +Failed password attempts: 0
 +Number of keys: 8
 +Key: vno 1, AES-256 CTS mode with 96-bit SHA-1 HMAC, no salt
 +Key: vno 1, ArcFour with HMAC/md5, no salt
 +Key: vno 1, Triple DES cbc mode with HMAC/sha1, no salt
 +Key: vno 1, DES cbc mode with CRC-32, no salt
 +Key: vno 1, DES cbc mode with RSA-MD5, Version 4
 +Key: vno 1, DES cbc mode with RSA-MD5, Version 5 - No Realm
 +Key: vno 1, DES cbc mode with RSA-MD5, Version 5 - Realm Only
 +Key: vno 1, DES cbc mode with RSA-MD5, AFS version 3
 +MKey: vno 1
 +Attributes: REQUIRES_PRE_AUTH
 +Policy: [none]
 +</​sxh>​
 +
 +Remover uma maquina do keytab ​
 +<sxh bash>
 +
 +kadmin: ​ ktrem host/​kdc1.douglasqsantos.com.br
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 3 removed from keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 3 removed from keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 3 removed from keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 3 removed from keytab WRFILE:/​etc/​krb5.keytab.
 +</​sxh>​
 +
 +Agora adicione ele novamente no keytab
 +<sxh bash>
 +
 +#Agora vamos adicionar o host ao keytab
 +kadmin: ​ ktadd host/​kdc1.douglasqsantos.com.br
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc1.douglasqsantos.com.br with kvno 2, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/​etc/​krb5.keytab.
 +</​sxh>​
 +
 +Agora vamos testar o kerberos com ssh vamos adicionar o root no kerberos ​
 +<sxh bash>
 +
 +kadmin -p admin
 +kadmin: ​ addprinc root
 +WARNING: no policy specified for root@DOUGLASQSANTOS.COM.BR;​ defaulting to no policy
 +Enter password for principal "​root@DOUGLASQSANTOS.COM.BR":​
 +Re-enter password for principal "​root@DOUGLASQSANTOS.COM.BR":​
 +Principal "​root@DOUGLASQSANTOS.COM.BR"​ created.
 +kadmin:
 +</​sxh>​
 +
 +**OBS:** Para utilizar o ssh o cliente tem que estar cadastrado tanto no domínio kerberos quanto na maquina Linux para castrar um cliente na maquina Linux podemos utilizar o comando useradd -m usuario e setar a senha dele com o comando passwd usuario, porém a senha utilizada vai ser a do kerberos para inicializar o ticket.
 +
 +Vamos acertar o ssh 
 +<sxh apache>
 +
 +vim /​etc/​ssh/​sshd_config
 +[...]
 +#A opção abaixo deve estar habilitada para que a troca de senhas via ssh
 +# ocorra adequadamente.
 +ChallengeResponseAuthentication yes
 +# Opções para autenticação via Kerberos:
 +KerberosAuthentication yes
 +KerberosOrLocalPasswd yes
 +KerberosTicketCleanup yes
 +# Opções para aunteticação via GSSAPI:
 +GSSAPIAuthentication yes
 +GSSAPICleanupCredentials yes
 +</​sxh>​
 +
 +Vamos reiniciar o ssh
 +<sxh bash>
 +
 +/​etc/​init.d/​ssh restart
 +</​sxh>​
 +
 +Vamos acertar o cliente
 +<sxh apache>
 +
 +vim /​etc/​ssh/​ssh_config
 +[...]
 +StrictHostKeyChecking no
 +GSSAPIAuthentication yes
 +GSSAPIDelegateCredentials yes
 +</​sxh>​
 +
 +Agora temos que iniciar o ticket do root 
 +<sxh bash>
 +
 +kinit root
 +Password for root@DOUGLASQSANTOS.COM.BR:​ #informe a senha setada no kerberos
 +</​sxh>​
 +
 +Vamos vamos ver se temos o ticket ​
 +
 +<sxh bash>
 +
 +klist
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: root@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +10/10/11 12:​08:​29 ​ 10/11/11 12:​08:​28 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Agora vamos logar note que temos que informar o nome da maquina que esta cadastrada no kerberos que é kdc1.douglasqsantos.com.br ​
 +
 +<sxh bash>
 +
 +ssh kdc1.douglasqsantos.com.br
 +Warning: Permanently added '​kdc1.douglasqsantos.com.br,​10.0.0.25'​ (RSA) to the list of known hosts.
 +Linux kdc1 2.6.32-5-amd64 #1 SMP Mon Oct 3 03:59:20 UTC 2011 x86_64
 +
 +The programs included with the Debian GNU/Linux system are free software;
 +the exact distribution terms for each program are described in the
 +individual files in /​usr/​share/​doc/​*/​copyright.
 +
 +Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 +permitted by applicable law.
 +Last login: Mon Oct 10 11:23:05 2011 from 10.0.0.20
 +[12:09:20] root@kdc1 [~] # 
 +</​sxh>​
 +
 +Vamos listar o nosso ticket
 +<sxh bash>
 +
 +klist
 +Ticket cache: FILE:/​tmp/​krb5cc_0_LuZDtg1890
 +Default principal: root@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +10/10/11 12:​09:​20 ​ 10/11/11 12:​08:​28 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Como pode ser notado não foi preciso informar a senha pois o ssh foi validado com o ticket do kerberos, então para logar em outros clientes que estão no domínio vamos utilizar o mesmo ticket que foi criado com o kinit não precisando informar a senha novamente até que o prazo de validade do ticket acabe.
 +
 +
 +**Agora vamos a configuração de um cliente para o domínio kerberos**
 +
 +Desabilitando o ipv6
 +<sxh bash>
 +
 +echo "​net.ipv6.conf.all.disable_ipv6=1"​ >> /​etc/​sysctl.conf
 +</​sxh>​
 +
 +Acertando o nome da maquina
 +<sxh bash>
 +
 +vim /​etc/​hostname
 +cliente
 +</​sxh>​
 +
 +Vamos acertar o /etc/hosts
 +<sxh bash>
 +
 +vim /etc/hosts
 +127.0.0.1 ​      ​localhost
 +10.0.0.25 ​      ​kdc1.douglasqsantos.com.br kdc1
 +10.0.0.26 ​      ​kdc2.douglasqsantos.com.br kdc2
 +10.0.0.27 ​      ​cliente.douglasqsantos.com.br cliente
 +</​sxh>​
 +
 +Reiniciar o cliente
 +<sxh bash>
 +
 +reboot
 +</​sxh>​
 +
 +Agora vamos instalar alguns pacotes
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y && aptitude install ssh ntp ntpdate xinetd nmap -y
 +</​sxh>​
 +
 +Agora vamos instalar os pacotes para o cliente Kerberos ​
 +<sxh bash>
 +
 +apt-get install krb5-{config,​user} libpam-krb5 -y
 +</​sxh>​
 +
 +Responder da seguinte forma 
 +  - DOUGLASQSANTOS.COM.BR
 +  - kdc1.douglasqsantos.com.br kdc2.douglasqsantos.com.br
 +  - kdc1.douglasqsantos.com.br
 +
 +
 +Agora ao arquivo de configuração krb5.conf
 +
 +Vamos fazer backup do arquivo
 +<sxh bash>
 +
 +cp /​etc/​krb5.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo deixe ele como abaixo
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +        default_realm = DOUGLASQSANTOS.COM.BR
 +        forwardable = true
 +        proxiable = true
 +
 +[realms]
 +        DOUGLASQSANTOS.COM.BR = {
 +                kdc = kdc1.douglasqsantos.com.br
 +                kdc = kdc2.douglasqsantos.com.br
 +                admin_server = kdc1.douglasqsantos.com.br
 +        }
 +
 +[domain_realm]
 +        .douglasqsantos.com.br = DOUGLASQSANTOS.COM.BR
 +        douglasqsantos.com.br = DOUGLASQSANTOS.COM.BR
 +
 +[logging]
 +        kdc = FILE:/​var/​log/​krb5/​kdc.log
 +        admin_server = FILE:/​var/​log/​krb5/​kadmin.log
 +        default = FILE:/​var/​log/​krb5/​klib.log
 +</​sxh>​
 +
 +Vamos criar o diretório para armazenar os logs 
 +<sxh bash>
 +
 +mkdir /​var/​log/​krb5
 +</​sxh>​
 +
 +Agora vamos configurar o logrotate para o kerberos
 +<sxh bash>
 +
 +vim /​etc/​logrotate.d/​krb5
 +/​var/​log/​krb5/​kadmin.log /​var/​log/​krb5/​kdc.log /​var/​log/​krb5/​klib.log {
 +        daily
 +        missingok
 +        rotate 7
 +        compress
 +        delaycompress
 +        notifempty
 +}
 +</​sxh>​
 +
 +Agora vamos cadastrar a maquina cliente no servidor kerberos. ​
 +
 +No servidor kerberos
 +
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR:​ #Senha admin
 +kadmin: ​ addprinc -randkey host/​cliente.douglasqsantos.com.br
 +WARNING: no policy specified for host/​cliente.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR;​ defaulting to no policy
 +Principal "​host/​cliente.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR"​ created.
 +kadmin: ​ ktadd host/​cliente.douglasqsantos.com.br
 +Entry for principal host/​cliente.douglasqsantos.com.br with kvno 2, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​cliente.douglasqsantos.com.br with kvno 2, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​cliente.douglasqsantos.com.br with kvno 2, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​cliente.douglasqsantos.com.br with kvno 2, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/​etc/​krb5.keytab.
 +kadmin: ​ q
 +</​sxh>​
 +
 +Agora no cliente vamos adicionar a maquina no keytab
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR: ​
 +kadmin: ​ ktadd host/​cliente.douglasqsantos.com.br
 +Entry for principal host/​cliente.douglasqsantos.com.br with kvno 3, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​cliente.douglasqsantos.com.br with kvno 3, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​cliente.douglasqsantos.com.br with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​cliente.douglasqsantos.com.br with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/​etc/​krb5.keytab.
 +kadmin: ​ q
 +</​sxh>​
 +
 +Vamos listar as maquinas que estão no keytab do cliente
 +<sxh bash>
 +
 +klist -ke
 +Keytab name: WRFILE:/​etc/​krb5.keytab
 +KVNO Principal
 +---- --------------------------------------------------------------------------
 +   3 host/​cliente.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR (AES-256 CTS mode with 96-bit SHA-1 HMAC) 
 +   3 host/​cliente.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR (ArcFour with HMAC/​md5) ​
 +   3 host/​cliente.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR (Triple DES cbc mode with HMAC/​sha1) ​
 +   3 host/​cliente.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR (DES cbc mode with CRC-32) ​
 +</​sxh>​
 +
 +Vamos acertar o ssh 
 +<sxh apache>
 +
 +vim /​etc/​ssh/​sshd_config
 +[...]
 +#A opção abaixo deve estar habilitada para que a troca de senhas via ssh
 +# ocorra adequadamente.
 +ChallengeResponseAuthentication yes
 +# Opções para autenticação via Kerberos:
 +KerberosAuthentication yes
 +KerberosOrLocalPasswd yes
 +KerberosTicketCleanup yes
 +# Opções para aunteticação via GSSAPI:
 +GSSAPIAuthentication yes
 +GSSAPICleanupCredentials yes
 +</​sxh>​
 +
 +Vamos reiniciar o ssh
 +<sxh bash>
 +
 +/​etc/​init.d/​ssh restart
 +</​sxh>​
 +
 +Vamos acertar o cliente
 +<sxh apache>
 +
 +vim /​etc/​ssh/​ssh_config
 +[...]
 +StrictHostKeyChecking no
 +GSSAPIAuthentication yes
 +GSSAPIDelegateCredentials yes
 +</​sxh>​
 +
 +Vamos testar agora
 +
 +Vamos criar um ticket para o root na maquina cliente
 +<sxh bash>
 +
 +kinit root
 +Password for root@DOUGLASQSANTOS.COM.BR:​ #senha do root do kerberos
 +</​sxh>​
 +
 +Vamos listar o nosso ticket
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: root@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 16:​40:​46 ​ 11/08/11 16:​40:​44 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Agora vamos conectar via ssh no servidor, no cliente então
 +<sxh bash>
 +
 +ssh kdc1.douglasqsantos.com.br
 +Warning: Permanently added '​kdc1.douglasqsantos.com.br,​10.0.0.25'​ (RSA) to the list of known hosts.
 +Linux kdc1 2.6.32-5-amd64 #1 SMP Thu Nov 3 03:41:26 UTC 2011 x86_64
 +
 +The programs included with the Debian GNU/Linux system are free software;
 +the exact distribution terms for each program are described in the
 +individual files in /​usr/​share/​doc/​*/​copyright.
 +
 +Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 +permitted by applicable law.
 +Last login: Mon Nov  7 16:26:27 2011 from kdc1.douglasqsantos.com.br
 +[16:41:27] root@kdc1 [~] # 
 +</​sxh>​
 +
 +Como pode ser notado conexão do cliente para o servidor esta ok
 +
 +Agora vamos testar a conexão do servidor para o cliente
 +
 +<sxh bash>
 +
 +ssh cliente.douglasqsantos.com.br
 +Warning: Permanently added '​cliente.douglasqsantos.com.br,​10.0.0.27'​ (RSA) to the list of known hosts.
 +Linux cliente 2.6.32-5-amd64 #1 SMP Thu Nov 3 03:41:26 UTC 2011 x86_64
 +
 +The programs included with the Debian GNU/Linux system are free software;
 +the exact distribution terms for each program are described in the
 +individual files in /​usr/​share/​doc/​*/​copyright.
 +
 +Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 +permitted by applicable law.
 +Last login: Mon Nov  7 16:31:46 2011 from 10.0.0.20
 +[16:42:39] root@cliente [~] # 
 +</​sxh>​
 +
 +Conexão ok do servidor para o cliente também
 +
 +**OBS:** Por definições da biblioteca de autenticação pam_krb5 o uid minimo para a conexão utilizando Kerberos é o 1000 ou seja usuários comuns cadastrados manualmente,​ pois os usuário de serviço do sistema tem o uid menor que 1000, pois caso tenhamos alguma pane na rede ficariamos sem conseguir autenticação caso todos os usuários fossem autenticados no Kerberos. ​
 +
 +Agora vamos fazer mais um teste, vamos cadastrar um novo usuário no Linux e no Kerberos
 +
 +Tem que cadastrar o usuário tanto no Linux do servidor quanto do cliente
 +<sxh bash>
 +
 +useradd -m -s /bin/bash douglas
 +</​sxh>​
 +
 +Agora vamos setar a senha para o novo usuário no kerberos
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR:​
 +kadmin: ​ addprinc douglas
 +WARNING: no policy specified for douglas@DOUGLASQSANTOS.COM.BR;​ defaulting to no policy
 +Enter password for principal "​douglas@DOUGLASQSANTOS.COM.BR":​
 +Re-enter password for principal "​douglas@DOUGLASQSANTOS.COM.BR":​
 +Principal "​douglas@DOUGLASQSANTOS.COM.BR"​ created.
 +kadmin: ​ q
 +</​sxh>​
 +
 +Agora no cliente vamos efetuar uma conexão via ssh para o servidor sem criar um ticket antes
 +
 +Vamos destruir os tickets ativos caso tenhamos algum
 +<sxh bash>
 +
 +kdestroy
 +</​sxh>​
 +
 +Vamos verificar agora
 +<sxh bash>
 +
 +klist
 +klist: No credentials cache found (ticket cache FILE:/​tmp/​krb5cc_0)
 +</​sxh>​
 +
 +No servidor vamos fazer o mesmo procedimento ​
 +<sxh bash>
 +
 +kdestroy
 +</​sxh>​
 +
 +Vamos verificar
 +<sxh bash>
 +
 +klist
 +klist: No credentials cache found (ticket cache FILE:/​tmp/​krb5cc_0)
 +</​sxh>​
 +
 +Agora no cliente vamos efetuar um acesso via ssh para o servidor kerberos
 +<sxh bash>
 +
 +ssh kdc1.douglasqsantos.com.br -l douglas
 +Password: ​
 +Linux kdc1 2.6.32-5-amd64 #1 SMP Thu Nov 3 03:41:26 UTC 2011 x86_64
 +
 +The programs included with the Debian GNU/Linux system are free software;
 +the exact distribution terms for each program are described in the
 +individual files in /​usr/​share/​doc/​*/​copyright.
 +
 +Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 +permitted by applicable law.
 +You have new mail.
 +douglas@kdc1:​~$ ​
 +</​sxh>​
 +
 +Agora vamos listar os tickets
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_1000_NI1970
 +Default principal: douglas@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 16:​52:​42 ​ 11/08/11 16:​52:​42 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Vamos verificar agora no servidor como que foi efetuada a conexão
 +<sxh bash>
 +
 +tail -f /​var/​log/​auth.log ​
 +Nov  7 16:52:01 kdc1 sshd[1941]: pam_krb5(sshd:​auth):​ user douglas authenticated as douglas@DOUGLASQSANTOS.COM.BR
 +Nov  7 16:52:01 kdc1 sshd[1939]: Accepted keyboard-interactive/​pam for douglas from 10.0.0.27 port 37507 ssh2
 +Nov  7 16:52:01 kdc1 sshd[1939]: pam_unix(sshd:​session):​ session opened for user douglas by (uid=0)
 +Nov  7 16:52:24 kdc1 sshd[1943]: Received disconnect from 10.0.0.27: 11: disconnected by user
 +Nov  7 16:52:24 kdc1 sshd[1939]: pam_unix(sshd:​session):​ session closed for user douglas
 +Nov  7 16:52:42 kdc1 sshd[1972]: pam_krb5(sshd:​auth):​ user douglas authenticated as douglas@DOUGLASQSANTOS.COM.BR
 +Nov  7 16:52:42 kdc1 sshd[1970]: Accepted keyboard-interactive/​pam for douglas from 10.0.0.27 port 37508 ssh2
 +Nov  7 16:52:42 kdc1 sshd[1970]: pam_unix(sshd:​session):​ session opened for user douglas by (uid=0)
 +Nov  7 16:53:09 kdc1 sshd[1973]: Received disconnect from 10.0.0.27: 11: disconnected by user
 +Nov  7 16:53:09 kdc1 sshd[1970]: pam_unix(sshd:​session):​ session closed for user douglas
 +</​sxh>​
 +
 +Como o uid do usuário douglas é maior que 1000 foi utilizado o kerberos para a autentição,​ nós já tinhamos cadastrado o usuário tanto no sistema como no kerberos o login foi efetuado corretamente
 +
 +Agora vamos a configuração do servidor slave 
 +
 +Vamos instalar alguns pacotes necessários ​
 +<sxh bash>
 +
 +apt-get install ssh ntp ntpdate xinetd nmap -y
 +</​sxh>​
 +
 +Agora vamos ver se estamos conseguindo vizualizar o servidor master ​
 +<sxh bash>
 +
 +nmap -sT -p T:749,754 kdc1.douglasqsantos.com.br
 +
 +Starting Nmap 5.00 ( http://​nmap.org ) at 2011-11-07 16:55 BRST
 +Interesting ports on kdc1.douglasqsantos.com.br (10.0.0.25):​
 +PORT    STATE SERVICE
 +749/tcp open  kerberos-adm
 +754/tcp open  krb_prop
 +MAC Address: 08:​00:​27:​C5:​C8:​32 (Cadmus Computer Systems)
 +
 +Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds
 +</​sxh>​
 +
 +
 +Agora vamos instalar o pacote para a configuração do cliente  ​
 +<sxh bash>
 +
 +apt-get install krb5-user -y
 +#Responda da seguinte forma
 +1) DOUGLASQSANTOS.COM.BR
 +2) kdc1.douglasqsantos.com.br kdc2.douglasqsantos.com.br
 +3) kdc1.douglasqsantos.com.br
 +</​sxh>​
 +
 +Vamos agora acertar o krb5 
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +        default_realm = DOUGLASQSANTOS.COM.BR
 +        forwardable = true
 +        proxiable = true
 +
 +[realms]
 +        DOUGLASQSANTOS.COM.BR = {
 +                kdc = kdc1.douglasqsantos.com.br
 +                kdc = kdc2.douglasqsantos.com.br
 +                admin_server = kdc1.douglasqsantos.com.br
 +        }
 +
 +[domain_realm]
 +        .douglasqsantos.com.br = DOUGLASQSANTOS.COM.BR
 +        douglasqsantos.com.br = DOUGLASQSANTOS.COM.BR
 +
 +[logging]
 +        kdc = FILE:/​var/​log/​krb5/​kdc.log
 +        admin_server = FILE:/​var/​log/​krb5/​kadmin.log
 +        default = FILE:/​var/​log/​krb5/​klib.log
 +
 +</​sxh>​
 +
 +Agora vamos acertar o diretorio de logs 
 +<sxh bash>
 +
 +mkdir /​var/​log/​krb5
 +</​sxh>​
 +
 +Agora vamos acertar o logrotate ​
 +<sxh bash>
 +
 +vim /​etc/​logrotate.d/​krb5
 +/​var/​log/​krb5/​kadmin.log /​var/​log/​krb5/​kdc.log /​var/​log/​krb5/​klib.log {
 +        daily
 +        missingok
 +        rotate 7
 +        compress
 +        delaycompress
 +        notifempty
 +}
 +</​sxh>​
 +
 +Agora vamos cadastrar o nosso host na base kerberos no servidor master ​
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR:​
 +kadmin: ​ addprinc -randkey host/​kdc2.douglasqsantos.com.br
 +WARNING: no policy specified for host/​kdc2.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR;​ defaulting to no policy
 +Principal "​host/​kdc2.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR"​ created.
 +kadmin: ​ ktadd host/​kdc2.douglasqsantos.com.br
 +Entry for principal host/​kdc2.douglasqsantos.com.br with kvno 2, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc2.douglasqsantos.com.br with kvno 2, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc2.douglasqsantos.com.br with kvno 2, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc2.douglasqsantos.com.br with kvno 2, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/​etc/​krb5.keytab.
 +kadmin: ​ q
 +</​sxh>​
 +
 +Agora adicionar o host kdc2 no keytab do servidor slave 
 +<sxh bash>
 +
 +kadmin ​ -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR: ​
 +kadmin: ​ ktadd host/​kdc2.douglasqsantos.com.br
 +Entry for principal host/​kdc2.douglasqsantos.com.br with kvno 3, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc2.douglasqsantos.com.br with kvno 3, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc2.douglasqsantos.com.br with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​kdc2.douglasqsantos.com.br with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/​etc/​krb5.keytab.
 +kadmin: ​ q
 +</​sxh>​
 +
 +Podemos listar as chaves em nosso keytab no servidor master com o seguinte comando ​
 +<sxh bash>
 +
 +klist -ke
 +Keytab name: WRFILE:/​etc/​krb5.keytab
 +KVNO Principal
 +---- --------------------------------------------------------------------------
 +   3 host/​kdc2.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR (AES-256 CTS mode with 96-bit SHA-1 HMAC) 
 +   3 host/​kdc2.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR (ArcFour with HMAC/​md5) ​
 +   3 host/​kdc2.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR (Triple DES cbc mode with HMAC/​sha1) ​
 +   3 host/​kdc2.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR (DES cbc mode with CRC-32) ​
 +</​sxh>​
 +
 +Agora vamos instalar o kdc no servidor slave 
 +<sxh bash>
 +
 +apt-get install krb5-kdc -y
 +</​sxh>​
 +
 +Agora vamos acertar o xinetd para podermos propagar a base 
 +<sxh bash>
 +
 +vim /​etc/​xinetd.d/​krb_prop
 +service krb_prop
 +{
 +        disable ​        = no
 +        socket_type ​    = stream
 +        protocol ​       = tcp
 +        user            = root
 +        wait            = no
 +        server ​         = /​usr/​sbin/​kpropd
 +}
 +</​sxh>​
 +
 +Agora vamos reiniciar o serviço do kerberos ​
 +<sxh bash>
 +
 +/​etc/​init.d/​xinetd restart
 +</​sxh>​
 +
 +Agora vamos ver se o serviço esta respondendo ​
 +<sxh bash>
 +
 +nmap -sT -p T:754 localhost
 +
 +Starting Nmap 5.00 ( http://​nmap.org ) at 2011-11-07 17:05 BRST
 +Interesting ports on localhost (127.0.0.1):​
 +PORT    STATE SERVICE
 +754/tcp open  krb_prop
 +
 +Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
 +</​sxh>​
 +
 +Agora temos que acertar as acls nos dois servidores kerberos ​
 +<sxh bash>
 +
 +vim /​etc/​krb5kdc/​kpropd.acl
 +host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +host/​kdc2.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Agora vamos acertar a propagação da base primeiro vamos acertar o tempo de vida dos tickets ​
 +<sxh bash>
 +
 +vim /​etc/​krb5kdc/​kdc.conf
 +[...]
 +max_life = 1d 0h 0m 0s
 +max_renewable_life = 90d 0h 0m 0s
 +</​sxh>​
 +
 +Agora no servidor kdc1 vamos fazer um dump da base
 +<sxh bash>
 +
 +kdb5_util dump /​var/​lib/​krb5kdc/​slave_datatrans
 +</​sxh>​
 +
 +Agora no servidor master vamos propagar a base 
 +<sxh bash>
 +
 +kprop kdc2.douglasqsantos.com.br
 +Database propagation to kdc2.douglasqsantos.com.br:​ SUCCEEDED
 +</​sxh>​
 +
 +Agora vamos voltar ao servidor kdc2 e vamos criar o stash
 +<sxh bash>
 +
 +kdb5_util stash
 +kdb5_util: Can not fetch master key (error: No such file or directory). while reading master key
 +kdb5_util: Warning: proceeding without master key
 +Enter KDC database master key: #senha do master
 +</​sxh>​
 +
 +Agora vamos iniciar o servidor kerberos kdc no slave 
 +<sxh bash>
 +
 +/​etc/​init.d/​krb5-kdc start
 +</​sxh>​
 +
 +Agora vamos ver se as portas estão escutando ​
 +<sxh bash>
 +
 +nmap -sU -sT -p U:​88,​464,​750,​T:​464,​749,​754 localhost
 +
 +Starting Nmap 5.00 ( http://​nmap.org ) at 2011-11-07 17:11 BRST
 +Interesting ports on localhost (127.0.0.1):​
 +PORT    STATE         ​SERVICE
 +464/tcp closed ​       kpasswd5
 +749/tcp closed ​       kerberos-adm
 +754/tcp open          krb_prop
 +88/​udp ​ open|filtered kerberos-sec
 +464/udp closed ​       kpasswd5
 +750/udp open|filtered kerberos
 +
 +Nmap done: 1 IP address (1 host up) scanned in 1.24 seconds
 +</​sxh>​
 +
 +Como pode ser notado o kpasswd5 e o kerberos-admin não estão habilitados nese servidor, por que o kerberos admin não esta instalado nesse servidor então a base do kerberos no servidor slave é somente leitura ​
 +
 +Agora vamos criar um arquivo de replicação da base no servidor master ​
 +
 +<sxh bash>
 +
 +vim /​etc/​cron.hourly/​krb5-prop
 +#!/bin/sh
 +
 +slave="​kdc2.douglasqsantos.com.br"​
 +
 +/​usr/​sbin/​kdb5_util dump /​var/​lib/​krb5kdc/​slave_datatrans
 +erro=$?
 +
 +if [ $erro -ne 0 ]; then
 +
 +        echo "O dump da base Kerberos falhou"​
 +        echo "com o codigo de erro: $error."​
 +        exit 1
 +else
 +        echo "O dump da base Kerberos foi efetuado com exito"
 +fi
 +
 +for kdc in $slave; do
 +
 +        /​usr/​sbin/​kprop $kdc > /dev/null
 +        erro=$?
 +
 +        if [ $erro -ne 0 ]; then
 +
 +                echo "​Propagando a base para o host: $kdc"
 +                echo "​Falhou codigo de erro: $error."​
 +        else
 +                echo "A propagação da base para o host: $kdc"
 +                echo "foi efetuada com sucesso"​
 +        fi
 +
 +done
 +
 +exit 0
 +</​sxh>​
 +
 +Agora vamos acertar as permissões do nosso script
 +<sxh bash>
 +
 +chmod 755 /​etc/​cron.hourly/​krb5-prop
 +</​sxh>​
 +
 +Vamos testar a replicação ​
 +<sxh bash>
 +
 +/​etc/​cron.hourly/​krb5-prop
 +O dump da base Kerberos foi efetuado com exito
 +A propagação da base para o host: kdc2.douglasqsantos.com.br
 +foi efetuada com sucesso
 +</​sxh>​
 +
 +Caso haja necessidade de habilitar o kerberos admin no servidor slave deve ser efetuado da seguinte forma 
 +
 +No servidor master vamos parar o serviço  ​
 +<sxh bash>
 +
 +/​etc/​init.d/​krb5-admin-server stop
 +</​sxh>​
 +
 +Agora vamos desabilitar a proparação da base para o slave 
 +<sxh bash>
 +
 +mv /​etc/​cron.hourly/​krb5-prop ~/
 +</​sxh>​
 +
 +Vamos executar a última replicação ​
 +<sxh bash>
 +
 + ​~/​krb5-prop
 +</​sxh>​
 +
 +Agora vamos instalar o kerberos admin no servidor slave 
 +<sxh bash>
 +
 +apt-get install krb5-admin-server -y
 +</​sxh>​
 +
 +Agora vamos vamos acertar as acls no slave 
 +<sxh bash>
 +
 +vim /​etc/​krb5kdc/​kadm5.acl
 +[...]
 +*/admin *
 +admin *
 +</​sxh>​
 +
 +Agora vamos criar um arquivo de replicação da base no servidor master ​
 +
 +<sxh bash>
 +
 +vim /​etc/​cron.hourly/​krb5-prop
 +#!/bin/sh
 +
 +slave="​kdc1.douglasqsantos.com.br"​
 +
 +/​usr/​sbin/​kdb5_util dump /​var/​lib/​krb5kdc/​slave_datatrans
 +erro=$?
 +
 +if [ $erro -ne 0 ]; then
 +
 +        echo "O dump da base Kerberos falhou"​
 +        echo "com o codigo de erro: $error."​
 +        exit 1
 +else
 +        echo "O dump da base Kerberos foi efetuado com exito"
 +fi
 +
 +for kdc in $slave; do
 +
 +        /​usr/​sbin/​kprop $kdc > /dev/null
 +        erro=$?
 +
 +        if [ $erro -ne 0 ]; then
 +
 +                echo "​Propagando a base para o host: $kdc"
 +                echo "​Falhou codigo de erro: $error."​
 +        else
 +                echo "A propagação da base para o host: $kdc"
 +                echo "foi efetuada com sucesso"​
 +        fi
 +
 +done
 +
 +exit 0
 +</​sxh>​
 +
 +Agora vamos acertar as permissões do nosso script
 +<sxh bash>
 +
 +chmod 755 /​etc/​cron.hourly/​krb5-prop
 +</​sxh>​
 +
 +Vamos testar a propagação ​
 +<sxh bash>
 +
 +/​etc/​cron.hourly/​krb5-prop ​
 +O dump da base Kerberos foi efetuado com exito
 +A propagação da base para o host: kdc1.douglasqsantos.com.br
 +foi efetuada com sucesso
 +</​sxh>​
 +
 +Agora podemos mudar o /​etc/​krb5.conf dos clientes como abaixo ​
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +        default_realm = DOUGLASQSANTOS.COM.BR
 +        forwardable = true
 +        proxiable = true
 +
 +[realms]
 +        DOUGLASQSANTOS.COM.BR = {
 +                kdc = kdc1.douglasqsantos.com.br
 +                kdc = kdc2.douglasqsantos.com.br
 +                admin_server = kdc2.douglasqsantos.com.br
 +        }
 +
 +[domain_realm]
 +        .douglasqsantos.com.br = DOUGLASQSANTOS.COM.BR
 +        douglasqsantos.com.br = DOUGLASQSANTOS.COM.BR
 +
 +[logging]
 +        kdc = FILE:/​var/​log/​krb5/​kdc.log
 +        admin_server = FILE:/​var/​log/​krb5/​kadmin.log
 +        default = FILE:/​var/​log/​krb5/​klib.log
 +</​sxh>​
 +
 +Agora vamos reiniciar os serviços ​
 +<sxh bash>
 +
 +/​etc/​init.d/​krb5-admin-server restart
 +/​etc/​init.d/​krb5-kdc restart
 +</​sxh>​
 +
 +
 +Vamos fazer um teste de conexão com o novo server-admin ​
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@DOUGLASQSANTOS.COM.BR:​
 +kadmin: ​ listprincs
 +K/​M@DOUGLASQSANTOS.COM.BR
 +admin@DOUGLASQSANTOS.COM.BR
 +douglas@DOUGLASQSANTOS.COM.BR
 +host/​cliente.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +host/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +host/​kdc2.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +kadmin/​admin@DOUGLASQSANTOS.COM.BR
 +kadmin/​changepw@DOUGLASQSANTOS.COM.BR
 +kadmin/​history@DOUGLASQSANTOS.COM.BR
 +kadmin/​kdc1.douglasqsantos.com.br@DOUGLASQSANTOS.COM.BR
 +krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +root@DOUGLASQSANTOS.COM.BR
 +kadmin: q
 +</​sxh>​
 +
 +
 +====== Referências ======
 +
 +  - http://​www.rjsystems.nl/​en/​2100-d6-kerberos-client.php
 +  - http://​www.vivaolinux.com.br/​artigo/​O-Kerberos-nao-e-um-cachorro-de-3-cabecas?​pagina=1
 +  - http://​web.mit.edu/​kerberos/​
 +  - http://​web.mit.edu/​kerberos/​www/​krb5-1.4/​krb5-1.4.1/​doc/​krb5-install/​index.html
 +  - http://​web.mit.edu/​kerberos/​www/​krb5-1.4/​krb5-1.4.1/​doc/​krb5-user/​index.html
 +  - http://​web.mit.edu/​kerberos/​www/​krb5-1.4/​krb5-1.4.1/​doc/​krb5-admin/​index.html
 +  - http://​conectiva.com/​doc/​livros/​online/​9.0/​servidor/​cap-seguranca.html#​AEN9065
 +  - http://​pt.wikipedia.org/​wiki/​Kerberos
 +  - http://​en.wikipedia.org/​wiki/​Kerberos_%28protocol%29
 +  - http://​learn-networking.com/​network-security/​how-kerberos-authentication-works
 +  - http://​datatracker.ietf.org/​wg/​krb-wg/​charter/​
 +  - http://​www.kerberos.org/​
 +  - http://​www.eyrie.org/​~eagle/​software/​pam-krb5/​pam-krb5.html
 +  - http://​www.kerberos.org/​software/​adminkerberos.pdf
 +  - http://​www.kerberos.org/​software/​tutorial.html