Differences

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

Link to this comparison view

instalando_e_configurando_openldap_com_kerberos_no_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalando e Configurando OpenLDAP com Kerberos no Debian Squeeze ======
  
 +Vamos preparar o nosso servidor Kerberos ​
 +  - Nome ldap1.douglasqsantos.com.br
 +  - IP: 10.0.0.25
 +  - 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.
 +
 +Sempre quanto terminar a edição de algum arquivo .ldif no vim sempre pressione F7 para ele remover os espaços nos finais de linha que sempre da merda ;)
 +
 +Vamos desabilitar o ipv6 
 +<sxh bash>
 +
 +echo "​net.ipv6.conf.all.disable_ipv6=1"​ >> /​etc/​sysctl.conf
 +</​sxh>​
 +
 +Agora vamos acertar o nome da maquina ​
 +<sxh bash>
 +
 +vim /​etc/​hostname
 +ldap1
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo /​etc/​hosts ​
 +<sxh bash>
 +
 +vim /etc/hosts
 +127.0.0.1 ​      ​localhost
 +10.0.0.23 ​      ​ldap1.douglasqsantos.com.br ldap1
 +</​sxh>​
 +
 +Agora vamos reinicar o servidor para ficar certa a nossa configuração ​
 +<sxh bash>
 +
 +reboot
 +</​sxh>​
 +
 +Agora vamos atualizar os repositórios e instalar alguns pacotes necessários ​
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y && aptitude install ssh ntp ntpdate xinetd nmap -y
 +</​sxh>​
 +
 +Agora vamos instalar os pacotes necessários para o kerberos ​
 +<sxh bash>
 +
 +apt-get install krb5-{admin-server,​user,​config} libpam-krb5 -y
 +##Responder da seguinte forma
 +1) douglasqsantos.com.br
 +2) ldap1.douglasqsantos.com.br
 +3) ldap1.douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora vamos fazer um acerto no xinetd, por causa do serviço de propagação de 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 o xinetd
 +<sxh bash>
 +
 +/​etc/​init.d/​xinetd restart
 +</​sxh>​
 +
 +Agora vamos criar o nosso realm kerberos ​
 +<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: #senha
 +Re-enter KDC database master key to verify: #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>​
 +
 +Vamos acertar agora as acls do kerberos ​
 +<sxh bash>
 +
 +vim /​etc/​krb5kdc/​kadm5.acl
 +[...]
 +*/admin *
 +admin *
 +</​sxh>​
 +
 +Agora vamos fazer um backup do arquivo /​etc/​krb5.conf ​
 +<sxh bash>
 +
 +cp -Rfa  /​etc/​krb5.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo /​etc/​krb5.conf ​
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +        default_realm = douglasqsantos.com.br
 +        forwardable = true
 +        proxiable = true
 +
 +[realms]
 +        douglasqsantos.com.br = {
 +                kdc = ldap1.douglasqsantos.com.br
 +                admin_server = ldap1.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 para armazenar os logs 
 +<sxh bash>
 +
 +mkdir /​var/​log/​krb5
 +</​sxh>​
 +
 +Agora vamos acertar 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 mudar o tempo de vida do ticket ​
 +<sxh bash>
 +
 +kadmin.local
 +
 +Authenticating as principal root/​admin@douglasqsantos.com.br with password.
 +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 para acertar o tempo de vida 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.
 +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:​ #senha
 +kadmin: ​ addprinc -randkey host/​ldap1.douglasqsantos.com.br
 +WARNING: no policy specified for host/​ldap1.douglasqsantos.com.br@douglasqsantos.com.br;​ defaulting to no policy
 +Principal "​host/​ldap1.douglasqsantos.com.br@douglasqsantos.com.br"​ created.
 +kadmin: ​ ktadd host/​ldap1.douglasqsantos.com.br
 +Entry for principal host/​ldap1.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/​ldap1.douglasqsantos.com.br with kvno 2, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal host/​ldap1.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/​ldap1.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 admin 
 +<sxh bash>
 +
 +kinit admin
 +Password for admin@douglasqsantos.com.br:​ #informe a senha
 +</​sxh>​
 +
 +Agora vamos listar o nosso ticket
 +<sxh bash>
 +klist
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: admin@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +09/28/11 11:​49:​11 ​ 09/29/11 11:​49:​10 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora para destruir o ticket para testar
 +<sxh bash>
 +
 +kdestroy
 +</​sxh>​
 +
 +Agora vamos listar novamente ​
 +<sxh bash>
 +
 +klist
 +klist: No credentials cache found (ticket cache FILE:/​tmp/​krb5cc_0)
 +</​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: q
 +</​sxh>​
 +
 +Vamos somente acertar o arquivo de configuração da sessão caso o usuário não tenho um diretório home, então vai ser criado automáticamente ​
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-session
 +session ​ [default=1] ​                                     pam_permit.so
 +session ​ requisite ​                                       pam_deny.so
 +session ​ required ​                                        ​pam_permit.so
 +session ​ optional ​                                        ​pam_krb5.so minimum_uid=1000
 +session ​ required ​                                        ​pam_unix.so
 +session ​ optional ​                                        ​pam_mkhomedir.so skel=/​etc/​skel umask=077
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo de configuração do serviço de 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>​
 +
 +Agora vamos reiniciar o serviço de ssh 
 +<sxh bash>
 +
 +/​etc/​init.d/​ssh restart
 +</​sxh>​
 +
 +Vamos acertar o cliente ssh 
 +<sxh apache>
 +
 +vim /​etc/​ssh/​ssh_config
 +[...]
 +StrictHostKeyChecking no
 +GSSAPIAuthentication yes
 +GSSAPIDelegateCredentials yes
 +</​sxh>​
 +
 +Agora temos que iniciar o ticket do root para testar o ssh 
 +<sxh bash>
 +
 +kinit root
 +Password for root@douglasqsantos.com.br:​ #informe a senha setada no kerberos
 +</​sxh>​
 +
 +Vamos listar o ticket para ver se foi criado com sucesso ​
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: root@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 12:​28:​15 ​ 11/08/11 12:​28:​15 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora vamos testar a conexão ssh 
 +<sxh bash>
 +
 +ssh ldap1.douglasqsantos.com.br
 +Warning: Permanently added '​ldap1.douglasqsantos.com.br,​10.0.0.25'​ (RSA) to the list of known hosts.
 +Linux ldap1 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 11:59:00 2011 from 10.0.0.20
 +[12:29:03] root@ldap1 [~] # 
 +</​sxh>​
 +
 +Como pode ser notado ocorreu tudo ok, não foi solicitada a senha para a conexão via ssh por causa que configuramos o serviço do ssh a utilizar o ticket do kerberos ​
 +
 +Agora vamos verificar se as portas do kerberos estão escutando ok 
 +<sxh bash>
 +
 +nmap -sU -sT -p U:​88,​464,​T:​464,​749 ldap1.douglasqsantos.com.br
 +
 +Starting Nmap 5.00 ( http://​nmap.org ) at 2011-11-07 12:31 BRST
 +Interesting ports on ldap1.douglasqsantos.com.br (10.0.0.25):​
 +PORT    STATE         ​SERVICE
 +464/tcp open          kpasswd5
 +749/tcp open          kerberos-adm
 +88/​udp ​ open|filtered kerberos-sec
 +464/udp open|filtered kpasswd5
 +
 +Nmap done: 1 IP address (1 host up) scanned in 3.08 seconds
 +</​sxh>​
 +
 +Como pode ser notado elas estão open então vamos configurar ​
 +
 +Agora vamos cadastrar o serviço do ldap no kerberos ​
 +<sxh bash>
 +
 +kadmin -p admin
 +Authenticating as principal admin with password.
 +Password for admin@douglasqsantos.com.br:​ #senha
 +kadmin: ​ addprinc -randkey ldap/​ldap1.douglasqsantos.com.br
 +WARNING: no policy specified for ldap/​ldap1.douglasqsantos.com.br@douglasqsantos.com.br;​ defaulting to no policy
 +Principal "​ldap/​ldap1.douglasqsantos.com.br@douglasqsantos.com.br"​ created.
 +kadmin: ​  ktadd ldap/​ldap1.douglasqsantos.com.br
 +Entry for principal ldap/​ldap1.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 ldap/​ldap1.douglasqsantos.com.br with kvno 2, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/​etc/​krb5.keytab.
 +Entry for principal ldap/​ldap1.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 ldap/​ldap1.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 para a configuração do LDAP o nosso Kerberos já esta ok 
 +
 +Vamos instalar os pacotes necessários ​
 +<sxh bash>
 +
 +aptitude install slapd ldap-utils -y
 +#Respostas
 +1) Informe a senha
 +2) Confirme a senha
 +</​sxh>​
 +
 +Vamos verificar a porta do ldap 
 +<sxh bash>
 +
 +nmap -p 389 localhost -T4
 +
 +Starting Nmap 5.00 ( http://​nmap.org ) at 2011-11-07 12:34 BRST
 +Interesting ports on localhost (127.0.0.1):​
 +PORT    STATE  SERVICE
 +389/tcp closed ldap
 +
 +Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds
 +</​sxh>​
 +
 +Agora vamos ajustar a consulta para a nossa base LDAP 
 +<sxh bash>
 +
 +vim /​etc/​ldap/​ldap.conf
 +BASE     ​dc=douglasqsantos,​dc=com,​dc=br
 +URI      ldap://​ldap1.douglasqsantos.com.br
 +</​sxh>​
 +
 +Vamos verificar a configuração da nossa base 
 +<sxh bash>
 +
 +ldapsearch -LLLQY EXTERNAL -H ldapi:/// -b cn=config "​(|(cn=config)(olcDatabase={1}hdb))"​
 +dn: cn=config
 +objectClass:​ olcGlobal
 +cn: config
 +olcArgsFile:​ /​var/​run/​slapd/​slapd.args
 +olcLogLevel:​ none
 +olcPidFile: /​var/​run/​slapd/​slapd.pid
 +olcToolThreads:​ 1
 +
 +dn: olcDatabase={1}hdb,​cn=config
 +objectClass:​ olcDatabaseConfig
 +objectClass:​ olcHdbConfig
 +olcDatabase:​ {1}hdb
 +olcDbDirectory:​ /​var/​lib/​ldap
 +olcSuffix: dc=douglasqsantos,​dc=com,​dc=br
 +olcAccess: {0}to attrs=userPassword,​shadowLastChange by self write by anonymou
 + s auth by dn="​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ write by * none
 +olcAccess: {1}to dn.base=""​ by * read
 +olcAccess: {2}to * by self write by dn="​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ wri
 + te by * read
 +olcLastMod: TRUE
 +olcRootDN: cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +olcRootPW: {SSHA}6B8iNyd8/​fUHy8DPMsvo9nIjRQCyu9/​T
 +olcDbCheckpoint:​ 512 30
 +olcDbConfig:​ {0}set_cachesize 0 2097152 0
 +olcDbConfig:​ {1}set_lk_max_objects 1500
 +olcDbConfig:​ {2}set_lk_max_locks 1500
 +olcDbConfig:​ {3}set_lk_max_lockers 1500
 +olcDbIndex: objectClass eq
 +</​sxh>​
 +
 +Agora vamos acertar a configuração do nosso LDAP 
 +<sxh bash>
 +
 +vim ~/​olc-mod1.ldif
 +# 1.
 +dn: cn=config
 +changetype: modify
 +replace: olcLogLevel
 +olcLogLevel:​ stats
 +
 +# 2.1.1.
 +dn: olcDatabase={1}hdb,​cn=config
 +changetype: modify
 +delete: olcAccess
 +olcAccess: {2}to *
 +  by self write
 +  by dn="​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ write
 +  by * read
 +-
 +# 2.1.2.
 +delete: olcAccess
 +olcAccess: {1}to dn.base=""​
 +  by * read
 +-
 +# 2.1.3.
 +delete: olcAccess
 +olcAccess: {0}to attrs=userPassword,​shadowLastChange
 +  by self write
 +  by anonymous auth
 +  by dn="​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ write
 +  by * none
 +-
 +# 2.2.1.
 +add: olcAccess
 +olcAccess: {0}to attrs=userPassword,​shadowLastChange
 +  by * none
 +-
 +# 2.2.2.
 +add: olcAccess
 +olcAccess: {1}to attrs=loginShell
 +  by self write
 +  by * none
 +-
 +# 2.2.3.
 +add: olcAccess
 +olcAccess: {2}to dn.base=""​
 +  by * read
 +-
 +# 2.2.4.
 +add: olcAccess
 +olcAccess: {3}to *
 +  by users read
 +  by * none
 +-
 +# 2.3.
 +add: olcDbIndex
 +olcDbIndex: uid eq
 +-
 +# 2.4.
 +add: olcDbIndex
 +olcDbIndex: cn eq
 +-
 +# 2.5.
 +add: olcDbIndex
 +olcDbIndex: ou eq
 +-
 +# 2.6.
 +add: olcDbIndex
 +olcDbIndex: dc eq
 +</​sxh>​
 +
 +Agora vamos importar a configuração ​
 +<sxh bash>
 +
 +ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/​olc-mod1.ldif
 +modifying entry "​cn=config"​
 +
 +modifying entry "​olcDatabase={1}hdb,​cn=config"​
 +</​sxh>​
 +
 +Agora vamos remover o admin criado na instalação do ldap pois vamos utilizar o admin do kerberos ​
 +<sxh bash>
 +
 +ldapdelete -x -h localhost -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -w senha cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Agora vamos instalar o sasl2 para a autenticação do ldap no kerberos ​
 +<sxh bash>
 +
 +aptitude install libsasl2-modules-gssapi-mit -y
 +</​sxh>​
 +
 +Vamos acertar as permissões do keytab agora 
 +<sxh bash>
 +
 +chmod 640 /​etc/​krb5.keytab
 +chown root.openldap /​etc/​krb5.keytab
 +</​sxh>​
 +
 +Agora precisamos descomentar a seguinte linha no arquivo /​etc/​default/​slapd ​
 +<sxh bash>
 +
 +vim /​etc/​default/​slapd
 +[...]
 +#No final do arquivo
 +export KRB5_KTNAME=/​etc/​krb5.keytab
 +</​sxh>​
 +
 +Agora vamos acertar o /​etc/​ldap/​ldap.conf ​
 +<sxh bash>
 +
 +vim /​etc/​ldap/​ldap.conf
 +[...]
 +#No final do arquivo
 +SASL_MECH GSSAPI
 +</​sxh>​
 +
 +Agora vamos criar a base para o nosso LDAP 
 +<sxh bash>
 +
 +vim ~/ous.ldif
 +dn: ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ organizationalUnit
 +ou: Usuarios
 +
 +dn: ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ organizationalUnit
 +ou: Grupos
 +</​sxh>​
 +
 +Vamos importar a configuração ​
 +<sxh bash>
 +
 +ldapadd -xWD cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -f ~/ous.ldif
 +Enter LDAP Password: ​
 +adding new entry "​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br"​
 +
 +adding new entry "​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br"​
 +</​sxh>​
 +
 +Vamos acertar as permissões agora no LDAP 
 +<sxh bash>
 +
 +vim ~/​olc-mod2.ldif
 +# 1.1.
 +dn: cn=config
 +changetype: modify
 +add: olcAuthzRegexp
 +olcAuthzRegexp:​ uid=([^,​]+),​cn=douglasqsantos.com.br,​cn=gssapi,​cn=auth
 +  uid=$1,​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +-
 +# 1.2.
 +add: olcSaslRealm
 +olcSaslRealm:​ douglasqsantos.com.br
 +
 +# 2.1.
 +dn: olcDatabase={1}hdb,​cn=config
 +changetype: modify
 +replace: olcRootDN
 +olcRootDN: uid=admin,​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +-
 +# 2.2
 +delete: olcRootPW
 +</​sxh>​
 +
 +Vamos importar a configuração ​
 +<sxh bash>
 +
 +ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/​olc-mod2.ldif
 +modifying entry "​cn=config"​
 +
 +modifying entry "​olcDatabase={1}hdb,​cn=config"​
 +</​sxh>​
 +
 +Agora vamos reiniciar o LDAP 
 +<sxh bash>
 +
 +/​etc/​init.d/​slapd restart
 +Stopping Openldap: slapd.
 +Starting Openldap: slapd.
 +</​sxh>​
 +
 +Vamos efetuar uma consulta anonima ​
 +<sxh bash>
 +
 +ldapsearch -xLLL
 +No such object (32)
 +</​sxh>​
 +
 +Agora vamos efetuar uma consulta com o admin interno do ldap 
 +<sxh bash>
 +
 +ldapsearch -xWLLL -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br ou=Usuarios
 +Enter LDAP Password:
 +ldap_bind: Invalid credentials (49)
 +</​sxh>​
 +
 +Agora vamos criar um tiket no kerberos para o admin 
 +<sxh bash>
 +
 +kinit admin
 +Password for admin@douglasqsantos.com.br:​ #senha
 +</​sxh>​
 +
 +Agora vamos verificar se foi gerado o ticket ​
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: admin@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 12:​50:​01 ​ 11/08/11 12:​50:​00 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora vamos efetuar uma consulta no LDAP 
 +<sxh bash>
 +
 +ldapsearch -LLL
 +SASL/GSSAPI authentication started
 +SASL username: admin@douglasqsantos.com.br
 +SASL SSF: 56
 +SASL data security layer installed.
 +dn: dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ top
 +objectClass:​ dcObject
 +objectClass:​ organization
 +o: douglasqsantos.com.br
 +dc: douglas
 +
 +dn: ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ organizationalUnit
 +ou: Usuarios
 +
 +dn: ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ organizationalUnit
 +ou: Grupos
 +</​sxh>​
 +
 +Agora vamos verificar o usuário que estamos logados para o Linux 
 +<sxh bash>
 +
 +whoami
 +root
 +</​sxh>​
 +
 +Agora vamos verificar no LDAP com qual usuário estamos logados ​
 +<sxh bash>
 +
 +ldapwhoami ​
 +SASL/GSSAPI authentication started
 +SASL username: admin@douglasqsantos.com.br
 +SASL SSF: 56
 +SASL data security layer installed.
 +dn:​uid=admin,​ou=usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Agora vamos criar um novo usuário ​
 +
 +Temos que criar o usuário tanto na base LDAP quanto na base Kerberos ​
 +
 +Vamos criar o usuário primeiro 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>​
 +
 +Vamos gerar um hash da senha para armazenar no LDAP 
 +<sxh bash>
 +
 +slappasswd -s 123
 +{SSHA}oJvrkYndrF0M3EZEXisub3Rm1yB9XEXA
 +</​sxh>​
 +
 +Agora vamos criar o usuário no LDAP 
 +<sxh bash>
 +
 +vim ~/​douglas.ldif
 +dn: cn=ti-admin,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +cn: ti-admin
 +gidNumber: 20001
 +objectClass:​ top
 +objectClass:​ posixGroup
 +
 +dn: uid=douglas,​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +uid: douglas
 +uidNumber: 20001
 +gidNumber: 20001
 +cn: Douglas
 +sn: Santos
 +objectClass:​ top
 +objectClass:​ person
 +objectClass:​ posixAccount
 +objectClass:​ shadowAccount
 +loginShell: /bin/bash
 +homeDirectory:​ /​home/​douglas
 +userPassword:​ {SSHA}oJvrkYndrF0M3EZEXisub3Rm1yB9XEXA
 +</​sxh>​
 +
 +Agora vamos importar o nosso usuário ​
 +<sxh bash>
 +
 +ldapadd -Qf ~/​douglas.ldif
 +adding new entry "​cn=ti-admin,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br"​
 +
 +adding new entry "​uid=douglas,​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br"​
 +</​sxh>​
 +
 +Vamos destruir o ticket do admin 
 +<sxh bash>
 +
 +kdestroy
 +</​sxh>​
 +
 +Agora vamos criar um ticket para o novo usuário ​
 +<sxh bash>
 +
 +kinit douglas
 +Password for douglas@douglasqsantos.com.br:​ #senha
 +</​sxh>​
 +
 +Agora vamos listar o ticket ​
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: douglas@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 12:​58:​32 ​ 11/08/11 12:​58:​32 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora vamos ver com quem estamos logados no LDAP 
 +<sxh bash>
 +
 +ldapwhoami ​
 +SASL/GSSAPI authentication started
 +SASL username: douglas@douglasqsantos.com.br
 +SASL SSF: 56
 +SASL data security layer installed.
 +dn:​uid=douglas,​ou=usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Como pode ser notado estamos logado com o novo usuário ​
 +
 +Vamos configurar agora o servidor como cliente ​
 +
 +Vamos acertar o debconf ​
 +<sxh bash>
 +
 +dpkg-reconfigure debconf
 +#Responda a perguntas
 +#1) Dialog
 +#2) baixa
 +</​sxh>​
 +
 +Agora vamos instalar os pacotes para trabalhar como cliente LDAP 
 +<sxh bash>
 +
 +aptitude install ldap-utils libnss-ldap libpam-ldap nscd libsasl2-modules-gssapi-mit -y
 +#Responda as perguntas da seguinte forma
 +#1) ldap://​ldap1.douglasqsantos.com.br
 +#2) dc=douglasqsantos,​dc=com,​dc=br
 +#3) 3
 +#4) No
 +#5) No 
 +#6) No
 +#7) OK
 +#8) No
 +#9) No
 +#10) Criptografia
 +#11) No
 +#12) Deixe selecionado somente Kerberos e Unix Autentication
 +</​sxh>​
 +
 +Vamos instalar o kstart ​
 +<sxh bash>
 +
 +aptitude install kstart -y
 +</​sxh>​
 +
 +Adicione no final do arquivo /​etc/​inittab ​
 +<sxh bash>
 +
 +vim /​etc/​inittab
 +[...]
 +KS:​2345:​respawn:/​usr/​bin/​k5start -U -f /​etc/​krb5.keytab -K 10 -l 24h
 +</​sxh>​
 +
 +Agora vamos forçar o reload do /​etc/​inittab ​
 +<sxh bash>
 +
 +kill -HUP 1
 +</​sxh>​
 +
 +Vamos acertar o arquivo /​etc/​libnss-ldap.conf ​
 +<sxh bash>
 +
 +vim /​etc/​libnss-ldap.conf
 +[...]
 +#No final do arquivo adicione
 +use_sasl ​       on
 +sasl_mech ​      ​gssapi
 +krb5_ccname ​    ​FILE:/​tmp/​krb5cc_0
 +</​sxh>​
 +
 +Agora vamos acertar o /​etc/​nsswitch.conf ​
 +<sxh bash>
 +
 +vim /​etc/​nsswitch.conf
 +[...]
 +passwd: ​        ​compat ldap
 +group: ​         compat ldap
 +shadow: ​        ​compat ldap
 +</​sxh>​
 +
 +Reiniciar o nscd 
 +<sxh bash>
 +
 +/​etc/​init.d/​nscd restart
 +Restarting Name Service Cache Daemon: nscd.
 +</​sxh>​
 +
 +Vamos fazer um teste de autenticação com o novo usuário ​
 +
 +Vamos gerar um ticket para ele 
 +<sxh bash>
 +
 +kinit douglas
 +Password for douglas@douglasqsantos.com.br:​ #senha
 +</​sxh>​
 +
 +Vamos listar o ticket ​
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: douglas@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 13:​42:​37 ​ 11/08/11 13:​42:​36 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora vamos efetuar um teste de ssh no servidor para ele mesmo com o usuário douglas ​
 +<sxh bash>
 +
 +ssh douglas@ldap1.douglasqsantos.com.br
 +Creating directory '/​home/​douglas'​.
 +Linux ldap1 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.
 +$ pwd
 +/​home/​douglas
 +$     
 +</​sxh>​
 +
 +Agora vamos fazer um teste de conexão de um cliente remoto para o servidor ​
 +<sxh bash>
 +
 +ssh douglas@10.0.0.25
 +Password: ​
 +Linux ldap1 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 13:45:35 2011 from ldap1.douglasqsantos.com.br
 +$
 +</​sxh>​
 +
 +Como o nosso cliente não esta configurado para ser cliente do nosso domínio kerberos foi solicitada a senha, porém foi gerado o ticket na inicialização da sessão vamos confirmar isso 
 +<sxh bash>
 +
 +$ klist
 +Ticket cache: FILE:/​tmp/​krb5cc_20001_zz3086
 +Default principal: douglas@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 13:​47:​10 ​ 11/08/11 13:​47:​10 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +</​sxh>​
 +
 +Foi gerado corretamente o ticket, agora vamos consultar o log de autenticação no servidor ​
 +<sxh bash>
 +
 +tail -f /​var/​log/​auth.log
 +Nov  7 13:47:10 ldap1 sshd[3088]: pam_krb5(sshd:​auth):​ user douglas authenticated as douglas@douglasqsantos.com.br
 +Nov  7 13:47:10 ldap1 sshd[3086]: Accepted keyboard-interactive/​pam for douglas from 10.0.0.20 port 57753 ssh2
 +Nov  7 13:47:10 ldap1 sshd[3086]: pam_unix(sshd:​session):​ session opened for user douglas by (uid=0)
 +</​sxh>​
 +
 +Como pode ser notado o cliente foi autenticado como douglas@douglasqsantos.com.br e a autenticação foi validada por pam_krb5 ​
 +
 +Agora vamos configurar o cliente kerberos ​
 +
 +  - Nome: cliente.douglasqsantos.com.br
 +  - IP: 10.0.0.27
 +  - Domínio: douglasqsantos.com.br
 +  - Realm: douglasqsantos.com.br
 +
 +Vamos desabilitar 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.27 ​      ​cliente.douglasqsantos.com.br ​   cliente
 +10.0.0.25 ​      ​ldap1.douglasqsantos.com.br ​     ldap1
 +</​sxh>​
 +
 +Vamos reiniciar a maquina cliente ​
 +<sxh bash>
 +
 +reboot
 +</​sxh>​
 +
 +Vamos atualizar os repositórios e instalar alguns pacotes necessários ​
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y && aptitude install ssh ntp ntpdate nmap -y
 +</​sxh>​
 +
 +Agora vamos verificar se o servidor kerberos esta respondendo consultas ​
 +<sxh bash>
 +
 +nmap -sU -sT -p U:​88,​464,​T:​464,​749 ldap1.douglasqsantos.com.br
 +
 +Starting Nmap 5.00 ( http://​nmap.org ) at 2011-11-07 13:59 BRST
 +Interesting ports on ldap1.douglasqsantos.com.br (10.0.0.25):​
 +PORT    STATE         ​SERVICE
 +464/tcp open          kpasswd5
 +749/tcp open          kerberos-adm
 +88/​udp ​ open|filtered kerberos-sec
 +464/udp open|filtered kpasswd5
 +MAC Address: 08:​00:​27:​C5:​C8:​32 (Cadmus Computer Systems)
 +
 +Nmap done: 1 IP address (1 host up) scanned in 1.37 seconds
 +</​sxh>​
 +
 +Agora vamos instalar os pacotes para o cliente poder logar no servidor kerberos ​
 +<sxh bash>
 +
 +aptitude install krb5-{config,​user} libpam-krb5 -y
 +#Responder as perguntas da seguinte forma
 +#1) douglasqsantos.com.br
 +#2) ldap1.douglasqsantos.com.br
 +#3) ldap1.douglasqsantos.com.br ​
 +</​sxh>​
 +
 +Agora vamos acertar o /​etc/​krb5.conf ​
 +
 +Vamos fazer backup do arquivo /​etc/​krb5.conf ​
 +<sxh bash>
 +
 +cp /​etc/​krb5.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos modificar o arquivo ​
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +        default_realm = douglasqsantos.com.br
 +        forwardable = true
 +        proxiable = true
 +
 +[realms]
 +        douglasqsantos.com.br = {
 +                kdc = ldap1.douglasqsantos.com.br
 +                admin_server = ldap1.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 diretorio para armazenar os logs 
 +<sxh bash>
 +
 +mkdir /​var/​log/​krb5
 +</​sxh>​
 +
 +Agora vamos inserir o host do cliente no kerberos, no servidor kerberos
 +<sxh bash>
 +
 +kadmin ​ -p admin
 +Authenticating as principal admin with password.
 +Password for admin@douglasqsantos.com.br: ​
 +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 vamos adicionar o host no keytab do cliente agora, no cliente ​
 +<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 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>​
 +
 +Vamos consultar o keytab para verificar a existência do nosso host 
 +<sxh bash>
 +
 +klist -ke
 +Keytab name: WRFILE:/​etc/​krb5.keytab
 +KVNO Principal
 +---- --------------------------------------------------------------------------
 +   2 host/​cliente.douglasqsantos.com.br@douglasqsantos.com.br (AES-256 CTS mode with 96-bit SHA-1 HMAC) 
 +   2 host/​cliente.douglasqsantos.com.br@douglasqsantos.com.br (ArcFour with HMAC/​md5) ​
 +   2 host/​cliente.douglasqsantos.com.br@douglasqsantos.com.br (Triple DES cbc mode with HMAC/​sha1) ​
 +   2 host/​cliente.douglasqsantos.com.br@douglasqsantos.com.br (DES cbc mode with CRC-32) ​
 +</​sxh>​
 +
 +Vamos acertar o debconf ​
 +<sxh bash>
 +
 +dpkg-reconfigure debconf
 +#Responda a perguntas
 +#1) Dialog
 +#2) baixa
 +</​sxh>​
 +
 +Agora vamos instalar os pacotes para trabalhar como cliente LDAP 
 +<sxh bash>
 +
 +aptitude install ldap-utils libnss-ldap libpam-ldap nscd libsasl2-modules-gssapi-mit -y
 +#Responda as perguntas da seguinte forma
 +#1) ldap://​ldap1.douglasqsantos.com.br
 +#2) dc=douglasqsantos,​dc=com,​dc=br
 +#3) 3
 +#4) No
 +#5) No 
 +#6) No
 +#7) OK
 +#8) No
 +#9) No
 +#10) Criptografia
 +#11) No
 +#12) Deixe selecionado somente Kerberos e Unix Autentication
 +</​sxh>​
 +
 +
 +Vamos instalar o kstart ​
 +<sxh bash>
 +
 +aptitude install kstart -y
 +</​sxh>​
 +
 +Adicione no final do arquivo /​etc/​inittab ​
 +<sxh bash>
 +
 +vim /​etc/​inittab
 +[...]
 +KS:​2345:​respawn:/​usr/​bin/​k5start -U -f /​etc/​krb5.keytab -K 10 -l 24h
 +</​sxh>​
 +
 +Agora vamos forçar o reload do /​etc/​inittab ​
 +<sxh bash>
 +
 +kill -HUP 1
 +</​sxh>​
 +
 +Vamos acertar o arquivo /​etc/​libnss-ldap.conf ​
 +<sxh bash>
 +
 +cp -Rfa /​etc/​libnss-ldap.conf{,​.bkp}
 +vim /​etc/​libnss-ldap.conf
 +[...]
 +#No final do arquivo adicione
 +use_sasl ​       on
 +sasl_mech ​      ​gssapi
 +krb5_ccname ​    ​FILE:/​tmp/​krb5cc_0
 +</​sxh>​
 +
 +Vamos acertar o arquivo /​etc/​ldap/​ldap.conf ​
 +<sxh bash>
 +
 +cp -Rfa /​etc/​ldap/​ldap.conf{,​.bkp}
 +vim /​etc/​ldap/​ldap.conf
 +BASE    dc=douglasqsantos,​dc=com,​dc=br
 +URI     ​ldap://​ldap1.douglasqsantos.com.br
 +SASL_MECH GSSAPI
 +</​sxh>​
 +
 +Agora vamos acertaro /​etc/​nsswitch.conf ​
 +<sxh bash>
 +
 +vim /​etc/​nsswitch.conf
 +[...]
 +passwd: ​        ​compat ldap
 +group: ​         compat ldap
 +shadow: ​        ​compat ldap
 +</​sxh>​
 +
 +Reiniciar o nscd 
 +<sxh bash>
 +
 +/​etc/​init.d/​nscd restart
 +Restarting Name Service Cache Daemon: nscd.
 +</​sxh>​
 +
 +Vamos acertar a configuração da sessão na pam 
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-session
 +session ​ [default=1] ​                                     pam_permit.so
 +session ​ requisite ​                                       pam_deny.so
 +session ​ required ​                                        ​pam_permit.so
 +session ​ optional ​                                        ​pam_krb5.so minimum_uid=1000
 +session ​ required ​                                        ​pam_unix.so
 +session ​ optional ​                                        ​pam_mkhomedir.so skel=/​etc/​skel umask=077
 +</​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 serviço do ssh 
 +<sxh bash>
 +
 +/​etc/​init.d/​ssh restart
 +</​sxh>​
 +
 +Vamos acertar o cliente ssh 
 +<sxh apache>
 +
 +vim /​etc/​ssh/​ssh_config
 +[...]
 +StrictHostKeyChecking no
 +GSSAPIAuthentication yes
 +GSSAPIDelegateCredentials yes
 +</​sxh>​
 +
 +Agora vamos testar a conexão do novo cliente com o servidor kerberos ​
 +
 +Vamos iniciar um ticket para o cliente ​
 +<sxh bash>
 +
 +kinit douglas
 +Password for douglas@douglasqsantos.com.br:​ #senha
 +</​sxh>​
 +
 +Vamos verificar se ele esta ok 
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: douglas@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 14:​11:​38 ​ 11/08/11 14:​11:​38 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +  renew until 11/08/11 14:16:26
 +</​sxh>​
 +
 +Agora vamos efetuar o teste de ssh para o servidor kerberos ​
 +<sxh bash>
 +
 +ssh douglas@ldap1.douglasqsantos.com.br
 +Warning: Permanently added '​ldap1.douglasqsantos.com.br,​10.0.0.25'​ (RSA) to the list of known hosts.
 +Linux ldap1 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 13:47:10 2011 from 10.0.0.20
 +
 +</​sxh>​
 +
 +Vamos ver se foi criado um ticket na sessão de ssh para o servidor ​
 +<sxh bash>
 +
 +$ klist
 +Ticket cache: FILE:/​tmp/​krb5cc_20001_BDtCdl3117
 +Default principal: douglas@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 14:​11:​46 ​ 11/08/11 14:​11:​38 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +  renew until 11/08/11 14:16:26
 +</​sxh>​
 +
 +Agora vamos efetuar um teste de conexão do servidor para o cliente ​
 +
 +Vamos acertar o arquivo /etc/hosts do servidor ​
 +<sxh bash>
 +
 +vim /etc/hosts
 +127.0.0.1 ​      ​localhost
 +10.0.0.25 ​      ​ldap1.douglasqsantos.com.br ​  ldap1
 +10.0.0.27 ​      ​cliente.douglasqsantos.com.br cliente
 +</​sxh>​
 +
 +Vamos inicializar um ticket ​
 +<sxh bash>
 +
 +kinit douglas
 +Password for douglas@douglasqsantos.com.br:​ #senha
 +</​sxh>​
 +
 +Agora vamos listar o nosso ticket ​
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: douglas@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 14:​16:​22 ​ 11/08/11 14:​16:​21 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora vamos testar a conexão ​
 +<sxh bash>
 +
 +ssh douglas@cliente.douglasqsantos.com.br
 +Warning: Permanently added '​cliente.douglasqsantos.com.br,​10.0.0.27'​ (RSA) to the list of known hosts.
 +Password: ​
 +</​sxh>​
 +
 +Como pode ser notado tivemos um erro novamente, vamos analizar no cliente ​
 +
 +Vamos efetuar um teste de ssh para do cliente para ele mesmo 
 +
 +Vamos inicializar um ticket ​
 +
 +<sxh bash>
 +
 +kinit douglas
 +Password for douglas@douglasqsantos.com.br: ​
 +kinit: Clock skew too great while getting initial credentials
 +</​sxh>​
 +
 +O cliente esta com problemas com o horário, vamos verificar o horário no cliente e no servidor ​
 +
 +No cliente ​
 +<sxh bash>
 +
 +date
 +Seg Nov  7 14:32:06 BRST 2011
 +</​sxh>​
 +
 +No servidor ​
 +<sxh bash>
 +
 +date
 +Seg Nov  7 14:26:41 BRST 2011
 +</​sxh>​
 +
 +Como pode ser notado temos uma diferença entre os dois vamos sincronizar o cliente com o servidor ​
 +<sxh bash>
 +
 +ntpdate -u ldap1.douglasqsantos.com.br
 + 7 Nov 14:36:42 ntpdate[2086]:​ no server suitable for synchronization found
 +</​sxh>​
 +
 +Vamos sincronizar os dois servidor com o ntp.usp.br ​
 +
 +No servidor ​
 +<sxh bash>
 +
 +ntpdate -u ntp.usp.br
 + 7 Nov 14:43:32 ntpdate[3483]:​ step time server 143.107.255.15 offset 5.530868 sec
 +</​sxh>​
 +
 +No cliente ​
 +<sxh bash>
 +
 +ntpdate -u ntp.usp.br
 + 7 Nov 14:44:10 ntpdate[2103]:​ step time server 143.107.255.15 offset -0.848529 sec
 +</​sxh>​
 +
 +
 +Agora no cliente vamos incializar um novo ticket ​
 +<sxh bash>
 +
 +kinit douglas
 +Password for douglas@douglasqsantos.com.br:​ #senha
 +</​sxh>​
 +
 +Agora vamos listar o ticket ​
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: douglas@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 15:​07:​45 ​ 11/08/11 15:​07:​45 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +  renew until 11/08/11 15:08:21
 +</​sxh>​
 +
 +Agora vamos efetuar uma conexão de ssh do cliente para ele mesmo 
 +<sxh bash>
 +
 +ssh douglas@cliente.douglasqsantos.com.br
 +Creating directory '/​home/​douglas'​.
 +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.
 +[14:57:44] douglas@cliente [~] $ 
 +</​sxh>​
 +
 +Como pode ser notado a configuração passou normalmente ​
 +
 +Agora novamente no servidor vamos fazer o teste de conexão ssh 
 +
 +Vamos inicializar um ticket  ​
 +<sxh bash>
 +
 +kinit douglas
 +Password for douglas@douglasqsantos.com.br:​ #senha
 +</​sxh>​
 +
 +Agora vamos listar o ticket ​
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0
 +Default principal: douglas@douglasqsantos.com.br
 +
 +Valid starting ​    ​Expires ​           Service principal
 +11/07/11 15:​13:​28 ​ 11/08/11 15:​13:​27 ​ krbtgt/​douglasqsantos.com.br@douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora vamos testar a conexão ssh do servidor para o cliente ​
 +<sxh bash>
 +
 +ssh douglas@cliente.douglasqsantos.com.br
 +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 15:13:51 2011 from cliente.douglasqsantos.com.br
 +[15:14:22] douglas@cliente [~] $ 
 +</​sxh>​
 +
 +Como pode ser notado a autenticação estão ok 
 +
 +===== Referências =====
 +
 +  - http://​www.openldap.org/​
 +  - http://​www.openldap.org/​doc/​admin24/​
 +  - http://​www.openldap.org/​doc/​admin24/​quickstart.html
 +  - http://​adoldap.codeplex.com/​
 +  - http://​www.openldap.org/​doc/​admin24/​OpenLDAP-Admin-Guide.pdf
 +  - http://​www.samba.org/​samba/​docs/​Samba3-HOWTO.pdf
 +  - 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