\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mer. juin 18 14:34:54 CEST 2014}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={krb5.conf},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Fichier de configuration Kerberos},
CreationDate={D:20140618143454},
ModDate={D:20140618143454},
Keywords={Kerberos;sécurité;authentification}
}}
\begin{document}
 
\begin{center}
{\Huge krb5.conf }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Fichier de configuration Kerberos}
 
\vspace{10mm}
 
\hspace{1mm}  Ce fichier contient la configuration Kerberos, incluant l'emplacement des serveurs KDC et admin pour les domaines Kerberos, les valeurs par défaut pour le domaine courant et pour les applications kerberos, et les mappages de nom d'hôte dans les royaumes Kerberos. Normallement, ce fichier est dans \textbf{/etc} mais son emplacement peut être spécifié dans la variable \textbf{KRB5\_CONFIG}.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Structure }
 
\
 
\hspace{1mm}  Les noms de sections sont entre crochets, chaque section peut contenir 0 ou plusieurs relations, sous la forme:
\vspace{5mm} \\
\hspace{1mm}  \textbf{foo = bar}
\vspace{5mm} \\
 
 
\hspace{1mm} ou:
 
{\ttfamily
fubar = \{\\ \hspace{2mm}foo = bar\\ \hspace{2mm}baz = quux\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm}  Placer un \textbf{*} à la fin d'une ligne indique que c'est la valeur final pour le tag. Cela signifie que ni le reste du fichier de configuration, ni un autre fichier de configuration ne sera vérifié pour une autre valeur pour ce tag.
\vspace{5mm} \\
 
 
\hspace{1mm} Par exemple, les lignes suivantes: \\
\hspace{1mm} \textbf{foo = bar*} \\
\hspace{1mm} \textbf{foo = baz} \\
\hspace{1mm} Alors la seconde valeur ne sera jamais lue. \\
 
\hspace{1mm} Le fichier krb5.conf peut inclure d'autres fichiers en utilisant une des directives suivantes au début d'une ligne: \\
\hspace{1mm} \textbf{include FILENAME} \\
\hspace{1mm} \textbf{includedir DIRNAME} \\
 
\hspace{1mm}  \textbf{FILENAME} et \textbf{DIRNAME} doivent être des chemin absolus. Le fichier ou le répertoire nommé doit exister et lisible. Inclure un répertoire inclue tous les fichiers dans le répertoire dont le nom consiste uniquement de caractères alphanumériques, "-" ou "\_". Les fichiers de profils sont syntaxiquement indépendants de leurs parent, donc chaque fichier inclus doit commencer avec un en-tête de section. Le fichier krb5.conf peut spécifier que la configuration devrait être obtenue depuis un module chargeable, au lieu du fichier lui-même, en utilisant le directive suivante au début de la ligne avant toute section headers:
\vspace{5mm} \\
\hspace{1mm}  \textbf{module MODULEPATH:RESIDUAL}
\vspace{5mm} \\
\hspace{1mm}  \textbf{MODULEPATH} peut être relatif au chemin de librairies de l'installation de krb5, ou peut être un chemin absolus. \textbf{RESIDUAL} est fournis au module à l'initialisation. Si krb5 utilise une directive module, kdc.conf devrait également l'utiliser.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Sections }
 
\
 
\hspace{1mm}  krb5.conf peut contenir les sections suivantes:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} \texttt{[}libdefaults\texttt{]}]{Paramètres utilisés par la libraire Kerberos v5}
\item[\hspace{1mm} \texttt{[}realms\texttt{]}]{information et paramètres de contact spécifique au domaine}
\item[\hspace{1mm} \texttt{[}domain\_realm\texttt{]}]{Map les noms d'hôte serveur à des domaines Kerberos}
\item[\hspace{1mm} \texttt{[}capaths\texttt{]}]{Chemins d'authentification pour les inter-domaines non-hiérarchiques}
\item[\hspace{1mm} \texttt{[}appdefaults\texttt{]}]{Paramètres utilisés par certaines applications Kerberos}
\item[\hspace{1mm} \texttt{[}plugins\texttt{]}]{Contrôle l'enregistrement des plugins}
\end{description}
 
\hspace{1mm}  Additionnellement, krb5.conf peut inclure une des relations décrites dans kdc.conf, mais n'est pas une pratique recommandée.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge [libdefaults] }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} allow\_weak\_crypto]{à false (défaut), les type de chiffrements faibles seront exclus des listes \textbf{default\_tgs\_enctypes}, \textbf{default\_tkt\_enctypes}, et \textbf{permitted\_enctypes}.}
\item[\hspace{1mm} ap\_req\_checksum\_type]{Un entier qui spécifie le type de checksum AP-REQ à utiliser dans l'authentifiant. Doit être non définis pour le checksun approprié pour la clé de chiffrement soit utilisé.}
\item[\hspace{1mm} canonicalize]{A true (défaut: false), la requête du ticket initial va demander la canonicalisation du nom du principal, et que répondre avec des principaux du client différent du principal demandé sera accepté.}
\item[\hspace{1mm} ccache\_type]{Détermine le format du cache d'accéditifs créés par kinit ou autre. défaut: 4, qui représente le format le plus courant.}
\item[\hspace{1mm} clockskew]{Définis la quantité maximum permise de décalage d'horloge en seconde que la librairie va tolérer. Défaut: 300.}
\item[\hspace{1mm} default\_ccache\_name]{Cette relation spécifie le nom du cache d'accréditifs par défaut. Défaut: DEFCCNAME.}
\item[\hspace{1mm} default\_client\_keytab\_name]{Cette relation spécifie le nom du keytab par défaut pour obtenir les accréditifs du client. Défaut: DEFCKTNAME.}
\item[\hspace{1mm} default\_keytab\_name]{Cette relation spécifie le nom du keytab par défaut à utiliser par les serveurs d'application tels que sshd. Défaut: DEFKTNAME.}
\item[\hspace{1mm} default\_realm]{Identifie le domaine Kerberos par défaut pour le client. Si non définis, un domaine doit être spécifié avec tout principar Kerberos en invoquant un programme tel que kinit}
\item[\hspace{1mm} default\_tgs\_enctypes]{Identifie la liste supportée de type de chiffrement de clé de session que le client devrait demander dans un TGS-REQ, par ordre de préférence. Défaut: aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4}
\item[\hspace{1mm} default\_tkt\_enctypes]{Identifie la liste supportée de type de chiffrement de clé de session que le client devrait demander dans un AS-REQ, par ordre de préférence. Défaut: aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4}
\item[\hspace{1mm} dns\_canonicalize\_hostname]{Indique si la recherche de noms sera utilisée pour canoniser les noms d'hôte à utiliser dans les nom principal de service. Définis ce flag à false pour améliorer la sécurité en réduisant le dépendance à DNS. Défaut: true.}
\item[\hspace{1mm} dns\_lookup\_kdc]{Indique si les enregistrements DNS SRV dervaient pour localiser le KDC et d'autre serveurs pour un domaine, s'il ne sont pas listés par krb5.conf. (noter que l'entrée admin\_server doit être dans krb5.conf pour pouvoir contacter kadmin, parce que l'implémentation DNS pour kadmin est incomplète).}
\item[\hspace{1mm} extra\_addresses]{Permet à un ordinateur d'utiliser plusieurs adresses locales, pour permettre à Kerberos de travailler dans un réseau qui utilise le NAT. Les adresses devraient être listée séparées par une virgule. n'a pas d'effet si \textbf{noaddresses} est à true.}
\item[\hspace{1mm} forwardable]{À true, les tickets initiaux ne seront pas forwardable par défaut, si permis par le KDC. Défaut: false}
\item[\hspace{1mm} ignore\_acceptor\_hostname]{En acceptant les contextes de sécurité GSSAPI ou krb5 pour les principaux de service basés sur l'hôte, ignore tout nom d'hôte passé par l'application appelante, et permet aux clients d'authentifier tout principal de service dans le keytab correspondant au nom du service et au nom du domaine. peut compromettre la sécurité des environnements d'hôte virtuels. Défaut: false.}
\item[\hspace{1mm} k5login\_authoritative]{À true, les principaux doivent listés dans le fichier k5login de l'utilisateur pour avoir un accès login, si un fichier .k5login existe. Si ce flag est à false, un principal peut avoir l'accès login au travers d'autre mécanismes même si un k5login existe mais ne liste pas le principal. Défaut: true.}
\item[\hspace{1mm} k5login\_directory]{Si définis, la librairie va rechercher le fichier k5login de l'utilisateur local dans le répertoire spécifié, avec un nom de fichier correspondant au nom de l'utilisateur local. Sinon, recherche un fichier nommé .k5login dans le home de l'utilisateur. Pour des raisons de sécurité, .k5login doit être possédé par l'utilisateur local ou par root.}
\item[\hspace{1mm} kdc\_req\_checksum\_type]{Un entier qui spécifie le type de checksum à utilise pour les demande KDC, pour la compatibilité avec de vieille version de KDC.}
\item[\hspace{1mm} noaddresses]{À true, les demandes pour les tickets initiaux ne seront pas faites avec des jeux de restriction d'adresse, permettant aux tickets d'être utilisés via les NAT. Défaut: true.}
\item[\hspace{1mm} permitted\_enctypes]{Identifie tous les types de chiffrement permis pour le chiffrement de clé de session. Défaut: aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4}
\item[\hspace{1mm} plugin\_base\_dir]{Répertoire de base où se trouvent les plugins krb5. Défaut: krb5/plugins}
\item[\hspace{1mm} preferred\_preauth\_types]{Permet de définir le type de pré-authentification préféré du client. Défaut: "17, 16, 15, 14" qui force libkrb5 à utiliser PKINIT si supporté.}
\item[\hspace{1mm} proxiable]{À true, les tickets initiaux seront mandatables, si permis par le KDC. Défaut: false}
\item[\hspace{1mm} rdns]{À true, la recherche de noms inversée sera utilisée en plus de la recherche de nom pour canoniser les nom d'hôte à utiliser dans les noms de principaux de service. Si \textbf{dns\_canonicalize\_hostname} est à false, ce flag n'a pas d'effet. défaut: true.}
\item[\hspace{1mm} realm\_try\_domains]{Indique si les composants de domaine des hôte devraient être utilisés pour déterminer de domaine Kerberos de l'hôte. La valeur de cette variable est un entier: -1 signifie ne pas rechercher, 0 tente le domaine de l'hôte, 1 tente le domaine immédiatement parent, etc. Le mécanisme usuel de la librairie pour localiser les domaines Kerberos est utilisé pour déterminer si un domaine est un domaine valide, qui peut impliquer de consulter DNS si \textbf{dns\_lookup\_kdc} est mis. Défaut: -1}
\item[\hspace{1mm} renew\_lifetime]{Définis la durée de vie de renouvellement pour les demandes de tickets initiaux. Défaut: 0}
\item[\hspace{1mm} safe\_checksum\_type]{Un entier qui spécifie le type de checksum à utiliser pour les demandes KRB-SAFE. Défaut: 8 (RSA MD5 DES). Ce champ est ignoré quand ça valeur est incompatible avec le type de clé de session.}
\item[\hspace{1mm} ticket\_lifetime]{Durée de vie par défaut pour les demandes de tickets initiaux. Défaut: 1 jour}
\item[\hspace{1mm} udp\_preference\_limit]{En envoyant un message au KDC, la librairie tente d'utiliser TCP avant UDP si la taille du message est supérieur à \textbf{udp\_preference\_limit}.}
\item[\hspace{1mm} verify\_ap\_req\_nofail]{À true, une tentative de vérifier des accréditifs initiaux va échouer si la machine client n'a pas de keytab. Défaut: false}
\end{description}
 
\vspace{1cm}{\huge [realms] }
 
\
 
\hspace{1mm}  Chaque tag dans cette section est le nom d'un domaine Kerberos. La valeur du tag est une sous-section qui définis les propriétés de ce domaine. Pour chaque domaine, les tags suivants peuvent être spécifiés dans la sous-section:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} admin\_server]{Identifie l'hôte où le serveur d'administration réside. Typiquement, c'est le serveur maître. Ce tag doit avoir une valeur pour permettre la communication avec le serveur kadmind}
\item[\hspace{1mm} auth\_to\_local]{Permet de définir un règle générale pour le mappage des noms des principaux aux nom des utilisateurs locaux. Est utilisé s'il n'y a pas de mappage explicite pour le nom principal. Les valeurs possible sont:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} RULE:exp]{Le nom local sera formulé depuis exp. Le format est \textbf{[n:string](regexp)s/pattern/replacement/g}. L'entier \textbf{n} indique combien de composants le principal cible devrait avoir. Si cela matche, alors un chaîne sera formée depuis string, en substituant le domaine du principal pour \textbf{\$0} et le \textbf{n}-ième composant du principal pour \textbf{\$n} ( exemple, si le principal était \textbf{johndoe/admin} alors \textbf{[2:\$2\$1foo]} va résulter dans la chaîne \textbf{adminjohndoefoo}). Si la chaîne matche regexp, alors la substitution de commande \textbf{s//[g]} ne va jamais parcourir la chaîne. le \textbf{g} optionnel matche toutes les occurences.}
\item[\hspace{6mm} DEFAULT]{Le nom du principal sera utilisé tel que le nom d'utilisateur. Si le principal a plus d'un composant ou n'est pas le domaine par défaut, cette règle n'est pas applicable et la conversion va échouer.}
\end{description}
 
\hspace{6mm} Par exemple:
 
{\ttfamily
\texttt{[}realms\texttt{]}\\ \hspace{2mm}ATHENA.MIT.EDU = \{\\ \hspace{2mm}\hspace{2mm}auth\_to\_local = RULE:\texttt{[}2:\$1\texttt{]}(johndoe)s/\textasciicircum .*\$/guest/\\ \hspace{2mm}\hspace{2mm}auth\_to\_local = RULE:\texttt{[}2:\$1;\$2\texttt{]}(\textasciicircum .*;admin\$)s/;admin\$//\\ \hspace{2mm}\hspace{2mm}auth\_to\_local = RULE:\texttt{[}2:\$2\texttt{]}(\textasciicircum .*;root)s/\textasciicircum .*\$/root/\\ \hspace{2mm}\hspace{2mm}auto\_to\_local = DEFAULT\\ \hspace{2mm}\}\\
}
\vspace{8mm}
 
\hspace{6mm}  va résulter en tout principal sans \textbf{root} ou \textbf{admin} comme second composant à traduire avec la règle par défaut. Un principal avec un second composant \textbf{admin} va devenir son premier composant. \textbf{root} sera utilisé comme nom local pour tout principal avec un second composant \textbf{root}. L'exception à ces règles sont tout principal \textbf{johndoe/*} qui sera toujours le nom local \textbf{guest}.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} auth\_to\_local\_names]{Cette sous-section vous permet de définir explicitement des mappages de noms de principaux à des noms locaux. Le tag est le nom mappé, et la valeur est l'utilisateur local}
\item[\hspace{1mm} default\_domain]{Ce tag spécifie le domaine utilisé pour étendre les noms d'hôte en traduisant les principaux Kerberos v4 en principaux v5.}
\item[\hspace{1mm} kdc]{Le nom ou l'adresse d'un hôte hébergeant un KDC pour ce domaine. Un numéro de port optionnel peut être inclus. Si le nom ou l'adresse contient des ":", utiliser des crochets pour distinguer le ":" de l'adresse du numéro de port. Pour que la machine puisse communiquer avec le KDC, ce tag doit être donné, ou il doit y avoir des enregistrements DNS SRV.}
\item[\hspace{1mm} kpasswd\_server]{Pointe vers le serveur où tous les changements de mot de passe sont effectués. S'il n'y a pas de telles entrées, le port 464 de l'hôte \textbf{admin\_server} sera tenté.}
\item[\hspace{1mm} master\_kdc]{Identifie le KDC maître. Actuellement, ce tag est utilisé dans un cas: si la tentative d'obtention des accréditifs échoue à cause d'un mot de passe invalide, le client va tenter de contacter le KDC maître, dans le cas où le mot de passe de l'utilisateur vient juste d'être changé.}
\end{description}
 
\vspace{1cm}{\huge [domain\_realm] }
 
\
 
\hspace{1mm}  Cette section fournis une traduction depuis un nom de domaine ou un nom d'hôte en un nom de domaine Kerberos. Le nom du tag peut être un nom d'hôte ou un nom de domaine, où les noms de domaine sont identifiés par un préfixe point (\textbf{.}). La valeur est le nom de domaine Kerberos pour un hôte ou un domaine particulier. Une relation de nom d'hôte fournis implicitement la relation de nom de domaine correspondante, sauf si une relation de nom de domaine explicite est fournie. Le domaine Kerberos peut être identifié soit dans la section realm ou en utilisant les enregistrements DNS SRV. Les noms d'hôte et domaine devraient être en minuscules. Par exemple:
\vspace{5mm} \\
 
 
\hspace{1mm} [domain\_realm]
 
{\ttfamily
\hspace{2mm}crash.mit.edu = TEST.ATHENA.MIT.EDU\\ \hspace{2mm}.dev.mit.edu = TEST.ATHENA.MIT.EDU\\ \hspace{2mm}mit.edu = ATHENA.MIT.EDU\\
}
\vspace{8mm}
 
\hspace{1mm}  mappe l'hôte \textbf{crash.mit.edu} dans le domaine Kerberos \textbf{TEST.ATHENA.MIT.EDU}. La seconde entrée map tous les hôtes sous le domaine \textbf{dev.mit.edu} dans le domaine Kerberos \textbf{TEST.ATHENA.MIT.EDU} sauf l'hôte \textbf{dev.mit.edu} qui est mappé au domaine \textbf{ATHENA.MIT.EDU}.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si aucune traduction ne s'applique au nom d'hôte utilisé pour un principal de service pour une demande de ticket de service, la librairie va tenter d'obtenir un référant au domaine approprié depuis le KDC du domaine du client. Si cela échoue, le domaine de l'hôte est considéré être la portion de domaine du nom d'hôte convertit en majuscules, sauf le paramètre \textbf{realm\_try\_domains} dans la section libdefaults qui force un domaine parent différent à utiliser.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge [capaths] }
 
\
 
\hspace{1mm}  Pour pouvoir effectuer une authentification inter-domaine directe ( non hiérarchique ), une configuration est nécessaire pour déterminer les chemins d'authentification entre les domaines.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un client va utiliser cette section pour trouver le chemin d'authentification entre son domaines et le domaine du serveur. Le serveur va utiliser cette section pour vérifier le chemin d'authentification utilisé par le client, en vérifiant le champ transited.
\vspace{5mm} \\
 
 
\hspace{1mm}  Il y a un tag pour chaque domaine client participant, et chaque tag a des sous-tags pour chaque domaine serveur. La valeur des sous-tags est un domaine intermédiaire qui peuvent participer dans l'authentification inter-domaine. Les sous-tags peuvent être répétés s'il y a plus d'un domaine intermédiaire. Une valeur "." signifie que le 2 domaines partagent les clés directement, et aucun intermédiaire ne devrait être autorisé à participer.
\vspace{5mm} \\
 
 
\hspace{1mm}  Seul ces entrées qui sont nécessaire dans le client ou le serveur doivent être présent. Un client a besoin d'un tag pour son domaine local avec des sous-tags pour tous les domaines des serveurs auquel il aura besoin de s'authentifier. Un sereur a besoin d'un tag pour chaque domaine des clients qu'il désert, avec un sous-tag pour chaque domaine serveur.
\vspace{5mm} \\
 
 
\hspace{1mm}  Par exemple, \textbf{ANL.GOV}, \textbf{PNL.GOV} et \textbf{NERSC.GOV} veulent utiliser le domaine \textbf{ES.NET} comme domaine intermédiaire. ANL a un sous-domaine \textbf{TEST.ANL.GOV} qui va s'authentifier avec \textbf{NERSC.GOV} mais pas \textbf{PNL.GOV}. La section capaths pour les systèmes \textbf{ANL.GOV} ressembleraient à:
\vspace{5mm} \\
 
 
{\ttfamily
\texttt{[}capaths\texttt{]}\\ \hspace{2mm}ANL.GOV = \{\\ \hspace{2mm}\hspace{2mm}TEST.ANL.GOV = .\\ \hspace{2mm}\hspace{2mm}PNL.GOV = ES.NET\\ \hspace{2mm}\hspace{2mm}NERSC.GOV = ES.NET\\ \hspace{2mm}\hspace{2mm}ES.NET = .\\ \hspace{2mm}\}\\ \hspace{2mm}TEST.ANL.GOV = \{\\ \hspace{2mm}\hspace{2mm}ANL.GOV = .\\ \hspace{2mm}\}\\ \hspace{2mm}PNL.GOV = \{\\ \hspace{2mm}\hspace{2mm}ANL.GOV = ES.NET\\ \hspace{2mm}\}\\ \hspace{2mm}NERSC.GOV = \{\\ \hspace{2mm}\hspace{2mm}ANL.GOV = ES.NET\\ \hspace{2mm}\}\\ \hspace{2mm}ES.NET = \{\\ \hspace{2mm}\hspace{2mm}ANL.GOV = .\\ \hspace{2mm}\}\\
}
\vspace{8mm}
 
\hspace{1mm} La section capaths du fichier de configuration utilisé dans les systèmes \textbf{NERSC.GOV} ressembleraient à:
 
{\ttfamily
\hspace{2mm}\texttt{[}capaths\texttt{]}\\ \hspace{2mm}\hspace{2mm}NERSC.GOV = \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}ANL.GOV = ES.NET\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}TEST.ANL.GOV = ES.NET\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}TEST.ANL.GOV = ANL.GOV\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}PNL.GOV = ES.NET\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}ES.NET = .\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}ANL.GOV = \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}NERSC.GOV = ES.NET\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}PNL.GOV = \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}NERSC.GOV = ES.NET\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}ES.NET = \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}NERSC.GOV = .\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}TEST.ANL.GOV = \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}NERSC.GOV = ANL.GOV\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}NERSC.GOV = ES.NET\\ \hspace{2mm}\hspace{2mm}\}\\
}
\vspace{8mm}
 
\hspace{1mm}  Quand un sous-tag est utilisé plus d'une fois dans un tag, les clients utilisent l'ordre des valeurs pour déterminer le chemin. L'ordre des valeurs n'est pas important pour les serveurs.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge [appdefault] }
 
