Cette procédure utilise les paramètres de configuration ci-dessous :
Nom de domaine = EXAMPLE.COM
Nom de domaine DNS = example.com
KDC maître = kdc1.example.com
Serveur d'annuaire = dsserver.example.com
admin principal = kws/admin
FMRI pour le service LDAP = svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1
URL de l'aide en ligne = http://docs.oracle.com/cd/E23824_01/html/821-1456/aadmin-23.html
Avant de commencer
L'hôte soit configuré pour utiliser DNS. Pour de meilleures performances, installez le KDC et le service d'annuaire LDAP sur le même serveur. En outre, un Serveur d'annuaire doit être en cours d'exécution. La procédure ci-dessous fonctionne avec des serveurs utilisant Oracle Directory Server Enterprise Edition. Pour plus d'informations, reportez-vous à Oracle Identity Management - Documentation.
Vous devez prendre le rôle root sur le serveur KDC. Pour plus d'informations, reportez-vous à la section A l’aide de vos droits administratifs attribués du manuel Sécurisation des utilisateurs et des processus dans Oracle Solaris 11.2 .
Les étapes suivantes permettent de configurer le KDC afin qu'il utilise le certificat autosigné du Serveur d'annuaire.
# /export/sun-ds6.1/ds6/bin/dsadm show-cert -F der /export/sun-ds6.1/directory2 \ defaultCert > /tmp/defaultCert.cert.der
# pktool setpin keystore=nss dir=/var/ldap # chmod a+r /var/ldap/*.db # pktool import keystore=nss objtype=cert trust="CT" \ infile=/tmp/defaultCert.cert.der \ label=defaultCert dir=/var/ldap
Pour plus d'informations, reportez-vous à la page de manuel pktool(1).
Cet exemple suppose que l'entrée cn=directory manager dispose de privilèges d'administration.
master# /usr/bin/ldapsearch -Z -P /var/ldap -D "cn=directory manager" \ -h dsserver.example.com -b "" -s base objectclass='*' Subject: "CN=dsserver.example.com,CN=636,CN=Directory Server,O=Example Corporation
Notez que l'entrée CN=dsserver.example.com doit inclure le nom d'hôte complet, pas une version abrégée.
# ldapmodify -h dsserver.example.com -D "cn=directory manager" \ -f /usr/share/lib/ldif/kerberos.ldif
Ajoutez les entrées suivantes au fichier krb5.conf.
Ajoutez une entrée pour définir le database_module sur la section realms.
database_module = LDAP
[dbmodules] LDAP = { ldap_kerberos_container_dn = "cn=krbcontainer,dc=example,dc=com" db_library = kldap ldap_kdc_dn = "cn=kdc service,ou=profile,dc=example,dc=com" ldap_kadmind_dn = "cn=kadmin service,ou=profile,dc=example,dc=com" ldap_cert_path = /var/ldap ldap_servers = ldaps://dsserver.example.com }
Cette commande crée krbcontainer et plusieurs autres objets. Elle crée également une clé principale /var/krb5/.k5.EXAMPLE.COM et un fichier stash pour la clé. Pour plus d'informations sur les options de la commande, reportez-vous à la page de manuel kdb5_ldap_util(1M).
# kdb5_ldap_util -D "cn=directory manager" create -P master-key -r EXAMPLE.COM -s
Ces mots de passe sont utilisés par le KDC lorsqu'il se connecte au serveur d'annuaire. Le KDC utilise des rôles différents en fonction du type d'accès utilisé par le KDC.
# kdb5_ldap_util stashsrvpw "cn=kdc service,ou=profile,dc=example,dc=com" # kdb5_ldap_util stashsrvpw "cn=kadmin service,ou=profile,dc=example,dc=com"
dn: cn=kdc service,ou=profile,dc=example,dc=com cn: kdc service sn: kdc service objectclass: top objectclass: person userpassword: xxxxxxxx dn: cn=kadmin service,ou=profile,dc=example,dc=com cn: kadmin service sn: kadmin service objectclass: top objectclass: person userpassword: xxxxxxxx
# ldapmodify -a -h dsserver.example.com -D "cn=directory manager" -f kdc_roles.ldif
# cat << EOF | ldapmodify -h dsserver.example.com -D "cn=directory manager" # Set kadmin ACL for everything under krbcontainer. dn: cn=krbcontainer,dc=example,dc=com changetype: modify add: aci aci: (target="ldap:///cn=krbcontainer,dc=example,dc=com")(targetattr="krb*")(version 3.0;\ acl kadmin_ACL; allow (all)\ userdn = "ldap:///cn=kadmin service,ou=profile,dc=example,dc=com";) # Set kadmin ACL for everything under the people subtree if there are # mix-in entries for krb princs: dn: ou=people,dc=example,dc=com changetype: modify add: aci aci: (target="ldap:///ou=people,dc=example,dc=com")(targetattr="krb*")(version 3.0;\ acl kadmin_ACL; allow (all)\ userdn = "ldap:///cn=kadmin service,ou=profile,dc=example,dc=com";) EOF
Vous devez attribuer un nom au les domaines (realms) et sur les serveurs. Pour plus d'informations sur ce fichier, reportez-vous à la page de manuel krb5.conf(4).
kdc1 # pfedit /etc/krb5/krb5.conf [libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = kdc1.example.com admin_server = kdc1.example.com } [domain_realm] .example.com = EXAMPLE.COM # # if the domain name and realm name are equivalent, # this entry is not needed # [logging] default = FILE:/var/krb5/kdc.log kdc = FILE:/var/krb5/kdc.log [appdefaults] gkadmin = { help_url = http://docs.oracle.com/cd/E23824_01/html/821-1456/aadmin-23.html }
Dans cet exemple, les lignes pour default_realm, kdc, admin_server et toutes les entrées domain_realm ont été modifiées. En outre, l'aide en ligne URL a été modifié.
Vous devez attribuer un nom au domaine. Pour plus d'informations sur ce fichier, reportez-vous à la page de manuel kdc.conf(4).
Dans cet exemple, en plus de la définition du nom de domaine, l'administrateur modifie la propagation incrémentielle et erreurs de journalisation.
kdc1 # pfedit /etc/krb5/kdc.conf [kdcdefaults] kdc_ports = 88,750 [realms] EXAMPLE.COM = { profile = /etc/krb5/krb5.conf database_name = /var/krb5/principal acl_file = /etc/krb5/kadm5.acl kadmind_port = 749 max_life = 8h 0m 0s max_renewable_life = 7d 0h 0m 0s sunw_dbprop_enable = true sunw_dbprop_master_ulogsize = 1000 }
Une fois renseigné, le fichier /etc/krb5/kadm5.acl doit contenir tous les noms de principaux autorisés à administrer le KDC.
kws/admin@EXAMPLE.COM *
L'entrée précédente donne au principal kws/admin du domaine EXAMPLE.COM la possibilité de modifier les principaux et les stratégies dans le KDC. La valeur par défaut de l'entrée du principal est un astérisque (*), qui renvoie à tous les principaux admin. Cette entrée peut se présenter un risque en matière de sécurité. Modifiez le fichier de façon explicite afin de pouvoir répertorier chaque principal admin ainsi que leurs droits. Pour plus d'informations, reportez-vous à la page de manuel kadm5.acl(4).
kdc1 # /usr/sbin/kadmin.local kadmin.local:
Vous pouvez ajouter autant de principaux admin que nécessaire. Vous devez créer au moins un principal admin pour terminer le processus de configuration du KDC. Pour cet exemple, vous créez le principal kws/admin. Vous pouvez remplacer "kws" par le nom de principal approprié.
kadmin.local: addprinc kws/admin Enter password for principal kws/admin@EXAMPLE.COM:/** Type strong password **/ Re-enter password for principal kws/admin@EXAMPLE.COM: xxxxxxxx Principal "kws/admin@EXAMPLE.COM" created. kadmin.local:
kadmin.local: quit
Si les serveurs LDAP et KDC sont en cours d'exécution sur le même hôte et si le service LDAP est configuré avec SMF, ajoutez une dépendance au service LDAP pour les démons Kerberos. Cette dépendance redémarre le service KDC si le service LDAP est redémarré.
# svccfg -s security/krb5kdc svc:/network/security/krb5kdc> addpg dsins1 dependency svc:/network/security/krb5kdc> setprop dsins1/entities = \ fmri: "svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1" svc:/network/security/krb5kdc> setprop dsins1/grouping = astring: "require_all" svc:/network/security/krb5kdc> setprop dsins1/restart_on = astring: "restart" svc:/network/security/krb5kdc> setprop dsins1/type = astring: "service" svc:/network/security/krb5kdc> exit
# svccfg -s security/kadmin svc:/network/security/kadmin> addpg dsins1 dependency svc:/network/security/kadmin> setprop dsins1/entities =\ fmri: "svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1" svc:/network/security/kadmin> setprop dsins1/grouping = astring: "require_all" svc:/network/security/kadmin> setprop dsins1/restart_on = astring: "restart" svc:/network/security/kadmin> setprop dsins1/type = astring: "service" svc:/network/security/kadmin> exit
Pour assurer la redondance, veillez à installer au moins un KDC esclave. Pour obtenir des instructions, reportez-vous à la section Configuration manuelle d'un KDC esclave.