Você está na página 1de 2

Kerberos(servidor) com LDAP

Se o Kerberos ainda não estiver instalado é preciso instalar os pacotes abaixo, caso contrário basta
configurá-lo:
sudo apt-get install krb5-kdc-ldap krb5-kdc krb5-admin-server krb5-config krb5-user

/etc/krb5.conf configura a localização do banco de dados, vamos apontá-lo para LDAP.


[libdefaults]
default_realm = EDU.EXAMPLE.ORG

[realms]
EDU.EXAMPLE.ORG = {
kdc = kerberos.edu.example.org
admin_server = kerberos.edu.example.org
master_kdc = kerberos.edu.example.org
default_domain = edu.example.org
database_module = ldap_edu.example.org
}

[domain_realm]
.edu.example.org = EDU.EXAMPLE.ORG
edu.example.org = EDU.EXAMPLE.ORG

[dbmodules]
ldap_edu.example.org = {
db_library = kldap
ldap_kerberos_container_dn = cn=krbcontainer,dc=edu,dc=example,dc=org
ldap_kdc_dn = uid=admin,ou=People,dc=edu,dc=example,dc=org
ldap_kadmind_dn = uid=admin,ou=People,dc=edu,dc=example,dc=org
ldap_service_password_file = /etc/krb5.secrets
ldap_servers = ldap://127.0.0.1
ldap_conns_per_server = 5
}

Para inicializar o banco de dados no diretório LDAP usamos a ferramenta kdb5_ldap_util is com uma
credencial válida no ldap. A Senha principal do KDC é configurada novamente nesse ponto.
sudo kdb5_ldap_util -D uid=admin,ou=People,dc=edu,dc=example,dc=org \
create -subtrees dc=edu,dc=example,dc=org -s -H ldap://localhost -r EDU.EXAMPLE.ORG

Password for "uid=admin,ou=People,dc=edu,dc=example,dc=org":


Initializing database for realm 'EDU.EXAMPLE.ORG'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:

Kerberos container is missing. Creating now...

Algumas dicas para petenciais erros:


“kdb5_ldap_util: Kerberos container location not specified while reading kerberos container information”
– /etc/krb5.conf possui algum erro que não consegue mapear o banco de dados
Server is unwilling to perform – o sulfixo ldap confiurado para o realm não é válido
Agora precisamos graver o usuário e a senha para o KDC poder acessa o LDAP:
sudo kdb5_ldap_util -D uid=admin,ou=People,dc=edu,dc=example,dc=org \
stashsrvpw -f /etc/krb5.secrets uid=admin,ou=People,dc=edu,dc=example,dc=org

Assim como fizemos no primeiro tutorial do Kerberos, crie um usuario administrador que pode modificar o
banco de dados:
sudo kadmin.local -q "addprinc admin/admin@EDU.EXAMPLE.ORG

Finalmente de ao usuário direitos de acesso em /etc/krb5kdc/kadm5.acl:


*/admin *

Verifique as configurações do KDC em /etc/krb5kdc/kdc.conf, devem ser:


[kdcdefaults]
kdc_ports = 750,88

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

Agora reinicie o krb5-kdc e o krb5-admin-server e execute o commando kinit para pegar um ticket
kerberos:
$ kinit admin/admin
Password for admin/admin@EDU.EXAMPLE.ORG:
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: admin/admin@EDU.EXAMPLE.ORG

Valid starting Expires Service principal


01/28/10 03:10:20 01/29/10 03:10:20 krbtgt/EDU.EXAMPLE.ORG@EDU.EXAMPLE.ORG

Se você verificar o LDAP pelo phpldapadmin , o principal admin/admin estará armazenado na dn:
krbPrincipalName=admin/admin@EDU.EXAMPLE.ORG,cn=EDU.EXAMPLE.ORG,
cn=krbcontainer,dc=edu,dc=example,dc=org