\
 
\hspace{1mm}  Chaque tag dans cette section nomme une application Kerberos v5 ou un option qui est utilisé par certaines applications Kerberos v5. La valeur du tag définis le fonctionnement par défaut pour cette application.
\vspace{5mm} \\
 
 
\hspace{1mm} par exemple:
 
{\ttfamily
\texttt{[}appdefaults\texttt{]}\\ \hspace{2mm}telnet = \{\\ \hspace{2mm}\hspace{2mm}ATHENA.MIT.EDU = \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}option1 = false\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \hspace{2mm}telnet = \{\\ \hspace{2mm}\hspace{2mm}option1 = true\\ \hspace{2mm}\hspace{2mm}option2 = true\\ \hspace{2mm}\}\\ \hspace{2mm}ATHENA.MIT.EDU = \{\\ \hspace{2mm}\hspace{2mm}option2 = false\\ \hspace{2mm}\}\\ \hspace{2mm}option2 = true\\
}
\vspace{8mm}
 
\hspace{1mm}  Les 4 manières présentées de spécifier la valeur d'une option sont affichés dans l'ordre de précédence descendante. Dans cet exemple, si telnet fonctionne dans le domaine \textbf{EXAMPLE.COM}, il devrait, par défaut, avoir option1 et option2 à true. Cependant, un programme telnet dans le domaine \textbf{ATHENA.MIT.EDU} devrait avoir l'option1 à false et option2 à true. Tout autre programme dans \textbf{ATHENA.MIT.EDU} devrait avoir l'option2 à false par défaut. Tout programme fonctionnant dans d'autre domaine devraient avoir option2 à true.
\vspace{5mm} \\
 
 
\hspace{1mm}  La liste d'options spécifiable pour chaque application peut être trouvée dans les man des applications.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge [plugins] }
 
