Cet article présente en détails les opérations nécessaires à la mise en place d'un serveur de ticket KerberosV (krb5kdc) ainsi que le programme nécessaire à l'administration distance (kadmind), permettant aux administrateur de gérer les différentes identités (principal selon la terminologie kerberos).
Points à garder en tête avant de mettre en place une archi kerberos:
127.0.0.1 localhost nom.de.domaine nom
1.1.1.1 nom.de.domaine nom
Pour prévenir ces problèmes nous avons en interne un paquet debian contenant toutes les confs et un scripts chargés d'effectuer les tests 'pré vol'. Extrait de la version pour debian/sarge:
echo "Fichier /etc/hosts"
/bin/cp /etc/hosts $BACKUPS/hosts
sed -ie 's/^127.0.0.1.*$/127.0.0.1 localhost localhost.localdomain/' /etc/hosts
echo "First some Kerberbos/DNS sanity checks ..."
HOST=${HOST:-`hostname -f`}
INA=`$DIG $HOST`
PTR=`$DIG -x $INA`
if [ "$PTR" != "$HOST." ];
then
echo "[ERROR] Dns isn't setup correctly. Unable to proceed:"
echo " $HOST IN A give $INA "
echo " $INA PTR give $PTR "
exit 10
fi
echo "Verification date"
NTP_INIT=ntp
if [ -x /etc/init.d/ntp-server ]; then
NTP_INIT=ntp-server
fi
invoke-rc.d $NTP_INIT stop
/usr/sbin/ntpdate pool.ntp.org
sed -i -e 's/#server/server/g' /etc/ntp.conf
invoke-rc.d $NTP_INIT start
Bon revenons à nos moutons, va falloir s'y mettre à se foutu KDC.
Il faut tout d'abord configurer le fichier kdc.conf (debian: /etc/krb5kdc/kdc.conf) pour ajouter notre nouveau realm, exemple:
SYSADMIN.NET = {
database_name = /var/lib/krb5kdc/sysadmin
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash-sysadmin
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-hmac-sha1
supported_enctypes = des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
default_principal_flags = +preauth
}
dans l'ordre:
Executons la commande suivante, en root:
kdb5_util -r SYSADMIN.NET create -s
PS: L'outil va demander un mot de passe utilisé pour sécuriser la base, ce mot de passe ne sert quasiment jamais (notez quand même que l'oublier peut-être une mauvaise idée), donc utilisez un truc très long alacon(tm)(c).
Reste à spécifier qui aura le droit d'effectuer des opérations admin sur le realm, cela se gère via le fichier d'acl dont nous avons déjà parlé.
Ex: pour autoriser les principaux de la forme nom/admin@SYSADMIN.NET à effectuer toute type d'opération: */admin@SYSADMIN.NET *
Si l'on veut que untel puisse seulement lire la base: untel@SYSADMIN.NET il
Liste des droits possibles:
Note: Chaque privilège est annulable en utilisant la majuscule associée (a <> A, etc)
Dernière chose (et pas des moindres): la création du premier compte d'admin. En l'état actuel on ne peut pas utiliser l'outil 'normal' (kadmin) car le démon n'est pas lancé et il serait difficile de s'authentifier de toute façons. Il faut donc utiliser une version spéciale de kadmin, j'ai nommé kadmin.local permettant de passer outre les acl et le serveur d'admin:
kadmin.local -q "addprinc username/admin"
Reste à configurer le fichier /etc/krb5.conf pour pouvoir faire des tests en local:
[libdefaults]
# parametres par défaults:
default_realm = SYSADMIN.NET
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
#
[realms]
# associations des serveurs / realms
SYSADMIN.NET = {
kdc = kdc1.sysadmin.net
#kdc = kdc2.sysadmin.net
admin_server = kdc1.sysadmin.net
}
#
[domain_realm]
# liaison nom de domaines / realm
sysadmin.net = SYSADMIN.NET
asyd.net = SYSADMIN.NET
#
[logging]
kdc = SYSLOG:INFO:DAEMON
admin_server = SYSLOG:INFO:DAEMON
default = SYSLOG:INFO:DAEMON
Ca y est vous devriez pouvoir aisément vous authentifier auprès du serveur kerberos local en utilisant la commande kinit et vérifier le résultat en utilisant klist.
TODO: la dernière version de MIT Kerberos (1.6) semble pouvoir utiliser un openldap pour stocker la base de principal .. a fouiller: Configuring Kerberos with OpenLDAP back-end. Permet d'utiliser la replication ldap pour synchroniser les kdc| Fichier attaché | Taille |
|---|---|
| setup-kerberos.sh | 3.42 Ko |