I.
Installation et configuration de KDC Kerberos
I.1. Installation
Nous utilisons la commande apt-cache search kerberos pour lister les
paquets disponibles.
debian:~#apt-cache search kerberos
krb5-admin-server - MIT Kerberos master server (kadmind)
krb5-clients - Secure replacements for ftp, telnet and rsh using MIT Kerberos
krb5-config - Configuration files for Kerberos Version 5
krb5-doc - Documentation for MIT Kerberos
krb5-ftpd - Secure FTP server supporting MIT Kerberos
krb5-kdc - MIT Kerberos key server (KDC)
krb5-rsh-server - Secure replacements for rshd and rlogind using MIT
Kerberos
krb5-telnetd - Secure telnet server supporting MIT Kerberos
krb5-user - Basic programs to authenticate using MIT Kerberos
Nous installons tous les paquets nécessaires :
debian:~#apt-get install krb5-kdc krb5-admin-server krb5-user
I.2. Configuration de base de Kerberos
Nous modifions les fichiers de configuration : /etc/kdb5.conf
[libdefaults]
default_realm = B2.R2SI.COM
B2.R2SI.COM = {
kdc = 192.168.100.1
admin_server = 192.168.100.1
default_domain = 192.168.100.1
}
Nous modifions aussi le fichier /etc/krb5kdc/kdc.conf :
B2.R2SI.COM = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
....
Page 1 sur 8
Romain REBOTIER CS 530 – TP2 Novembre 2008
Jean-Marc DUFOUR P2009
Nous tapons ensuite la commande kdb5_util create -r B2.R2SI.COM –s
pour créer le royaume kerberos :
debian:/etc/krb5kdc# kdb5_util create -r B2.R2SI.COM -s
Loading random data
Initializing database '/var/lib/krb5kdc/principal' for realm 'B2.R2SI.COM',
master key name 'K/
[email protected]'
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:
I.3. Définition de politiques
On utilise la commande kadmin.local pour configurer notre royaume
kerberos :
debian:~# kadmin.local
Authenticating as principal root/[email protected] with password.
La commande list_requests permet d’avoir la liste des commandes
disponibles. Pour définir les politiques demandées, on se rend compte qu’il
faut utiliser la commande add_policy :
kadmin.local: add_policy -maxlife "60 days" -minlength "12" admin
kadmin.local: add_policy -maxlife "45 days" -minlength "6" users
Rajout de admin
On rajoute l’utilisateur admin dans le groupe admin :
kadmin.local: addprinc -policy admin admin/[email protected]
Enter password for principal "admin/
[email protected]":
Re-enter password for principal "admin/
[email protected]":
add_principal: Password is too short while creating
"admin/
[email protected]".
On remarque que le mot de passe renter est trop court… admin doit
respecter la politique de « admin », et donc le mot de passé doit avoir plus
de 12 caractères.
Rajout de admin et b
On rajoute les administrateurs admin et b :
kadmin.local: addprinc -policy admin admin/[email protected]
Enter password for principal "admin/[email protected]":
Page 2 sur 8
Romain REBOTIER CS 530 – TP2 Novembre 2008
Jean-Marc DUFOUR P2009
Re-enter password for principal "admin/[email protected]":
Principal "admin/
[email protected]" created.
kadmin.local: addprinc -policy admin b/
[email protected]Enter password for principal "b/
[email protected]":
Re-enter password for principal "b/
[email protected]":
Principal "b/
[email protected]" created.
On vérifie que les administrateurs ont bien été rajoutés :
kadmin.local: listprincs
K/
[email protected]b/
[email protected]kadmin/
[email protected]kadmin/
[email protected]kadmin/
[email protected]kadmin/
[email protected]krbtgt/
[email protected]admin/
[email protected] Rajout de Martha, John et Lex
On rajoute les utilisateurs Martha, John et Lex :
kadmin.local: addprinc -policy users
[email protected]Enter password for principal "
[email protected]":
Re-enter password for principal "
[email protected]":
Principal "
[email protected]" created.
kadmin.local: addprinc -policy users
[email protected]Enter password for principal "
[email protected]":
Re-enter password for principal "
[email protected]":
Principal "
[email protected]" created.
kadmin.local: addprinc -policy users
[email protected]Enter password for principal "
[email protected]":
Re-enter password for principal "
[email protected]":
Principal "
[email protected]" created.
Configuration des ACL
On crée le fichier /etc/krb5kdc/kadm5.acl dans lequel on définit les ACL :
admin/
[email protected] *
b/
[email protected] c
Admin a tous les droits (*) et b a uniquement le droit de changer les mots
de passe.
Connexion à distance
On configure kerberos sur la machine distante. Dans le fichier :
/etc/kdb5.conf on rajoute :
B2.R2SI.COM = {
kdc = 192.168.100.1
admin_server = 192.168.100.1
}
Page 3 sur 8
Romain REBOTIER CS 530 – TP2 Novembre 2008
Jean-Marc DUFOUR P2009
On utilise la commande kinit pour se connecter à notre serveur et générer
un tecket :
debian:/etc# kinit
[email protected]Password for
[email protected]:
On utilise la commande klist à distance:
debian:/etc# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal:
[email protected]Valid starting Expires Service principal
12/08/08 04:19:29 12/08/08 14:19:29 krbtgt/
[email protected] renew until 12/09/08 04:19:14
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached
On va voir dans /tmp le jeton Kerberos :
debian:/etc# ls /tmp/
coucou kde-root krb5cc_0 ksocket-root ssh-jlYlzP2932
Une fois la session terminée le jeton Kerberos est toujours dans /tmp. Pour
des questions de sécurité, nous préconisons donc de le détruire avec
kdestroy :
debian:/etc# kdestroy
debian:/etc# klist
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached
II. Configuration des services « kerberized »
I. Red Hat et Fedora vous permettent d'activer et de désactiver
Kerberos démons de service réseau par l'intermédiaire des fichiers de
configuration dans le répertoire / etc / xinetd.d. Les fichiers suivants
doivent être présents:
1) klogin
2) eklogin
3) krb5-telnet
4) gssftp
5) kshell
Tous ces services peuvent être protégés par les TCP wrappers. Cela
peut être fait en éditant le fichier / etc / hosts.allow et / ou / etc /
Page 4 sur 8
Romain REBOTIER CS 530 – TP2 Novembre 2008
Jean-Marc DUFOUR P2009
hosts.deny fichiers de configuration. Votre configuration iptables
peut également être utilisée pour restreindre l'accès aux services.
Les étapes :
Étape 1: Ajouter un principal hôte nouveau à la base de données
Kerberos
De la CLI kadmin (qui peut être invoquée sur n'importe quel client DAS
ou sur DAS-M), ajoutez le principal nouvel hôte pour le serveur
d'application à la base de données Kerberos. Il est probablement plus
facile d'exécuter cette commande à partir du serveur d'application,
puisque vous aurez besoin d'ajouter la clé de l'hôte de la keytab sur le
serveur d'application de toute façon. Le nom principal de l'hôte doit
contenir le nom de domaine complet du serveur
kadmin: addprinc -randkey host/post.b2.r2si.com
NOTICE: no policy specified for host/
[email protected];
assigning "default"
Principal " host/
[email protected]" created.
Étape 2: générer le fichier keytab :
kadmin: ktadd host/post.b2.r2si.com
Étape 3 : Configuration de /etc/hosts.allow de TCP Wrappers
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
# Secure the Portmapper to our LAN
portmap : 127. 192.168.100. : ALLOW
portmap : ALL : DENY
### Kerberized services ###
Page 5 sur 8
Romain REBOTIER CS 530 – TP2 Novembre 2008
Jean-Marc DUFOUR P2009
## limit KLOGIN and EKLOGIN connections to local LAN and loopback
klogind : 127. 192.168.100. : ALLOW
klogind : ALL : DENY
## limit TELNET connections to local LAN and loopback
telnetd : 127. 10192.168.100. : ALLOW
telnetd : ALL : DENY
## limit Kerberized FTP connections to local LAN and loopback
ftpd : 127. 192.168.100. : ALLOW
ftpd : ALL : DENY
## limit RSH/RCP connections to local LAN and loopback
kshd : 192.168.100. : ALLOW
kshd : ALL : DENY
Étape 4: Activer les services en éditant les fichiers de configuration dans /
etc / xinetd.d.
Dans les fichiers:
/etc/xinetd .d/gssftp
/etc/xinetd.d/krb5 .telnet
/etc/xinetd.d/eklogin:
On modifier la ligne enable =yes par enable =no pour activer les services.
Étape 5: Restart xinetd
[root@post xinetd.d]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
On utilise netsat pour afficher les services activé :
[root@post xinetd.d]# netstat -ta | grep LISTEN
tcp 0 0 *:kshell *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 *:eklogin *:* LISTEN
tcp 0 0 *:klogin *:* LISTEN
On ajoute les machines qui contiennent les services dans base kerberos comme
des principales.
Étape 1 et 2 telle que le nom host représente le nom de service kerberisé
Et on déplace le fichier krb5.keytab dans les machine client de réseau kerberisé
par la commande scp, et on modifié les droit d’utilisation de ce fichier.
Page 6 sur 8
Romain REBOTIER CS 530 – TP2 Novembre 2008
Jean-Marc DUFOUR P2009
Exemples d'utilisation des services Kerberos
Le service Kerberos TELNET est similaire au service Kerberos RLOGIN. Il ne
crypter les informations d'authentification par défaut, le reste de la session est
envoyé "en clair". Vous devez utiliser l'option-a à utiliser TELNET dans ce mode.
Si vous ne spécifiez pas l'option-a (qui tente la connexion automatique), la
session va échouer.
Pour crypter toute la session, vous devez utiliser l'option-x. Ci-dessous, vous
verrez des exemples de tous les trois scénarios:
[kitty@ushas kitty]$ telnet post
Trying 192.168.100.1...
Connected to post.b2.r2si.com (192.168.100.4).
Escape character is '^]'.
telnetd: No authentication provided.
Connection closed by foreign host.
[kitty@ushas kitty]$ telnet -a post
Trying 192.168.100.1...
Connected to post.b2.r2si.com (192.168.100.4).
Escape character is '^]'.
[ Kerberos V5 accepts you as ``
[email protected]'' ]
Last login: Tue Jun 15 09:28:47 from ushas
######################
# #
# POST #
# #
######################
Connection closed by foreign host.
FTP Kerberisé :
Pour connecter au serveur ftp en utilisant kerberos :
[kitty@ushas kitty]$ ftp -x post
Connected to post.kerb.org.
220 post.kerb.org FTP server (Version 5.60) ready.
334 Using authentication type GSSAPI; ADAT must follow
GSSAPI accepted as authentication type
GSSAPI authentication succeeded
200 Data channel protection level set to private.
Name (post:kitty):
232 GSSAPI user
[email protected] is authorized as kitty
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd ISO
250 CWD command successful.
ftp> ls
Page 7 sur 8
Romain REBOTIER CS 530 – TP2 Novembre 2008
Jean-Marc DUFOUR P2009
227 Entering Passive Mode (10,10,22,41,181,173)
150 Opening ASCII mode data connection for /bin/ls.
total 95336
-rw------- 1 labuser 46399488 Jun 15 12:58 cd-puppy.iso
-rw-rw-r-- 1 labuser 51109888 Jun 15 12:58 damnsmall-0.5.2.iso
-rw-rw-r-- 1 labuser 54 Jun 15 12:58 damnsmall-0.5.2.md5.txt
226 Transfer complete.
ftp> mget damnsmall*
mget damnsmall-0.5.2.iso? y
227 Entering Passive Mode (10,10,22,41,181,180)
150 Opening BINARY mode data connection for damnsmall-0.5.2.iso (51109888
bytes).
226 Transfer complete.
51109888 bytes received in 16 seconds (3.1e+03 Kbytes/s)
mget damnsmall-0.5.2.md5.txt? y
227 Entering Passive Mode (10,10,22,41,181,184)
150 Opening BINARY mode data connection for damnsmall-0.5.2.md5.txt (54
bytes).
226 Transfer complete.
54 bytes received in 0.017 seconds (3.2 Kbytes/s)
ftp> quit
221 Goodbye.
[kitty@ushas kitty]$
Page 8 sur 8