\
 
\hspace{1mm}  Les tags dans cette section peuvent être utilisées pour enregistrer les modules dynamique et pour activer/désactiver les modules. Tous les interface activable n'utilisent pas cette section. Celles qui l'utilise sont documentées ici. Chaque interface pluggable correspond à une sous-section. Toutes les sous-sections supportent les même tags:
\vspace{5mm} \\
\hspace{1mm}  [SECTION]
\vspace{5mm} \\
\hspace{1mm}  [SECTION] name="-" table="paragraphes" imbrication="0"
\vspace{5mm} \\
\hspace{1mm}  Ce tag peut avoir plusieurs valeurs. S'il y a des valeur pour ce tag, alors les modules nommés seront désactivés pour l'interface pluggable.
\vspace{5mm} \\
\hspace{1mm}  Ce tag peut avoir plusieurs valeurs. S'il y a des valeur pour ce tag, alors les modules nommés seront activés pour l'interface pluggable.
\vspace{5mm} \\
\hspace{1mm}  Ce tag peut avoir plusieurs valeurs. Chaque valeur est une chaîne sous la forme \textbf{modulename:pathname}. chaque module est enregistré comme module dynamique pour l'interface pluggable. Si pathname n'est pas un chemin absolus, il est considéré relatif à \textbf{plugin\_base\_dir}.
\vspace{5mm} \\
 
 
\hspace{1mm}  Pour les interfaces pluggable où l'ordre des modules est importante, les modules enregistrés avec un tag module viennent en premier, dans l'ordre qu'il sont enregistrés. Si \textbf{enable\_only} est utilisé, alors l'ordre de ces tags remplace l'ordre des modules normal.
\vspace{5mm} \\
\hspace{1mm}  Les sections suivantes sont actuellement supportées dans la section plugins.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge interface ccselect }
 
