Differences

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

Link to this comparison view

servidor_kerberos_em_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Servidor Kerberos em Debian Squeeze ======
  
 +
 +**INTRODUÇÃO**
 +
 +Um dos grandes problemas ao implementar um sistema de segurança em uma organização é a parte interna da rede. E não a parte externa ou a internet, como muitas pessoas pensam. Para as conexões externas existem vários softwares e técnicas que implementam firewalls e proxies seguros. Mas para a rede interna da organização é mais complicado, pois neste ambiente estamos trabalhando com pessoas ligadas à organização e desta forma confiáveis.
 +
 +Por descuido ou por vontade própria uma pessoa da organização pode instalar um software malicioso que libere acesso para fora da rede, deixando a rede interna, seus servidores e demais hosts desprotegidos. Ou, este software pode ser algum tipo de spyware, que mande informações sigilosas para fora da organização. Para evitar esse tipo de software e controlar este tipo de usuário descuidado pode-se utilizar o Kerberos.
 +
 +A primeira seção deste artigo trata dos conceitos relacionados ao Kerberos. A segunda seção discute um pouco o conceito de segurança abordado pelo Kerberos. Na seção 3 são abordadas as decisões de configuração do sistema. A seção 4 aborda a configuração do Kerberos em uma rede e a seção 5 discute sobre a utilização do Kerberos pelos usuários da rede. Finalizando com a seção 5 e as conclusões sobre a utilização do Kerberos.
 +
 +
 +
 +**KERBEROS**
 +
 +Kerberos é um sistema de autenticação que permite usuários utilizarem serviços de rede se identificando e autenticando em tempo real, utilizando um sistema seguro e criptografado.
 +
 +Em um sistema convencional é requerida ao usuário uma identificação e que este usuário autentique esta identificação antes da utilização do sistema. Uma rede que conecta possíveis clientes a serviços por ela providos também precisa identificar e autenticar estes clientes, que podem ser usuários ou softwares.
 +
 +O problema é que muitos serviços de rede aceitam sem questionar a autenticação provida pela máquina cliente, que está sobre total domínio do usuário. E um serviço seguro de rede não pode confiar na integridade da autenticação provida por uma máquina cliente.
 +
 +Com o Kerberos, toda vez que um possível cliente for utilizar um serviço da rede, ele vai questionar sua identidade e a respectiva autenticação,​ permitindo ou não o uso do serviço pelo cliente. Além disso, Kerberos provê um meio criptografado de comunicação,​ mesmo em uma rede não segura, como a internet.
 +
 +**AUTÊNTICAÇÃO KERBEROS**
 +
 +O sistema de autenticação Kerberos é baseado no protocolo de autenticação de três vias e foi desenvolvido pelos membros do projeto Athena no MIT (Massachusetts Institute of Technology).
 +
 +O Kerberos prove aos usuários ou serviços "​ticket"​ que são utilizados para a identificação e chaves criptografadas para comunicação pela rede.
 +
 +O Kerberos é usualmente utilizado na camada de aplicação,​ provendo a segurança entre o usuário e o host. Mas também pode ser usado para prover segurança entre hosts, trabalhando com os protocolos IP, TCP e UDP.
 +
 +Em uma rede com Kerberos é definido um host, denominado Servidor de Autenticação,​ que centraliza as funções administrativas do Kerberos e é onde também está o Centro de Distribuição de Chaves (KDC). Este servidor mantém uma base de dados com todas senhas secretas dos usuários. Sendo que ele é o responsável por gerar os tickets quando dois usuários desejam se comunicar através de um meio seguro, identificando e autenticando estes usuários.
 +
 +**DISTRIBUIÇÃO DE TICKET**
 +
 +Quando um cliente, que pode ser um usuário ou um serviço, faz um requerimento por um "​ticket"​ para o Centro de Distribuição de Chaves (KDC), esse cria um "​ticket granting ticket"​ (TGT) para o cliente e o criptografa utilizando a senha secreta do usuário. Após isso, o KDC envia o TGT criptografado para o cliente. O cliente descriptografa o TGT com sua senha secreta, garantindo a sua identidade.
 +
 +O ticket expira de tempos em tempos. O Kerberos permite que o cliente obtenha um outro ticket, permitindo-o continuar a utilizar o serviço. Estes requerimentos adicionais de ticket são transparentes para o usuário.
 +
 +
 +**PRINCIPAL**
 +
 +Principal é um termo do Kerberos que define uma entidade, ou seja, um usuário ou um serviço por meio de um endereço. Este endereço é comumente dividido em três partes: a primeira parte contém o nome do usuário ou do serviço, a segunda parte contém o nome do host ou nada quando se trata de um usuário e a terceira parte contém o nome do realm.
 +
 +host/​servico.empresab.br@SERVIDOR.EMPRESAB.BR
 +
 +
 +**REDE KERBEROS**
 +
 +Kerberos divide a rede em domínios seguros, denominados "​realms"​. Cada realm tem seu servidor de autenticação e uma política de segurança própria. Isso permite que uma organização defina diferentes níveis de segurança, se assim desejar. A divisão dos realms também pode ser hierárquica,​ permitindo que cada área da organização possua um realm local vinculado ao realm central.
 +
 +Essa hierarquia fica transparente para o usuário. Por exemplo, se um usuário autenticado no realm FINANCEIRO.EMPRESAA.COM requerer comunicação com o realm PESSOAL.EMPRESAA.COM,​ ele não precisa se autenticar novamente. A identidade do usuário é passada entre os realms internos ao realm pai EMPRESAA.
 +
 +Mas se um usuário autenticado na EMPRESAA.COM for utilizar um serviço ou informação do realm SERVICO.EMPRESAB.BR,​ o Kerberos requer uma nova autenticação ao usuário da EMPRESAA.COM. Para que essa comunicação ocorra, as duas organizações tem que trocar chaves criptografadas dos servidores de chave. Desta forma é estabelecida uma comunicação segura através da internet, entre as duas organizações.
 +
 +**SEGURANÇA**
 +
 +Kerberos não é um sistema de segurança completo. Ele implementa três itens de segurança: autenticação,​ autorização e administração de contas. Sendo que a segurança destes é garantida através de criptografia.
 +
 +**AUTENTICAÇÃO**
 +
 +Qualquer usuário pode requerer uma identificação. Mas para que isso ocorra, o Kerberos requer sua senha secreta para que o usuário possa se autenticar no sistema. Este sistema pode ficar mais robusto se for provido "​tokens"​ aos usuários. Estes tokens são hardwares específicos que contém uma string criptografada,​ por usuário. O sistema também pode fazer leitura biométrica do usuário, impressão digital, escaneamento de íris. Todas esses métodos são métodos de garantir a autenticação do usuário, ou seja, garantir que o usuário é quem ele está falando que é.
 +
 +**AUTORIZAÇÃO**
 +
 +Após a autenticação o sistema, o usuário é conhecido por uma ID. Neste ponto o Kerberos deve verificar este ID tem autorização para utilizar o serviço requerido.
 +
 +**ADMINISTRAÇÃO DE COTAS**
 +
 +O sistema de contas permite que possa ser feita auditoria dos acessos dos usuários. Isso é importante, pois em caso de invasão ou roubo de informações,​ fica mais fácil saber quem foi o responsável por esta ação, já que cada usuário é responsável por suas ações.
 +
 +
 +Decisões do sistema
 +Como em todo sistema de segurança, antes de instalar o Kerberos é necessário definir algumas diretrizes.
 +
 +**NOME(S) DO(S) REALM(S)**
 +
 +Convenciona-se utilizar o mesmo nome do domínio em caixa alta para o realm. Se existirem mais de um realm, é aconselhado utilizar nomes descritivos para os realms filhos.
 +
 +**MAPEAMENTO DOS HOSTNAMES**
 +
 +O método mais seguro de mapear os hostnames nos realms é setando as regras no arquivo de configuração krb5.conf. O mapeamento pode ser feito por domínios ou subdomínios inteiros ou para cada hostname.
 +
 +**PORTAS DE ACESSO**
 +
 +A porta padrão utilizada pelo Kerberos v5 é a porta 88 para o KDC, a porta 749 para o servidor de administrador e a porta 754 para o servidor de propagação. Para a versão 4 do Kerberos é utilizada a porta 750 para o KDC e a porta 751 para o servidor de administrador.
 +
 +**KDC'​S ESCRAVOS**
 +
 +KDC's escravos são úteis para auxiliar o KDC mestre a prover ticket ou até mesmo se o KDC mestre estiver inacessível. O número de KDC's escravos e a sua localização vão depender da rede em que eles atuarão.
 +
 +Toda requisição de autenticação na rede será feita a um KDC, desta forma os hosts responsáveis por este serviço são muito acessados, sendo aconselhado ter pelo menos um KDC escravo para auxiliar o KDC mestre ou mesmo para ser utilizado como backup, caso o KDC mestre fique inalcançável por qualquer motivo.
 +
 +**HOSTNAMES PARA KDC'​S**
 +
 +Normalmente se utilizam nomes semelhantes aos apelidos de DNS, por exemplo, Kerberos para o KDC mestre e Kerberos_1, Kerberos_2 e etc para os KDC's escravos.
 +
 +No Kerberos V5 foi adicionado um mecanismo de localizar KDC's por DNS, através do parâmetro SRV do DNS. Esse parâmetro indica o nome do host e o número da porta do serviço, quando a localização for feita por nome de serviço e nome do domínio.
 +
 +Utilizando este serviço de localização de nomes, o SRV, o nome de domínio utilizado é semelhante ao nome do realm. Isto é útil para utilização do Kerberos em ambientes fora da rede interna da organização,​ como na Internet.
 +
 +Alguns nomes de serviços internos do Kerberos:
 +
 +  * _kerberos._udp:​ Utilizado para contatar o KDC através de conexão UDP. Este é o tipo de conexão padrão e a conexão é feita pela porta 88 dos KDC's.
 +  * _kerberos._tcp:​ Para contatar um KDC através de conexão TCP. Por padrão o KDC do MIT não ouve conexões TCP's. Este serviço é utilizado se for utilizado um outro KDC. Esta conexão é estabelecida pela porta 88 TCP.
 +  * _kerberos-master._udp:​ Este serviço é utilizado para contatar o KDC mestre diretamente no caso do usuário estiver logando e sua senha secreta não for aceita porque o KDC que ele se refere normalmente ainda não tiver a base de dados atualizada. Se na rede existir somente um KDC, ou se o KDC mais próximo estiver atualizando a base de dados, este serviço não deve ser utilizado.
 +  * _kerberos-adm._tcp:​ Utilizado pelo programa kadmin, escuta a porta 749 no KDC mestre.
 +  * _kpasswd._udp:​ Utilizado para mudar senhas secretas, escuta a porta 464 no KDC mestre.
 +  * _kerberos-iv._udp:​ Refere-se aos KDC's do Kerberos v4, se este estiver habilitado.
 +
 +
 +**PROPAGAÇÃO DA BASE DE DADOS**
 +
 +A base de dados central do Kerberos fica armazenada no KDC mestre e deve ser propagada regularmente para os KDC's escravos. Este tempo de propagação pode ser definido no KDC mestre através de um "cron job". E deve ser feita toda vez que a base de dados for atualizada, por exemplo, ao alterar uma senha de usuário.
 +
 +Se a base de dados for muito grande ou existirem muitos KDC's escravos, tornando o processo de propagação muito pesado para a rede, esta propagação pode ser feita aos poucos, onde o KDC mestre envia a base de dados para um grupo de KDC's escravos e estes reenviam para o restante dos KDC's escravos, em blocos.
 +
 +**INSTALAÇÃO**
 +
 +Agora que já temos uma ideia de como o Kerberos funciona vamos fazer a implementação dele no Debian Squeeze.
 +
 +Agora vamos fazer alguns acertos para o nosso teste
 +  - Vamos desabilitar o ipv6
 +  - Vamos definir o nome da maquina como kdc1
 +  - Vamos definir o endereço ip da maquina como 10.0.0.23
 +
 +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.
 +
 +Desabilitar o ipv6.
 +<sxh bash>
 +
 +echo "​net.ipv6.conf.all.disable_ipv6=1"​ >> /​etc/​sysctl.conf
 +</​sxh>​
 +
 +Vamos acertar o nome da maquina
 +<sxh bash>
 +
 +vim /​etc/​hostname
 +kdc1
 +</​sxh>​
 +
 +Agora vamos acertar o /etc/hosts
 +<sxh bash>
 +
 +vim /etc/hosts
 +127.0.0.1 ​      ​localhost
 +10.0.0.23 ​      ​kdc1.douglasqsantos.com.br kdc1
 +</​sxh>​
 +
 +Vamos reiniciar o servidor ​
 +<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.23'​ (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.23 ​      ​kdc1.douglasqsantos.com.br kdc1
 +10.0.0.22 ​      ​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
 +  - 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
 +                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. ​
 +
 +Na maquina cliente.
 +
 +<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>​
 +
 +No master vamos acertar o /etc/hosts
 +<sxh bash>
 +
 +vim /etc/hosts
 +127.0.0.1 ​      ​localhost
 +10.0.0.23 ​      ​kdc1.douglasqsantos.com.br kdc1
 +10.0.0.22 ​      ​cliente.douglasqsantos.com.br ​     cliente
 +</​sxh>​
 +
 +Vamos listar as maquinas que estão no keytab
 +<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 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
 +10/10/11 14:​09:​56 ​ 10/11/11 14:​09:​54 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Agora vamos conectar via ssh no servidor, no cliente então
 +<sxh bash>
 +
 +[14:12:38] root@cliente [~] # ssh kdc1.douglasqsantos.com.br
 +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 14:12:11 2011 from 10.0.0.22
 +[14:14:25] 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>
 +
 +[14:13:34] root@kdc1 [~] # ssh cliente.douglasqsantos.com.br
 +Warning: Permanently added '​cliente.douglasqsantos.com.br,​10.0.0.22'​ (RSA) to the list of known hosts.
 +Linux cliente 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 12:21:52 2011 from 10.0.0.20
 +[14:13:35] 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 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.
 +You have new mail.
 +Last login: Mon Oct 10 14:27:06 2011 from cliente.douglasqsantos.com.br
 +douglas@kdc1:​~$ ​
 +</​sxh>​
 +
 +Agora vamos listar os tickets
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_1000_bL2322
 +Default principal: douglas@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +10/10/11 14:​31:​42 ​ 10/11/11 14:​31:​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
 +Oct 10 14:31:42 kdc1 sshd[2324]: pam_krb5(sshd:​auth):​ user douglas authenticated as douglas@DOUGLASQSANTOS.COM.BR
 +Oct 10 14:31:42 kdc1 sshd[2322]: Accepted keyboard-interactive/​pam for douglas from 10.0.0.22 port 60036 ssh2
 +Oct 10 14:31:42 kdc1 sshd[2322]: pam_unix(sshd:​session):​ session opened for user douglas by (uid=0)
 +</​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
 +
 +
 +Configurando o SUDO
 +<sxh bash>
 +
 +aptitude update && aptitude install sudo -y
 +</​sxh>​
 +
 +Agora vamos efetuar testes de autenticação de usuário comum via ssh e mudar para o root no cliente
 +<sxh bash>
 +
 +[16:29:36] root@cliente [~] # ssh kdc1.douglasqsantos.com.br -l douglas
 +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.
 +You have new mail.
 +Last login: Mon Oct 10 16:27:38 2011 from cliente.douglasqsantos.com.br
 +douglas@kdc1:​~$ ​
 +</​sxh>​
 +
 +Agora vamos listar os tickets
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_1000_hxxAi29478
 +Default principal: douglas@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +10/10/11 16:​29:​48 ​ 10/11/11 15:​38:​19 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Temos o ticket então vamos se logar como root pelo sudo
 +<sxh bash>
 +
 +douglas@kdc1:​~$ sudo su 
 +Password: #informe a senha do usuário comum
 +</​sxh>​
 +
 +Agora vamos checar o ticket
 +<sxh bash>
 +
 +[16:31:43] root@kdc1 [/​home/​douglas] # klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_1000_crrrE29557
 +Default principal: douglas@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +10/10/11 16:​31:​40 ​ 10/11/11 15:​38:​19 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Note que o ticket foi gerado para o usuário douglas@DOUGLASQSANTOS.COM.BR mesmo nós logados com o usuário root
 +
 +Agora vamos logar novamente via ssh porém vamos utilizar o sudo su - ou invés de sudo su 
 +<sxh bash>
 +
 +douglas@kdc1:​~$ sudo su -
 +Password: #informe a senha do usuário comum
 +</​sxh>​
 +
 +Agora vamos listar os tickets
 +<sxh bash>
 +
 +klist 
 +klist: No credentials cache found (ticket cache FILE:/​tmp/​krb5cc_0)
 +</​sxh>​
 +
 +Como pode ser notado não foi gerado o ticket para o usuário root quando informamos sudo su - ele carrega as variáveis de ambiente para o usuário root.
 +
 +Vamos fazer uma modificação na PAM para que seja criado o ticket quando executarmos sudo su ou sudo su - 
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​su
 +#Começo do arquivo
 +auth    sufficient ​ pam_krb5.so
 +
 +auth    sufficient pam_rootok.so
 +</​sxh>​
 +
 +Agora vamos logar novamente e passar para o usuário root
 +<sxh bash>
 +
 +sudo su 
 +Password: #informe a senha do usuario
 +Password: #informe novamente a senha do usuário
 +</​sxh>​
 +
 +Agora vamos listar os tickets novamente
 +<sxh bash>
 +
 +klist 
 +Ticket cache: FILE:/​tmp/​krb5cc_0_auqYJO
 +Default principal: root@DOUGLASQSANTOS.COM.BR
 +
 +Valid starting ​    ​Expires ​           Service principal
 +10/10/11 16:​45:​47 ​ 10/11/11 16:​45:​47 ​ krbtgt/​DOUGLASQSANTOS.COM.BR@DOUGLASQSANTOS.COM.BR
 +</​sxh>​
 +
 +Agora foi gerado o ticket do root porém tivemos que informar duas vezes a senha na primeira vez que foi informada a senha ele foi passada para o comando sudo na segunda vez que foi informada a senha foi passada para o comando su - 
 +
 +Agora vamos ver os logs em /​var/​log/​auth.log ​
 +
 +Este primeiro é a autenticação via ssh
 +<sxh bash>
 +
 +Oct 10 16:45:32 kdc1 sshd[30094]:​ Authorized to douglas, krb5 principal douglas@DOUGLASQSANTOS.COM.BR (krb5_kuserok)
 +Oct 10 16:45:32 kdc1 sshd[30094]:​ Accepted gssapi-with-mic for douglas from 10.0.0.22 port 60132 ssh2
 +Oct 10 16:45:32 kdc1 sshd[30094]:​ pam_unix(sshd:​session):​ session opened for user douglas by (uid=0)
 +</​sxh>​
 +
 +Este segundo log é do comando sudo
 +<sxh bash>
 +
 +Oct 10 16:45:41 kdc1 sudo: pam_krb5(sudo:​auth):​ user douglas authenticated as douglas@DOUGLASQSANTOS.COM.BR
 +Oct 10 16:45:41 kdc1 sudo:  douglas : TTY=pts/1 ; PWD=/​home/​douglas ; USER=root ; COMMAND=/​bin/​su
 +</​sxh>​
 +
 +Este terceiro log é do comando su 
 +<sxh bash>
 +
 +Oct 10 16:45:47 kdc1 su[30123]: pam_krb5(su:​auth):​ user root authenticated as root@DOUGLASQSANTOS.COM.BR
 +Oct 10 16:45:47 kdc1 su[30123]: Successful su for root by root
 +Oct 10 16:45:47 kdc1 su[30123]: + /dev/pts/1 root:root
 +Oct 10 16:45:47 kdc1 su[30123]: pam_unix(su:​session):​ session opened for user root by douglas(uid=0)
 +</​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