\
 
\hspace{1mm}  La sous-section ccselect contrôle les modules pour la sélection du cache d'accréditifs dans une collection de cache. En plus des modules dynamique enregistrés, les modules embarqués suivant existent:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} k5identity]{Utilise un fichier \textbf{.k5identity} dans le home de l'utilisateur pour sélectionner un principal}
\item[\hspace{6mm} realm]{Utilise le domaine de service pour deviner un cache approprié depuis la collection.}
\end{description}
 
\vspace{1cm}{\huge interface pwqual }
 
\
 
\hspace{1mm}  Cette sous-section contrôle les modules pour l'interface de qualité de mot de passe, qui est utilisé pour rejeter les mots de passe faibles lors des changements de mot de passe. Les modules embarqués suivant existent pour cette interface:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} dict]{Vérifie avec un fichier dictionnaire du domaine}
\item[\hspace{6mm} empty]{Rejète les mots de passe vide}
\item[\hspace{6mm} hesiod]{Vérifie avec les informations utilisateurs stockés dans Hesiod ( seulement si Kerberos est construit avec le support de Hesiod )}
\item[\hspace{6mm} princ]{Vérifie avec les composant du nom du principal}
\end{description}
 
\vspace{1cm}{\huge interface kadm5\_hook }
 
\
 
\hspace{1mm}  Fournis des plugins avec des informations sur la création de principaux, la modification, changement de mot de passe et suppression. Cette interface peut être utilisée pour écrire un plugin pour synchroniser Kerberos MIT avec celui de Microsoft.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge interface clpreauth et kdcpreauth }
 
\
 
\hspace{1mm}  Ces interfaces permettent aux modules de fournir des mécanisme de pré-authentification au client et au KDC. Les modules intégrés suivant existent pour ces interfaces:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} pkinit]{Implémente le mécanisme de pré-authentification pkinit}
\item[\hspace{6mm} encrypted\_challenge]{Implémente FAST}
\item[\hspace{6mm} encrypted\_timestamp]{Implément le mécanisme de timestamp chiffré}
\end{description}
 
\vspace{1cm}{\huge interface hostrealm }
 
\
 
\hspace{1mm}  Cette section contrôle les modules pour l'interface host-to-realm, qui affecte le mappage locale des noms d'hôte et le choix du domaine par défaut. Les module intégré suivant existent pour cette interface:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} profile]{Consulte la section [domain\_realm] du profile pour les mappages host-to-realm autoritatifs, et la variable \textbf{default\_realm} pour le domaine par défaut.}
\item[\hspace{6mm} dns]{Recherche les enregistrements DNS pour les mappages et le domaine par défaut. n'opère que si \textbf{dns\_lookup\_realm} est à true.}
\item[\hspace{6mm} domain]{Applique de l'heuristique pour les mappages host-to-realm. Implémente la variable \textbf{realm\_try\_domains}, et utilise le domaine parent en majuscule du nom d'hôte si cela ne produit pas de résultat.}
\end{description}
 
\vspace{1cm}{\huge interface localauth }
 
\
 
\hspace{1mm}  Contrôle les modules pour l'interface d'autorisation local, qui affecte la relation entre les principaux Kerberos et les comptes système locaux. Les modules intégrés suivant existent pour cette interface:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} default]{Implémente le type DEFAULT pour les valeurs \textbf{auth\_to\_local}}
\item[\hspace{6mm} rule]{Implémente le type RULE pour les valeur \textbf{auth\_to\_local}}
\item[\hspace{6mm} names]{Recherche un mappage \textbf{auth\_to\_local\_names} pour le nom du principal}
\item[\hspace{6mm} k5login]{Autorise un principal à un compte local en accord avec le .k5login du compte}
\item[\hspace{6mm} an2ln]{Autorise un principal à un compte local si le nom du principal se mappe au nom local}
\end{description}
 
\vspace{1cm}{\huge Options PKINIT }
 
\
 
\hspace{1mm}  Les options suivante sont spécifique à PKINIT. Ces valeur peuvent être spécifiées dans [libdefaults] comme valeurs globales par défaut, ou dans une sous-section spécifique au domaine, ou peuvent être spécifiés comme valeurs spécifique au domaine dans la section [realms]. Les valeurs spécifique au domaine écrase, n'ajoutent pas à une spécification libdefaults par défaut. L'ordre de recherche est:
\vspace{5mm} \\
 
 
\hspace{1mm} 1. sous-section spécifique au domaine de [libdefaults]
 
{\ttfamily
\texttt{[}libdefaults\texttt{]}\\ \hspace{2mm}EXAMPLE.COM = \{\\ \hspace{2mm}\hspace{2mm}pkinit\_anchors = FILE:/usr/local/example.com.crt\\ \hspace{2mm}\}\\
}
\vspace{8mm}
 
\hspace{1mm} 2. Valeurs spécifique au domaine dans [realms]
 
{\ttfamily
\texttt{[}realms\texttt{]}\\ \hspace{2mm}OTHERREALM.ORG = \{\\ \hspace{2mm}\hspace{2mm}pkinit\_anchors = FILE:/usr/local/otherrealm.org.crt\\ \hspace{2mm}\}\\
}
\vspace{8mm}
 
\hspace{1mm} 3. Valeur générique dans [libdefaults]
 
{\ttfamily
\texttt{[}libdefaults\texttt{]}\\ \hspace{2mm}pkinit\_anchors = DIR:/usr/local/generic\_trusted\_cas/\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Spécifier les informations d'identité PKINIT }
 
\
 
 
 
\begin{description} \normalsize
\item[\hspace{1mm} FILE:filename\texttt{[},keyfilename\texttt{]}]{Cette option est dépendante du contexte.}
\end{description}
 
\hspace{6mm}  Dans \textbf{pkinit\_identity} ou \textbf{pkinit\_identities}, filename spécifie le nom d'un fichier PEM contenat le certificat de l'utilisateur. Si Keyfilename n'est pas spécifié, la clé privée de l'utilisateur est attendue dans filename.
\vspace{5mm} \\
 
 
\hspace{6mm}  Dans \textbf{pkinit\_anchors} ou \textbf{pkinit\_pool}, filename est assumé être le nom d'un fichier ca-bundle style OpenSSL.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} DIR:dirname]{Cette option est dépendante du contexte.}
\end{description}
 
\hspace{6mm}  Dans \textbf{pkinit\_identity} ou \textbf{pkinit\_identities}, dirname spécifie un répertoire avec des fichiers .crt et .key.
\vspace{5mm} \\
 
 
\hspace{6mm}  Dans \textbf{pkinit\_anchors} ou \textbf{pkinit\_pool}, dirname est assumé être un répertoire CA hashé style OpenSSL où chaque certificat CA est stocké dans un fichier nommé \textbf{hash-of-ca-cert.\#}
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} PKCS12:filename]{filename est le nom d'un pkcs\#12, contenant le certificat de l'utilisateur en la clé privée.}
\item[\hspace{1mm} PKCS11:\texttt{[}module\_name=\texttt{]}modname\texttt{[}:slotid=slot-id\texttt{]}\texttt{[}:token=token-label\texttt{]}\texttt{[}:certid=cert-id\texttt{]}\texttt{[}:certlabel=cert-label\texttt{]}]{Tous les mots clé sont optionnels. modname spécifie l'emplacement de la librairie PKCS\#11. Si une valeur est rencontrée sans mot clé, il est assumé être le modname. Si aucun nom de module n'est spécifié, le défaut est \textbf{opensc-pkcs11.so}. \textbf{slotid=} et/ou \textbf{token=} peuvent être spécifiés pour forcer l'utilisation d'un lecteur de carte ou un token spécifique. \textbf{certid=} et/ou \textbf{certlabel} peuvent être utilisés pour forcer la sélection d'un certificat particulier sur un périphérique.}
\item[\hspace{1mm} ENV:envvar]{envvar spécifie le nom d'une variable d'environnement qui a été définie à une valeur se conformant à une des valeur précédente. Par exemple, \textbf{ENV:X509\_PROXY} où la variable d'environnement \textbf{X509\_PROXY} a été définie à \textbf{FILE:/tmp/my\_proxy.pem}}
\end{description}
 
\vspace{1cm}{\huge options krb5.conf pour PKINIT }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} pkinit\_anchors]{Spécifie l'emplacement des certificats de confiance racine que le client utilise pour signer les certificats KDC. Peut être spécifié plusieurs fois.}
\item[\hspace{1mm} pkinit\_cert\_match]{Spécifie les règles de correspondance que le certificat client doit matcher avant d'être utilisé pour l'authentification PKINIT. Peut être spécifié plusieurs fois. Tous les certificats sont vérifiés avec chaque règle jusqu'à ce qu'un certificat matche. La comparaison de chaîne Issuer et Subject sont des représentations chaîne rfc2253 des valeurs Issuer DN et Subject DN du certificat. La syntaxe de la règle est \textbf{[relation-operator]component-rule ...} où:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} relations-operator]{peut être soit \textbf{\&\&} signifiant toutes les composantes des règles doivent matcher, ou \textbf{||} signifiant que seul un composant de règle doit matcher. Défaut: \&\&}
\item[\hspace{6mm} component-rule]{Peut être un des suivant. Noter qu'il n'y a pas de ponctuation ou d'espace blanc entre les composantes de règle:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{12mm} <SUBJECT>]{regular-expression}
\item[\hspace{12mm} <ISSUER>]{regular-expression}
\item[\hspace{12mm} <SAN>]{regular-expression}
\item[\hspace{12mm} <EKU>]{extended-key-usage-list}
\item[\hspace{12mm} <KU>]{key-usage-list}
\end{description}
 
\hspace{12mm}  \textbf{extended-key-usage-list} est une liste de valeurs Extended Key Usage. Toutes les valeurs dans la liste doivent être présents dans le certificat. Les valeurs sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{18mm} pkinit]{}
\item[\hspace{18mm} msScLogin]{}
\item[\hspace{18mm} clientAuth]{}
\item[\hspace{18mm} emailProtection]{}
\end{description}
 
\hspace{12mm}  \textbf{key-usage-list} est une liste de valeurs requises Key Usages. Toutes les valeurs dans la liste doivent être présentes dans le certificat. Les valeurs sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{18mm} digitalSignature]{}
\item[\hspace{18mm} keyEncipherment]{}
\end{description}
 
\hspace{12mm} exemple:
 
{\ttfamily
pkinit\_cert\_match = ||<SUBJECT>.*DoE.*<SAN>.*@EXAMPLE.COM\\ pkinit\_cert\_match = \&\&<EKU>msScLogin,clientAuth<ISSUER>.*DoE.*\\ pkinit\_cert\_match = <EKU>msScLogin,clientAuth<KU>digitalSignature\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} pkinit\_eku\_checking]{spécifie quelle valeur d'Extended Key Usage le certificat KDC présenté au client doit contenir. (Noter que si le certification du KDC a le pkinit SubjectAlternativeName encodé comme nom Kerberos TGS, la vérification EKU n'est pas nécessaire vu que la CA fournie a certifié cela comme certificat KDC). Les valeurs reconnues sont:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} kpKDC]{C'est la valeur par défaut et spécifie que le KDC doit avoir le id-pkinit-KDKdc EKU comme définis dans la rfc4556.}
\item[\hspace{6mm} kpServerAuth]{Un certificat KDC avec le id-kp-serverAuth EKU tel qu'utilisé par Microsoft sera accepté}
\item[\hspace{6mm} none]{Le certificat du KDC ne sera pas vérifié pour savoir s'il a un EKU acceptable.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} pkinit\_dh\_min\_bits]{Taille de la clé Diffie-Hellman que le client va tenter d'utiliser. les valeur acceptable sont 1024, 2048 (défaut), et 4096.}
\item[\hspace{1mm} pkinit\_identities]{Spécifie les emplacements à utiliser pour trouver les information d'identité X.509 du client. Peut être spécifié plusieurs fois. Ces valeur ne sont pas utilisées si l'utilisateur spécifie \textbf{X509\_user\_identity} sur la ligne de commande.}
\item[\hspace{1mm} pkinit\_kdc\_hostname]{La présence de cette option indique que le client est prêt à accepter un certificat KDC avec un dNSName SAN au lieu de nécessiter de id-pkinit-san comme définis dans la rfc4556. peut être spécifié plusieurs fois.}
\item[\hspace{1mm} pkinit\_longhorn]{À true, on parle au KDC Longhorn}
\item[\hspace{1mm} pkinit\_pool]{Spécifie l'emplacement des certificats intermédiaires qui peuvent être utilisés par le client pour compléter la validation de la chaîne. Peut être spécifié plusieurs fois.}
\item[\hspace{1mm} pkinit\_require\_crl\_checking]{Vérifie les informations de révocation.}
\item[\hspace{1mm} pkinit\_revoke]{Spécifie l'emplacement de la CRL à utiliser pour vérifier les informations de révocations.}
\item[\hspace{1mm} pkinit\_win2k]{Spécifie si le domaine cible est supporte l'ancienne version, pré-rfc, de Kerberos}
\item[\hspace{1mm} pkinit\_win2k\_require\_binding]{À true, le KDC cible attendu est patché pour retourner une réponse avec un checksum. Défaut: false}
\end{description}
 
\vspace{1cm}{\huge Expansion de paramètres }
 
\
 
\hspace{1mm}  De nombreuses variables, telles que \textbf{default\_keytab\_name}, permettent d'étendre les paramètres:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} \%\{TEMP\}]{Répertoire temporaire}
\item[\hspace{1mm} \%\{uid\}]{User ID réel ou Windows SID}
\item[\hspace{1mm} \%\{euid\}]{User ID effectif ou Windows SID}
\item[\hspace{1mm} \%\{USERID\}]{Idem à \%\verb|{|uid\verb|}|}
\item[\hspace{1mm} \%\{null\}]{Chaîne vide}
\item[\hspace{1mm} \%\{LIBDIR\}]{Répertoire d'installation des librairies}
\item[\hspace{1mm} \%\{BINDIR\}]{Répertoire d'installation des binaires}
\item[\hspace{1mm} \%\{SBINDIR\}]{Répertoire d'installation des binaires administratifs}
\item[\hspace{1mm} \%\{username\}]{nom de l'utilisateur unix ou user ID effectif}
\item[\hspace{1mm} \%\{APPDATA\}]{(Windows) Roaming application data for current user}
\item[\hspace{1mm} \%\{COMMON\_APPDATA\}]{(Windows) Application data for all users}
\item[\hspace{1mm} \%\{LOCAL\_APPDATA\}]{(Windows) Local application data for current user}
\item[\hspace{1mm} \%\{SYSTEM\}]{(Windows) Windows system folder}
\item[\hspace{1mm} \%\{WINDOWS\}]{(Windows) Windows folder}
\item[\hspace{1mm} \%\{USERCONFIG\}]{(Windows) Per-user MIT krb5 config file directory}
\item[\hspace{1mm} \%\{COMMONCONFIG\}]{(Windows) Common MIT krb5 config file directory}
\end{description}
 
\vspace{1cm}{\huge Exemple de fichier krb5.conf }
 
\
 
{\ttfamily
\texttt{[}libdefaults\texttt{]}\\ \hspace{2mm}default\_realm = ATHENA.MIT.EDU\\ \hspace{2mm}default\_tkt\_enctypes = des3-hmac-sha1 des-cbc-crc\\ \hspace{2mm}default\_tgs\_enctypes = des3-hmac-sha1 des-cbc-crc\\ \hspace{2mm}dns\_lookup\_kdc = true\\ \hspace{2mm}dns\_lookup\_realm = false\\ \hspace{2mm}\\ \texttt{[}realms\texttt{]}\\ \hspace{2mm}ATHENA.MIT.EDU = \{\\ \hspace{2mm}\hspace{2mm}kdc = kerberos.mit.edu\\ \hspace{2mm}\hspace{2mm}kdc = kerberos-1.mit.edu\\ \hspace{2mm}\hspace{2mm}kdc = kerberos-2.mit.edu:750\\ \hspace{2mm}\hspace{2mm}admin\_server = kerberos.mit.edu\\ \hspace{2mm}\hspace{2mm}master\_kdc = kerberos.mit.edu\\ \hspace{2mm}\hspace{2mm}default\_domain = mit.edu\\ \hspace{2mm}\}\\ \hspace{2mm}EXAMPLE.COM = \{\\ \hspace{2mm}\hspace{2mm}kdc = kerberos.example.com\\ \hspace{2mm}\hspace{2mm}kdc = kerberos-1.example.com\\ \hspace{2mm}\hspace{2mm}admin\_server = kerberos.example.com\\ \hspace{2mm}\}\\ \hspace{2mm}\\ \texttt{[}domain\_realm\texttt{]}\\ \hspace{2mm}.mit.edu = ATHENA.MIT.EDU\\ \hspace{2mm}mit.edu = ATHENA.MIT.EDU\\ \hspace{2mm}\\ \texttt{[}capaths\texttt{]}\\ \hspace{2mm}ATHENA.MIT.EDU = \{\\ \hspace{2mm}\hspace{2mm} EXAMPLE.COM = .\\ \hspace{2mm}\}\\ \hspace{2mm}EXAMPLE.COM = \{\\ \hspace{2mm}\hspace{2mm} ATHENA.MIT.EDU = .\\ \hspace{2mm}\}\\
}
\vspace{8mm}
\end{flushleft}
\end{document}
