xref: /freebsd/crypto/krb5/doc/pdf/admin.tex (revision 7f2fe78b9dd5f51c821d771b63d2e096f6fd49e9)
1*7f2fe78bSCy Schubert%% Generated by Sphinx.
2*7f2fe78bSCy Schubert\def\sphinxdocclass{report}
3*7f2fe78bSCy Schubert\documentclass[letterpaper,10pt,english]{sphinxmanual}
4*7f2fe78bSCy Schubert\ifdefined\pdfpxdimen
5*7f2fe78bSCy Schubert   \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen
6*7f2fe78bSCy Schubert\fi \sphinxpxdimen=.75bp\relax
7*7f2fe78bSCy Schubert\ifdefined\pdfimageresolution
8*7f2fe78bSCy Schubert    \pdfimageresolution= \numexpr \dimexpr1in\relax/\sphinxpxdimen\relax
9*7f2fe78bSCy Schubert\fi
10*7f2fe78bSCy Schubert%% let collapsible pdf bookmarks panel have high depth per default
11*7f2fe78bSCy Schubert\PassOptionsToPackage{bookmarksdepth=5}{hyperref}
12*7f2fe78bSCy Schubert
13*7f2fe78bSCy Schubert\PassOptionsToPackage{warn}{textcomp}
14*7f2fe78bSCy Schubert\usepackage[utf8]{inputenc}
15*7f2fe78bSCy Schubert\ifdefined\DeclareUnicodeCharacter
16*7f2fe78bSCy Schubert% support both utf8 and utf8x syntaxes
17*7f2fe78bSCy Schubert  \ifdefined\DeclareUnicodeCharacterAsOptional
18*7f2fe78bSCy Schubert    \def\sphinxDUC#1{\DeclareUnicodeCharacter{"#1}}
19*7f2fe78bSCy Schubert  \else
20*7f2fe78bSCy Schubert    \let\sphinxDUC\DeclareUnicodeCharacter
21*7f2fe78bSCy Schubert  \fi
22*7f2fe78bSCy Schubert  \sphinxDUC{00A0}{\nobreakspace}
23*7f2fe78bSCy Schubert  \sphinxDUC{2500}{\sphinxunichar{2500}}
24*7f2fe78bSCy Schubert  \sphinxDUC{2502}{\sphinxunichar{2502}}
25*7f2fe78bSCy Schubert  \sphinxDUC{2514}{\sphinxunichar{2514}}
26*7f2fe78bSCy Schubert  \sphinxDUC{251C}{\sphinxunichar{251C}}
27*7f2fe78bSCy Schubert  \sphinxDUC{2572}{\textbackslash}
28*7f2fe78bSCy Schubert\fi
29*7f2fe78bSCy Schubert\usepackage{cmap}
30*7f2fe78bSCy Schubert\usepackage[T1]{fontenc}
31*7f2fe78bSCy Schubert\usepackage{amsmath,amssymb,amstext}
32*7f2fe78bSCy Schubert\usepackage{babel}
33*7f2fe78bSCy Schubert
34*7f2fe78bSCy Schubert
35*7f2fe78bSCy Schubert
36*7f2fe78bSCy Schubert\usepackage{tgtermes}
37*7f2fe78bSCy Schubert\usepackage{tgheros}
38*7f2fe78bSCy Schubert\renewcommand{\ttdefault}{txtt}
39*7f2fe78bSCy Schubert
40*7f2fe78bSCy Schubert
41*7f2fe78bSCy Schubert
42*7f2fe78bSCy Schubert\usepackage[Bjarne]{fncychap}
43*7f2fe78bSCy Schubert\usepackage{sphinx}
44*7f2fe78bSCy Schubert
45*7f2fe78bSCy Schubert\fvset{fontsize=auto}
46*7f2fe78bSCy Schubert\usepackage{geometry}
47*7f2fe78bSCy Schubert
48*7f2fe78bSCy Schubert
49*7f2fe78bSCy Schubert% Include hyperref last.
50*7f2fe78bSCy Schubert\usepackage{hyperref}
51*7f2fe78bSCy Schubert% Fix anchor placement for figures with captions.
52*7f2fe78bSCy Schubert\usepackage{hypcap}% it must be loaded after hyperref.
53*7f2fe78bSCy Schubert% Set up styles of URL: it should be placed after hyperref.
54*7f2fe78bSCy Schubert\urlstyle{same}
55*7f2fe78bSCy Schubert
56*7f2fe78bSCy Schubert
57*7f2fe78bSCy Schubert\usepackage{sphinxmessages}
58*7f2fe78bSCy Schubert\setcounter{tocdepth}{0}
59*7f2fe78bSCy Schubert
60*7f2fe78bSCy Schubert
61*7f2fe78bSCy Schubert
62*7f2fe78bSCy Schubert\title{Kerberos Administration Guide}
63*7f2fe78bSCy Schubert\date{ }
64*7f2fe78bSCy Schubert\release{1.21.3}
65*7f2fe78bSCy Schubert\author{MIT}
66*7f2fe78bSCy Schubert\newcommand{\sphinxlogo}{\vbox{}}
67*7f2fe78bSCy Schubert\renewcommand{\releasename}{Release}
68*7f2fe78bSCy Schubert\makeindex
69*7f2fe78bSCy Schubert\begin{document}
70*7f2fe78bSCy Schubert
71*7f2fe78bSCy Schubert\pagestyle{empty}
72*7f2fe78bSCy Schubert\sphinxmaketitle
73*7f2fe78bSCy Schubert\pagestyle{plain}
74*7f2fe78bSCy Schubert\sphinxtableofcontents
75*7f2fe78bSCy Schubert\pagestyle{normal}
76*7f2fe78bSCy Schubert\phantomsection\label{\detokenize{admin/index::doc}}
77*7f2fe78bSCy Schubert
78*7f2fe78bSCy Schubert
79*7f2fe78bSCy Schubert
80*7f2fe78bSCy Schubert\chapter{Installation guide}
81*7f2fe78bSCy Schubert\label{\detokenize{admin/install:installation-guide}}\label{\detokenize{admin/install::doc}}
82*7f2fe78bSCy Schubert
83*7f2fe78bSCy Schubert\section{Contents}
84*7f2fe78bSCy Schubert\label{\detokenize{admin/install:contents}}
85*7f2fe78bSCy Schubert
86*7f2fe78bSCy Schubert\subsection{Installing KDCs}
87*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:installing-kdcs}}\label{\detokenize{admin/install_kdc::doc}}
88*7f2fe78bSCy Schubert\sphinxAtStartPar
89*7f2fe78bSCy SchubertWhen setting up Kerberos in a production environment, it is best to
90*7f2fe78bSCy Schuberthave multiple replica KDCs alongside with a primary KDC to ensure the
91*7f2fe78bSCy Schubertcontinued availability of the Kerberized services.  Each KDC contains
92*7f2fe78bSCy Schuberta copy of the Kerberos database.  The primary KDC contains the
93*7f2fe78bSCy Schubertwritable copy of the realm database, which it replicates to the
94*7f2fe78bSCy Schubertreplica KDCs at regular intervals.  All database changes (such as
95*7f2fe78bSCy Schubertpassword changes) are made on the primary KDC.  Replica KDCs provide
96*7f2fe78bSCy SchubertKerberos ticket\sphinxhyphen{}granting services, but not database administration,
97*7f2fe78bSCy Schubertwhen the primary KDC is unavailable.  MIT recommends that you install
98*7f2fe78bSCy Schubertall of your KDCs to be able to function as either the primary or one
99*7f2fe78bSCy Schubertof the replicas.  This will enable you to easily switch your primary
100*7f2fe78bSCy SchubertKDC with one of the replicas if necessary (see
101*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/install_kdc:switch-primary-replica}]{\sphinxcrossref{\DUrole{std,std-ref}{Switching primary and replica KDCs}}}}).  This installation procedure is based
102*7f2fe78bSCy Schuberton that recommendation.
103*7f2fe78bSCy Schubert
104*7f2fe78bSCy Schubert\begin{sphinxadmonition}{warning}{Warning:}\begin{itemize}
105*7f2fe78bSCy Schubert\item {}
106*7f2fe78bSCy Schubert\sphinxAtStartPar
107*7f2fe78bSCy SchubertThe Kerberos system relies on the availability of correct time
108*7f2fe78bSCy Schubertinformation.  Ensure that the primary and all replica KDCs have
109*7f2fe78bSCy Schubertproperly synchronized clocks.
110*7f2fe78bSCy Schubert
111*7f2fe78bSCy Schubert\item {}
112*7f2fe78bSCy Schubert\sphinxAtStartPar
113*7f2fe78bSCy SchubertIt is best to install and run KDCs on secured and dedicated
114*7f2fe78bSCy Schuberthardware with limited access.  If your KDC is also a file
115*7f2fe78bSCy Schubertserver, FTP server, Web server, or even just a client machine,
116*7f2fe78bSCy Schubertsomeone who obtained root access through a security hole in any
117*7f2fe78bSCy Schubertof those areas could potentially gain access to the Kerberos
118*7f2fe78bSCy Schubertdatabase.
119*7f2fe78bSCy Schubert
120*7f2fe78bSCy Schubert\end{itemize}
121*7f2fe78bSCy Schubert\end{sphinxadmonition}
122*7f2fe78bSCy Schubert
123*7f2fe78bSCy Schubert
124*7f2fe78bSCy Schubert\subsubsection{Install and configure the primary KDC}
125*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:install-and-configure-the-primary-kdc}}
126*7f2fe78bSCy Schubert\sphinxAtStartPar
127*7f2fe78bSCy SchubertInstall Kerberos either from the OS\sphinxhyphen{}provided packages or from the
128*7f2fe78bSCy Schubertsource (See \DUrole{xref,std,std-ref}{do\_build}).
129*7f2fe78bSCy Schubert
130*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
131*7f2fe78bSCy Schubert\sphinxAtStartPar
132*7f2fe78bSCy SchubertFor the purpose of this document we will use the following
133*7f2fe78bSCy Schubertnames:
134*7f2fe78bSCy Schubert
135*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
136*7f2fe78bSCy Schubert\PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}    \PYG{o}{\PYGZhy{}} \PYG{n}{primary} \PYG{n}{KDC}
137*7f2fe78bSCy Schubert\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}  \PYG{o}{\PYGZhy{}} \PYG{n}{replica} \PYG{n}{KDC}
138*7f2fe78bSCy Schubert\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}      \PYG{o}{\PYGZhy{}} \PYG{n}{realm} \PYG{n}{name}
139*7f2fe78bSCy Schubert\PYG{o}{.}\PYG{n}{k5}\PYG{o}{.}\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}  \PYG{o}{\PYGZhy{}} \PYG{n}{stash} \PYG{n}{file}
140*7f2fe78bSCy Schubert\PYG{n}{admin}\PYG{o}{/}\PYG{n}{admin}         \PYG{o}{\PYGZhy{}} \PYG{n}{admin} \PYG{n}{principal}
141*7f2fe78bSCy Schubert\end{sphinxVerbatim}
142*7f2fe78bSCy Schubert
143*7f2fe78bSCy Schubert\sphinxAtStartPar
144*7f2fe78bSCy SchubertSee {\hyperref[\detokenize{mitK5defaults:mitk5defaults}]{\sphinxcrossref{\DUrole{std,std-ref}{MIT Kerberos defaults}}}} for the default names and locations
145*7f2fe78bSCy Schubertof the relevant to this topic files.  Adjust the names and
146*7f2fe78bSCy Schubertpaths to your system environment.
147*7f2fe78bSCy Schubert\end{sphinxadmonition}
148*7f2fe78bSCy Schubert
149*7f2fe78bSCy Schubert
150*7f2fe78bSCy Schubert\subsubsection{Edit KDC configuration files}
151*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:edit-kdc-configuration-files}}
152*7f2fe78bSCy Schubert\sphinxAtStartPar
153*7f2fe78bSCy SchubertModify the configuration files, {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} and
154*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}, to reflect the correct information (such as
155*7f2fe78bSCy Schubertdomain\sphinxhyphen{}realm mappings and Kerberos servers names) for your realm.
156*7f2fe78bSCy Schubert(See {\hyperref[\detokenize{mitK5defaults:mitk5defaults}]{\sphinxcrossref{\DUrole{std,std-ref}{MIT Kerberos defaults}}}} for the recommended default locations for
157*7f2fe78bSCy Schubertthese files).
158*7f2fe78bSCy Schubert
159*7f2fe78bSCy Schubert\sphinxAtStartPar
160*7f2fe78bSCy SchubertMost of the tags in the configuration have default values that will
161*7f2fe78bSCy Schubertwork well for most sites.  There are some tags in the
162*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} file whose values must be specified, and this
163*7f2fe78bSCy Schubertsection will explain those.
164*7f2fe78bSCy Schubert
165*7f2fe78bSCy Schubert\sphinxAtStartPar
166*7f2fe78bSCy SchubertIf the locations for these configuration files differs from the
167*7f2fe78bSCy Schubertdefault ones, set \sphinxstylestrong{KRB5\_CONFIG} and \sphinxstylestrong{KRB5\_KDC\_PROFILE} environment
168*7f2fe78bSCy Schubertvariables to point to the krb5.conf and kdc.conf respectively.  For
169*7f2fe78bSCy Schubertexample:
170*7f2fe78bSCy Schubert
171*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
172*7f2fe78bSCy Schubert\PYG{n}{export} \PYG{n}{KRB5\PYGZus{}CONFIG}\PYG{o}{=}\PYG{o}{/}\PYG{n}{yourdir}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{conf}
173*7f2fe78bSCy Schubert\PYG{n}{export} \PYG{n}{KRB5\PYGZus{}KDC\PYGZus{}PROFILE}\PYG{o}{=}\PYG{o}{/}\PYG{n}{yourdir}\PYG{o}{/}\PYG{n}{kdc}\PYG{o}{.}\PYG{n}{conf}
174*7f2fe78bSCy Schubert\end{sphinxVerbatim}
175*7f2fe78bSCy Schubert
176*7f2fe78bSCy Schubert
177*7f2fe78bSCy Schubert\paragraph{krb5.conf}
178*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:krb5-conf}}
179*7f2fe78bSCy Schubert\sphinxAtStartPar
180*7f2fe78bSCy SchubertIf you are not using DNS TXT records (see {\hyperref[\detokenize{admin/realm_config:mapping-hostnames}]{\sphinxcrossref{\DUrole{std,std-ref}{Mapping hostnames onto Kerberos realms}}}}),
181*7f2fe78bSCy Schubertyou must specify the \sphinxstylestrong{default\_realm} in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}
182*7f2fe78bSCy Schubertsection.  If you are not using DNS URI or SRV records (see
183*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/realm_config:kdc-hostnames}]{\sphinxcrossref{\DUrole{std,std-ref}{Hostnames for KDCs}}}} and {\hyperref[\detokenize{admin/realm_config:kdc-discovery}]{\sphinxcrossref{\DUrole{std,std-ref}{KDC Discovery}}}}), you must include the
184*7f2fe78bSCy Schubert\sphinxstylestrong{kdc} tag for each \sphinxstyleemphasis{realm} in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} section.  To
185*7f2fe78bSCy Schubertcommunicate with the kadmin server in each realm, the \sphinxstylestrong{admin\_server}
186*7f2fe78bSCy Schuberttag must be set in the
187*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} section.
188*7f2fe78bSCy Schubert
189*7f2fe78bSCy Schubert\sphinxAtStartPar
190*7f2fe78bSCy SchubertAn example krb5.conf file:
191*7f2fe78bSCy Schubert
192*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
193*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{libdefaults}\PYG{p}{]}
194*7f2fe78bSCy Schubert    \PYG{n}{default\PYGZus{}realm} \PYG{o}{=} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
195*7f2fe78bSCy Schubert
196*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
197*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
198*7f2fe78bSCy Schubert        \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
199*7f2fe78bSCy Schubert        \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
200*7f2fe78bSCy Schubert        \PYG{n}{admin\PYGZus{}server} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
201*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
202*7f2fe78bSCy Schubert\end{sphinxVerbatim}
203*7f2fe78bSCy Schubert
204*7f2fe78bSCy Schubert
205*7f2fe78bSCy Schubert\paragraph{kdc.conf}
206*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:kdc-conf}}
207*7f2fe78bSCy Schubert\sphinxAtStartPar
208*7f2fe78bSCy SchubertThe kdc.conf file can be used to control the listening ports of the
209*7f2fe78bSCy SchubertKDC and kadmind, as well as realm\sphinxhyphen{}specific defaults, the database type
210*7f2fe78bSCy Schubertand location, and logging.
211*7f2fe78bSCy Schubert
212*7f2fe78bSCy Schubert\sphinxAtStartPar
213*7f2fe78bSCy SchubertAn example kdc.conf file:
214*7f2fe78bSCy Schubert
215*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
216*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{kdcdefaults}\PYG{p}{]}
217*7f2fe78bSCy Schubert    \PYG{n}{kdc\PYGZus{}listen} \PYG{o}{=} \PYG{l+m+mi}{88}
218*7f2fe78bSCy Schubert    \PYG{n}{kdc\PYGZus{}tcp\PYGZus{}listen} \PYG{o}{=} \PYG{l+m+mi}{88}
219*7f2fe78bSCy Schubert
220*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
221*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
222*7f2fe78bSCy Schubert        \PYG{n}{kadmind\PYGZus{}port} \PYG{o}{=} \PYG{l+m+mi}{749}
223*7f2fe78bSCy Schubert        \PYG{n}{max\PYGZus{}life} \PYG{o}{=} \PYG{l+m+mi}{12}\PYG{n}{h} \PYG{l+m+mi}{0}\PYG{n}{m} \PYG{l+m+mi}{0}\PYG{n}{s}
224*7f2fe78bSCy Schubert        \PYG{n}{max\PYGZus{}renewable\PYGZus{}life} \PYG{o}{=} \PYG{l+m+mi}{7}\PYG{n}{d} \PYG{l+m+mi}{0}\PYG{n}{h} \PYG{l+m+mi}{0}\PYG{n}{m} \PYG{l+m+mi}{0}\PYG{n}{s}
225*7f2fe78bSCy Schubert        \PYG{n}{master\PYGZus{}key\PYGZus{}type} \PYG{o}{=} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}
226*7f2fe78bSCy Schubert        \PYG{n}{supported\PYGZus{}enctypes} \PYG{o}{=} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{p}{:}\PYG{n}{normal}
227*7f2fe78bSCy Schubert        \PYG{c+c1}{\PYGZsh{} If the default location does not suit your setup,}
228*7f2fe78bSCy Schubert        \PYG{c+c1}{\PYGZsh{} explicitly configure the following values:}
229*7f2fe78bSCy Schubert        \PYG{c+c1}{\PYGZsh{}    database\PYGZus{}name = /var/krb5kdc/principal}
230*7f2fe78bSCy Schubert        \PYG{c+c1}{\PYGZsh{}    key\PYGZus{}stash\PYGZus{}file = /var/krb5kdc/.k5.ATHENA.MIT.EDU}
231*7f2fe78bSCy Schubert        \PYG{c+c1}{\PYGZsh{}    acl\PYGZus{}file = /var/krb5kdc/kadm5.acl}
232*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
233*7f2fe78bSCy Schubert
234*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{logging}\PYG{p}{]}
235*7f2fe78bSCy Schubert    \PYG{c+c1}{\PYGZsh{} By default, the KDC and kadmind will log output using}
236*7f2fe78bSCy Schubert    \PYG{c+c1}{\PYGZsh{} syslog.  You can instead send log output to files like this:}
237*7f2fe78bSCy Schubert    \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{log}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{.}\PYG{n}{log}
238*7f2fe78bSCy Schubert    \PYG{n}{admin\PYGZus{}server} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{log}\PYG{o}{/}\PYG{n}{kadmin}\PYG{o}{.}\PYG{n}{log}
239*7f2fe78bSCy Schubert    \PYG{n}{default} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{log}\PYG{o}{/}\PYG{n}{krb5lib}\PYG{o}{.}\PYG{n}{log}
240*7f2fe78bSCy Schubert\end{sphinxVerbatim}
241*7f2fe78bSCy Schubert
242*7f2fe78bSCy Schubert\sphinxAtStartPar
243*7f2fe78bSCy SchubertReplace \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} and \sphinxcode{\sphinxupquote{kerberos.mit.edu}} with the name of
244*7f2fe78bSCy Schubertyour Kerberos realm and server respectively.
245*7f2fe78bSCy Schubert
246*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
247*7f2fe78bSCy Schubert\sphinxAtStartPar
248*7f2fe78bSCy SchubertYou have to have write permission on the target directories
249*7f2fe78bSCy Schubert(these directories must exist) used by \sphinxstylestrong{database\_name},
250*7f2fe78bSCy Schubert\sphinxstylestrong{key\_stash\_file}, and \sphinxstylestrong{acl\_file}.
251*7f2fe78bSCy Schubert\end{sphinxadmonition}
252*7f2fe78bSCy Schubert
253*7f2fe78bSCy Schubert
254*7f2fe78bSCy Schubert\subsubsection{Create the KDC database}
255*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:create-the-kdc-database}}\label{\detokenize{admin/install_kdc:create-db}}
256*7f2fe78bSCy Schubert\sphinxAtStartPar
257*7f2fe78bSCy SchubertYou will use the {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} command on the primary KDC to
258*7f2fe78bSCy Schubertcreate the Kerberos database and the optional \DUrole{xref,std,std-ref}{stash\_definition}.
259*7f2fe78bSCy Schubert
260*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
261*7f2fe78bSCy Schubert\sphinxAtStartPar
262*7f2fe78bSCy SchubertIf you choose not to install a stash file, the KDC will
263*7f2fe78bSCy Schubertprompt you for the master key each time it starts up.  This
264*7f2fe78bSCy Schubertmeans that the KDC will not be able to start automatically,
265*7f2fe78bSCy Schubertsuch as after a system reboot.
266*7f2fe78bSCy Schubert\end{sphinxadmonition}
267*7f2fe78bSCy Schubert
268*7f2fe78bSCy Schubert\sphinxAtStartPar
269*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} will prompt you for the master password for the
270*7f2fe78bSCy SchubertKerberos database.  This password can be any string.  A good password
271*7f2fe78bSCy Schubertis one you can remember, but that no one else can guess.  Examples of
272*7f2fe78bSCy Schubertbad passwords are words that can be found in a dictionary, any common
273*7f2fe78bSCy Schubertor popular name, especially a famous person (or cartoon character),
274*7f2fe78bSCy Schubertyour username in any form (e.g., forward, backward, repeated twice,
275*7f2fe78bSCy Schubertetc.), and any of the sample passwords that appear in this manual.
276*7f2fe78bSCy SchubertOne example of a password which might be good if it did not appear in
277*7f2fe78bSCy Schubertthis manual is “MITiys4K5!”, which represents the sentence “MIT is
278*7f2fe78bSCy Schubertyour source for Kerberos 5!”  (It’s the first letter of each word,
279*7f2fe78bSCy Schubertsubstituting the numeral “4” for the word “for”, and includes the
280*7f2fe78bSCy Schubertpunctuation mark at the end.)
281*7f2fe78bSCy Schubert
282*7f2fe78bSCy Schubert\sphinxAtStartPar
283*7f2fe78bSCy SchubertThe following is an example of how to create a Kerberos database and
284*7f2fe78bSCy Schubertstash file on the primary KDC, using the {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} command.
285*7f2fe78bSCy SchubertReplace \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} with the name of your Kerberos realm:
286*7f2fe78bSCy Schubert
287*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
288*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kdb5\PYGZus{}util} \PYG{n}{create} \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{\PYGZhy{}}\PYG{n}{s}
289*7f2fe78bSCy Schubert
290*7f2fe78bSCy Schubert\PYG{n}{Initializing} \PYG{n}{database} \PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{/usr/local/var/krb5kdc/principal}\PYG{l+s+s1}{\PYGZsq{}} \PYG{k}{for} \PYG{n}{realm} \PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{ATHENA.MIT.EDU}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{,}
291*7f2fe78bSCy Schubert\PYG{n}{master} \PYG{n}{key} \PYG{n}{name} \PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{K/M@ATHENA.MIT.EDU}\PYG{l+s+s1}{\PYGZsq{}}
292*7f2fe78bSCy Schubert\PYG{n}{You} \PYG{n}{will} \PYG{n}{be} \PYG{n}{prompted} \PYG{k}{for} \PYG{n}{the} \PYG{n}{database} \PYG{n}{Master} \PYG{n}{Password}\PYG{o}{.}
293*7f2fe78bSCy Schubert\PYG{n}{It} \PYG{o+ow}{is} \PYG{n}{important} \PYG{n}{that} \PYG{n}{you} \PYG{n}{NOT} \PYG{n}{FORGET} \PYG{n}{this} \PYG{n}{password}\PYG{o}{.}
294*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{KDC} \PYG{n}{database} \PYG{n}{master} \PYG{n}{key}\PYG{p}{:}  \PYG{o}{\PYGZlt{}}\PYG{o}{=} \PYG{n}{Type} \PYG{n}{the} \PYG{n}{master} \PYG{n}{password}\PYG{o}{.}
295*7f2fe78bSCy Schubert\PYG{n}{Re}\PYG{o}{\PYGZhy{}}\PYG{n}{enter} \PYG{n}{KDC} \PYG{n}{database} \PYG{n}{master} \PYG{n}{key} \PYG{n}{to} \PYG{n}{verify}\PYG{p}{:}  \PYG{o}{\PYGZlt{}}\PYG{o}{=} \PYG{n}{Type} \PYG{n}{it} \PYG{n}{again}\PYG{o}{.}
296*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}}
297*7f2fe78bSCy Schubert\end{sphinxVerbatim}
298*7f2fe78bSCy Schubert
299*7f2fe78bSCy Schubert\sphinxAtStartPar
300*7f2fe78bSCy SchubertThis will create five files in {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}} (or at the locations specified
301*7f2fe78bSCy Schubertin {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}):
302*7f2fe78bSCy Schubert\begin{itemize}
303*7f2fe78bSCy Schubert\item {}
304*7f2fe78bSCy Schubert\sphinxAtStartPar
305*7f2fe78bSCy Schuberttwo Kerberos database files, \sphinxcode{\sphinxupquote{principal}}, and \sphinxcode{\sphinxupquote{principal.ok}}
306*7f2fe78bSCy Schubert
307*7f2fe78bSCy Schubert\item {}
308*7f2fe78bSCy Schubert\sphinxAtStartPar
309*7f2fe78bSCy Schubertthe Kerberos administrative database file, \sphinxcode{\sphinxupquote{principal.kadm5}}
310*7f2fe78bSCy Schubert
311*7f2fe78bSCy Schubert\item {}
312*7f2fe78bSCy Schubert\sphinxAtStartPar
313*7f2fe78bSCy Schubertthe administrative database lock file, \sphinxcode{\sphinxupquote{principal.kadm5.lock}}
314*7f2fe78bSCy Schubert
315*7f2fe78bSCy Schubert\item {}
316*7f2fe78bSCy Schubert\sphinxAtStartPar
317*7f2fe78bSCy Schubertthe stash file, in this example \sphinxcode{\sphinxupquote{.k5.ATHENA.MIT.EDU}}.  If you do
318*7f2fe78bSCy Schubertnot want a stash file, run the above command without the \sphinxstylestrong{\sphinxhyphen{}s}
319*7f2fe78bSCy Schubertoption.
320*7f2fe78bSCy Schubert
321*7f2fe78bSCy Schubert\end{itemize}
322*7f2fe78bSCy Schubert
323*7f2fe78bSCy Schubert\sphinxAtStartPar
324*7f2fe78bSCy SchubertFor more information on administrating Kerberos database see
325*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/database:db-operations}]{\sphinxcrossref{\DUrole{std,std-ref}{Operations on the Kerberos database}}}}.
326*7f2fe78bSCy Schubert
327*7f2fe78bSCy Schubert
328*7f2fe78bSCy Schubert\subsubsection{Add administrators to the ACL file}
329*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:add-administrators-to-the-acl-file}}\label{\detokenize{admin/install_kdc:admin-acl}}
330*7f2fe78bSCy Schubert\sphinxAtStartPar
331*7f2fe78bSCy SchubertNext, you need create an Access Control List (ACL) file and put the
332*7f2fe78bSCy SchubertKerberos principal of at least one of the administrators into it.
333*7f2fe78bSCy SchubertThis file is used by the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemon to control which
334*7f2fe78bSCy Schubertprincipals may view and make privileged modifications to the Kerberos
335*7f2fe78bSCy Schubertdatabase files.  The ACL filename is determined by the \sphinxstylestrong{acl\_file}
336*7f2fe78bSCy Schubertvariable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}; the default is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kadm5.acl}}.
337*7f2fe78bSCy Schubert
338*7f2fe78bSCy Schubert\sphinxAtStartPar
339*7f2fe78bSCy SchubertFor more information on Kerberos ACL file see {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}.
340*7f2fe78bSCy Schubert
341*7f2fe78bSCy Schubert
342*7f2fe78bSCy Schubert\subsubsection{Add administrators to the Kerberos database}
343*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:add-administrators-to-the-kerberos-database}}\label{\detokenize{admin/install_kdc:addadmin-kdb}}
344*7f2fe78bSCy Schubert\sphinxAtStartPar
345*7f2fe78bSCy SchubertNext you need to add administrative principals (i.e., principals who
346*7f2fe78bSCy Schubertare allowed to administer Kerberos database) to the Kerberos database.
347*7f2fe78bSCy SchubertYou \sphinxstyleemphasis{must} add at least one principal now to allow communication
348*7f2fe78bSCy Schubertbetween the Kerberos administration daemon kadmind and the kadmin
349*7f2fe78bSCy Schubertprogram over the network for further administration.  To do this, use
350*7f2fe78bSCy Schubertthe kadmin.local utility on the primary KDC.  kadmin.local is designed
351*7f2fe78bSCy Schubertto be run on the primary KDC host without using Kerberos
352*7f2fe78bSCy Schubertauthentication to an admin server; instead, it must have read and
353*7f2fe78bSCy Schubertwrite access to the Kerberos database on the local filesystem.
354*7f2fe78bSCy Schubert
355*7f2fe78bSCy Schubert\sphinxAtStartPar
356*7f2fe78bSCy SchubertThe administrative principals you create should be the ones you added
357*7f2fe78bSCy Schubertto the ACL file (see {\hyperref[\detokenize{admin/install_kdc:admin-acl}]{\sphinxcrossref{\DUrole{std,std-ref}{Add administrators to the ACL file}}}}).
358*7f2fe78bSCy Schubert
359*7f2fe78bSCy Schubert\sphinxAtStartPar
360*7f2fe78bSCy SchubertIn the following example, the administrative principal \sphinxcode{\sphinxupquote{admin/admin}}
361*7f2fe78bSCy Schubertis created:
362*7f2fe78bSCy Schubert
363*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
364*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kadmin}\PYG{o}{.}\PYG{n}{local}
365*7f2fe78bSCy Schubert
366*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{o}{.}\PYG{n}{local}\PYG{p}{:} \PYG{n}{addprinc} \PYG{n}{admin}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
367*7f2fe78bSCy Schubert
368*7f2fe78bSCy Schubert\PYG{n}{No} \PYG{n}{policy} \PYG{n}{specified} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{admin/admin@ATHENA.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{;}
369*7f2fe78bSCy Schubert\PYG{n}{assigning} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{default}\PYG{l+s+s2}{\PYGZdq{}}\PYG{o}{.}
370*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{admin}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{p}{:}  \PYG{o}{\PYGZlt{}}\PYG{o}{=} \PYG{n}{Enter} \PYG{n}{a} \PYG{n}{password}\PYG{o}{.}
371*7f2fe78bSCy Schubert\PYG{n}{Re}\PYG{o}{\PYGZhy{}}\PYG{n}{enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{admin}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{p}{:}  \PYG{o}{\PYGZlt{}}\PYG{o}{=} \PYG{n}{Type} \PYG{n}{it} \PYG{n}{again}\PYG{o}{.}
372*7f2fe78bSCy Schubert\PYG{n}{Principal} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{admin/admin@ATHENA.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{created}\PYG{o}{.}
373*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{o}{.}\PYG{n}{local}\PYG{p}{:}
374*7f2fe78bSCy Schubert\end{sphinxVerbatim}
375*7f2fe78bSCy Schubert
376*7f2fe78bSCy Schubert
377*7f2fe78bSCy Schubert\subsubsection{Start the Kerberos daemons on the primary KDC}
378*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:start-the-kerberos-daemons-on-the-primary-kdc}}\label{\detokenize{admin/install_kdc:start-kdc-daemons}}
379*7f2fe78bSCy Schubert\sphinxAtStartPar
380*7f2fe78bSCy SchubertAt this point, you are ready to start the Kerberos KDC
381*7f2fe78bSCy Schubert({\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}}) and administrative daemons on the primary KDC.  To
382*7f2fe78bSCy Schubertdo so, type:
383*7f2fe78bSCy Schubert
384*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
385*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{krb5kdc}
386*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kadmind}
387*7f2fe78bSCy Schubert\end{sphinxVerbatim}
388*7f2fe78bSCy Schubert
389*7f2fe78bSCy Schubert\sphinxAtStartPar
390*7f2fe78bSCy SchubertEach server daemon will fork and run in the background.
391*7f2fe78bSCy Schubert
392*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
393*7f2fe78bSCy Schubert\sphinxAtStartPar
394*7f2fe78bSCy SchubertAssuming you want these daemons to start up automatically at
395*7f2fe78bSCy Schubertboot time, you can add them to the KDC’s \sphinxcode{\sphinxupquote{/etc/rc}} or
396*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/etc/inittab}} file.  You need to have a
397*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{stash\_definition} in order to do this.
398*7f2fe78bSCy Schubert\end{sphinxadmonition}
399*7f2fe78bSCy Schubert
400*7f2fe78bSCy Schubert\sphinxAtStartPar
401*7f2fe78bSCy SchubertYou can verify that they started properly by checking for their
402*7f2fe78bSCy Schubertstartup messages in the logging locations you defined in
403*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} (see {\hyperref[\detokenize{admin/conf_files/kdc_conf:logging}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}logging{]}}}}}).  For example:
404*7f2fe78bSCy Schubert
405*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
406*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{tail} \PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{log}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{.}\PYG{n}{log}
407*7f2fe78bSCy Schubert\PYG{n}{Dec} \PYG{l+m+mi}{02} \PYG{l+m+mi}{12}\PYG{p}{:}\PYG{l+m+mi}{35}\PYG{p}{:}\PYG{l+m+mi}{47} \PYG{n}{beeblebrox} \PYG{n}{krb5kdc}\PYG{p}{[}\PYG{l+m+mi}{3187}\PYG{p}{]}\PYG{p}{(}\PYG{n}{info}\PYG{p}{)}\PYG{p}{:} \PYG{n}{commencing} \PYG{n}{operation}
408*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{tail} \PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{log}\PYG{o}{/}\PYG{n}{kadmin}\PYG{o}{.}\PYG{n}{log}
409*7f2fe78bSCy Schubert\PYG{n}{Dec} \PYG{l+m+mi}{02} \PYG{l+m+mi}{12}\PYG{p}{:}\PYG{l+m+mi}{35}\PYG{p}{:}\PYG{l+m+mi}{52} \PYG{n}{beeblebrox} \PYG{n}{kadmind}\PYG{p}{[}\PYG{l+m+mi}{3189}\PYG{p}{]}\PYG{p}{(}\PYG{n}{info}\PYG{p}{)}\PYG{p}{:} \PYG{n}{starting}
410*7f2fe78bSCy Schubert\end{sphinxVerbatim}
411*7f2fe78bSCy Schubert
412*7f2fe78bSCy Schubert\sphinxAtStartPar
413*7f2fe78bSCy SchubertAny errors the daemons encounter while starting will also be listed in
414*7f2fe78bSCy Schubertthe logging output.
415*7f2fe78bSCy Schubert
416*7f2fe78bSCy Schubert\sphinxAtStartPar
417*7f2fe78bSCy SchubertAs an additional verification, check if \DUrole{xref,std,std-ref}{kinit(1)} succeeds
418*7f2fe78bSCy Schubertagainst the principals that you have created on the previous step
419*7f2fe78bSCy Schubert({\hyperref[\detokenize{admin/install_kdc:addadmin-kdb}]{\sphinxcrossref{\DUrole{std,std-ref}{Add administrators to the Kerberos database}}}}).  Run:
420*7f2fe78bSCy Schubert
421*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
422*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kinit} \PYG{n}{admin}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
423*7f2fe78bSCy Schubert\end{sphinxVerbatim}
424*7f2fe78bSCy Schubert
425*7f2fe78bSCy Schubert
426*7f2fe78bSCy Schubert\subsubsection{Install the replica KDCs}
427*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:install-the-replica-kdcs}}
428*7f2fe78bSCy Schubert\sphinxAtStartPar
429*7f2fe78bSCy SchubertYou are now ready to start configuring the replica KDCs.
430*7f2fe78bSCy Schubert
431*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
432*7f2fe78bSCy Schubert\sphinxAtStartPar
433*7f2fe78bSCy SchubertAssuming you are setting the KDCs up so that you can easily
434*7f2fe78bSCy Schubertswitch the primary KDC with one of the replicas, you should
435*7f2fe78bSCy Schubertperform each of these steps on the primary KDC as well as
436*7f2fe78bSCy Schubertthe replica KDCs, unless these instructions specify
437*7f2fe78bSCy Schubertotherwise.
438*7f2fe78bSCy Schubert\end{sphinxadmonition}
439*7f2fe78bSCy Schubert
440*7f2fe78bSCy Schubert
441*7f2fe78bSCy Schubert\paragraph{Create host keytabs for replica KDCs}
442*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:create-host-keytabs-for-replica-kdcs}}\label{\detokenize{admin/install_kdc:replica-host-key}}
443*7f2fe78bSCy Schubert\sphinxAtStartPar
444*7f2fe78bSCy SchubertEach KDC needs a \sphinxcode{\sphinxupquote{host}} key in the Kerberos database.  These keys
445*7f2fe78bSCy Schubertare used for mutual authentication when propagating the database dump
446*7f2fe78bSCy Schubertfile from the primary KDC to the secondary KDC servers.
447*7f2fe78bSCy Schubert
448*7f2fe78bSCy Schubert\sphinxAtStartPar
449*7f2fe78bSCy SchubertOn the primary KDC, connect to administrative interface and create the
450*7f2fe78bSCy Schuberthost principal for each of the KDCs’ \sphinxcode{\sphinxupquote{host}} services.  For example,
451*7f2fe78bSCy Schubertif the primary KDC were called \sphinxcode{\sphinxupquote{kerberos.mit.edu}}, and you had a
452*7f2fe78bSCy Schubertreplica KDC named \sphinxcode{\sphinxupquote{kerberos\sphinxhyphen{}1.mit.edu}}, you would type the
453*7f2fe78bSCy Schubertfollowing:
454*7f2fe78bSCy Schubert
455*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
456*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kadmin}
457*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{randkey} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
458*7f2fe78bSCy Schubert\PYG{n}{No} \PYG{n}{policy} \PYG{n}{specified} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{host/kerberos.mit.edu@ATHENA.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{;} \PYG{n}{assigning} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{default}\PYG{l+s+s2}{\PYGZdq{}}
459*7f2fe78bSCy Schubert\PYG{n}{Principal} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{host/kerberos.mit.edu@ATHENA.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{created}\PYG{o}{.}
460*7f2fe78bSCy Schubert
461*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{randkey} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
462*7f2fe78bSCy Schubert\PYG{n}{No} \PYG{n}{policy} \PYG{n}{specified} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{host/kerberos\PYGZhy{}1.mit.edu@ATHENA.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{;} \PYG{n}{assigning} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{default}\PYG{l+s+s2}{\PYGZdq{}}
463*7f2fe78bSCy Schubert\PYG{n}{Principal} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{host/kerberos\PYGZhy{}1.mit.edu@ATHENA.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{created}\PYG{o}{.}
464*7f2fe78bSCy Schubert\end{sphinxVerbatim}
465*7f2fe78bSCy Schubert
466*7f2fe78bSCy Schubert\sphinxAtStartPar
467*7f2fe78bSCy SchubertIt is not strictly necessary to have the primary KDC server in the
468*7f2fe78bSCy SchubertKerberos database, but it can be handy if you want to be able to swap
469*7f2fe78bSCy Schubertthe primary KDC with one of the replicas.
470*7f2fe78bSCy Schubert
471*7f2fe78bSCy Schubert\sphinxAtStartPar
472*7f2fe78bSCy SchubertNext, extract \sphinxcode{\sphinxupquote{host}} random keys for all participating KDCs and
473*7f2fe78bSCy Schubertstore them in each host’s default keytab file.  Ideally, you should
474*7f2fe78bSCy Schubertextract each keytab locally on its own KDC.  If this is not feasible,
475*7f2fe78bSCy Schubertyou should use an encrypted session to send them across the network.
476*7f2fe78bSCy SchubertTo extract a keytab directly on a replica KDC called
477*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{kerberos\sphinxhyphen{}1.mit.edu}}, you would execute the following command:
478*7f2fe78bSCy Schubert
479*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
480*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{ktadd} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
481*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{encryption}
482*7f2fe78bSCy Schubert    \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
483*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{encryption}
484*7f2fe78bSCy Schubert    \PYG{n+nb}{type} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
485*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{encryption}
486*7f2fe78bSCy Schubert    \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha384}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{192} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
487*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{encryption}
488*7f2fe78bSCy Schubert    \PYG{n+nb}{type} \PYG{n}{arcfour}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
489*7f2fe78bSCy Schubert\end{sphinxVerbatim}
490*7f2fe78bSCy Schubert
491*7f2fe78bSCy Schubert\sphinxAtStartPar
492*7f2fe78bSCy SchubertIf you are instead extracting a keytab for the replica KDC called
493*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{kerberos\sphinxhyphen{}1.mit.edu}} on the primary KDC, you should use a dedicated
494*7f2fe78bSCy Schuberttemporary keytab file for that machine’s keytab:
495*7f2fe78bSCy Schubert
496*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
497*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{ktadd} \PYG{o}{\PYGZhy{}}\PYG{n}{k} \PYG{o}{/}\PYG{n}{tmp}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{keytab} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
498*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{encryption}
499*7f2fe78bSCy Schubert    \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
500*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{encryption}
501*7f2fe78bSCy Schubert    \PYG{n+nb}{type} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
502*7f2fe78bSCy Schubert\end{sphinxVerbatim}
503*7f2fe78bSCy Schubert
504*7f2fe78bSCy Schubert\sphinxAtStartPar
505*7f2fe78bSCy SchubertThe file \sphinxcode{\sphinxupquote{/tmp/kerberos\sphinxhyphen{}1.keytab}} can then be installed as
506*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/etc/krb5.keytab}} on the host \sphinxcode{\sphinxupquote{kerberos\sphinxhyphen{}1.mit.edu}}.
507*7f2fe78bSCy Schubert
508*7f2fe78bSCy Schubert
509*7f2fe78bSCy Schubert\paragraph{Configure replica KDCs}
510*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:configure-replica-kdcs}}
511*7f2fe78bSCy Schubert\sphinxAtStartPar
512*7f2fe78bSCy SchubertDatabase propagation copies the contents of the primary’s database,
513*7f2fe78bSCy Schubertbut does not propagate configuration files, stash files, or the kadm5
514*7f2fe78bSCy SchubertACL file.  The following files must be copied by hand to each replica
515*7f2fe78bSCy Schubert(see {\hyperref[\detokenize{mitK5defaults:mitk5defaults}]{\sphinxcrossref{\DUrole{std,std-ref}{MIT Kerberos defaults}}}} for the default locations for these files):
516*7f2fe78bSCy Schubert\begin{itemize}
517*7f2fe78bSCy Schubert\item {}
518*7f2fe78bSCy Schubert\sphinxAtStartPar
519*7f2fe78bSCy Schubertkrb5.conf
520*7f2fe78bSCy Schubert
521*7f2fe78bSCy Schubert\item {}
522*7f2fe78bSCy Schubert\sphinxAtStartPar
523*7f2fe78bSCy Schubertkdc.conf
524*7f2fe78bSCy Schubert
525*7f2fe78bSCy Schubert\item {}
526*7f2fe78bSCy Schubert\sphinxAtStartPar
527*7f2fe78bSCy Schubertkadm5.acl
528*7f2fe78bSCy Schubert
529*7f2fe78bSCy Schubert\item {}
530*7f2fe78bSCy Schubert\sphinxAtStartPar
531*7f2fe78bSCy Schubertmaster key stash file
532*7f2fe78bSCy Schubert
533*7f2fe78bSCy Schubert\end{itemize}
534*7f2fe78bSCy Schubert
535*7f2fe78bSCy Schubert\sphinxAtStartPar
536*7f2fe78bSCy SchubertMove the copied files into their appropriate directories, exactly as
537*7f2fe78bSCy Schuberton the primary KDC.  kadm5.acl is only needed to allow a replica to
538*7f2fe78bSCy Schubertswap with the primary KDC.
539*7f2fe78bSCy Schubert
540*7f2fe78bSCy Schubert\sphinxAtStartPar
541*7f2fe78bSCy SchubertThe database is propagated from the primary KDC to the replica KDCs
542*7f2fe78bSCy Schubertvia the {\hyperref[\detokenize{admin/admin_commands/kpropd:kpropd-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kpropd}}}} daemon.  You must explicitly specify the
543*7f2fe78bSCy Schubertprincipals which are allowed to provide Kerberos dump updates on the
544*7f2fe78bSCy Schubertreplica machine with a new database.  Create a file named kpropd.acl
545*7f2fe78bSCy Schubertin the KDC state directory containing the \sphinxcode{\sphinxupquote{host}} principals for each
546*7f2fe78bSCy Schubertof the KDCs:
547*7f2fe78bSCy Schubert
548*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
549*7f2fe78bSCy Schubert\PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
550*7f2fe78bSCy Schubert\PYG{n}{host}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
551*7f2fe78bSCy Schubert\end{sphinxVerbatim}
552*7f2fe78bSCy Schubert
553*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
554*7f2fe78bSCy Schubert\sphinxAtStartPar
555*7f2fe78bSCy SchubertIf you expect that the primary and replica KDCs will be
556*7f2fe78bSCy Schubertswitched at some point of time, list the host principals
557*7f2fe78bSCy Schubertfrom all participating KDC servers in kpropd.acl files on
558*7f2fe78bSCy Schubertall of the KDCs.  Otherwise, you only need to list the
559*7f2fe78bSCy Schubertprimary KDC’s host principal in the kpropd.acl files of the
560*7f2fe78bSCy Schubertreplica KDCs.
561*7f2fe78bSCy Schubert\end{sphinxadmonition}
562*7f2fe78bSCy Schubert
563*7f2fe78bSCy Schubert\sphinxAtStartPar
564*7f2fe78bSCy SchubertThen, add the following line to \sphinxcode{\sphinxupquote{/etc/inetd.conf}} on each KDC
565*7f2fe78bSCy Schubert(adjust the path to kpropd):
566*7f2fe78bSCy Schubert
567*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
568*7f2fe78bSCy Schubert\PYG{n}{krb5\PYGZus{}prop} \PYG{n}{stream} \PYG{n}{tcp} \PYG{n}{nowait} \PYG{n}{root} \PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{sbin}\PYG{o}{/}\PYG{n}{kpropd} \PYG{n}{kpropd}
569*7f2fe78bSCy Schubert\end{sphinxVerbatim}
570*7f2fe78bSCy Schubert
571*7f2fe78bSCy Schubert\sphinxAtStartPar
572*7f2fe78bSCy SchubertYou also need to add the following line to \sphinxcode{\sphinxupquote{/etc/services}} on each
573*7f2fe78bSCy SchubertKDC, if it is not already present (assuming that the default port is
574*7f2fe78bSCy Schubertused):
575*7f2fe78bSCy Schubert
576*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
577*7f2fe78bSCy Schubert\PYG{n}{krb5\PYGZus{}prop}       \PYG{l+m+mi}{754}\PYG{o}{/}\PYG{n}{tcp}               \PYG{c+c1}{\PYGZsh{} Kerberos replica propagation}
578*7f2fe78bSCy Schubert\end{sphinxVerbatim}
579*7f2fe78bSCy Schubert
580*7f2fe78bSCy Schubert\sphinxAtStartPar
581*7f2fe78bSCy SchubertRestart inetd daemon.
582*7f2fe78bSCy Schubert
583*7f2fe78bSCy Schubert\sphinxAtStartPar
584*7f2fe78bSCy SchubertAlternatively, start {\hyperref[\detokenize{admin/admin_commands/kpropd:kpropd-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kpropd}}}} as a stand\sphinxhyphen{}alone daemon.  This is
585*7f2fe78bSCy Schubertrequired when incremental propagation is enabled.
586*7f2fe78bSCy Schubert
587*7f2fe78bSCy Schubert\sphinxAtStartPar
588*7f2fe78bSCy SchubertNow that the replica KDC is able to accept database propagation,
589*7f2fe78bSCy Schubertyou’ll need to propagate the database from the primary server.
590*7f2fe78bSCy Schubert
591*7f2fe78bSCy Schubert\sphinxAtStartPar
592*7f2fe78bSCy SchubertNOTE: Do not start the replica KDC yet; you still do not have a copy
593*7f2fe78bSCy Schubertof the primary’s database.
594*7f2fe78bSCy Schubert
595*7f2fe78bSCy Schubert
596*7f2fe78bSCy Schubert\paragraph{Propagate the database to each replica KDC}
597*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:propagate-the-database-to-each-replica-kdc}}\label{\detokenize{admin/install_kdc:kprop-to-replicas}}
598*7f2fe78bSCy Schubert\sphinxAtStartPar
599*7f2fe78bSCy SchubertFirst, create a dump file of the database on the primary KDC, as
600*7f2fe78bSCy Schubertfollows:
601*7f2fe78bSCy Schubert
602*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
603*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kdb5\PYGZus{}util} \PYG{n}{dump} \PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{/}\PYG{n}{replica\PYGZus{}datatrans}
604*7f2fe78bSCy Schubert\end{sphinxVerbatim}
605*7f2fe78bSCy Schubert
606*7f2fe78bSCy Schubert\sphinxAtStartPar
607*7f2fe78bSCy SchubertThen, manually propagate the database to each replica KDC, as in the
608*7f2fe78bSCy Schubertfollowing example:
609*7f2fe78bSCy Schubert
610*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
611*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kprop} \PYG{o}{\PYGZhy{}}\PYG{n}{f} \PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{/}\PYG{n}{replica\PYGZus{}datatrans} \PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
612*7f2fe78bSCy Schubert
613*7f2fe78bSCy Schubert\PYG{n}{Database} \PYG{n}{propagation} \PYG{n}{to} \PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{p}{:} \PYG{n}{SUCCEEDED}
614*7f2fe78bSCy Schubert\end{sphinxVerbatim}
615*7f2fe78bSCy Schubert
616*7f2fe78bSCy Schubert\sphinxAtStartPar
617*7f2fe78bSCy SchubertYou will need a script to dump and propagate the database. The
618*7f2fe78bSCy Schubertfollowing is an example of a Bourne shell script that will do this.
619*7f2fe78bSCy Schubert
620*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
621*7f2fe78bSCy Schubert\sphinxAtStartPar
622*7f2fe78bSCy SchubertRemember that you need to replace \sphinxcode{\sphinxupquote{/usr/local/var/krb5kdc}}
623*7f2fe78bSCy Schubertwith the name of the KDC state directory.
624*7f2fe78bSCy Schubert\end{sphinxadmonition}
625*7f2fe78bSCy Schubert
626*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
627*7f2fe78bSCy Schubert\PYGZsh{}!/bin/sh
628*7f2fe78bSCy Schubert
629*7f2fe78bSCy Schubertkdclist = \PYGZdq{}kerberos\PYGZhy{}1.mit.edu kerberos\PYGZhy{}2.mit.edu\PYGZdq{}
630*7f2fe78bSCy Schubert
631*7f2fe78bSCy Schubertkdb5\PYGZus{}util dump /usr/local/var/krb5kdc/replica\PYGZus{}datatrans
632*7f2fe78bSCy Schubert
633*7f2fe78bSCy Schubertfor kdc in \PYGZdl{}kdclist
634*7f2fe78bSCy Schubertdo
635*7f2fe78bSCy Schubert    kprop \PYGZhy{}f /usr/local/var/krb5kdc/replica\PYGZus{}datatrans \PYGZdl{}kdc
636*7f2fe78bSCy Schubertdone
637*7f2fe78bSCy Schubert\end{sphinxVerbatim}
638*7f2fe78bSCy Schubert
639*7f2fe78bSCy Schubert\sphinxAtStartPar
640*7f2fe78bSCy SchubertYou will need to set up a cron job to run this script at the intervals
641*7f2fe78bSCy Schubertyou decided on earlier (see {\hyperref[\detokenize{admin/realm_config:db-prop}]{\sphinxcrossref{\DUrole{std,std-ref}{Database propagation}}}}).
642*7f2fe78bSCy Schubert
643*7f2fe78bSCy Schubert\sphinxAtStartPar
644*7f2fe78bSCy SchubertNow that the replica KDC has a copy of the Kerberos database, you can
645*7f2fe78bSCy Schubertstart the krb5kdc daemon:
646*7f2fe78bSCy Schubert
647*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
648*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{krb5kdc}
649*7f2fe78bSCy Schubert\end{sphinxVerbatim}
650*7f2fe78bSCy Schubert
651*7f2fe78bSCy Schubert\sphinxAtStartPar
652*7f2fe78bSCy SchubertAs with the primary KDC, you will probably want to add this command to
653*7f2fe78bSCy Schubertthe KDCs’ \sphinxcode{\sphinxupquote{/etc/rc}} or \sphinxcode{\sphinxupquote{/etc/inittab}} files, so they will start
654*7f2fe78bSCy Schubertthe krb5kdc daemon automatically at boot time.
655*7f2fe78bSCy Schubert
656*7f2fe78bSCy Schubert
657*7f2fe78bSCy Schubert\subparagraph{Propagation failed?}
658*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:propagation-failed}}
659*7f2fe78bSCy Schubert\sphinxAtStartPar
660*7f2fe78bSCy SchubertYou may encounter the following error messages. For a more detailed
661*7f2fe78bSCy Schubertdiscussion on possible causes and solutions click on the error link
662*7f2fe78bSCy Schubertto be redirected to {\hyperref[\detokenize{admin/troubleshoot:troubleshoot}]{\sphinxcrossref{\DUrole{std,std-ref}{Troubleshooting}}}} section.
663*7f2fe78bSCy Schubert\begin{enumerate}
664*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
665*7f2fe78bSCy Schubert\item {}
666*7f2fe78bSCy Schubert\sphinxAtStartPar
667*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:kprop-no-route}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop: No route to host while connecting to server}}}}
668*7f2fe78bSCy Schubert
669*7f2fe78bSCy Schubert\item {}
670*7f2fe78bSCy Schubert\sphinxAtStartPar
671*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:kprop-con-refused}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop: Connection refused while connecting to server}}}}
672*7f2fe78bSCy Schubert
673*7f2fe78bSCy Schubert\item {}
674*7f2fe78bSCy Schubert\sphinxAtStartPar
675*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:kprop-sendauth-exchange}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop: Server rejected authentication (during sendauth exchange) while authenticating to server}}}}
676*7f2fe78bSCy Schubert
677*7f2fe78bSCy Schubert\end{enumerate}
678*7f2fe78bSCy Schubert
679*7f2fe78bSCy Schubert
680*7f2fe78bSCy Schubert\subsubsection{Add Kerberos principals to the database}
681*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:add-kerberos-principals-to-the-database}}
682*7f2fe78bSCy Schubert\sphinxAtStartPar
683*7f2fe78bSCy SchubertOnce your KDCs are set up and running, you are ready to use
684*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} to load principals for your users, hosts, and other
685*7f2fe78bSCy Schubertservices into the Kerberos database.  This procedure is described
686*7f2fe78bSCy Schubertfully in {\hyperref[\detokenize{admin/database:principals}]{\sphinxcrossref{\DUrole{std,std-ref}{Principals}}}}.
687*7f2fe78bSCy Schubert
688*7f2fe78bSCy Schubert\sphinxAtStartPar
689*7f2fe78bSCy SchubertYou may occasionally want to use one of your replica KDCs as the
690*7f2fe78bSCy Schubertprimary.  This might happen if you are upgrading the primary KDC, or
691*7f2fe78bSCy Schubertif your primary KDC has a disk crash.  See the following section for
692*7f2fe78bSCy Schubertthe instructions.
693*7f2fe78bSCy Schubert
694*7f2fe78bSCy Schubert
695*7f2fe78bSCy Schubert\subsubsection{Switching primary and replica KDCs}
696*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:switching-primary-and-replica-kdcs}}\label{\detokenize{admin/install_kdc:switch-primary-replica}}
697*7f2fe78bSCy Schubert\sphinxAtStartPar
698*7f2fe78bSCy SchubertYou may occasionally want to use one of your replica KDCs as the
699*7f2fe78bSCy Schubertprimary.  This might happen if you are upgrading the primary KDC, or
700*7f2fe78bSCy Schubertif your primary KDC has a disk crash.
701*7f2fe78bSCy Schubert
702*7f2fe78bSCy Schubert\sphinxAtStartPar
703*7f2fe78bSCy SchubertAssuming you have configured all of your KDCs to be able to function
704*7f2fe78bSCy Schubertas either the primary KDC or a replica KDC (as this document
705*7f2fe78bSCy Schubertrecommends), all you need to do to make the changeover is:
706*7f2fe78bSCy Schubert
707*7f2fe78bSCy Schubert\sphinxAtStartPar
708*7f2fe78bSCy SchubertIf the primary KDC is still running, do the following on the \sphinxstyleemphasis{old}
709*7f2fe78bSCy Schubertprimary KDC:
710*7f2fe78bSCy Schubert\begin{enumerate}
711*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
712*7f2fe78bSCy Schubert\item {}
713*7f2fe78bSCy Schubert\sphinxAtStartPar
714*7f2fe78bSCy SchubertKill the kadmind process.
715*7f2fe78bSCy Schubert
716*7f2fe78bSCy Schubert\item {}
717*7f2fe78bSCy Schubert\sphinxAtStartPar
718*7f2fe78bSCy SchubertDisable the cron job that propagates the database.
719*7f2fe78bSCy Schubert
720*7f2fe78bSCy Schubert\item {}
721*7f2fe78bSCy Schubert\sphinxAtStartPar
722*7f2fe78bSCy SchubertRun your database propagation script manually, to ensure that the
723*7f2fe78bSCy Schubertreplicas all have the latest copy of the database (see
724*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/install_kdc:kprop-to-replicas}]{\sphinxcrossref{\DUrole{std,std-ref}{Propagate the database to each replica KDC}}}}).
725*7f2fe78bSCy Schubert
726*7f2fe78bSCy Schubert\end{enumerate}
727*7f2fe78bSCy Schubert
728*7f2fe78bSCy Schubert\sphinxAtStartPar
729*7f2fe78bSCy SchubertOn the \sphinxstyleemphasis{new} primary KDC:
730*7f2fe78bSCy Schubert\begin{enumerate}
731*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
732*7f2fe78bSCy Schubert\item {}
733*7f2fe78bSCy Schubert\sphinxAtStartPar
734*7f2fe78bSCy SchubertStart the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemon (see {\hyperref[\detokenize{admin/install_kdc:start-kdc-daemons}]{\sphinxcrossref{\DUrole{std,std-ref}{Start the Kerberos daemons on the primary KDC}}}}).
735*7f2fe78bSCy Schubert
736*7f2fe78bSCy Schubert\item {}
737*7f2fe78bSCy Schubert\sphinxAtStartPar
738*7f2fe78bSCy SchubertSet up the cron job to propagate the database (see
739*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/install_kdc:kprop-to-replicas}]{\sphinxcrossref{\DUrole{std,std-ref}{Propagate the database to each replica KDC}}}}).
740*7f2fe78bSCy Schubert
741*7f2fe78bSCy Schubert\item {}
742*7f2fe78bSCy Schubert\sphinxAtStartPar
743*7f2fe78bSCy SchubertSwitch the CNAMEs of the old and new primary KDCs.  If you can’t do
744*7f2fe78bSCy Schubertthis, you’ll need to change the {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} file on every
745*7f2fe78bSCy Schubertclient machine in your Kerberos realm.
746*7f2fe78bSCy Schubert
747*7f2fe78bSCy Schubert\end{enumerate}
748*7f2fe78bSCy Schubert
749*7f2fe78bSCy Schubert
750*7f2fe78bSCy Schubert\subsubsection{Incremental database propagation}
751*7f2fe78bSCy Schubert\label{\detokenize{admin/install_kdc:incremental-database-propagation}}
752*7f2fe78bSCy Schubert\sphinxAtStartPar
753*7f2fe78bSCy SchubertIf you expect your Kerberos database to become large, you may wish to
754*7f2fe78bSCy Schubertset up incremental propagation to replica KDCs.  See
755*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/database:incr-db-prop}]{\sphinxcrossref{\DUrole{std,std-ref}{Incremental database propagation}}}} for details.
756*7f2fe78bSCy Schubert
757*7f2fe78bSCy Schubert
758*7f2fe78bSCy Schubert\subsection{Installing and configuring UNIX client machines}
759*7f2fe78bSCy Schubert\label{\detokenize{admin/install_clients:installing-and-configuring-unix-client-machines}}\label{\detokenize{admin/install_clients::doc}}
760*7f2fe78bSCy Schubert\sphinxAtStartPar
761*7f2fe78bSCy SchubertThe Kerberized client programs include \DUrole{xref,std,std-ref}{kinit(1)},
762*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{klist(1)}, \DUrole{xref,std,std-ref}{kdestroy(1)}, and \DUrole{xref,std,std-ref}{kpasswd(1)}.  All of
763*7f2fe78bSCy Schubertthese programs are in the directory {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{BINDIR}}}}.
764*7f2fe78bSCy Schubert
765*7f2fe78bSCy Schubert\sphinxAtStartPar
766*7f2fe78bSCy SchubertYou can often integrate Kerberos with the login system on client
767*7f2fe78bSCy Schubertmachines, typically through the use of PAM.  The details vary by
768*7f2fe78bSCy Schubertoperating system, and should be covered in your operating system’s
769*7f2fe78bSCy Schubertdocumentation.  If you do this, you will need to make sure your users
770*7f2fe78bSCy Schubertknow to use their Kerberos passwords when they log in.
771*7f2fe78bSCy Schubert
772*7f2fe78bSCy Schubert\sphinxAtStartPar
773*7f2fe78bSCy SchubertYou will also need to educate your users to use the ticket management
774*7f2fe78bSCy Schubertprograms kinit, klist, and kdestroy.  If you do not have Kerberos
775*7f2fe78bSCy Schubertpassword changing integrated into the native password program (again,
776*7f2fe78bSCy Schuberttypically through PAM), you will need to educate users to use kpasswd
777*7f2fe78bSCy Schubertin place of its non\sphinxhyphen{}Kerberos counterparts passwd.
778*7f2fe78bSCy Schubert
779*7f2fe78bSCy Schubert
780*7f2fe78bSCy Schubert\subsubsection{Client machine configuration files}
781*7f2fe78bSCy Schubert\label{\detokenize{admin/install_clients:client-machine-configuration-files}}
782*7f2fe78bSCy Schubert\sphinxAtStartPar
783*7f2fe78bSCy SchubertEach machine running Kerberos should have a {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} file.
784*7f2fe78bSCy SchubertAt a minimum, it should define a \sphinxstylestrong{default\_realm} setting in
785*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}.  If you are not using DNS SRV records
786*7f2fe78bSCy Schubert({\hyperref[\detokenize{admin/realm_config:kdc-hostnames}]{\sphinxcrossref{\DUrole{std,std-ref}{Hostnames for KDCs}}}}) or URI records ({\hyperref[\detokenize{admin/realm_config:kdc-discovery}]{\sphinxcrossref{\DUrole{std,std-ref}{KDC Discovery}}}}), it must
787*7f2fe78bSCy Schubertalso contain a {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} section containing information for your
788*7f2fe78bSCy Schubertrealm’s KDCs.
789*7f2fe78bSCy Schubert
790*7f2fe78bSCy Schubert\sphinxAtStartPar
791*7f2fe78bSCy SchubertConsider setting \sphinxstylestrong{rdns} to false in order to reduce your dependence
792*7f2fe78bSCy Schuberton precisely correct DNS information for service hostnames.  Turning
793*7f2fe78bSCy Schubertthis flag off means that service hostnames will be canonicalized
794*7f2fe78bSCy Schubertthrough forward name resolution (which adds your domain name to
795*7f2fe78bSCy Schubertunqualified hostnames, and resolves CNAME records in DNS), but not
796*7f2fe78bSCy Schubertthrough reverse address lookup.  The default value of this flag is
797*7f2fe78bSCy Schuberttrue for historical reasons only.
798*7f2fe78bSCy Schubert
799*7f2fe78bSCy Schubert\sphinxAtStartPar
800*7f2fe78bSCy SchubertIf you anticipate users frequently logging into remote hosts
801*7f2fe78bSCy Schubert(e.g., using ssh) using forwardable credentials, consider setting
802*7f2fe78bSCy Schubert\sphinxstylestrong{forwardable} to true so that users obtain forwardable tickets by
803*7f2fe78bSCy Schubertdefault.  Otherwise users will need to use \sphinxcode{\sphinxupquote{kinit \sphinxhyphen{}f}} to get
804*7f2fe78bSCy Schubertforwardable tickets.
805*7f2fe78bSCy Schubert
806*7f2fe78bSCy Schubert\sphinxAtStartPar
807*7f2fe78bSCy SchubertConsider adjusting the \sphinxstylestrong{ticket\_lifetime} setting to match the likely
808*7f2fe78bSCy Schubertlength of sessions for your users.  For instance, if most of your
809*7f2fe78bSCy Schubertusers will be logging in for an eight\sphinxhyphen{}hour workday, you could set the
810*7f2fe78bSCy Schubertdefault to ten hours so that tickets obtained in the morning expire
811*7f2fe78bSCy Schubertshortly after the end of the workday.  Users can still manually
812*7f2fe78bSCy Schubertrequest longer tickets when necessary, up to the maximum allowed by
813*7f2fe78bSCy Schuberteach user’s principal record on the KDC.
814*7f2fe78bSCy Schubert
815*7f2fe78bSCy Schubert\sphinxAtStartPar
816*7f2fe78bSCy SchubertIf a client host may access services in different realms, it may be
817*7f2fe78bSCy Schubertuseful to define a {\hyperref[\detokenize{admin/conf_files/krb5_conf:domain-realm}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}domain\_realm{]}}}}} mapping so that clients know
818*7f2fe78bSCy Schubertwhich hosts belong to which realms.  However, if your clients and KDC
819*7f2fe78bSCy Schubertare running release 1.7 or later, it is also reasonable to leave this
820*7f2fe78bSCy Schubertsection out on client machines and just define it in the KDC’s
821*7f2fe78bSCy Schubertkrb5.conf.
822*7f2fe78bSCy Schubert
823*7f2fe78bSCy Schubert
824*7f2fe78bSCy Schubert\subsection{UNIX Application Servers}
825*7f2fe78bSCy Schubert\label{\detokenize{admin/install_appl_srv:unix-application-servers}}\label{\detokenize{admin/install_appl_srv::doc}}
826*7f2fe78bSCy Schubert\sphinxAtStartPar
827*7f2fe78bSCy SchubertAn application server is a host that provides one or more services
828*7f2fe78bSCy Schubertover the network.  Application servers can be “secure” or “insecure.”
829*7f2fe78bSCy SchubertA “secure” host is set up to require authentication from every client
830*7f2fe78bSCy Schubertconnecting to it.  An “insecure” host will still provide Kerberos
831*7f2fe78bSCy Schubertauthentication, but will also allow unauthenticated clients to
832*7f2fe78bSCy Schubertconnect.
833*7f2fe78bSCy Schubert
834*7f2fe78bSCy Schubert\sphinxAtStartPar
835*7f2fe78bSCy SchubertIf you have Kerberos V5 installed on all of your client machines, MIT
836*7f2fe78bSCy Schubertrecommends that you make your hosts secure, to take advantage of the
837*7f2fe78bSCy Schubertsecurity that Kerberos authentication affords.  However, if you have
838*7f2fe78bSCy Schubertsome clients that do not have Kerberos V5 installed, you can run an
839*7f2fe78bSCy Schubertinsecure server, and still take advantage of Kerberos V5’s single
840*7f2fe78bSCy Schubertsign\sphinxhyphen{}on capability.
841*7f2fe78bSCy Schubert
842*7f2fe78bSCy Schubert
843*7f2fe78bSCy Schubert\subsubsection{The keytab file}
844*7f2fe78bSCy Schubert\label{\detokenize{admin/install_appl_srv:the-keytab-file}}\label{\detokenize{admin/install_appl_srv:keytab-file}}
845*7f2fe78bSCy Schubert\sphinxAtStartPar
846*7f2fe78bSCy SchubertAll Kerberos server machines need a keytab file to authenticate to the
847*7f2fe78bSCy SchubertKDC.  By default on UNIX\sphinxhyphen{}like systems this file is named {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFKTNAME}}}}.
848*7f2fe78bSCy SchubertThe keytab file is an local copy of the host’s key.  The keytab file
849*7f2fe78bSCy Schubertis a potential point of entry for a break\sphinxhyphen{}in, and if compromised,
850*7f2fe78bSCy Schubertwould allow unrestricted access to its host.  The keytab file should
851*7f2fe78bSCy Schubertbe readable only by root, and should exist only on the machine’s local
852*7f2fe78bSCy Schubertdisk.  The file should not be part of any backup of the machine,
853*7f2fe78bSCy Schubertunless access to the backup data is secured as tightly as access to
854*7f2fe78bSCy Schubertthe machine’s root password.
855*7f2fe78bSCy Schubert
856*7f2fe78bSCy Schubert\sphinxAtStartPar
857*7f2fe78bSCy SchubertIn order to generate a keytab for a host, the host must have a
858*7f2fe78bSCy Schubertprincipal in the Kerberos database.  The procedure for adding hosts to
859*7f2fe78bSCy Schubertthe database is described fully in {\hyperref[\detokenize{admin/database:principals}]{\sphinxcrossref{\DUrole{std,std-ref}{Principals}}}}.  (See
860*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/install_kdc:replica-host-key}]{\sphinxcrossref{\DUrole{std,std-ref}{Create host keytabs for replica KDCs}}}} for a brief description.)  The keytab is
861*7f2fe78bSCy Schubertgenerated by running {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} and issuing the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:ktadd}]{\sphinxcrossref{\DUrole{std,std-ref}{ktadd}}}}
862*7f2fe78bSCy Schubertcommand.
863*7f2fe78bSCy Schubert
864*7f2fe78bSCy Schubert\sphinxAtStartPar
865*7f2fe78bSCy SchubertFor example, to generate a keytab file to allow the host
866*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{trillium.mit.edu}} to authenticate for the services host, ftp, and
867*7f2fe78bSCy Schubertpop, the administrator \sphinxcode{\sphinxupquote{joeadmin}} would issue the command (on
868*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{trillium.mit.edu}}):
869*7f2fe78bSCy Schubert
870*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
871*7f2fe78bSCy Schubert\PYG{n}{trillium}\PYG{o}{\PYGZpc{}} \PYG{n}{kadmin}
872*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{root}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{password}\PYG{o}{.}
873*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{n}{root}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{p}{:}
874*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{ktadd} \PYG{n}{host}\PYG{o}{/}\PYG{n}{trillium}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{n}{ftp}\PYG{o}{/}\PYG{n}{trillium}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{n}{pop}\PYG{o}{/}\PYG{n}{trillium}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
875*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{trillium}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha384}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{192} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
876*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{ftp}\PYG{o}{/}\PYG{n}{trillium}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha384}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{192} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
877*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{pop}\PYG{o}{/}\PYG{n}{trillium}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha384}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{192} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
878*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{quit}
879*7f2fe78bSCy Schubert\PYG{n}{trillium}\PYG{o}{\PYGZpc{}}
880*7f2fe78bSCy Schubert\end{sphinxVerbatim}
881*7f2fe78bSCy Schubert
882*7f2fe78bSCy Schubert\sphinxAtStartPar
883*7f2fe78bSCy SchubertIf you generate the keytab file on another host, you need to get a
884*7f2fe78bSCy Schubertcopy of the keytab file onto the destination host (\sphinxcode{\sphinxupquote{trillium}}, in
885*7f2fe78bSCy Schubertthe above example) without sending it unencrypted over the network.
886*7f2fe78bSCy Schubert
887*7f2fe78bSCy Schubert
888*7f2fe78bSCy Schubert\subsubsection{Some advice about secure hosts}
889*7f2fe78bSCy Schubert\label{\detokenize{admin/install_appl_srv:some-advice-about-secure-hosts}}
890*7f2fe78bSCy Schubert\sphinxAtStartPar
891*7f2fe78bSCy SchubertKerberos V5 can protect your host from certain types of break\sphinxhyphen{}ins, but
892*7f2fe78bSCy Schubertit is possible to install Kerberos V5 and still leave your host
893*7f2fe78bSCy Schubertvulnerable to attack.  Obviously an installation guide is not the
894*7f2fe78bSCy Schubertplace to try to include an exhaustive list of countermeasures for
895*7f2fe78bSCy Schubertevery possible attack, but it is worth noting some of the larger holes
896*7f2fe78bSCy Schubertand how to close them.
897*7f2fe78bSCy Schubert
898*7f2fe78bSCy Schubert\sphinxAtStartPar
899*7f2fe78bSCy SchubertWe recommend that backups of secure machines exclude the keytab file
900*7f2fe78bSCy Schubert({\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFKTNAME}}}}).  If this is not possible, the backups should at least be
901*7f2fe78bSCy Schubertdone locally, rather than over a network, and the backup tapes should
902*7f2fe78bSCy Schubertbe physically secured.
903*7f2fe78bSCy Schubert
904*7f2fe78bSCy Schubert\sphinxAtStartPar
905*7f2fe78bSCy SchubertThe keytab file and any programs run by root, including the Kerberos
906*7f2fe78bSCy SchubertV5 binaries, should be kept on local disk.  The keytab file should be
907*7f2fe78bSCy Schubertreadable only by root.
908*7f2fe78bSCy Schubert
909*7f2fe78bSCy Schubert
910*7f2fe78bSCy Schubert\section{Additional references}
911*7f2fe78bSCy Schubert\label{\detokenize{admin/install:additional-references}}\begin{enumerate}
912*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
913*7f2fe78bSCy Schubert\item {}
914*7f2fe78bSCy Schubert\sphinxAtStartPar
915*7f2fe78bSCy SchubertDebian: \sphinxhref{http://techpubs.spinlocksolutions.com/dklar/kerberos.html}{Setting up MIT Kerberos 5}
916*7f2fe78bSCy Schubert
917*7f2fe78bSCy Schubert\item {}
918*7f2fe78bSCy Schubert\sphinxAtStartPar
919*7f2fe78bSCy SchubertSolaris: \sphinxhref{https://docs.oracle.com/cd/E19253-01/816-4557/6maosrjv2/index.html}{Configuring the Kerberos Service}
920*7f2fe78bSCy Schubert
921*7f2fe78bSCy Schubert\end{enumerate}
922*7f2fe78bSCy Schubert
923*7f2fe78bSCy Schubert
924*7f2fe78bSCy Schubert\chapter{Configuration Files}
925*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/index:configuration-files}}\label{\detokenize{admin/conf_files/index::doc}}
926*7f2fe78bSCy Schubert\sphinxAtStartPar
927*7f2fe78bSCy SchubertKerberos uses configuration files to allow administrators to specify
928*7f2fe78bSCy Schubertsettings on a per\sphinxhyphen{}machine basis.  {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} applies to all
929*7f2fe78bSCy Schubertapplications using the Kerboros library, on clients and servers.
930*7f2fe78bSCy SchubertFor KDC\sphinxhyphen{}specific applications, additional settings can be specified in
931*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}; the two files are merged into a configuration profile
932*7f2fe78bSCy Schubertused by applications accessing the KDC database directly.  {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}
933*7f2fe78bSCy Schubertis also only used on the KDC, it controls permissions for modifying the
934*7f2fe78bSCy SchubertKDC database.
935*7f2fe78bSCy Schubert
936*7f2fe78bSCy Schubert
937*7f2fe78bSCy Schubert\section{Contents}
938*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/index:contents}}
939*7f2fe78bSCy Schubert
940*7f2fe78bSCy Schubert\subsection{krb5.conf}
941*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:krb5-conf}}\label{\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}}\label{\detokenize{admin/conf_files/krb5_conf::doc}}
942*7f2fe78bSCy Schubert\sphinxAtStartPar
943*7f2fe78bSCy SchubertThe krb5.conf file contains Kerberos configuration information,
944*7f2fe78bSCy Schubertincluding the locations of KDCs and admin servers for the Kerberos
945*7f2fe78bSCy Schubertrealms of interest, defaults for the current realm and for Kerberos
946*7f2fe78bSCy Schubertapplications, and mappings of hostnames onto Kerberos realms.
947*7f2fe78bSCy SchubertNormally, you should install your krb5.conf file in the directory
948*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/etc}}.  You can override the default location by setting the
949*7f2fe78bSCy Schubertenvironment variable \sphinxstylestrong{KRB5\_CONFIG}.  Multiple colon\sphinxhyphen{}separated
950*7f2fe78bSCy Schubertfilenames may be specified in \sphinxstylestrong{KRB5\_CONFIG}; all files which are
951*7f2fe78bSCy Schubertpresent will be read.  Starting in release 1.14, directory names can
952*7f2fe78bSCy Schubertalso be specified in \sphinxstylestrong{KRB5\_CONFIG}; all files within the directory
953*7f2fe78bSCy Schubertwhose names consist solely of alphanumeric characters, dashes, or
954*7f2fe78bSCy Schubertunderscores will be read.
955*7f2fe78bSCy Schubert
956*7f2fe78bSCy Schubert
957*7f2fe78bSCy Schubert\subsubsection{Structure}
958*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:structure}}
959*7f2fe78bSCy Schubert\sphinxAtStartPar
960*7f2fe78bSCy SchubertThe krb5.conf file is set up in the style of a Windows INI file.
961*7f2fe78bSCy SchubertLines beginning with ‘\#’ or ‘;’ (possibly after initial whitespace)
962*7f2fe78bSCy Schubertare ignored as comments.  Sections are headed by the section name, in
963*7f2fe78bSCy Schubertsquare brackets.  Each section may contain zero or more relations, of
964*7f2fe78bSCy Schubertthe form:
965*7f2fe78bSCy Schubert
966*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
967*7f2fe78bSCy Schubert\PYG{n}{foo} \PYG{o}{=} \PYG{n}{bar}
968*7f2fe78bSCy Schubert\end{sphinxVerbatim}
969*7f2fe78bSCy Schubert
970*7f2fe78bSCy Schubert\sphinxAtStartPar
971*7f2fe78bSCy Schubertor:
972*7f2fe78bSCy Schubert
973*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
974*7f2fe78bSCy Schubert\PYG{n}{fubar} \PYG{o}{=} \PYG{p}{\PYGZob{}}
975*7f2fe78bSCy Schubert    \PYG{n}{foo} \PYG{o}{=} \PYG{n}{bar}
976*7f2fe78bSCy Schubert    \PYG{n}{baz} \PYG{o}{=} \PYG{n}{quux}
977*7f2fe78bSCy Schubert\PYG{p}{\PYGZcb{}}
978*7f2fe78bSCy Schubert\end{sphinxVerbatim}
979*7f2fe78bSCy Schubert
980*7f2fe78bSCy Schubert\sphinxAtStartPar
981*7f2fe78bSCy SchubertPlacing a ‘*’ after the closing bracket of a section name indicates
982*7f2fe78bSCy Schubertthat the section is \sphinxstyleemphasis{final}, meaning that if the same section appears
983*7f2fe78bSCy Schubertwithin a later file specified in \sphinxstylestrong{KRB5\_CONFIG}, it will be ignored.
984*7f2fe78bSCy SchubertA subsection can be marked as final by placing a ‘*’ after either the
985*7f2fe78bSCy Schuberttag name or the closing brace.
986*7f2fe78bSCy Schubert
987*7f2fe78bSCy Schubert\sphinxAtStartPar
988*7f2fe78bSCy SchubertThe krb5.conf file can include other files using either of the
989*7f2fe78bSCy Schubertfollowing directives at the beginning of a line:
990*7f2fe78bSCy Schubert
991*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
992*7f2fe78bSCy Schubert\PYG{n}{include} \PYG{n}{FILENAME}
993*7f2fe78bSCy Schubert\PYG{n}{includedir} \PYG{n}{DIRNAME}
994*7f2fe78bSCy Schubert\end{sphinxVerbatim}
995*7f2fe78bSCy Schubert
996*7f2fe78bSCy Schubert\sphinxAtStartPar
997*7f2fe78bSCy Schubert\sphinxstyleemphasis{FILENAME} or \sphinxstyleemphasis{DIRNAME} should be an absolute path. The named file or
998*7f2fe78bSCy Schubertdirectory must exist and be readable.  Including a directory includes
999*7f2fe78bSCy Schubertall files within the directory whose names consist solely of
1000*7f2fe78bSCy Schubertalphanumeric characters, dashes, or underscores.  Starting in release
1001*7f2fe78bSCy Schubert1.15, files with names ending in “.conf” are also included, unless the
1002*7f2fe78bSCy Schubertname begins with “.”.  Included profile files are syntactically
1003*7f2fe78bSCy Schubertindependent of their parents, so each included file must begin with a
1004*7f2fe78bSCy Schubertsection header.  Starting in release 1.17, files are read in
1005*7f2fe78bSCy Schubertalphanumeric order; in previous releases, they may be read in any
1006*7f2fe78bSCy Schubertorder.
1007*7f2fe78bSCy Schubert
1008*7f2fe78bSCy Schubert\sphinxAtStartPar
1009*7f2fe78bSCy SchubertThe krb5.conf file can specify that configuration should be obtained
1010*7f2fe78bSCy Schubertfrom a loadable module, rather than the file itself, using the
1011*7f2fe78bSCy Schubertfollowing directive at the beginning of a line before any section
1012*7f2fe78bSCy Schubertheaders:
1013*7f2fe78bSCy Schubert
1014*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
1015*7f2fe78bSCy Schubert\PYG{n}{module} \PYG{n}{MODULEPATH}\PYG{p}{:}\PYG{n}{RESIDUAL}
1016*7f2fe78bSCy Schubert\end{sphinxVerbatim}
1017*7f2fe78bSCy Schubert
1018*7f2fe78bSCy Schubert\sphinxAtStartPar
1019*7f2fe78bSCy Schubert\sphinxstyleemphasis{MODULEPATH} may be relative to the library path of the krb5
1020*7f2fe78bSCy Schubertinstallation, or it may be an absolute path.  \sphinxstyleemphasis{RESIDUAL} is provided
1021*7f2fe78bSCy Schubertto the module at initialization time.  If krb5.conf uses a module
1022*7f2fe78bSCy Schubertdirective, {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} should also use one if it exists.
1023*7f2fe78bSCy Schubert
1024*7f2fe78bSCy Schubert
1025*7f2fe78bSCy Schubert\subsubsection{Sections}
1026*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:sections}}
1027*7f2fe78bSCy Schubert\sphinxAtStartPar
1028*7f2fe78bSCy SchubertThe krb5.conf file may contain the following sections:
1029*7f2fe78bSCy Schubert
1030*7f2fe78bSCy Schubert
1031*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
1032*7f2fe78bSCy Schubert\centering
1033*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|}
1034*7f2fe78bSCy Schubert\hline
1035*7f2fe78bSCy Schubert
1036*7f2fe78bSCy Schubert\sphinxAtStartPar
1037*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}
1038*7f2fe78bSCy Schubert&
1039*7f2fe78bSCy Schubert\sphinxAtStartPar
1040*7f2fe78bSCy SchubertSettings used by the Kerberos V5 library
1041*7f2fe78bSCy Schubert\\
1042*7f2fe78bSCy Schubert\hline
1043*7f2fe78bSCy Schubert\sphinxAtStartPar
1044*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}}
1045*7f2fe78bSCy Schubert&
1046*7f2fe78bSCy Schubert\sphinxAtStartPar
1047*7f2fe78bSCy SchubertRealm\sphinxhyphen{}specific contact information and settings
1048*7f2fe78bSCy Schubert\\
1049*7f2fe78bSCy Schubert\hline
1050*7f2fe78bSCy Schubert\sphinxAtStartPar
1051*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:domain-realm}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}domain\_realm{]}}}}}
1052*7f2fe78bSCy Schubert&
1053*7f2fe78bSCy Schubert\sphinxAtStartPar
1054*7f2fe78bSCy SchubertMaps server hostnames to Kerberos realms
1055*7f2fe78bSCy Schubert\\
1056*7f2fe78bSCy Schubert\hline
1057*7f2fe78bSCy Schubert\sphinxAtStartPar
1058*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:capaths}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}capaths{]}}}}}
1059*7f2fe78bSCy Schubert&
1060*7f2fe78bSCy Schubert\sphinxAtStartPar
1061*7f2fe78bSCy SchubertAuthentication paths for non\sphinxhyphen{}hierarchical cross\sphinxhyphen{}realm
1062*7f2fe78bSCy Schubert\\
1063*7f2fe78bSCy Schubert\hline
1064*7f2fe78bSCy Schubert\sphinxAtStartPar
1065*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:appdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}appdefaults{]}}}}}
1066*7f2fe78bSCy Schubert&
1067*7f2fe78bSCy Schubert\sphinxAtStartPar
1068*7f2fe78bSCy SchubertSettings used by some Kerberos V5 applications
1069*7f2fe78bSCy Schubert\\
1070*7f2fe78bSCy Schubert\hline
1071*7f2fe78bSCy Schubert\sphinxAtStartPar
1072*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:plugins}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}plugins{]}}}}}
1073*7f2fe78bSCy Schubert&
1074*7f2fe78bSCy Schubert\sphinxAtStartPar
1075*7f2fe78bSCy SchubertControls plugin module registration
1076*7f2fe78bSCy Schubert\\
1077*7f2fe78bSCy Schubert\hline
1078*7f2fe78bSCy Schubert\end{tabulary}
1079*7f2fe78bSCy Schubert\par
1080*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
1081*7f2fe78bSCy Schubert
1082*7f2fe78bSCy Schubert\sphinxAtStartPar
1083*7f2fe78bSCy SchubertAdditionally, krb5.conf may include any of the relations described in
1084*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}, but it is not a recommended practice.
1085*7f2fe78bSCy Schubert
1086*7f2fe78bSCy Schubert
1087*7f2fe78bSCy Schubert\paragraph{{[}libdefaults{]}}
1088*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:libdefaults}}\label{\detokenize{admin/conf_files/krb5_conf:id1}}
1089*7f2fe78bSCy Schubert\sphinxAtStartPar
1090*7f2fe78bSCy SchubertThe libdefaults section may contain any of the following relations:
1091*7f2fe78bSCy Schubert\begin{description}
1092*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{allow\_des3}}] \leavevmode
1093*7f2fe78bSCy Schubert\sphinxAtStartPar
1094*7f2fe78bSCy SchubertPermit the KDC to issue tickets with des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 session keys.
1095*7f2fe78bSCy SchubertIn future releases, this flag will allow des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 to be used
1096*7f2fe78bSCy Schubertat all.  The default value for this tag is false.  (Added in
1097*7f2fe78bSCy Schubertrelease 1.21.)
1098*7f2fe78bSCy Schubert
1099*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{allow\_rc4}}] \leavevmode
1100*7f2fe78bSCy Schubert\sphinxAtStartPar
1101*7f2fe78bSCy SchubertPermit the KDC to issue tickets with arcfour\sphinxhyphen{}hmac session keys.
1102*7f2fe78bSCy SchubertIn future releases, this flag will allow arcfour\sphinxhyphen{}hmac to be used
1103*7f2fe78bSCy Schubertat all.  The default value for this tag is false.  (Added in
1104*7f2fe78bSCy Schubertrelease 1.21.)
1105*7f2fe78bSCy Schubert
1106*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{allow\_weak\_crypto}}] \leavevmode
1107*7f2fe78bSCy Schubert\sphinxAtStartPar
1108*7f2fe78bSCy SchubertIf this flag is set to false, then weak encryption types (as noted
1109*7f2fe78bSCy Schubertin {\hyperref[\detokenize{admin/conf_files/kdc_conf:encryption-types}]{\sphinxcrossref{\DUrole{std,std-ref}{Encryption types}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}) will be filtered
1110*7f2fe78bSCy Schubertout of the lists \sphinxstylestrong{default\_tgs\_enctypes},
1111*7f2fe78bSCy Schubert\sphinxstylestrong{default\_tkt\_enctypes}, and \sphinxstylestrong{permitted\_enctypes}.  The default
1112*7f2fe78bSCy Schubertvalue for this tag is false.
1113*7f2fe78bSCy Schubert
1114*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{canonicalize}}] \leavevmode
1115*7f2fe78bSCy Schubert\sphinxAtStartPar
1116*7f2fe78bSCy SchubertIf this flag is set to true, initial ticket requests to the KDC
1117*7f2fe78bSCy Schubertwill request canonicalization of the client principal name, and
1118*7f2fe78bSCy Schubertanswers with different client principals than the requested
1119*7f2fe78bSCy Schubertprincipal will be accepted.  The default value is false.
1120*7f2fe78bSCy Schubert
1121*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ccache\_type}}] \leavevmode
1122*7f2fe78bSCy Schubert\sphinxAtStartPar
1123*7f2fe78bSCy SchubertThis parameter determines the format of credential cache types
1124*7f2fe78bSCy Schubertcreated by \DUrole{xref,std,std-ref}{kinit(1)} or other programs.  The default value
1125*7f2fe78bSCy Schubertis 4, which represents the most current format.  Smaller values
1126*7f2fe78bSCy Schubertcan be used for compatibility with very old implementations of
1127*7f2fe78bSCy SchubertKerberos which interact with credential caches on the same host.
1128*7f2fe78bSCy Schubert
1129*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{clockskew}}] \leavevmode
1130*7f2fe78bSCy Schubert\sphinxAtStartPar
1131*7f2fe78bSCy SchubertSets the maximum allowable amount of clockskew in seconds that the
1132*7f2fe78bSCy Schubertlibrary will tolerate before assuming that a Kerberos message is
1133*7f2fe78bSCy Schubertinvalid.  The default value is 300 seconds, or five minutes.
1134*7f2fe78bSCy Schubert
1135*7f2fe78bSCy Schubert\sphinxAtStartPar
1136*7f2fe78bSCy SchubertThe clockskew setting is also used when evaluating ticket start
1137*7f2fe78bSCy Schubertand expiration times.  For example, tickets that have reached
1138*7f2fe78bSCy Schuberttheir expiration time can still be used (and renewed if they are
1139*7f2fe78bSCy Schubertrenewable tickets) if they have been expired for a shorter
1140*7f2fe78bSCy Schubertduration than the \sphinxstylestrong{clockskew} setting.
1141*7f2fe78bSCy Schubert
1142*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_ccache\_name}}] \leavevmode
1143*7f2fe78bSCy Schubert\sphinxAtStartPar
1144*7f2fe78bSCy SchubertThis relation specifies the name of the default credential cache.
1145*7f2fe78bSCy SchubertThe default is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFCCNAME}}}}.  This relation is subject to parameter
1146*7f2fe78bSCy Schubertexpansion (see below).  New in release 1.11.
1147*7f2fe78bSCy Schubert
1148*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_client\_keytab\_name}}] \leavevmode
1149*7f2fe78bSCy Schubert\sphinxAtStartPar
1150*7f2fe78bSCy SchubertThis relation specifies the name of the default keytab for
1151*7f2fe78bSCy Schubertobtaining client credentials.  The default is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFCKTNAME}}}}.  This
1152*7f2fe78bSCy Schubertrelation is subject to parameter expansion (see below).
1153*7f2fe78bSCy SchubertNew in release 1.11.
1154*7f2fe78bSCy Schubert
1155*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_keytab\_name}}] \leavevmode
1156*7f2fe78bSCy Schubert\sphinxAtStartPar
1157*7f2fe78bSCy SchubertThis relation specifies the default keytab name to be used by
1158*7f2fe78bSCy Schubertapplication servers such as sshd.  The default is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFKTNAME}}}}.  This
1159*7f2fe78bSCy Schubertrelation is subject to parameter expansion (see below).
1160*7f2fe78bSCy Schubert
1161*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_rcache\_name}}] \leavevmode
1162*7f2fe78bSCy Schubert\sphinxAtStartPar
1163*7f2fe78bSCy SchubertThis relation specifies the name of the default replay cache.
1164*7f2fe78bSCy SchubertThe default is \sphinxcode{\sphinxupquote{dfl:}}.  This relation is subject to parameter
1165*7f2fe78bSCy Schubertexpansion (see below).  New in release 1.18.
1166*7f2fe78bSCy Schubert
1167*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_realm}}] \leavevmode
1168*7f2fe78bSCy Schubert\sphinxAtStartPar
1169*7f2fe78bSCy SchubertIdentifies the default Kerberos realm for the client.  Set its
1170*7f2fe78bSCy Schubertvalue to your Kerberos realm.  If this value is not set, then a
1171*7f2fe78bSCy Schubertrealm must be specified with every Kerberos principal when
1172*7f2fe78bSCy Schubertinvoking programs such as \DUrole{xref,std,std-ref}{kinit(1)}.
1173*7f2fe78bSCy Schubert
1174*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_tgs\_enctypes}}] \leavevmode
1175*7f2fe78bSCy Schubert\sphinxAtStartPar
1176*7f2fe78bSCy SchubertIdentifies the supported list of session key encryption types that
1177*7f2fe78bSCy Schubertthe client should request when making a TGS\sphinxhyphen{}REQ, in order of
1178*7f2fe78bSCy Schubertpreference from highest to lowest.  The list may be delimited with
1179*7f2fe78bSCy Schubertcommas or whitespace.  See {\hyperref[\detokenize{admin/conf_files/kdc_conf:encryption-types}]{\sphinxcrossref{\DUrole{std,std-ref}{Encryption types}}}} in
1180*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} for a list of the accepted values for this tag.
1181*7f2fe78bSCy SchubertStarting in release 1.18, the default value is the value of
1182*7f2fe78bSCy Schubert\sphinxstylestrong{permitted\_enctypes}.  For previous releases or if
1183*7f2fe78bSCy Schubert\sphinxstylestrong{permitted\_enctypes} is not set, the default value is
1184*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha384\sphinxhyphen{}192 aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha256\sphinxhyphen{}128 des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 arcfour\sphinxhyphen{}hmac\sphinxhyphen{}md5 camellia256\sphinxhyphen{}cts\sphinxhyphen{}cmac camellia128\sphinxhyphen{}cts\sphinxhyphen{}cmac}}.
1185*7f2fe78bSCy Schubert
1186*7f2fe78bSCy Schubert\sphinxAtStartPar
1187*7f2fe78bSCy SchubertDo not set this unless required for specific backward
1188*7f2fe78bSCy Schubertcompatibility purposes; stale values of this setting can prevent
1189*7f2fe78bSCy Schubertclients from taking advantage of new stronger enctypes when the
1190*7f2fe78bSCy Schubertlibraries are upgraded.
1191*7f2fe78bSCy Schubert
1192*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_tkt\_enctypes}}] \leavevmode
1193*7f2fe78bSCy Schubert\sphinxAtStartPar
1194*7f2fe78bSCy SchubertIdentifies the supported list of session key encryption types that
1195*7f2fe78bSCy Schubertthe client should request when making an AS\sphinxhyphen{}REQ, in order of
1196*7f2fe78bSCy Schubertpreference from highest to lowest.  The format is the same as for
1197*7f2fe78bSCy Schubertdefault\_tgs\_enctypes.  Starting in release 1.18, the default
1198*7f2fe78bSCy Schubertvalue is the value of \sphinxstylestrong{permitted\_enctypes}.  For previous
1199*7f2fe78bSCy Schubertreleases or if \sphinxstylestrong{permitted\_enctypes} is not set, the default
1200*7f2fe78bSCy Schubertvalue is \sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha384\sphinxhyphen{}192 aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha256\sphinxhyphen{}128 des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 arcfour\sphinxhyphen{}hmac\sphinxhyphen{}md5 camellia256\sphinxhyphen{}cts\sphinxhyphen{}cmac camellia128\sphinxhyphen{}cts\sphinxhyphen{}cmac}}.
1201*7f2fe78bSCy Schubert
1202*7f2fe78bSCy Schubert\sphinxAtStartPar
1203*7f2fe78bSCy SchubertDo not set this unless required for specific backward
1204*7f2fe78bSCy Schubertcompatibility purposes; stale values of this setting can prevent
1205*7f2fe78bSCy Schubertclients from taking advantage of new stronger enctypes when the
1206*7f2fe78bSCy Schubertlibraries are upgraded.
1207*7f2fe78bSCy Schubert
1208*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{dns\_canonicalize\_hostname}}] \leavevmode
1209*7f2fe78bSCy Schubert\sphinxAtStartPar
1210*7f2fe78bSCy SchubertIndicate whether name lookups will be used to canonicalize
1211*7f2fe78bSCy Schuberthostnames for use in service principal names.  Setting this flag
1212*7f2fe78bSCy Schubertto false can improve security by reducing reliance on DNS, but
1213*7f2fe78bSCy Schubertmeans that short hostnames will not be canonicalized to
1214*7f2fe78bSCy Schubertfully\sphinxhyphen{}qualified hostnames.  If this option is set to \sphinxcode{\sphinxupquote{fallback}} (new
1215*7f2fe78bSCy Schubertin release 1.18), DNS canonicalization will only be performed the
1216*7f2fe78bSCy Schubertserver hostname is not found with the original name when
1217*7f2fe78bSCy Schubertrequesting credentials.  The default value is true.
1218*7f2fe78bSCy Schubert
1219*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{dns\_lookup\_kdc}}] \leavevmode
1220*7f2fe78bSCy Schubert\sphinxAtStartPar
1221*7f2fe78bSCy SchubertIndicate whether DNS SRV records should be used to locate the KDCs
1222*7f2fe78bSCy Schubertand other servers for a realm, if they are not listed in the
1223*7f2fe78bSCy Schubertkrb5.conf information for the realm.  (Note that the admin\_server
1224*7f2fe78bSCy Schubertentry must be in the krb5.conf realm information in order to
1225*7f2fe78bSCy Schubertcontact kadmind, because the DNS implementation for kadmin is
1226*7f2fe78bSCy Schubertincomplete.)
1227*7f2fe78bSCy Schubert
1228*7f2fe78bSCy Schubert\sphinxAtStartPar
1229*7f2fe78bSCy SchubertEnabling this option does open up a type of denial\sphinxhyphen{}of\sphinxhyphen{}service
1230*7f2fe78bSCy Schubertattack, if someone spoofs the DNS records and redirects you to
1231*7f2fe78bSCy Schubertanother server.  However, it’s no worse than a denial of service,
1232*7f2fe78bSCy Schubertbecause that fake KDC will be unable to decode anything you send
1233*7f2fe78bSCy Schubertit (besides the initial ticket request, which has no encrypted
1234*7f2fe78bSCy Schubertdata), and anything the fake KDC sends will not be trusted without
1235*7f2fe78bSCy Schubertverification using some secret that it won’t know.
1236*7f2fe78bSCy Schubert
1237*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{dns\_uri\_lookup}}] \leavevmode
1238*7f2fe78bSCy Schubert\sphinxAtStartPar
1239*7f2fe78bSCy SchubertIndicate whether DNS URI records should be used to locate the KDCs
1240*7f2fe78bSCy Schubertand other servers for a realm, if they are not listed in the
1241*7f2fe78bSCy Schubertkrb5.conf information for the realm.  SRV records are used as a
1242*7f2fe78bSCy Schubertfallback if no URI records were found.  The default value is true.
1243*7f2fe78bSCy SchubertNew in release 1.15.
1244*7f2fe78bSCy Schubert
1245*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{enforce\_ok\_as\_delegate}}] \leavevmode
1246*7f2fe78bSCy Schubert\sphinxAtStartPar
1247*7f2fe78bSCy SchubertIf this flag to true, GSSAPI credential delegation will be
1248*7f2fe78bSCy Schubertdisabled when the \sphinxcode{\sphinxupquote{ok\sphinxhyphen{}as\sphinxhyphen{}delegate}} flag is not set in the
1249*7f2fe78bSCy Schubertservice ticket.  If this flag is false, the \sphinxcode{\sphinxupquote{ok\sphinxhyphen{}as\sphinxhyphen{}delegate}}
1250*7f2fe78bSCy Schubertticket flag is only enforced when an application specifically
1251*7f2fe78bSCy Schubertrequests enforcement.  The default value is false.
1252*7f2fe78bSCy Schubert
1253*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{err\_fmt}}] \leavevmode
1254*7f2fe78bSCy Schubert\sphinxAtStartPar
1255*7f2fe78bSCy SchubertThis relation allows for custom error message formatting.  If a
1256*7f2fe78bSCy Schubertvalue is set, error messages will be formatted by substituting a
1257*7f2fe78bSCy Schubertnormal error message for \%M and an error code for \%C in the value.
1258*7f2fe78bSCy Schubert
1259*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{extra\_addresses}}] \leavevmode
1260*7f2fe78bSCy Schubert\sphinxAtStartPar
1261*7f2fe78bSCy SchubertThis allows a computer to use multiple local addresses, in order
1262*7f2fe78bSCy Schubertto allow Kerberos to work in a network that uses NATs while still
1263*7f2fe78bSCy Schubertusing address\sphinxhyphen{}restricted tickets.  The addresses should be in a
1264*7f2fe78bSCy Schubertcomma\sphinxhyphen{}separated list.  This option has no effect if
1265*7f2fe78bSCy Schubert\sphinxstylestrong{noaddresses} is true.
1266*7f2fe78bSCy Schubert
1267*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{forwardable}}] \leavevmode
1268*7f2fe78bSCy Schubert\sphinxAtStartPar
1269*7f2fe78bSCy SchubertIf this flag is true, initial tickets will be forwardable by
1270*7f2fe78bSCy Schubertdefault, if allowed by the KDC.  The default value is false.
1271*7f2fe78bSCy Schubert
1272*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ignore\_acceptor\_hostname}}] \leavevmode
1273*7f2fe78bSCy Schubert\sphinxAtStartPar
1274*7f2fe78bSCy SchubertWhen accepting GSSAPI or krb5 security contexts for host\sphinxhyphen{}based
1275*7f2fe78bSCy Schubertservice principals, ignore any hostname passed by the calling
1276*7f2fe78bSCy Schubertapplication, and allow clients to authenticate to any service
1277*7f2fe78bSCy Schubertprincipal in the keytab matching the service name and realm name
1278*7f2fe78bSCy Schubert(if given).  This option can improve the administrative
1279*7f2fe78bSCy Schubertflexibility of server applications on multihomed hosts, but could
1280*7f2fe78bSCy Schubertcompromise the security of virtual hosting environments.  The
1281*7f2fe78bSCy Schubertdefault value is false.  New in release 1.10.
1282*7f2fe78bSCy Schubert
1283*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{k5login\_authoritative}}] \leavevmode
1284*7f2fe78bSCy Schubert\sphinxAtStartPar
1285*7f2fe78bSCy SchubertIf this flag is true, principals must be listed in a local user’s
1286*7f2fe78bSCy Schubertk5login file to be granted login access, if a \DUrole{xref,std,std-ref}{.k5login(5)}
1287*7f2fe78bSCy Schubertfile exists.  If this flag is false, a principal may still be
1288*7f2fe78bSCy Schubertgranted login access through other mechanisms even if a k5login
1289*7f2fe78bSCy Schubertfile exists but does not list the principal.  The default value is
1290*7f2fe78bSCy Schuberttrue.
1291*7f2fe78bSCy Schubert
1292*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{k5login\_directory}}] \leavevmode
1293*7f2fe78bSCy Schubert\sphinxAtStartPar
1294*7f2fe78bSCy SchubertIf set, the library will look for a local user’s k5login file
1295*7f2fe78bSCy Schubertwithin the named directory, with a filename corresponding to the
1296*7f2fe78bSCy Schubertlocal username.  If not set, the library will look for k5login
1297*7f2fe78bSCy Schubertfiles in the user’s home directory, with the filename .k5login.
1298*7f2fe78bSCy SchubertFor security reasons, .k5login files must be owned by
1299*7f2fe78bSCy Schubertthe local user or by root.
1300*7f2fe78bSCy Schubert
1301*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kcm\_mach\_service}}] \leavevmode
1302*7f2fe78bSCy Schubert\sphinxAtStartPar
1303*7f2fe78bSCy SchubertOn macOS only, determines the name of the bootstrap service used to
1304*7f2fe78bSCy Schubertcontact the KCM daemon for the KCM credential cache type.  If the
1305*7f2fe78bSCy Schubertvalue is \sphinxcode{\sphinxupquote{\sphinxhyphen{}}}, Mach RPC will not be used to contact the KCM
1306*7f2fe78bSCy Schubertdaemon.  The default value is \sphinxcode{\sphinxupquote{org.h5l.kcm}}.
1307*7f2fe78bSCy Schubert
1308*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kcm\_socket}}] \leavevmode
1309*7f2fe78bSCy Schubert\sphinxAtStartPar
1310*7f2fe78bSCy SchubertDetermines the path to the Unix domain socket used to access the
1311*7f2fe78bSCy SchubertKCM daemon for the KCM credential cache type.  If the value is
1312*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{\sphinxhyphen{}}}, Unix domain sockets will not be used to contact the KCM
1313*7f2fe78bSCy Schubertdaemon.  The default value is
1314*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/var/run/.heim\_org.h5l.kcm\sphinxhyphen{}socket}}.
1315*7f2fe78bSCy Schubert
1316*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc\_default\_options}}] \leavevmode
1317*7f2fe78bSCy Schubert\sphinxAtStartPar
1318*7f2fe78bSCy SchubertDefault KDC options (Xored for multiple values) when requesting
1319*7f2fe78bSCy Schubertinitial tickets.  By default it is set to 0x00000010
1320*7f2fe78bSCy Schubert(KDC\_OPT\_RENEWABLE\_OK).
1321*7f2fe78bSCy Schubert
1322*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc\_timesync}}] \leavevmode
1323*7f2fe78bSCy Schubert\sphinxAtStartPar
1324*7f2fe78bSCy SchubertAccepted values for this relation are 1 or 0.  If it is nonzero,
1325*7f2fe78bSCy Schubertclient machines will compute the difference between their time and
1326*7f2fe78bSCy Schubertthe time returned by the KDC in the timestamps in the tickets and
1327*7f2fe78bSCy Schubertuse this value to correct for an inaccurate system clock when
1328*7f2fe78bSCy Schubertrequesting service tickets or authenticating to services.  This
1329*7f2fe78bSCy Schubertcorrective factor is only used by the Kerberos library; it is not
1330*7f2fe78bSCy Schubertused to change the system clock.  The default value is 1.
1331*7f2fe78bSCy Schubert
1332*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{noaddresses}}] \leavevmode
1333*7f2fe78bSCy Schubert\sphinxAtStartPar
1334*7f2fe78bSCy SchubertIf this flag is true, requests for initial tickets will not be
1335*7f2fe78bSCy Schubertmade with address restrictions set, allowing the tickets to be
1336*7f2fe78bSCy Schubertused across NATs.  The default value is true.
1337*7f2fe78bSCy Schubert
1338*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{permitted\_enctypes}}] \leavevmode
1339*7f2fe78bSCy Schubert\sphinxAtStartPar
1340*7f2fe78bSCy SchubertIdentifies the encryption types that servers will permit for
1341*7f2fe78bSCy Schubertsession keys and for ticket and authenticator encryption, ordered
1342*7f2fe78bSCy Schubertby preference from highest to lowest.  Starting in release 1.18,
1343*7f2fe78bSCy Schubertthis tag also acts as the default value for
1344*7f2fe78bSCy Schubert\sphinxstylestrong{default\_tgs\_enctypes} and \sphinxstylestrong{default\_tkt\_enctypes}.  The
1345*7f2fe78bSCy Schubertdefault value for this tag is \sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha384\sphinxhyphen{}192 aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha256\sphinxhyphen{}128 des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 arcfour\sphinxhyphen{}hmac\sphinxhyphen{}md5 camellia256\sphinxhyphen{}cts\sphinxhyphen{}cmac camellia128\sphinxhyphen{}cts\sphinxhyphen{}cmac}}.
1346*7f2fe78bSCy Schubert
1347*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{plugin\_base\_dir}}] \leavevmode
1348*7f2fe78bSCy Schubert\sphinxAtStartPar
1349*7f2fe78bSCy SchubertIf set, determines the base directory where krb5 plugins are
1350*7f2fe78bSCy Schubertlocated.  The default value is the \sphinxcode{\sphinxupquote{krb5/plugins}} subdirectory
1351*7f2fe78bSCy Schubertof the krb5 library directory.  This relation is subject to
1352*7f2fe78bSCy Schubertparameter expansion (see below) in release 1.17 and later.
1353*7f2fe78bSCy Schubert
1354*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{preferred\_preauth\_types}}] \leavevmode
1355*7f2fe78bSCy Schubert\sphinxAtStartPar
1356*7f2fe78bSCy SchubertThis allows you to set the preferred preauthentication types which
1357*7f2fe78bSCy Schubertthe client will attempt before others which may be advertised by a
1358*7f2fe78bSCy SchubertKDC.  The default value for this setting is “17, 16, 15, 14”,
1359*7f2fe78bSCy Schubertwhich forces libkrb5 to attempt to use PKINIT if it is supported.
1360*7f2fe78bSCy Schubert
1361*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{proxiable}}] \leavevmode
1362*7f2fe78bSCy Schubert\sphinxAtStartPar
1363*7f2fe78bSCy SchubertIf this flag is true, initial tickets will be proxiable by
1364*7f2fe78bSCy Schubertdefault, if allowed by the KDC.  The default value is false.
1365*7f2fe78bSCy Schubert
1366*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{qualify\_shortname}}] \leavevmode
1367*7f2fe78bSCy Schubert\sphinxAtStartPar
1368*7f2fe78bSCy SchubertIf this string is set, it determines the domain suffix for
1369*7f2fe78bSCy Schubertsingle\sphinxhyphen{}component hostnames when DNS canonicalization is not used
1370*7f2fe78bSCy Schubert(either because \sphinxstylestrong{dns\_canonicalize\_hostname} is false or because
1371*7f2fe78bSCy Schubertforward canonicalization failed).  The default value is the first
1372*7f2fe78bSCy Schubertsearch domain of the system’s DNS configuration.  To disable
1373*7f2fe78bSCy Schubertqualification of shortnames, set this relation to the empty string
1374*7f2fe78bSCy Schubertwith \sphinxcode{\sphinxupquote{qualify\_shortname = ""}}.  (New in release 1.18.)
1375*7f2fe78bSCy Schubert
1376*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{rdns}}] \leavevmode
1377*7f2fe78bSCy Schubert\sphinxAtStartPar
1378*7f2fe78bSCy SchubertIf this flag is true, reverse name lookup will be used in addition
1379*7f2fe78bSCy Schubertto forward name lookup to canonicalizing hostnames for use in
1380*7f2fe78bSCy Schubertservice principal names.  If \sphinxstylestrong{dns\_canonicalize\_hostname} is set
1381*7f2fe78bSCy Schubertto false, this flag has no effect.  The default value is true.
1382*7f2fe78bSCy Schubert
1383*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{realm\_try\_domains}}] \leavevmode
1384*7f2fe78bSCy Schubert\sphinxAtStartPar
1385*7f2fe78bSCy SchubertIndicate whether a host’s domain components should be used to
1386*7f2fe78bSCy Schubertdetermine the Kerberos realm of the host.  The value of this
1387*7f2fe78bSCy Schubertvariable is an integer: \sphinxhyphen{}1 means not to search, 0 means to try the
1388*7f2fe78bSCy Schuberthost’s domain itself, 1 means to also try the domain’s immediate
1389*7f2fe78bSCy Schubertparent, and so forth.  The library’s usual mechanism for locating
1390*7f2fe78bSCy SchubertKerberos realms is used to determine whether a domain is a valid
1391*7f2fe78bSCy Schubertrealm, which may involve consulting DNS if \sphinxstylestrong{dns\_lookup\_kdc} is
1392*7f2fe78bSCy Schubertset.  The default is not to search domain components.
1393*7f2fe78bSCy Schubert
1394*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{renew\_lifetime}}] \leavevmode
1395*7f2fe78bSCy Schubert\sphinxAtStartPar
1396*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} string.)  Sets the default renewable lifetime
1397*7f2fe78bSCy Schubertfor initial ticket requests.  The default value is 0.
1398*7f2fe78bSCy Schubert
1399*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{spake\_preauth\_groups}}] \leavevmode
1400*7f2fe78bSCy Schubert\sphinxAtStartPar
1401*7f2fe78bSCy SchubertA whitespace or comma\sphinxhyphen{}separated list of words which specifies the
1402*7f2fe78bSCy Schubertgroups allowed for SPAKE preauthentication.  The possible values
1403*7f2fe78bSCy Schubertare:
1404*7f2fe78bSCy Schubert
1405*7f2fe78bSCy Schubert
1406*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
1407*7f2fe78bSCy Schubert\centering
1408*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|}
1409*7f2fe78bSCy Schubert\hline
1410*7f2fe78bSCy Schubert
1411*7f2fe78bSCy Schubert\sphinxAtStartPar
1412*7f2fe78bSCy Schubertedwards25519
1413*7f2fe78bSCy Schubert&
1414*7f2fe78bSCy Schubert\sphinxAtStartPar
1415*7f2fe78bSCy SchubertEdwards25519 curve (\index{RFC@\spxentry{RFC}!RFC 7748@\spxentry{RFC 7748}}\sphinxhref{https://tools.ietf.org/html/rfc7748.html}{\sphinxstylestrong{RFC 7748}})
1416*7f2fe78bSCy Schubert\\
1417*7f2fe78bSCy Schubert\hline
1418*7f2fe78bSCy Schubert\sphinxAtStartPar
1419*7f2fe78bSCy SchubertP\sphinxhyphen{}256
1420*7f2fe78bSCy Schubert&
1421*7f2fe78bSCy Schubert\sphinxAtStartPar
1422*7f2fe78bSCy SchubertNIST P\sphinxhyphen{}256 curve (\index{RFC@\spxentry{RFC}!RFC 5480@\spxentry{RFC 5480}}\sphinxhref{https://tools.ietf.org/html/rfc5480.html}{\sphinxstylestrong{RFC 5480}})
1423*7f2fe78bSCy Schubert\\
1424*7f2fe78bSCy Schubert\hline
1425*7f2fe78bSCy Schubert\sphinxAtStartPar
1426*7f2fe78bSCy SchubertP\sphinxhyphen{}384
1427*7f2fe78bSCy Schubert&
1428*7f2fe78bSCy Schubert\sphinxAtStartPar
1429*7f2fe78bSCy SchubertNIST P\sphinxhyphen{}384 curve (\index{RFC@\spxentry{RFC}!RFC 5480@\spxentry{RFC 5480}}\sphinxhref{https://tools.ietf.org/html/rfc5480.html}{\sphinxstylestrong{RFC 5480}})
1430*7f2fe78bSCy Schubert\\
1431*7f2fe78bSCy Schubert\hline
1432*7f2fe78bSCy Schubert\sphinxAtStartPar
1433*7f2fe78bSCy SchubertP\sphinxhyphen{}521
1434*7f2fe78bSCy Schubert&
1435*7f2fe78bSCy Schubert\sphinxAtStartPar
1436*7f2fe78bSCy SchubertNIST P\sphinxhyphen{}521 curve (\index{RFC@\spxentry{RFC}!RFC 5480@\spxentry{RFC 5480}}\sphinxhref{https://tools.ietf.org/html/rfc5480.html}{\sphinxstylestrong{RFC 5480}})
1437*7f2fe78bSCy Schubert\\
1438*7f2fe78bSCy Schubert\hline
1439*7f2fe78bSCy Schubert\end{tabulary}
1440*7f2fe78bSCy Schubert\par
1441*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
1442*7f2fe78bSCy Schubert
1443*7f2fe78bSCy Schubert\sphinxAtStartPar
1444*7f2fe78bSCy SchubertThe default value for the client is \sphinxcode{\sphinxupquote{edwards25519}}.  The default
1445*7f2fe78bSCy Schubertvalue for the KDC is empty.  New in release 1.17.
1446*7f2fe78bSCy Schubert
1447*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ticket\_lifetime}}] \leavevmode
1448*7f2fe78bSCy Schubert\sphinxAtStartPar
1449*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} string.)  Sets the default lifetime for initial
1450*7f2fe78bSCy Schubertticket requests.  The default value is 1 day.
1451*7f2fe78bSCy Schubert
1452*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{udp\_preference\_limit}}] \leavevmode
1453*7f2fe78bSCy Schubert\sphinxAtStartPar
1454*7f2fe78bSCy SchubertWhen sending a message to the KDC, the library will try using TCP
1455*7f2fe78bSCy Schubertbefore UDP if the size of the message is above
1456*7f2fe78bSCy Schubert\sphinxstylestrong{udp\_preference\_limit}.  If the message is smaller than
1457*7f2fe78bSCy Schubert\sphinxstylestrong{udp\_preference\_limit}, then UDP will be tried before TCP.
1458*7f2fe78bSCy SchubertRegardless of the size, both protocols will be tried if the first
1459*7f2fe78bSCy Schubertattempt fails.
1460*7f2fe78bSCy Schubert
1461*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{verify\_ap\_req\_nofail}}] \leavevmode
1462*7f2fe78bSCy Schubert\sphinxAtStartPar
1463*7f2fe78bSCy SchubertIf this flag is true, then an attempt to verify initial
1464*7f2fe78bSCy Schubertcredentials will fail if the client machine does not have a
1465*7f2fe78bSCy Schubertkeytab.  The default value is false.
1466*7f2fe78bSCy Schubert
1467*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{client\_aware\_channel\_bindings}}] \leavevmode
1468*7f2fe78bSCy Schubert\sphinxAtStartPar
1469*7f2fe78bSCy SchubertIf this flag is true, then all application protocol authentication
1470*7f2fe78bSCy Schubertrequests will be flagged to indicate that the application supports
1471*7f2fe78bSCy Schubertchannel bindings when operating over a secure channel.  The
1472*7f2fe78bSCy Schubertdefault value is false.
1473*7f2fe78bSCy Schubert
1474*7f2fe78bSCy Schubert\end{description}
1475*7f2fe78bSCy Schubert
1476*7f2fe78bSCy Schubert
1477*7f2fe78bSCy Schubert\paragraph{{[}realms{]}}
1478*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:realms}}\label{\detokenize{admin/conf_files/krb5_conf:id2}}
1479*7f2fe78bSCy Schubert\sphinxAtStartPar
1480*7f2fe78bSCy SchubertEach tag in the {[}realms{]} section of the file is the name of a Kerberos
1481*7f2fe78bSCy Schubertrealm.  The value of the tag is a subsection with relations that
1482*7f2fe78bSCy Schubertdefine the properties of that particular realm.  For each realm, the
1483*7f2fe78bSCy Schubertfollowing tags may be specified in the realm’s subsection:
1484*7f2fe78bSCy Schubert\begin{description}
1485*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{admin\_server}}] \leavevmode
1486*7f2fe78bSCy Schubert\sphinxAtStartPar
1487*7f2fe78bSCy SchubertIdentifies the host where the administration server is running.
1488*7f2fe78bSCy SchubertTypically, this is the primary Kerberos server.  This tag must be
1489*7f2fe78bSCy Schubertgiven a value in order to communicate with the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}}
1490*7f2fe78bSCy Schubertserver for the realm.
1491*7f2fe78bSCy Schubert
1492*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{auth\_to\_local}}] \leavevmode
1493*7f2fe78bSCy Schubert\sphinxAtStartPar
1494*7f2fe78bSCy SchubertThis tag allows you to set a general rule for mapping principal
1495*7f2fe78bSCy Schubertnames to local user names.  It will be used if there is not an
1496*7f2fe78bSCy Schubertexplicit mapping for the principal name that is being
1497*7f2fe78bSCy Schuberttranslated. The possible values are:
1498*7f2fe78bSCy Schubert\begin{description}
1499*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{RULE:}\sphinxstyleemphasis{exp}}] \leavevmode
1500*7f2fe78bSCy Schubert\sphinxAtStartPar
1501*7f2fe78bSCy SchubertThe local name will be formulated from \sphinxstyleemphasis{exp}.
1502*7f2fe78bSCy Schubert
1503*7f2fe78bSCy Schubert\sphinxAtStartPar
1504*7f2fe78bSCy SchubertThe format for \sphinxstyleemphasis{exp} is \sphinxstylestrong{{[}}\sphinxstyleemphasis{n}\sphinxstylestrong{:}\sphinxstyleemphasis{string}\sphinxstylestrong{{]}(}\sphinxstyleemphasis{regexp}\sphinxstylestrong{)s/}\sphinxstyleemphasis{pattern}\sphinxstylestrong{/}\sphinxstyleemphasis{replacement}\sphinxstylestrong{/g}.
1505*7f2fe78bSCy SchubertThe integer \sphinxstyleemphasis{n} indicates how many components the target
1506*7f2fe78bSCy Schubertprincipal should have.  If this matches, then a string will be
1507*7f2fe78bSCy Schubertformed from \sphinxstyleemphasis{string}, substituting the realm of the principal
1508*7f2fe78bSCy Schubertfor \sphinxcode{\sphinxupquote{\$0}} and the \sphinxstyleemphasis{n}’th component of the principal for
1509*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{\$n}} (e.g., if the principal was \sphinxcode{\sphinxupquote{johndoe/admin}} then
1510*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{{[}2:\$2\$1foo{]}}} would result in the string
1511*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{adminjohndoefoo}}).  If this string matches \sphinxstyleemphasis{regexp}, then
1512*7f2fe78bSCy Schubertthe \sphinxcode{\sphinxupquote{s//{[}g{]}}} substitution command will be run over the
1513*7f2fe78bSCy Schubertstring.  The optional \sphinxstylestrong{g} will cause the substitution to be
1514*7f2fe78bSCy Schubertglobal over the \sphinxstyleemphasis{string}, instead of replacing only the first
1515*7f2fe78bSCy Schubertmatch in the \sphinxstyleemphasis{string}.
1516*7f2fe78bSCy Schubert
1517*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{DEFAULT}}] \leavevmode
1518*7f2fe78bSCy Schubert\sphinxAtStartPar
1519*7f2fe78bSCy SchubertThe principal name will be used as the local user name.  If
1520*7f2fe78bSCy Schubertthe principal has more than one component or is not in the
1521*7f2fe78bSCy Schubertdefault realm, this rule is not applicable and the conversion
1522*7f2fe78bSCy Schubertwill fail.
1523*7f2fe78bSCy Schubert
1524*7f2fe78bSCy Schubert\end{description}
1525*7f2fe78bSCy Schubert
1526*7f2fe78bSCy Schubert\sphinxAtStartPar
1527*7f2fe78bSCy SchubertFor example:
1528*7f2fe78bSCy Schubert
1529*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
1530*7f2fe78bSCy Schubert[realms]
1531*7f2fe78bSCy Schubert    ATHENA.MIT.EDU = \PYGZob{}
1532*7f2fe78bSCy Schubert        auth\PYGZus{}to\PYGZus{}local = RULE:[2:\PYGZdl{}1](johndoe)s/\PYGZca{}.*\PYGZdl{}/guest/
1533*7f2fe78bSCy Schubert        auth\PYGZus{}to\PYGZus{}local = RULE:[2:\PYGZdl{}1;\PYGZdl{}2](\PYGZca{}.*;admin\PYGZdl{})s/;admin\PYGZdl{}//
1534*7f2fe78bSCy Schubert        auth\PYGZus{}to\PYGZus{}local = RULE:[2:\PYGZdl{}2](\PYGZca{}.*;root)s/\PYGZca{}.*\PYGZdl{}/root/
1535*7f2fe78bSCy Schubert        auth\PYGZus{}to\PYGZus{}local = DEFAULT
1536*7f2fe78bSCy Schubert    \PYGZcb{}
1537*7f2fe78bSCy Schubert\end{sphinxVerbatim}
1538*7f2fe78bSCy Schubert
1539*7f2fe78bSCy Schubert\sphinxAtStartPar
1540*7f2fe78bSCy Schubertwould result in any principal without \sphinxcode{\sphinxupquote{root}} or \sphinxcode{\sphinxupquote{admin}} as the
1541*7f2fe78bSCy Schubertsecond component to be translated with the default rule.  A
1542*7f2fe78bSCy Schubertprincipal with a second component of \sphinxcode{\sphinxupquote{admin}} will become its
1543*7f2fe78bSCy Schubertfirst component.  \sphinxcode{\sphinxupquote{root}} will be used as the local name for any
1544*7f2fe78bSCy Schubertprincipal with a second component of \sphinxcode{\sphinxupquote{root}}.  The exception to
1545*7f2fe78bSCy Schubertthese two rules are any principals \sphinxcode{\sphinxupquote{johndoe/*}}, which will
1546*7f2fe78bSCy Schubertalways get the local name \sphinxcode{\sphinxupquote{guest}}.
1547*7f2fe78bSCy Schubert
1548*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{auth\_to\_local\_names}}] \leavevmode
1549*7f2fe78bSCy Schubert\sphinxAtStartPar
1550*7f2fe78bSCy SchubertThis subsection allows you to set explicit mappings from principal
1551*7f2fe78bSCy Schubertnames to local user names.  The tag is the mapping name, and the
1552*7f2fe78bSCy Schubertvalue is the corresponding local user name.
1553*7f2fe78bSCy Schubert
1554*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_domain}}] \leavevmode
1555*7f2fe78bSCy Schubert\sphinxAtStartPar
1556*7f2fe78bSCy SchubertThis tag specifies the domain used to expand hostnames when
1557*7f2fe78bSCy Schuberttranslating Kerberos 4 service principals to Kerberos 5 principals
1558*7f2fe78bSCy Schubert(for example, when converting \sphinxcode{\sphinxupquote{rcmd.hostname}} to
1559*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{host/hostname.domain}}).
1560*7f2fe78bSCy Schubert
1561*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{disable\_encrypted\_timestamp}}] \leavevmode
1562*7f2fe78bSCy Schubert\sphinxAtStartPar
1563*7f2fe78bSCy SchubertIf this flag is true, the client will not perform encrypted
1564*7f2fe78bSCy Schuberttimestamp preauthentication if requested by the KDC.  Setting this
1565*7f2fe78bSCy Schubertflag can help to prevent dictionary attacks by active attackers,
1566*7f2fe78bSCy Schubertif the realm’s KDCs support SPAKE preauthentication or if initial
1567*7f2fe78bSCy Schubertauthentication always uses another mechanism or always uses FAST.
1568*7f2fe78bSCy SchubertThis flag persists across client referrals during initial
1569*7f2fe78bSCy Schubertauthentication.  This flag does not prevent the KDC from offering
1570*7f2fe78bSCy Schubertencrypted timestamp.  New in release 1.17.
1571*7f2fe78bSCy Schubert
1572*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{http\_anchors}}] \leavevmode
1573*7f2fe78bSCy Schubert\sphinxAtStartPar
1574*7f2fe78bSCy SchubertWhen KDCs and kpasswd servers are accessed through HTTPS proxies, this tag
1575*7f2fe78bSCy Schubertcan be used to specify the location of the CA certificate which should be
1576*7f2fe78bSCy Schuberttrusted to issue the certificate for a proxy server.  If left unspecified,
1577*7f2fe78bSCy Schubertthe system\sphinxhyphen{}wide default set of CA certificates is used.
1578*7f2fe78bSCy Schubert
1579*7f2fe78bSCy Schubert\sphinxAtStartPar
1580*7f2fe78bSCy SchubertThe syntax for values is similar to that of values for the
1581*7f2fe78bSCy Schubert\sphinxstylestrong{pkinit\_anchors} tag:
1582*7f2fe78bSCy Schubert
1583*7f2fe78bSCy Schubert\sphinxAtStartPar
1584*7f2fe78bSCy Schubert\sphinxstylestrong{FILE:} \sphinxstyleemphasis{filename}
1585*7f2fe78bSCy Schubert
1586*7f2fe78bSCy Schubert\sphinxAtStartPar
1587*7f2fe78bSCy Schubert\sphinxstyleemphasis{filename} is assumed to be the name of an OpenSSL\sphinxhyphen{}style ca\sphinxhyphen{}bundle file.
1588*7f2fe78bSCy Schubert
1589*7f2fe78bSCy Schubert\sphinxAtStartPar
1590*7f2fe78bSCy Schubert\sphinxstylestrong{DIR:} \sphinxstyleemphasis{dirname}
1591*7f2fe78bSCy Schubert
1592*7f2fe78bSCy Schubert\sphinxAtStartPar
1593*7f2fe78bSCy Schubert\sphinxstyleemphasis{dirname} is assumed to be an directory which contains CA certificates.
1594*7f2fe78bSCy SchubertAll files in the directory will be examined; if they contain certificates
1595*7f2fe78bSCy Schubert(in PEM format), they will be used.
1596*7f2fe78bSCy Schubert
1597*7f2fe78bSCy Schubert\sphinxAtStartPar
1598*7f2fe78bSCy Schubert\sphinxstylestrong{ENV:} \sphinxstyleemphasis{envvar}
1599*7f2fe78bSCy Schubert
1600*7f2fe78bSCy Schubert\sphinxAtStartPar
1601*7f2fe78bSCy Schubert\sphinxstyleemphasis{envvar} specifies the name of an environment variable which has been set
1602*7f2fe78bSCy Schubertto a value conforming to one of the previous values.  For example,
1603*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{ENV:X509\_PROXY\_CA}}, where environment variable \sphinxcode{\sphinxupquote{X509\_PROXY\_CA}} has
1604*7f2fe78bSCy Schubertbeen set to \sphinxcode{\sphinxupquote{FILE:/tmp/my\_proxy.pem}}.
1605*7f2fe78bSCy Schubert
1606*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc}}] \leavevmode
1607*7f2fe78bSCy Schubert\sphinxAtStartPar
1608*7f2fe78bSCy SchubertThe name or address of a host running a KDC for that realm.  An
1609*7f2fe78bSCy Schubertoptional port number, separated from the hostname by a colon, may
1610*7f2fe78bSCy Schubertbe included.  If the name or address contains colons (for example,
1611*7f2fe78bSCy Schubertif it is an IPv6 address), enclose it in square brackets to
1612*7f2fe78bSCy Schubertdistinguish the colon from a port separator.  For your computer to
1613*7f2fe78bSCy Schubertbe able to communicate with the KDC for each realm, this tag must
1614*7f2fe78bSCy Schubertbe given a value in each realm subsection in the configuration
1615*7f2fe78bSCy Schubertfile, or there must be DNS SRV records specifying the KDCs.
1616*7f2fe78bSCy Schubert
1617*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kpasswd\_server}}] \leavevmode
1618*7f2fe78bSCy Schubert\sphinxAtStartPar
1619*7f2fe78bSCy SchubertPoints to the server where all the password changes are performed.
1620*7f2fe78bSCy SchubertIf there is no such entry, DNS will be queried (unless forbidden
1621*7f2fe78bSCy Schubertby \sphinxstylestrong{dns\_lookup\_kdc}).  Finally, port 464 on the \sphinxstylestrong{admin\_server}
1622*7f2fe78bSCy Schuberthost will be tried.
1623*7f2fe78bSCy Schubert
1624*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{master\_kdc}}] \leavevmode
1625*7f2fe78bSCy Schubert\sphinxAtStartPar
1626*7f2fe78bSCy SchubertThe name for \sphinxstylestrong{primary\_kdc} prior to release 1.19.  Its value is
1627*7f2fe78bSCy Schubertused as a fallback if \sphinxstylestrong{primary\_kdc} is not specified.
1628*7f2fe78bSCy Schubert
1629*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{primary\_kdc}}] \leavevmode
1630*7f2fe78bSCy Schubert\sphinxAtStartPar
1631*7f2fe78bSCy SchubertIdentifies the primary KDC(s).  Currently, this tag is used in only
1632*7f2fe78bSCy Schubertone case: If an attempt to get credentials fails because of an
1633*7f2fe78bSCy Schubertinvalid password, the client software will attempt to contact the
1634*7f2fe78bSCy Schubertprimary KDC, in case the user’s password has just been changed, and
1635*7f2fe78bSCy Schubertthe updated database has not been propagated to the replica
1636*7f2fe78bSCy Schubertservers yet.  New in release 1.19.
1637*7f2fe78bSCy Schubert
1638*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{v4\_instance\_convert}}] \leavevmode
1639*7f2fe78bSCy Schubert\sphinxAtStartPar
1640*7f2fe78bSCy SchubertThis subsection allows the administrator to configure exceptions
1641*7f2fe78bSCy Schubertto the \sphinxstylestrong{default\_domain} mapping rule.  It contains V4 instances
1642*7f2fe78bSCy Schubert(the tag name) which should be translated to some specific
1643*7f2fe78bSCy Schuberthostname (the tag value) as the second component in a Kerberos V5
1644*7f2fe78bSCy Schubertprincipal name.
1645*7f2fe78bSCy Schubert
1646*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{v4\_realm}}] \leavevmode
1647*7f2fe78bSCy Schubert\sphinxAtStartPar
1648*7f2fe78bSCy SchubertThis relation is used by the krb524 library routines when
1649*7f2fe78bSCy Schubertconverting a V5 principal name to a V4 principal name.  It is used
1650*7f2fe78bSCy Schubertwhen the V4 realm name and the V5 realm name are not the same, but
1651*7f2fe78bSCy Schubertstill share the same principal names and passwords. The tag value
1652*7f2fe78bSCy Schubertis the Kerberos V4 realm name.
1653*7f2fe78bSCy Schubert
1654*7f2fe78bSCy Schubert\end{description}
1655*7f2fe78bSCy Schubert
1656*7f2fe78bSCy Schubert
1657*7f2fe78bSCy Schubert\paragraph{{[}domain\_realm{]}}
1658*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:domain-realm}}\label{\detokenize{admin/conf_files/krb5_conf:id3}}
1659*7f2fe78bSCy Schubert\sphinxAtStartPar
1660*7f2fe78bSCy SchubertThe {[}domain\_realm{]} section provides a translation from hostnames to
1661*7f2fe78bSCy SchubertKerberos realms.  Each tag is a domain name, providing the mapping for
1662*7f2fe78bSCy Schubertthat domain and all subdomains.  If the tag begins with a period
1663*7f2fe78bSCy Schubert(\sphinxcode{\sphinxupquote{.}}) then it applies only to subdomains.  The Kerberos realm may be
1664*7f2fe78bSCy Schubertidentified either in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{realms}}} section or using DNS SRV records.
1665*7f2fe78bSCy SchubertTag names should be in lower case.  For example:
1666*7f2fe78bSCy Schubert
1667*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
1668*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{domain\PYGZus{}realm}\PYG{p}{]}
1669*7f2fe78bSCy Schubert    \PYG{n}{crash}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{o}{=} \PYG{n}{TEST}\PYG{o}{.}\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
1670*7f2fe78bSCy Schubert    \PYG{o}{.}\PYG{n}{dev}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{o}{=} \PYG{n}{TEST}\PYG{o}{.}\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
1671*7f2fe78bSCy Schubert    \PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{o}{=} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
1672*7f2fe78bSCy Schubert\end{sphinxVerbatim}
1673*7f2fe78bSCy Schubert
1674*7f2fe78bSCy Schubert\sphinxAtStartPar
1675*7f2fe78bSCy Schubertmaps the host with the name \sphinxcode{\sphinxupquote{crash.mit.edu}} into the
1676*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{TEST.ATHENA.MIT.EDU}} realm.  The second entry maps all hosts under the
1677*7f2fe78bSCy Schubertdomain \sphinxcode{\sphinxupquote{dev.mit.edu}} into the \sphinxcode{\sphinxupquote{TEST.ATHENA.MIT.EDU}} realm, but not
1678*7f2fe78bSCy Schubertthe host with the name \sphinxcode{\sphinxupquote{dev.mit.edu}}.  That host is matched
1679*7f2fe78bSCy Schubertby the third entry, which maps the host \sphinxcode{\sphinxupquote{mit.edu}} and all hosts
1680*7f2fe78bSCy Schubertunder the domain \sphinxcode{\sphinxupquote{mit.edu}} that do not match a preceding rule
1681*7f2fe78bSCy Schubertinto the realm \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}}.
1682*7f2fe78bSCy Schubert
1683*7f2fe78bSCy Schubert\sphinxAtStartPar
1684*7f2fe78bSCy SchubertIf no translation entry applies to a hostname used for a service
1685*7f2fe78bSCy Schubertprincipal for a service ticket request, the library will try to get a
1686*7f2fe78bSCy Schubertreferral to the appropriate realm from the client realm’s KDC.  If
1687*7f2fe78bSCy Schubertthat does not succeed, the host’s realm is considered to be the
1688*7f2fe78bSCy Schuberthostname’s domain portion converted to uppercase, unless the
1689*7f2fe78bSCy Schubert\sphinxstylestrong{realm\_try\_domains} setting in {[}libdefaults{]} causes a different
1690*7f2fe78bSCy Schubertparent domain to be used.
1691*7f2fe78bSCy Schubert
1692*7f2fe78bSCy Schubert
1693*7f2fe78bSCy Schubert\paragraph{{[}capaths{]}}
1694*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:capaths}}\label{\detokenize{admin/conf_files/krb5_conf:id4}}
1695*7f2fe78bSCy Schubert\sphinxAtStartPar
1696*7f2fe78bSCy SchubertIn order to perform direct (non\sphinxhyphen{}hierarchical) cross\sphinxhyphen{}realm
1697*7f2fe78bSCy Schubertauthentication, configuration is needed to determine the
1698*7f2fe78bSCy Schubertauthentication paths between realms.
1699*7f2fe78bSCy Schubert
1700*7f2fe78bSCy Schubert\sphinxAtStartPar
1701*7f2fe78bSCy SchubertA client will use this section to find the authentication path between
1702*7f2fe78bSCy Schubertits realm and the realm of the server.  The server will use this
1703*7f2fe78bSCy Schubertsection to verify the authentication path used by the client, by
1704*7f2fe78bSCy Schubertchecking the transited field of the received ticket.
1705*7f2fe78bSCy Schubert
1706*7f2fe78bSCy Schubert\sphinxAtStartPar
1707*7f2fe78bSCy SchubertThere is a tag for each participating client realm, and each tag has
1708*7f2fe78bSCy Schubertsubtags for each of the server realms.  The value of the subtags is an
1709*7f2fe78bSCy Schubertintermediate realm which may participate in the cross\sphinxhyphen{}realm
1710*7f2fe78bSCy Schubertauthentication.  The subtags may be repeated if there is more then one
1711*7f2fe78bSCy Schubertintermediate realm.  A value of “.” means that the two realms share
1712*7f2fe78bSCy Schubertkeys directly, and no intermediate realms should be allowed to
1713*7f2fe78bSCy Schubertparticipate.
1714*7f2fe78bSCy Schubert
1715*7f2fe78bSCy Schubert\sphinxAtStartPar
1716*7f2fe78bSCy SchubertOnly those entries which will be needed on the client or the server
1717*7f2fe78bSCy Schubertneed to be present.  A client needs a tag for its local realm with
1718*7f2fe78bSCy Schubertsubtags for all the realms of servers it will need to authenticate to.
1719*7f2fe78bSCy SchubertA server needs a tag for each realm of the clients it will serve, with
1720*7f2fe78bSCy Schuberta subtag of the server realm.
1721*7f2fe78bSCy Schubert
1722*7f2fe78bSCy Schubert\sphinxAtStartPar
1723*7f2fe78bSCy SchubertFor example, \sphinxcode{\sphinxupquote{ANL.GOV}}, \sphinxcode{\sphinxupquote{PNL.GOV}}, and \sphinxcode{\sphinxupquote{NERSC.GOV}} all wish to
1724*7f2fe78bSCy Schubertuse the \sphinxcode{\sphinxupquote{ES.NET}} realm as an intermediate realm.  ANL has a sub
1725*7f2fe78bSCy Schubertrealm of \sphinxcode{\sphinxupquote{TEST.ANL.GOV}} which will authenticate with \sphinxcode{\sphinxupquote{NERSC.GOV}}
1726*7f2fe78bSCy Schubertbut not \sphinxcode{\sphinxupquote{PNL.GOV}}.  The {[}capaths{]} section for \sphinxcode{\sphinxupquote{ANL.GOV}} systems
1727*7f2fe78bSCy Schubertwould look like this:
1728*7f2fe78bSCy Schubert
1729*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
1730*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{capaths}\PYG{p}{]}
1731*7f2fe78bSCy Schubert    \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1732*7f2fe78bSCy Schubert        \PYG{n}{TEST}\PYG{o}{.}\PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{o}{.}
1733*7f2fe78bSCy Schubert        \PYG{n}{PNL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1734*7f2fe78bSCy Schubert        \PYG{n}{NERSC}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1735*7f2fe78bSCy Schubert        \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET} \PYG{o}{=} \PYG{o}{.}
1736*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1737*7f2fe78bSCy Schubert    \PYG{n}{TEST}\PYG{o}{.}\PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1738*7f2fe78bSCy Schubert        \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{o}{.}
1739*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1740*7f2fe78bSCy Schubert    \PYG{n}{PNL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1741*7f2fe78bSCy Schubert        \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1742*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1743*7f2fe78bSCy Schubert    \PYG{n}{NERSC}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1744*7f2fe78bSCy Schubert        \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1745*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1746*7f2fe78bSCy Schubert    \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1747*7f2fe78bSCy Schubert        \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{o}{.}
1748*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1749*7f2fe78bSCy Schubert\end{sphinxVerbatim}
1750*7f2fe78bSCy Schubert
1751*7f2fe78bSCy Schubert\sphinxAtStartPar
1752*7f2fe78bSCy SchubertThe {[}capaths{]} section of the configuration file used on \sphinxcode{\sphinxupquote{NERSC.GOV}}
1753*7f2fe78bSCy Schubertsystems would look like this:
1754*7f2fe78bSCy Schubert
1755*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
1756*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{capaths}\PYG{p}{]}
1757*7f2fe78bSCy Schubert    \PYG{n}{NERSC}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1758*7f2fe78bSCy Schubert        \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1759*7f2fe78bSCy Schubert        \PYG{n}{TEST}\PYG{o}{.}\PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1760*7f2fe78bSCy Schubert        \PYG{n}{TEST}\PYG{o}{.}\PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV}
1761*7f2fe78bSCy Schubert        \PYG{n}{PNL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1762*7f2fe78bSCy Schubert        \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET} \PYG{o}{=} \PYG{o}{.}
1763*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1764*7f2fe78bSCy Schubert    \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1765*7f2fe78bSCy Schubert        \PYG{n}{NERSC}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1766*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1767*7f2fe78bSCy Schubert    \PYG{n}{PNL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1768*7f2fe78bSCy Schubert        \PYG{n}{NERSC}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1769*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1770*7f2fe78bSCy Schubert    \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1771*7f2fe78bSCy Schubert        \PYG{n}{NERSC}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{o}{.}
1772*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1773*7f2fe78bSCy Schubert    \PYG{n}{TEST}\PYG{o}{.}\PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1774*7f2fe78bSCy Schubert        \PYG{n}{NERSC}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ANL}\PYG{o}{.}\PYG{n}{GOV}
1775*7f2fe78bSCy Schubert        \PYG{n}{NERSC}\PYG{o}{.}\PYG{n}{GOV} \PYG{o}{=} \PYG{n}{ES}\PYG{o}{.}\PYG{n}{NET}
1776*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1777*7f2fe78bSCy Schubert\end{sphinxVerbatim}
1778*7f2fe78bSCy Schubert
1779*7f2fe78bSCy Schubert\sphinxAtStartPar
1780*7f2fe78bSCy SchubertWhen a subtag is used more than once within a tag, clients will use
1781*7f2fe78bSCy Schubertthe order of values to determine the path.  The order of values is not
1782*7f2fe78bSCy Schubertimportant to servers.
1783*7f2fe78bSCy Schubert
1784*7f2fe78bSCy Schubert
1785*7f2fe78bSCy Schubert\paragraph{{[}appdefaults{]}}
1786*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:appdefaults}}\label{\detokenize{admin/conf_files/krb5_conf:id5}}
1787*7f2fe78bSCy Schubert\sphinxAtStartPar
1788*7f2fe78bSCy SchubertEach tag in the {[}appdefaults{]} section names a Kerberos V5 application
1789*7f2fe78bSCy Schubertor an option that is used by some Kerberos V5 application{[}s{]}.  The
1790*7f2fe78bSCy Schubertvalue of the tag defines the default behaviors for that application.
1791*7f2fe78bSCy Schubert
1792*7f2fe78bSCy Schubert\sphinxAtStartPar
1793*7f2fe78bSCy SchubertFor example:
1794*7f2fe78bSCy Schubert
1795*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
1796*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{appdefaults}\PYG{p}{]}
1797*7f2fe78bSCy Schubert    \PYG{n}{telnet} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1798*7f2fe78bSCy Schubert        \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1799*7f2fe78bSCy Schubert            \PYG{n}{option1} \PYG{o}{=} \PYG{n}{false}
1800*7f2fe78bSCy Schubert        \PYG{p}{\PYGZcb{}}
1801*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1802*7f2fe78bSCy Schubert    \PYG{n}{telnet} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1803*7f2fe78bSCy Schubert        \PYG{n}{option1} \PYG{o}{=} \PYG{n}{true}
1804*7f2fe78bSCy Schubert        \PYG{n}{option2} \PYG{o}{=} \PYG{n}{true}
1805*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1806*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
1807*7f2fe78bSCy Schubert        \PYG{n}{option2} \PYG{o}{=} \PYG{n}{false}
1808*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
1809*7f2fe78bSCy Schubert    \PYG{n}{option2} \PYG{o}{=} \PYG{n}{true}
1810*7f2fe78bSCy Schubert\end{sphinxVerbatim}
1811*7f2fe78bSCy Schubert
1812*7f2fe78bSCy Schubert\sphinxAtStartPar
1813*7f2fe78bSCy SchubertThe above four ways of specifying the value of an option are shown in
1814*7f2fe78bSCy Schubertorder of decreasing precedence. In this example, if telnet is running
1815*7f2fe78bSCy Schubertin the realm EXAMPLE.COM, it should, by default, have option1 and
1816*7f2fe78bSCy Schubertoption2 set to true.  However, a telnet program in the realm
1817*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} should have \sphinxcode{\sphinxupquote{option1}} set to false and
1818*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{option2}} set to true.  Any other programs in ATHENA.MIT.EDU should
1819*7f2fe78bSCy Schuberthave \sphinxcode{\sphinxupquote{option2}} set to false by default.  Any programs running in
1820*7f2fe78bSCy Schubertother realms should have \sphinxcode{\sphinxupquote{option2}} set to true.
1821*7f2fe78bSCy Schubert
1822*7f2fe78bSCy Schubert\sphinxAtStartPar
1823*7f2fe78bSCy SchubertThe list of specifiable options for each application may be found in
1824*7f2fe78bSCy Schubertthat application’s man pages.  The application defaults specified here
1825*7f2fe78bSCy Schubertare overridden by those specified in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{realms}}} section.
1826*7f2fe78bSCy Schubert
1827*7f2fe78bSCy Schubert
1828*7f2fe78bSCy Schubert\paragraph{{[}plugins{]}}
1829*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:plugins}}\label{\detokenize{admin/conf_files/krb5_conf:id6}}\begin{itemize}
1830*7f2fe78bSCy Schubert\item {}
1831*7f2fe78bSCy Schubert\sphinxAtStartPar
1832*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:pwqual}]{\sphinxcrossref{pwqual}}} interface
1833*7f2fe78bSCy Schubert
1834*7f2fe78bSCy Schubert\item {}
1835*7f2fe78bSCy Schubert\sphinxAtStartPar
1836*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:kadm5-hook}]{\sphinxcrossref{kadm5\_hook}}} interface
1837*7f2fe78bSCy Schubert
1838*7f2fe78bSCy Schubert\item {}
1839*7f2fe78bSCy Schubert\sphinxAtStartPar
1840*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:clpreauth}]{\sphinxcrossref{clpreauth}}} and {\hyperref[\detokenize{admin/conf_files/krb5_conf:kdcpreauth}]{\sphinxcrossref{kdcpreauth}}} interfaces
1841*7f2fe78bSCy Schubert
1842*7f2fe78bSCy Schubert\end{itemize}
1843*7f2fe78bSCy Schubert
1844*7f2fe78bSCy Schubert\sphinxAtStartPar
1845*7f2fe78bSCy SchubertTags in the {[}plugins{]} section can be used to register dynamic plugin
1846*7f2fe78bSCy Schubertmodules and to turn modules on and off.  Not every krb5 pluggable
1847*7f2fe78bSCy Schubertinterface uses the {[}plugins{]} section; the ones that do are documented
1848*7f2fe78bSCy Schuberthere.
1849*7f2fe78bSCy Schubert
1850*7f2fe78bSCy Schubert\sphinxAtStartPar
1851*7f2fe78bSCy SchubertNew in release 1.9.
1852*7f2fe78bSCy Schubert
1853*7f2fe78bSCy Schubert\sphinxAtStartPar
1854*7f2fe78bSCy SchubertEach pluggable interface corresponds to a subsection of {[}plugins{]}.
1855*7f2fe78bSCy SchubertAll subsections support the same tags:
1856*7f2fe78bSCy Schubert\begin{description}
1857*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{disable}}] \leavevmode
1858*7f2fe78bSCy Schubert\sphinxAtStartPar
1859*7f2fe78bSCy SchubertThis tag may have multiple values. If there are values for this
1860*7f2fe78bSCy Schuberttag, then the named modules will be disabled for the pluggable
1861*7f2fe78bSCy Schubertinterface.
1862*7f2fe78bSCy Schubert
1863*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{enable\_only}}] \leavevmode
1864*7f2fe78bSCy Schubert\sphinxAtStartPar
1865*7f2fe78bSCy SchubertThis tag may have multiple values. If there are values for this
1866*7f2fe78bSCy Schuberttag, then only the named modules will be enabled for the pluggable
1867*7f2fe78bSCy Schubertinterface.
1868*7f2fe78bSCy Schubert
1869*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{module}}] \leavevmode
1870*7f2fe78bSCy Schubert\sphinxAtStartPar
1871*7f2fe78bSCy SchubertThis tag may have multiple values.  Each value is a string of the
1872*7f2fe78bSCy Schubertform \sphinxcode{\sphinxupquote{modulename:pathname}}, which causes the shared object
1873*7f2fe78bSCy Schubertlocated at \sphinxstyleemphasis{pathname} to be registered as a dynamic module named
1874*7f2fe78bSCy Schubert\sphinxstyleemphasis{modulename} for the pluggable interface.  If \sphinxstyleemphasis{pathname} is not an
1875*7f2fe78bSCy Schubertabsolute path, it will be treated as relative to the
1876*7f2fe78bSCy Schubert\sphinxstylestrong{plugin\_base\_dir} value from {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}.
1877*7f2fe78bSCy Schubert
1878*7f2fe78bSCy Schubert\end{description}
1879*7f2fe78bSCy Schubert
1880*7f2fe78bSCy Schubert\sphinxAtStartPar
1881*7f2fe78bSCy SchubertFor pluggable interfaces where module order matters, modules
1882*7f2fe78bSCy Schubertregistered with a \sphinxstylestrong{module} tag normally come first, in the order
1883*7f2fe78bSCy Schubertthey are registered, followed by built\sphinxhyphen{}in modules in the order they
1884*7f2fe78bSCy Schubertare documented below.  If \sphinxstylestrong{enable\_only} tags are used, then the
1885*7f2fe78bSCy Schubertorder of those tags overrides the normal module order.
1886*7f2fe78bSCy Schubert
1887*7f2fe78bSCy Schubert\sphinxAtStartPar
1888*7f2fe78bSCy SchubertThe following subsections are currently supported within the {[}plugins{]}
1889*7f2fe78bSCy Schubertsection:
1890*7f2fe78bSCy Schubert
1891*7f2fe78bSCy Schubert
1892*7f2fe78bSCy Schubert\subparagraph{ccselect interface}
1893*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:ccselect-interface}}\label{\detokenize{admin/conf_files/krb5_conf:ccselect}}
1894*7f2fe78bSCy Schubert\sphinxAtStartPar
1895*7f2fe78bSCy SchubertThe ccselect subsection controls modules for credential cache
1896*7f2fe78bSCy Schubertselection within a cache collection.  In addition to any registered
1897*7f2fe78bSCy Schubertdynamic modules, the following built\sphinxhyphen{}in modules exist (and may be
1898*7f2fe78bSCy Schubertdisabled with the disable tag):
1899*7f2fe78bSCy Schubert\begin{description}
1900*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{k5identity}}] \leavevmode
1901*7f2fe78bSCy Schubert\sphinxAtStartPar
1902*7f2fe78bSCy SchubertUses a .k5identity file in the user’s home directory to select a
1903*7f2fe78bSCy Schubertclient principal
1904*7f2fe78bSCy Schubert
1905*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{realm}}] \leavevmode
1906*7f2fe78bSCy Schubert\sphinxAtStartPar
1907*7f2fe78bSCy SchubertUses the service realm to guess an appropriate cache from the
1908*7f2fe78bSCy Schubertcollection
1909*7f2fe78bSCy Schubert
1910*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{hostname}}] \leavevmode
1911*7f2fe78bSCy Schubert\sphinxAtStartPar
1912*7f2fe78bSCy SchubertIf the service principal is host\sphinxhyphen{}based, uses the service hostname
1913*7f2fe78bSCy Schubertto guess an appropriate cache from the collection
1914*7f2fe78bSCy Schubert
1915*7f2fe78bSCy Schubert\end{description}
1916*7f2fe78bSCy Schubert
1917*7f2fe78bSCy Schubert
1918*7f2fe78bSCy Schubert\subparagraph{pwqual interface}
1919*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:pwqual-interface}}\label{\detokenize{admin/conf_files/krb5_conf:pwqual}}
1920*7f2fe78bSCy Schubert\sphinxAtStartPar
1921*7f2fe78bSCy SchubertThe pwqual subsection controls modules for the password quality
1922*7f2fe78bSCy Schubertinterface, which is used to reject weak passwords when passwords are
1923*7f2fe78bSCy Schubertchanged.  The following built\sphinxhyphen{}in modules exist for this interface:
1924*7f2fe78bSCy Schubert\begin{description}
1925*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{dict}}] \leavevmode
1926*7f2fe78bSCy Schubert\sphinxAtStartPar
1927*7f2fe78bSCy SchubertChecks against the realm dictionary file
1928*7f2fe78bSCy Schubert
1929*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{empty}}] \leavevmode
1930*7f2fe78bSCy Schubert\sphinxAtStartPar
1931*7f2fe78bSCy SchubertRejects empty passwords
1932*7f2fe78bSCy Schubert
1933*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{hesiod}}] \leavevmode
1934*7f2fe78bSCy Schubert\sphinxAtStartPar
1935*7f2fe78bSCy SchubertChecks against user information stored in Hesiod (only if Kerberos
1936*7f2fe78bSCy Schubertwas built with Hesiod support)
1937*7f2fe78bSCy Schubert
1938*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{princ}}] \leavevmode
1939*7f2fe78bSCy Schubert\sphinxAtStartPar
1940*7f2fe78bSCy SchubertChecks against components of the principal name
1941*7f2fe78bSCy Schubert
1942*7f2fe78bSCy Schubert\end{description}
1943*7f2fe78bSCy Schubert
1944*7f2fe78bSCy Schubert
1945*7f2fe78bSCy Schubert\subparagraph{kadm5\_hook interface}
1946*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:kadm5-hook-interface}}\label{\detokenize{admin/conf_files/krb5_conf:kadm5-hook}}
1947*7f2fe78bSCy Schubert\sphinxAtStartPar
1948*7f2fe78bSCy SchubertThe kadm5\_hook interface provides plugins with information on
1949*7f2fe78bSCy Schubertprincipal creation, modification, password changes and deletion.  This
1950*7f2fe78bSCy Schubertinterface can be used to write a plugin to synchronize MIT Kerberos
1951*7f2fe78bSCy Schubertwith another database such as Active Directory.  No plugins are built
1952*7f2fe78bSCy Schubertin for this interface.
1953*7f2fe78bSCy Schubert
1954*7f2fe78bSCy Schubert
1955*7f2fe78bSCy Schubert\subparagraph{kadm5\_auth interface}
1956*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:kadm5-auth-interface}}\label{\detokenize{admin/conf_files/krb5_conf:kadm5-auth}}
1957*7f2fe78bSCy Schubert\sphinxAtStartPar
1958*7f2fe78bSCy SchubertThe kadm5\_auth section (introduced in release 1.16) controls modules
1959*7f2fe78bSCy Schubertfor the kadmin authorization interface, which determines whether a
1960*7f2fe78bSCy Schubertclient principal is allowed to perform a kadmin operation.  The
1961*7f2fe78bSCy Schubertfollowing built\sphinxhyphen{}in modules exist for this interface:
1962*7f2fe78bSCy Schubert\begin{description}
1963*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{acl}}] \leavevmode
1964*7f2fe78bSCy Schubert\sphinxAtStartPar
1965*7f2fe78bSCy SchubertThis module reads the {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}} file, and authorizes
1966*7f2fe78bSCy Schubertoperations which are allowed according to the rules in the file.
1967*7f2fe78bSCy Schubert
1968*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{self}}] \leavevmode
1969*7f2fe78bSCy Schubert\sphinxAtStartPar
1970*7f2fe78bSCy SchubertThis module authorizes self\sphinxhyphen{}service operations including password
1971*7f2fe78bSCy Schubertchanges, creation of new random keys, fetching the client’s
1972*7f2fe78bSCy Schubertprincipal record or string attributes, and fetching the policy
1973*7f2fe78bSCy Schubertrecord associated with the client principal.
1974*7f2fe78bSCy Schubert
1975*7f2fe78bSCy Schubert\end{description}
1976*7f2fe78bSCy Schubert
1977*7f2fe78bSCy Schubert
1978*7f2fe78bSCy Schubert\subparagraph{clpreauth and kdcpreauth interfaces}
1979*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:clpreauth-and-kdcpreauth-interfaces}}\label{\detokenize{admin/conf_files/krb5_conf:kdcpreauth}}\label{\detokenize{admin/conf_files/krb5_conf:clpreauth}}
1980*7f2fe78bSCy Schubert\sphinxAtStartPar
1981*7f2fe78bSCy SchubertThe clpreauth and kdcpreauth interfaces allow plugin modules to
1982*7f2fe78bSCy Schubertprovide client and KDC preauthentication mechanisms.  The following
1983*7f2fe78bSCy Schubertbuilt\sphinxhyphen{}in modules exist for these interfaces:
1984*7f2fe78bSCy Schubert\begin{description}
1985*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit}}] \leavevmode
1986*7f2fe78bSCy Schubert\sphinxAtStartPar
1987*7f2fe78bSCy SchubertThis module implements the PKINIT preauthentication mechanism.
1988*7f2fe78bSCy Schubert
1989*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{encrypted\_challenge}}] \leavevmode
1990*7f2fe78bSCy Schubert\sphinxAtStartPar
1991*7f2fe78bSCy SchubertThis module implements the encrypted challenge FAST factor.
1992*7f2fe78bSCy Schubert
1993*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{encrypted\_timestamp}}] \leavevmode
1994*7f2fe78bSCy Schubert\sphinxAtStartPar
1995*7f2fe78bSCy SchubertThis module implements the encrypted timestamp mechanism.
1996*7f2fe78bSCy Schubert
1997*7f2fe78bSCy Schubert\end{description}
1998*7f2fe78bSCy Schubert
1999*7f2fe78bSCy Schubert
2000*7f2fe78bSCy Schubert\subparagraph{hostrealm interface}
2001*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:hostrealm-interface}}\label{\detokenize{admin/conf_files/krb5_conf:hostrealm}}
2002*7f2fe78bSCy Schubert\sphinxAtStartPar
2003*7f2fe78bSCy SchubertThe hostrealm section (introduced in release 1.12) controls modules
2004*7f2fe78bSCy Schubertfor the host\sphinxhyphen{}to\sphinxhyphen{}realm interface, which affects the local mapping of
2005*7f2fe78bSCy Schuberthostnames to realm names and the choice of default realm.  The following
2006*7f2fe78bSCy Schubertbuilt\sphinxhyphen{}in modules exist for this interface:
2007*7f2fe78bSCy Schubert\begin{description}
2008*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{profile}}] \leavevmode
2009*7f2fe78bSCy Schubert\sphinxAtStartPar
2010*7f2fe78bSCy SchubertThis module consults the {[}domain\_realm{]} section of the profile for
2011*7f2fe78bSCy Schubertauthoritative host\sphinxhyphen{}to\sphinxhyphen{}realm mappings, and the \sphinxstylestrong{default\_realm}
2012*7f2fe78bSCy Schubertvariable for the default realm.
2013*7f2fe78bSCy Schubert
2014*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{dns}}] \leavevmode
2015*7f2fe78bSCy Schubert\sphinxAtStartPar
2016*7f2fe78bSCy SchubertThis module looks for DNS records for fallback host\sphinxhyphen{}to\sphinxhyphen{}realm
2017*7f2fe78bSCy Schubertmappings and the default realm.  It only operates if the
2018*7f2fe78bSCy Schubert\sphinxstylestrong{dns\_lookup\_realm} variable is set to true.
2019*7f2fe78bSCy Schubert
2020*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{domain}}] \leavevmode
2021*7f2fe78bSCy Schubert\sphinxAtStartPar
2022*7f2fe78bSCy SchubertThis module applies heuristics for fallback host\sphinxhyphen{}to\sphinxhyphen{}realm
2023*7f2fe78bSCy Schubertmappings.  It implements the \sphinxstylestrong{realm\_try\_domains} variable, and
2024*7f2fe78bSCy Schubertuses the uppercased parent domain of the hostname if that does not
2025*7f2fe78bSCy Schubertproduce a result.
2026*7f2fe78bSCy Schubert
2027*7f2fe78bSCy Schubert\end{description}
2028*7f2fe78bSCy Schubert
2029*7f2fe78bSCy Schubert
2030*7f2fe78bSCy Schubert\subparagraph{localauth interface}
2031*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:localauth-interface}}\label{\detokenize{admin/conf_files/krb5_conf:localauth}}
2032*7f2fe78bSCy Schubert\sphinxAtStartPar
2033*7f2fe78bSCy SchubertThe localauth section (introduced in release 1.12) controls modules
2034*7f2fe78bSCy Schubertfor the local authorization interface, which affects the relationship
2035*7f2fe78bSCy Schubertbetween Kerberos principals and local system accounts.  The following
2036*7f2fe78bSCy Schubertbuilt\sphinxhyphen{}in modules exist for this interface:
2037*7f2fe78bSCy Schubert\begin{description}
2038*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default}}] \leavevmode
2039*7f2fe78bSCy Schubert\sphinxAtStartPar
2040*7f2fe78bSCy SchubertThis module implements the \sphinxstylestrong{DEFAULT} type for \sphinxstylestrong{auth\_to\_local}
2041*7f2fe78bSCy Schubertvalues.
2042*7f2fe78bSCy Schubert
2043*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{rule}}] \leavevmode
2044*7f2fe78bSCy Schubert\sphinxAtStartPar
2045*7f2fe78bSCy SchubertThis module implements the \sphinxstylestrong{RULE} type for \sphinxstylestrong{auth\_to\_local}
2046*7f2fe78bSCy Schubertvalues.
2047*7f2fe78bSCy Schubert
2048*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{names}}] \leavevmode
2049*7f2fe78bSCy Schubert\sphinxAtStartPar
2050*7f2fe78bSCy SchubertThis module looks for an \sphinxstylestrong{auth\_to\_local\_names} mapping for the
2051*7f2fe78bSCy Schubertprincipal name.
2052*7f2fe78bSCy Schubert
2053*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{auth\_to\_local}}] \leavevmode
2054*7f2fe78bSCy Schubert\sphinxAtStartPar
2055*7f2fe78bSCy SchubertThis module processes \sphinxstylestrong{auth\_to\_local} values in the default
2056*7f2fe78bSCy Schubertrealm’s section, and applies the default method if no
2057*7f2fe78bSCy Schubert\sphinxstylestrong{auth\_to\_local} values exist.
2058*7f2fe78bSCy Schubert
2059*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{k5login}}] \leavevmode
2060*7f2fe78bSCy Schubert\sphinxAtStartPar
2061*7f2fe78bSCy SchubertThis module authorizes a principal to a local account according to
2062*7f2fe78bSCy Schubertthe account’s \DUrole{xref,std,std-ref}{.k5login(5)} file.
2063*7f2fe78bSCy Schubert
2064*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{an2ln}}] \leavevmode
2065*7f2fe78bSCy Schubert\sphinxAtStartPar
2066*7f2fe78bSCy SchubertThis module authorizes a principal to a local account if the
2067*7f2fe78bSCy Schubertprincipal name maps to the local account name.
2068*7f2fe78bSCy Schubert
2069*7f2fe78bSCy Schubert\end{description}
2070*7f2fe78bSCy Schubert
2071*7f2fe78bSCy Schubert
2072*7f2fe78bSCy Schubert\subparagraph{certauth interface}
2073*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:certauth-interface}}\label{\detokenize{admin/conf_files/krb5_conf:certauth}}
2074*7f2fe78bSCy Schubert\sphinxAtStartPar
2075*7f2fe78bSCy SchubertThe certauth section (introduced in release 1.16) controls modules for
2076*7f2fe78bSCy Schubertthe certificate authorization interface, which determines whether a
2077*7f2fe78bSCy Schubertcertificate is allowed to preauthenticate a user via PKINIT.  The
2078*7f2fe78bSCy Schubertfollowing built\sphinxhyphen{}in modules exist for this interface:
2079*7f2fe78bSCy Schubert\begin{description}
2080*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_san}}] \leavevmode
2081*7f2fe78bSCy Schubert\sphinxAtStartPar
2082*7f2fe78bSCy SchubertThis module authorizes the certificate if it contains a PKINIT
2083*7f2fe78bSCy SchubertSubject Alternative Name for the requested client principal, or a
2084*7f2fe78bSCy SchubertMicrosoft UPN SAN matching the principal if \sphinxstylestrong{pkinit\_allow\_upn}
2085*7f2fe78bSCy Schubertis set to true for the realm.
2086*7f2fe78bSCy Schubert
2087*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_eku}}] \leavevmode
2088*7f2fe78bSCy Schubert\sphinxAtStartPar
2089*7f2fe78bSCy SchubertThis module rejects the certificate if it does not contain an
2090*7f2fe78bSCy SchubertExtended Key Usage attribute consistent with the
2091*7f2fe78bSCy Schubert\sphinxstylestrong{pkinit\_eku\_checking} value for the realm.
2092*7f2fe78bSCy Schubert
2093*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{dbmatch}}] \leavevmode
2094*7f2fe78bSCy Schubert\sphinxAtStartPar
2095*7f2fe78bSCy SchubertThis module authorizes or rejects the certificate according to
2096*7f2fe78bSCy Schubertwhether it matches the \sphinxstylestrong{pkinit\_cert\_match} string attribute on
2097*7f2fe78bSCy Schubertthe client principal, if that attribute is present.
2098*7f2fe78bSCy Schubert
2099*7f2fe78bSCy Schubert\end{description}
2100*7f2fe78bSCy Schubert
2101*7f2fe78bSCy Schubert
2102*7f2fe78bSCy Schubert\subsubsection{PKINIT options}
2103*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:pkinit-options}}
2104*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
2105*7f2fe78bSCy Schubert\sphinxAtStartPar
2106*7f2fe78bSCy SchubertThe following are PKINIT\sphinxhyphen{}specific options.  These values may
2107*7f2fe78bSCy Schubertbe specified in {[}libdefaults{]} as global defaults, or within
2108*7f2fe78bSCy Schuberta realm\sphinxhyphen{}specific subsection of {[}libdefaults{]}, or may be
2109*7f2fe78bSCy Schubertspecified as realm\sphinxhyphen{}specific values in the {[}realms{]} section.
2110*7f2fe78bSCy SchubertA realm\sphinxhyphen{}specific value overrides, not adds to, a generic
2111*7f2fe78bSCy Schubert{[}libdefaults{]} specification.  The search order is:
2112*7f2fe78bSCy Schubert\end{sphinxadmonition}
2113*7f2fe78bSCy Schubert\begin{enumerate}
2114*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
2115*7f2fe78bSCy Schubert\item {}
2116*7f2fe78bSCy Schubert\sphinxAtStartPar
2117*7f2fe78bSCy Schubertrealm\sphinxhyphen{}specific subsection of {[}libdefaults{]}:
2118*7f2fe78bSCy Schubert
2119*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
2120*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{libdefaults}\PYG{p}{]}
2121*7f2fe78bSCy Schubert    \PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{=} \PYG{p}{\PYGZob{}}
2122*7f2fe78bSCy Schubert        \PYG{n}{pkinit\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}\PYG{o}{.}\PYG{n}{crt}
2123*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
2124*7f2fe78bSCy Schubert\end{sphinxVerbatim}
2125*7f2fe78bSCy Schubert
2126*7f2fe78bSCy Schubert\item {}
2127*7f2fe78bSCy Schubert\sphinxAtStartPar
2128*7f2fe78bSCy Schubertrealm\sphinxhyphen{}specific value in the {[}realms{]} section:
2129*7f2fe78bSCy Schubert
2130*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
2131*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
2132*7f2fe78bSCy Schubert    \PYG{n}{OTHERREALM}\PYG{o}{.}\PYG{n}{ORG} \PYG{o}{=} \PYG{p}{\PYGZob{}}
2133*7f2fe78bSCy Schubert        \PYG{n}{pkinit\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{otherrealm}\PYG{o}{.}\PYG{n}{org}\PYG{o}{.}\PYG{n}{crt}
2134*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
2135*7f2fe78bSCy Schubert\end{sphinxVerbatim}
2136*7f2fe78bSCy Schubert
2137*7f2fe78bSCy Schubert\item {}
2138*7f2fe78bSCy Schubert\sphinxAtStartPar
2139*7f2fe78bSCy Schubertgeneric value in the {[}libdefaults{]} section:
2140*7f2fe78bSCy Schubert
2141*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
2142*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{libdefaults}\PYG{p}{]}
2143*7f2fe78bSCy Schubert    \PYG{n}{pkinit\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{DIR}\PYG{p}{:}\PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{generic\PYGZus{}trusted\PYGZus{}cas}\PYG{o}{/}
2144*7f2fe78bSCy Schubert\end{sphinxVerbatim}
2145*7f2fe78bSCy Schubert
2146*7f2fe78bSCy Schubert\end{enumerate}
2147*7f2fe78bSCy Schubert
2148*7f2fe78bSCy Schubert
2149*7f2fe78bSCy Schubert\paragraph{Specifying PKINIT identity information}
2150*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:specifying-pkinit-identity-information}}\label{\detokenize{admin/conf_files/krb5_conf:pkinit-identity}}
2151*7f2fe78bSCy Schubert\sphinxAtStartPar
2152*7f2fe78bSCy SchubertThe syntax for specifying Public Key identity, trust, and revocation
2153*7f2fe78bSCy Schubertinformation for PKINIT is as follows:
2154*7f2fe78bSCy Schubert\begin{description}
2155*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{FILE:}\sphinxstyleemphasis{filename}{[}\sphinxstylestrong{,}\sphinxstyleemphasis{keyfilename}{]}}] \leavevmode
2156*7f2fe78bSCy Schubert\sphinxAtStartPar
2157*7f2fe78bSCy SchubertThis option has context\sphinxhyphen{}specific behavior.
2158*7f2fe78bSCy Schubert
2159*7f2fe78bSCy Schubert\sphinxAtStartPar
2160*7f2fe78bSCy SchubertIn \sphinxstylestrong{pkinit\_identity} or \sphinxstylestrong{pkinit\_identities}, \sphinxstyleemphasis{filename}
2161*7f2fe78bSCy Schubertspecifies the name of a PEM\sphinxhyphen{}format file containing the user’s
2162*7f2fe78bSCy Schubertcertificate.  If \sphinxstyleemphasis{keyfilename} is not specified, the user’s
2163*7f2fe78bSCy Schubertprivate key is expected to be in \sphinxstyleemphasis{filename} as well.  Otherwise,
2164*7f2fe78bSCy Schubert\sphinxstyleemphasis{keyfilename} is the name of the file containing the private key.
2165*7f2fe78bSCy Schubert
2166*7f2fe78bSCy Schubert\sphinxAtStartPar
2167*7f2fe78bSCy SchubertIn \sphinxstylestrong{pkinit\_anchors} or \sphinxstylestrong{pkinit\_pool}, \sphinxstyleemphasis{filename} is assumed to
2168*7f2fe78bSCy Schubertbe the name of an OpenSSL\sphinxhyphen{}style ca\sphinxhyphen{}bundle file.
2169*7f2fe78bSCy Schubert
2170*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{DIR:}\sphinxstyleemphasis{dirname}}] \leavevmode
2171*7f2fe78bSCy Schubert\sphinxAtStartPar
2172*7f2fe78bSCy SchubertThis option has context\sphinxhyphen{}specific behavior.
2173*7f2fe78bSCy Schubert
2174*7f2fe78bSCy Schubert\sphinxAtStartPar
2175*7f2fe78bSCy SchubertIn \sphinxstylestrong{pkinit\_identity} or \sphinxstylestrong{pkinit\_identities}, \sphinxstyleemphasis{dirname}
2176*7f2fe78bSCy Schubertspecifies a directory with files named \sphinxcode{\sphinxupquote{*.crt}} and \sphinxcode{\sphinxupquote{*.key}}
2177*7f2fe78bSCy Schubertwhere the first part of the file name is the same for matching
2178*7f2fe78bSCy Schubertpairs of certificate and private key files.  When a file with a
2179*7f2fe78bSCy Schubertname ending with \sphinxcode{\sphinxupquote{.crt}} is found, a matching file ending with
2180*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{.key}} is assumed to contain the private key.  If no such file
2181*7f2fe78bSCy Schubertis found, then the certificate in the \sphinxcode{\sphinxupquote{.crt}} is not used.
2182*7f2fe78bSCy Schubert
2183*7f2fe78bSCy Schubert\sphinxAtStartPar
2184*7f2fe78bSCy SchubertIn \sphinxstylestrong{pkinit\_anchors} or \sphinxstylestrong{pkinit\_pool}, \sphinxstyleemphasis{dirname} is assumed to
2185*7f2fe78bSCy Schubertbe an OpenSSL\sphinxhyphen{}style hashed CA directory where each CA cert is
2186*7f2fe78bSCy Schubertstored in a file named \sphinxcode{\sphinxupquote{hash\sphinxhyphen{}of\sphinxhyphen{}ca\sphinxhyphen{}cert.\#}}.  This infrastructure
2187*7f2fe78bSCy Schubertis encouraged, but all files in the directory will be examined and
2188*7f2fe78bSCy Schubertif they contain certificates (in PEM format), they will be used.
2189*7f2fe78bSCy Schubert
2190*7f2fe78bSCy Schubert\sphinxAtStartPar
2191*7f2fe78bSCy SchubertIn \sphinxstylestrong{pkinit\_revoke}, \sphinxstyleemphasis{dirname} is assumed to be an OpenSSL\sphinxhyphen{}style
2192*7f2fe78bSCy Schuberthashed CA directory where each revocation list is stored in a file
2193*7f2fe78bSCy Schubertnamed \sphinxcode{\sphinxupquote{hash\sphinxhyphen{}of\sphinxhyphen{}ca\sphinxhyphen{}cert.r\#}}.  This infrastructure is encouraged,
2194*7f2fe78bSCy Schubertbut all files in the directory will be examined and if they
2195*7f2fe78bSCy Schubertcontain a revocation list (in PEM format), they will be used.
2196*7f2fe78bSCy Schubert
2197*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{PKCS12:}\sphinxstyleemphasis{filename}}] \leavevmode
2198*7f2fe78bSCy Schubert\sphinxAtStartPar
2199*7f2fe78bSCy Schubert\sphinxstyleemphasis{filename} is the name of a PKCS \#12 format file, containing the
2200*7f2fe78bSCy Schubertuser’s certificate and private key.
2201*7f2fe78bSCy Schubert
2202*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{PKCS11:}{[}\sphinxstylestrong{module\_name=}{]}\sphinxstyleemphasis{modname}{[}\sphinxstylestrong{:slotid=}\sphinxstyleemphasis{slot\sphinxhyphen{}id}{]}{[}\sphinxstylestrong{:token=}\sphinxstyleemphasis{token\sphinxhyphen{}label}{]}{[}\sphinxstylestrong{:certid=}\sphinxstyleemphasis{cert\sphinxhyphen{}id}{]}{[}\sphinxstylestrong{:certlabel=}\sphinxstyleemphasis{cert\sphinxhyphen{}label}{]}}] \leavevmode
2203*7f2fe78bSCy Schubert\sphinxAtStartPar
2204*7f2fe78bSCy SchubertAll keyword/values are optional.  \sphinxstyleemphasis{modname} specifies the location
2205*7f2fe78bSCy Schubertof a library implementing PKCS \#11.  If a value is encountered
2206*7f2fe78bSCy Schubertwith no keyword, it is assumed to be the \sphinxstyleemphasis{modname}.  If no
2207*7f2fe78bSCy Schubertmodule\sphinxhyphen{}name is specified, the default is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{PKCS11\_MODNAME}}}}.
2208*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{slotid=}} and/or \sphinxcode{\sphinxupquote{token=}} may be specified to force the use of
2209*7f2fe78bSCy Schuberta particular smard card reader or token if there is more than one
2210*7f2fe78bSCy Schubertavailable.  \sphinxcode{\sphinxupquote{certid=}} and/or \sphinxcode{\sphinxupquote{certlabel=}} may be specified to
2211*7f2fe78bSCy Schubertforce the selection of a particular certificate on the device.
2212*7f2fe78bSCy SchubertSee the \sphinxstylestrong{pkinit\_cert\_match} configuration option for more ways
2213*7f2fe78bSCy Schubertto select a particular certificate to use for PKINIT.
2214*7f2fe78bSCy Schubert
2215*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ENV:}\sphinxstyleemphasis{envvar}}] \leavevmode
2216*7f2fe78bSCy Schubert\sphinxAtStartPar
2217*7f2fe78bSCy Schubert\sphinxstyleemphasis{envvar} specifies the name of an environment variable which has
2218*7f2fe78bSCy Schubertbeen set to a value conforming to one of the previous values.  For
2219*7f2fe78bSCy Schubertexample, \sphinxcode{\sphinxupquote{ENV:X509\_PROXY}}, where environment variable
2220*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{X509\_PROXY}} has been set to \sphinxcode{\sphinxupquote{FILE:/tmp/my\_proxy.pem}}.
2221*7f2fe78bSCy Schubert
2222*7f2fe78bSCy Schubert\end{description}
2223*7f2fe78bSCy Schubert
2224*7f2fe78bSCy Schubert
2225*7f2fe78bSCy Schubert\paragraph{PKINIT krb5.conf options}
2226*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:pkinit-krb5-conf-options}}\begin{description}
2227*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_anchors}}] \leavevmode
2228*7f2fe78bSCy Schubert\sphinxAtStartPar
2229*7f2fe78bSCy SchubertSpecifies the location of trusted anchor (root) certificates which
2230*7f2fe78bSCy Schubertthe client trusts to sign KDC certificates.  This option may be
2231*7f2fe78bSCy Schubertspecified multiple times.  These values from the config file are
2232*7f2fe78bSCy Schubertnot used if the user specifies X509\_anchors on the command line.
2233*7f2fe78bSCy Schubert
2234*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_cert\_match}}] \leavevmode
2235*7f2fe78bSCy Schubert\sphinxAtStartPar
2236*7f2fe78bSCy SchubertSpecifies matching rules that the client certificate must match
2237*7f2fe78bSCy Schubertbefore it is used to attempt PKINIT authentication.  If a user has
2238*7f2fe78bSCy Schubertmultiple certificates available (on a smart card, or via other
2239*7f2fe78bSCy Schubertmedia), there must be exactly one certificate chosen before
2240*7f2fe78bSCy Schubertattempting PKINIT authentication.  This option may be specified
2241*7f2fe78bSCy Schubertmultiple times.  All the available certificates are checked
2242*7f2fe78bSCy Schubertagainst each rule in order until there is a match of exactly one
2243*7f2fe78bSCy Schubertcertificate.
2244*7f2fe78bSCy Schubert
2245*7f2fe78bSCy Schubert\sphinxAtStartPar
2246*7f2fe78bSCy SchubertThe Subject and Issuer comparison strings are the \index{RFC@\spxentry{RFC}!RFC 2253@\spxentry{RFC 2253}}\sphinxhref{https://tools.ietf.org/html/rfc2253.html}{\sphinxstylestrong{RFC 2253}}
2247*7f2fe78bSCy Schubertstring representations from the certificate Subject DN and Issuer
2248*7f2fe78bSCy SchubertDN values.
2249*7f2fe78bSCy Schubert
2250*7f2fe78bSCy Schubert\sphinxAtStartPar
2251*7f2fe78bSCy SchubertThe syntax of the matching rules is:
2252*7f2fe78bSCy Schubert\begin{quote}
2253*7f2fe78bSCy Schubert
2254*7f2fe78bSCy Schubert\sphinxAtStartPar
2255*7f2fe78bSCy Schubert{[}\sphinxstyleemphasis{relation\sphinxhyphen{}operator}{]}\sphinxstyleemphasis{component\sphinxhyphen{}rule} …
2256*7f2fe78bSCy Schubert\end{quote}
2257*7f2fe78bSCy Schubert
2258*7f2fe78bSCy Schubert\sphinxAtStartPar
2259*7f2fe78bSCy Schubertwhere:
2260*7f2fe78bSCy Schubert\begin{description}
2261*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{relation\sphinxhyphen{}operator}}] \leavevmode
2262*7f2fe78bSCy Schubert\sphinxAtStartPar
2263*7f2fe78bSCy Schubertcan be either \sphinxcode{\sphinxupquote{\&\&}}, meaning all component rules must match,
2264*7f2fe78bSCy Schubertor \sphinxcode{\sphinxupquote{||}}, meaning only one component rule must match.  The
2265*7f2fe78bSCy Schubertdefault is \sphinxcode{\sphinxupquote{\&\&}}.
2266*7f2fe78bSCy Schubert
2267*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{component\sphinxhyphen{}rule}}] \leavevmode
2268*7f2fe78bSCy Schubert\sphinxAtStartPar
2269*7f2fe78bSCy Schubertcan be one of the following.  Note that there is no
2270*7f2fe78bSCy Schubertpunctuation or whitespace between component rules.
2271*7f2fe78bSCy Schubert\begin{quote}
2272*7f2fe78bSCy Schubert
2273*7f2fe78bSCy Schubert\begin{DUlineblock}{0em}
2274*7f2fe78bSCy Schubert\item[] \sphinxstylestrong{\textless{}SUBJECT\textgreater{}}\sphinxstyleemphasis{regular\sphinxhyphen{}expression}
2275*7f2fe78bSCy Schubert\item[] \sphinxstylestrong{\textless{}ISSUER\textgreater{}}\sphinxstyleemphasis{regular\sphinxhyphen{}expression}
2276*7f2fe78bSCy Schubert\item[] \sphinxstylestrong{\textless{}SAN\textgreater{}}\sphinxstyleemphasis{regular\sphinxhyphen{}expression}
2277*7f2fe78bSCy Schubert\item[] \sphinxstylestrong{\textless{}EKU\textgreater{}}\sphinxstyleemphasis{extended\sphinxhyphen{}key\sphinxhyphen{}usage\sphinxhyphen{}list}
2278*7f2fe78bSCy Schubert\item[] \sphinxstylestrong{\textless{}KU\textgreater{}}\sphinxstyleemphasis{key\sphinxhyphen{}usage\sphinxhyphen{}list}
2279*7f2fe78bSCy Schubert\end{DUlineblock}
2280*7f2fe78bSCy Schubert\end{quote}
2281*7f2fe78bSCy Schubert
2282*7f2fe78bSCy Schubert\sphinxAtStartPar
2283*7f2fe78bSCy Schubert\sphinxstyleemphasis{extended\sphinxhyphen{}key\sphinxhyphen{}usage\sphinxhyphen{}list} is a comma\sphinxhyphen{}separated list of
2284*7f2fe78bSCy Schubertrequired Extended Key Usage values.  All values in the list
2285*7f2fe78bSCy Schubertmust be present in the certificate.  Extended Key Usage values
2286*7f2fe78bSCy Schubertcan be:
2287*7f2fe78bSCy Schubert\begin{itemize}
2288*7f2fe78bSCy Schubert\item {}
2289*7f2fe78bSCy Schubert\sphinxAtStartPar
2290*7f2fe78bSCy Schubertpkinit
2291*7f2fe78bSCy Schubert
2292*7f2fe78bSCy Schubert\item {}
2293*7f2fe78bSCy Schubert\sphinxAtStartPar
2294*7f2fe78bSCy SchubertmsScLogin
2295*7f2fe78bSCy Schubert
2296*7f2fe78bSCy Schubert\item {}
2297*7f2fe78bSCy Schubert\sphinxAtStartPar
2298*7f2fe78bSCy SchubertclientAuth
2299*7f2fe78bSCy Schubert
2300*7f2fe78bSCy Schubert\item {}
2301*7f2fe78bSCy Schubert\sphinxAtStartPar
2302*7f2fe78bSCy SchubertemailProtection
2303*7f2fe78bSCy Schubert
2304*7f2fe78bSCy Schubert\end{itemize}
2305*7f2fe78bSCy Schubert
2306*7f2fe78bSCy Schubert\sphinxAtStartPar
2307*7f2fe78bSCy Schubert\sphinxstyleemphasis{key\sphinxhyphen{}usage\sphinxhyphen{}list} is a comma\sphinxhyphen{}separated list of required Key
2308*7f2fe78bSCy SchubertUsage values.  All values in the list must be present in the
2309*7f2fe78bSCy Schubertcertificate.  Key Usage values can be:
2310*7f2fe78bSCy Schubert\begin{itemize}
2311*7f2fe78bSCy Schubert\item {}
2312*7f2fe78bSCy Schubert\sphinxAtStartPar
2313*7f2fe78bSCy SchubertdigitalSignature
2314*7f2fe78bSCy Schubert
2315*7f2fe78bSCy Schubert\item {}
2316*7f2fe78bSCy Schubert\sphinxAtStartPar
2317*7f2fe78bSCy SchubertkeyEncipherment
2318*7f2fe78bSCy Schubert
2319*7f2fe78bSCy Schubert\end{itemize}
2320*7f2fe78bSCy Schubert
2321*7f2fe78bSCy Schubert\end{description}
2322*7f2fe78bSCy Schubert
2323*7f2fe78bSCy Schubert\sphinxAtStartPar
2324*7f2fe78bSCy SchubertExamples:
2325*7f2fe78bSCy Schubert
2326*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
2327*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}cert\PYGZus{}match} \PYG{o}{=} \PYG{o}{|}\PYG{o}{|}\PYG{o}{\PYGZlt{}}\PYG{n}{SUBJECT}\PYG{o}{\PYGZgt{}}\PYG{o}{.}\PYG{o}{*}\PYG{n}{DoE}\PYG{o}{.}\PYG{o}{*}\PYG{o}{\PYGZlt{}}\PYG{n}{SAN}\PYG{o}{\PYGZgt{}}\PYG{o}{.}\PYG{o}{*}\PYG{n+nd}{@EXAMPLE}\PYG{o}{.}\PYG{n}{COM}
2328*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}cert\PYGZus{}match} \PYG{o}{=} \PYG{o}{\PYGZam{}}\PYG{o}{\PYGZam{}}\PYG{o}{\PYGZlt{}}\PYG{n}{EKU}\PYG{o}{\PYGZgt{}}\PYG{n}{msScLogin}\PYG{p}{,}\PYG{n}{clientAuth}\PYG{o}{\PYGZlt{}}\PYG{n}{ISSUER}\PYG{o}{\PYGZgt{}}\PYG{o}{.}\PYG{o}{*}\PYG{n}{DoE}\PYG{o}{.}\PYG{o}{*}
2329*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}cert\PYGZus{}match} \PYG{o}{=} \PYG{o}{\PYGZlt{}}\PYG{n}{EKU}\PYG{o}{\PYGZgt{}}\PYG{n}{msScLogin}\PYG{p}{,}\PYG{n}{clientAuth}\PYG{o}{\PYGZlt{}}\PYG{n}{KU}\PYG{o}{\PYGZgt{}}\PYG{n}{digitalSignature}
2330*7f2fe78bSCy Schubert\end{sphinxVerbatim}
2331*7f2fe78bSCy Schubert
2332*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_eku\_checking}}] \leavevmode
2333*7f2fe78bSCy Schubert\sphinxAtStartPar
2334*7f2fe78bSCy SchubertThis option specifies what Extended Key Usage value the KDC
2335*7f2fe78bSCy Schubertcertificate presented to the client must contain.  (Note that if
2336*7f2fe78bSCy Schubertthe KDC certificate has the pkinit SubjectAlternativeName encoded
2337*7f2fe78bSCy Schubertas the Kerberos TGS name, EKU checking is not necessary since the
2338*7f2fe78bSCy Schubertissuing CA has certified this as a KDC certificate.)  The values
2339*7f2fe78bSCy Schubertrecognized in the krb5.conf file are:
2340*7f2fe78bSCy Schubert\begin{description}
2341*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kpKDC}}] \leavevmode
2342*7f2fe78bSCy Schubert\sphinxAtStartPar
2343*7f2fe78bSCy SchubertThis is the default value and specifies that the KDC must have
2344*7f2fe78bSCy Schubertthe id\sphinxhyphen{}pkinit\sphinxhyphen{}KPKdc EKU as defined in \index{RFC@\spxentry{RFC}!RFC 4556@\spxentry{RFC 4556}}\sphinxhref{https://tools.ietf.org/html/rfc4556.html}{\sphinxstylestrong{RFC 4556}}.
2345*7f2fe78bSCy Schubert
2346*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kpServerAuth}}] \leavevmode
2347*7f2fe78bSCy Schubert\sphinxAtStartPar
2348*7f2fe78bSCy SchubertIf \sphinxstylestrong{kpServerAuth} is specified, a KDC certificate with the
2349*7f2fe78bSCy Schubertid\sphinxhyphen{}kp\sphinxhyphen{}serverAuth EKU will be accepted.  This key usage value
2350*7f2fe78bSCy Schubertis used in most commercially issued server certificates.
2351*7f2fe78bSCy Schubert
2352*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{none}}] \leavevmode
2353*7f2fe78bSCy Schubert\sphinxAtStartPar
2354*7f2fe78bSCy SchubertIf \sphinxstylestrong{none} is specified, then the KDC certificate will not be
2355*7f2fe78bSCy Schubertchecked to verify it has an acceptable EKU.  The use of this
2356*7f2fe78bSCy Schubertoption is not recommended.
2357*7f2fe78bSCy Schubert
2358*7f2fe78bSCy Schubert\end{description}
2359*7f2fe78bSCy Schubert
2360*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_dh\_min\_bits}}] \leavevmode
2361*7f2fe78bSCy Schubert\sphinxAtStartPar
2362*7f2fe78bSCy SchubertSpecifies the size of the Diffie\sphinxhyphen{}Hellman key the client will
2363*7f2fe78bSCy Schubertattempt to use.  The acceptable values are 1024, 2048, and 4096.
2364*7f2fe78bSCy SchubertThe default is 2048.
2365*7f2fe78bSCy Schubert
2366*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_identities}}] \leavevmode
2367*7f2fe78bSCy Schubert\sphinxAtStartPar
2368*7f2fe78bSCy SchubertSpecifies the location(s) to be used to find the user’s X.509
2369*7f2fe78bSCy Schubertidentity information.  If this option is specified multiple times,
2370*7f2fe78bSCy Schuberteach value is attempted in order until certificates are found.
2371*7f2fe78bSCy SchubertNote that these values are not used if the user specifies
2372*7f2fe78bSCy Schubert\sphinxstylestrong{X509\_user\_identity} on the command line.
2373*7f2fe78bSCy Schubert
2374*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_kdc\_hostname}}] \leavevmode
2375*7f2fe78bSCy Schubert\sphinxAtStartPar
2376*7f2fe78bSCy SchubertThe presence of this option indicates that the client is willing
2377*7f2fe78bSCy Schubertto accept a KDC certificate with a dNSName SAN (Subject
2378*7f2fe78bSCy SchubertAlternative Name) rather than requiring the id\sphinxhyphen{}pkinit\sphinxhyphen{}san as
2379*7f2fe78bSCy Schubertdefined in \index{RFC@\spxentry{RFC}!RFC 4556@\spxentry{RFC 4556}}\sphinxhref{https://tools.ietf.org/html/rfc4556.html}{\sphinxstylestrong{RFC 4556}}.  This option may be specified multiple
2380*7f2fe78bSCy Schuberttimes.  Its value should contain the acceptable hostname for the
2381*7f2fe78bSCy SchubertKDC (as contained in its certificate).
2382*7f2fe78bSCy Schubert
2383*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_pool}}] \leavevmode
2384*7f2fe78bSCy Schubert\sphinxAtStartPar
2385*7f2fe78bSCy SchubertSpecifies the location of intermediate certificates which may be
2386*7f2fe78bSCy Schubertused by the client to complete the trust chain between a KDC
2387*7f2fe78bSCy Schubertcertificate and a trusted anchor.  This option may be specified
2388*7f2fe78bSCy Schubertmultiple times.
2389*7f2fe78bSCy Schubert
2390*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_require\_crl\_checking}}] \leavevmode
2391*7f2fe78bSCy Schubert\sphinxAtStartPar
2392*7f2fe78bSCy SchubertThe default certificate verification process will always check the
2393*7f2fe78bSCy Schubertavailable revocation information to see if a certificate has been
2394*7f2fe78bSCy Schubertrevoked.  If a match is found for the certificate in a CRL,
2395*7f2fe78bSCy Schubertverification fails.  If the certificate being verified is not
2396*7f2fe78bSCy Schubertlisted in a CRL, or there is no CRL present for its issuing CA,
2397*7f2fe78bSCy Schubertand \sphinxstylestrong{pkinit\_require\_crl\_checking} is false, then verification
2398*7f2fe78bSCy Schubertsucceeds.
2399*7f2fe78bSCy Schubert
2400*7f2fe78bSCy Schubert\sphinxAtStartPar
2401*7f2fe78bSCy SchubertHowever, if \sphinxstylestrong{pkinit\_require\_crl\_checking} is true and there is
2402*7f2fe78bSCy Schubertno CRL information available for the issuing CA, then verification
2403*7f2fe78bSCy Schubertfails.
2404*7f2fe78bSCy Schubert
2405*7f2fe78bSCy Schubert\sphinxAtStartPar
2406*7f2fe78bSCy Schubert\sphinxstylestrong{pkinit\_require\_crl\_checking} should be set to true if the
2407*7f2fe78bSCy Schubertpolicy is such that up\sphinxhyphen{}to\sphinxhyphen{}date CRLs must be present for every CA.
2408*7f2fe78bSCy Schubert
2409*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_revoke}}] \leavevmode
2410*7f2fe78bSCy Schubert\sphinxAtStartPar
2411*7f2fe78bSCy SchubertSpecifies the location of Certificate Revocation List (CRL)
2412*7f2fe78bSCy Schubertinformation to be used by the client when verifying the validity
2413*7f2fe78bSCy Schubertof the KDC certificate presented.  This option may be specified
2414*7f2fe78bSCy Schubertmultiple times.
2415*7f2fe78bSCy Schubert
2416*7f2fe78bSCy Schubert\end{description}
2417*7f2fe78bSCy Schubert
2418*7f2fe78bSCy Schubert
2419*7f2fe78bSCy Schubert\subsubsection{Parameter expansion}
2420*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:parameter-expansion}}\label{\detokenize{admin/conf_files/krb5_conf:id7}}
2421*7f2fe78bSCy Schubert\sphinxAtStartPar
2422*7f2fe78bSCy SchubertStarting with release 1.11, several variables, such as
2423*7f2fe78bSCy Schubert\sphinxstylestrong{default\_keytab\_name}, allow parameters to be expanded.
2424*7f2fe78bSCy SchubertValid parameters are:
2425*7f2fe78bSCy Schubert\begin{quote}
2426*7f2fe78bSCy Schubert
2427*7f2fe78bSCy Schubert
2428*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
2429*7f2fe78bSCy Schubert\centering
2430*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|}
2431*7f2fe78bSCy Schubert\hline
2432*7f2fe78bSCy Schubert
2433*7f2fe78bSCy Schubert\sphinxAtStartPar
2434*7f2fe78bSCy Schubert\%\{TEMP\}
2435*7f2fe78bSCy Schubert&
2436*7f2fe78bSCy Schubert\sphinxAtStartPar
2437*7f2fe78bSCy SchubertTemporary directory
2438*7f2fe78bSCy Schubert\\
2439*7f2fe78bSCy Schubert\hline
2440*7f2fe78bSCy Schubert\sphinxAtStartPar
2441*7f2fe78bSCy Schubert\%\{uid\}
2442*7f2fe78bSCy Schubert&
2443*7f2fe78bSCy Schubert\sphinxAtStartPar
2444*7f2fe78bSCy SchubertUnix real UID or Windows SID
2445*7f2fe78bSCy Schubert\\
2446*7f2fe78bSCy Schubert\hline
2447*7f2fe78bSCy Schubert\sphinxAtStartPar
2448*7f2fe78bSCy Schubert\%\{euid\}
2449*7f2fe78bSCy Schubert&
2450*7f2fe78bSCy Schubert\sphinxAtStartPar
2451*7f2fe78bSCy SchubertUnix effective user ID or Windows SID
2452*7f2fe78bSCy Schubert\\
2453*7f2fe78bSCy Schubert\hline
2454*7f2fe78bSCy Schubert\sphinxAtStartPar
2455*7f2fe78bSCy Schubert\%\{USERID\}
2456*7f2fe78bSCy Schubert&
2457*7f2fe78bSCy Schubert\sphinxAtStartPar
2458*7f2fe78bSCy SchubertSame as \%\{uid\}
2459*7f2fe78bSCy Schubert\\
2460*7f2fe78bSCy Schubert\hline
2461*7f2fe78bSCy Schubert\sphinxAtStartPar
2462*7f2fe78bSCy Schubert\%\{null\}
2463*7f2fe78bSCy Schubert&
2464*7f2fe78bSCy Schubert\sphinxAtStartPar
2465*7f2fe78bSCy SchubertEmpty string
2466*7f2fe78bSCy Schubert\\
2467*7f2fe78bSCy Schubert\hline
2468*7f2fe78bSCy Schubert\sphinxAtStartPar
2469*7f2fe78bSCy Schubert\%\{LIBDIR\}
2470*7f2fe78bSCy Schubert&
2471*7f2fe78bSCy Schubert\sphinxAtStartPar
2472*7f2fe78bSCy SchubertInstallation library directory
2473*7f2fe78bSCy Schubert\\
2474*7f2fe78bSCy Schubert\hline
2475*7f2fe78bSCy Schubert\sphinxAtStartPar
2476*7f2fe78bSCy Schubert\%\{BINDIR\}
2477*7f2fe78bSCy Schubert&
2478*7f2fe78bSCy Schubert\sphinxAtStartPar
2479*7f2fe78bSCy SchubertInstallation binary directory
2480*7f2fe78bSCy Schubert\\
2481*7f2fe78bSCy Schubert\hline
2482*7f2fe78bSCy Schubert\sphinxAtStartPar
2483*7f2fe78bSCy Schubert\%\{SBINDIR\}
2484*7f2fe78bSCy Schubert&
2485*7f2fe78bSCy Schubert\sphinxAtStartPar
2486*7f2fe78bSCy SchubertInstallation admin binary directory
2487*7f2fe78bSCy Schubert\\
2488*7f2fe78bSCy Schubert\hline
2489*7f2fe78bSCy Schubert\sphinxAtStartPar
2490*7f2fe78bSCy Schubert\%\{username\}
2491*7f2fe78bSCy Schubert&
2492*7f2fe78bSCy Schubert\sphinxAtStartPar
2493*7f2fe78bSCy Schubert(Unix) Username of effective user ID
2494*7f2fe78bSCy Schubert\\
2495*7f2fe78bSCy Schubert\hline
2496*7f2fe78bSCy Schubert\sphinxAtStartPar
2497*7f2fe78bSCy Schubert\%\{APPDATA\}
2498*7f2fe78bSCy Schubert&
2499*7f2fe78bSCy Schubert\sphinxAtStartPar
2500*7f2fe78bSCy Schubert(Windows) Roaming application data for current user
2501*7f2fe78bSCy Schubert\\
2502*7f2fe78bSCy Schubert\hline
2503*7f2fe78bSCy Schubert\sphinxAtStartPar
2504*7f2fe78bSCy Schubert\%\{COMMON\_APPDATA\}
2505*7f2fe78bSCy Schubert&
2506*7f2fe78bSCy Schubert\sphinxAtStartPar
2507*7f2fe78bSCy Schubert(Windows) Application data for all users
2508*7f2fe78bSCy Schubert\\
2509*7f2fe78bSCy Schubert\hline
2510*7f2fe78bSCy Schubert\sphinxAtStartPar
2511*7f2fe78bSCy Schubert\%\{LOCAL\_APPDATA\}
2512*7f2fe78bSCy Schubert&
2513*7f2fe78bSCy Schubert\sphinxAtStartPar
2514*7f2fe78bSCy Schubert(Windows) Local application data for current user
2515*7f2fe78bSCy Schubert\\
2516*7f2fe78bSCy Schubert\hline
2517*7f2fe78bSCy Schubert\sphinxAtStartPar
2518*7f2fe78bSCy Schubert\%\{SYSTEM\}
2519*7f2fe78bSCy Schubert&
2520*7f2fe78bSCy Schubert\sphinxAtStartPar
2521*7f2fe78bSCy Schubert(Windows) Windows system folder
2522*7f2fe78bSCy Schubert\\
2523*7f2fe78bSCy Schubert\hline
2524*7f2fe78bSCy Schubert\sphinxAtStartPar
2525*7f2fe78bSCy Schubert\%\{WINDOWS\}
2526*7f2fe78bSCy Schubert&
2527*7f2fe78bSCy Schubert\sphinxAtStartPar
2528*7f2fe78bSCy Schubert(Windows) Windows folder
2529*7f2fe78bSCy Schubert\\
2530*7f2fe78bSCy Schubert\hline
2531*7f2fe78bSCy Schubert\sphinxAtStartPar
2532*7f2fe78bSCy Schubert\%\{USERCONFIG\}
2533*7f2fe78bSCy Schubert&
2534*7f2fe78bSCy Schubert\sphinxAtStartPar
2535*7f2fe78bSCy Schubert(Windows) Per\sphinxhyphen{}user MIT krb5 config file directory
2536*7f2fe78bSCy Schubert\\
2537*7f2fe78bSCy Schubert\hline
2538*7f2fe78bSCy Schubert\sphinxAtStartPar
2539*7f2fe78bSCy Schubert\%\{COMMONCONFIG\}
2540*7f2fe78bSCy Schubert&
2541*7f2fe78bSCy Schubert\sphinxAtStartPar
2542*7f2fe78bSCy Schubert(Windows) Common MIT krb5 config file directory
2543*7f2fe78bSCy Schubert\\
2544*7f2fe78bSCy Schubert\hline
2545*7f2fe78bSCy Schubert\end{tabulary}
2546*7f2fe78bSCy Schubert\par
2547*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
2548*7f2fe78bSCy Schubert\end{quote}
2549*7f2fe78bSCy Schubert
2550*7f2fe78bSCy Schubert
2551*7f2fe78bSCy Schubert\subsubsection{Sample krb5.conf file}
2552*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:sample-krb5-conf-file}}
2553*7f2fe78bSCy Schubert\sphinxAtStartPar
2554*7f2fe78bSCy SchubertHere is an example of a generic krb5.conf file:
2555*7f2fe78bSCy Schubert
2556*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
2557*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{libdefaults}\PYG{p}{]}
2558*7f2fe78bSCy Schubert    \PYG{n}{default\PYGZus{}realm} \PYG{o}{=} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
2559*7f2fe78bSCy Schubert    \PYG{n}{dns\PYGZus{}lookup\PYGZus{}kdc} \PYG{o}{=} \PYG{n}{true}
2560*7f2fe78bSCy Schubert    \PYG{n}{dns\PYGZus{}lookup\PYGZus{}realm} \PYG{o}{=} \PYG{n}{false}
2561*7f2fe78bSCy Schubert
2562*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
2563*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
2564*7f2fe78bSCy Schubert        \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
2565*7f2fe78bSCy Schubert        \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
2566*7f2fe78bSCy Schubert        \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{2.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
2567*7f2fe78bSCy Schubert        \PYG{n}{admin\PYGZus{}server} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
2568*7f2fe78bSCy Schubert        \PYG{n}{primary\PYGZus{}kdc} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
2569*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
2570*7f2fe78bSCy Schubert    \PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{=} \PYG{p}{\PYGZob{}}
2571*7f2fe78bSCy Schubert        \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}
2572*7f2fe78bSCy Schubert        \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}
2573*7f2fe78bSCy Schubert        \PYG{n}{admin\PYGZus{}server} \PYG{o}{=} \PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}
2574*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
2575*7f2fe78bSCy Schubert
2576*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{domain\PYGZus{}realm}\PYG{p}{]}
2577*7f2fe78bSCy Schubert    \PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{o}{=} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
2578*7f2fe78bSCy Schubert
2579*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{capaths}\PYG{p}{]}
2580*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
2581*7f2fe78bSCy Schubert           \PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{=} \PYG{o}{.}
2582*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
2583*7f2fe78bSCy Schubert    \PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{=} \PYG{p}{\PYGZob{}}
2584*7f2fe78bSCy Schubert           \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{o}{.}
2585*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
2586*7f2fe78bSCy Schubert\end{sphinxVerbatim}
2587*7f2fe78bSCy Schubert
2588*7f2fe78bSCy Schubert
2589*7f2fe78bSCy Schubert\subsubsection{FILES}
2590*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:files}}
2591*7f2fe78bSCy Schubert\sphinxAtStartPar
2592*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/etc/krb5.conf}}
2593*7f2fe78bSCy Schubert
2594*7f2fe78bSCy Schubert
2595*7f2fe78bSCy Schubert\subsubsection{SEE ALSO}
2596*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/krb5_conf:see-also}}
2597*7f2fe78bSCy Schubert\sphinxAtStartPar
2598*7f2fe78bSCy Schubertsyslog(3)
2599*7f2fe78bSCy Schubert
2600*7f2fe78bSCy Schubert
2601*7f2fe78bSCy Schubert\subsection{kdc.conf}
2602*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:kdc-conf}}\label{\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}}\label{\detokenize{admin/conf_files/kdc_conf::doc}}
2603*7f2fe78bSCy Schubert\sphinxAtStartPar
2604*7f2fe78bSCy SchubertThe kdc.conf file supplements {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} for programs which
2605*7f2fe78bSCy Schubertare typically only used on a KDC, such as the {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} and
2606*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemons and the {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} program.
2607*7f2fe78bSCy SchubertRelations documented here may also be specified in krb5.conf; for the
2608*7f2fe78bSCy SchubertKDC programs mentioned, krb5.conf and kdc.conf will be merged into a
2609*7f2fe78bSCy Schubertsingle configuration profile.
2610*7f2fe78bSCy Schubert
2611*7f2fe78bSCy Schubert\sphinxAtStartPar
2612*7f2fe78bSCy SchubertNormally, the kdc.conf file is found in the KDC state directory,
2613*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}.  You can override the default location by setting the
2614*7f2fe78bSCy Schubertenvironment variable \sphinxstylestrong{KRB5\_KDC\_PROFILE}.
2615*7f2fe78bSCy Schubert
2616*7f2fe78bSCy Schubert\sphinxAtStartPar
2617*7f2fe78bSCy SchubertPlease note that you need to restart the KDC daemon for any configuration
2618*7f2fe78bSCy Schubertchanges to take effect.
2619*7f2fe78bSCy Schubert
2620*7f2fe78bSCy Schubert
2621*7f2fe78bSCy Schubert\subsubsection{Structure}
2622*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:structure}}
2623*7f2fe78bSCy Schubert\sphinxAtStartPar
2624*7f2fe78bSCy SchubertThe kdc.conf file is set up in the same format as the
2625*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} file.
2626*7f2fe78bSCy Schubert
2627*7f2fe78bSCy Schubert
2628*7f2fe78bSCy Schubert\subsubsection{Sections}
2629*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:sections}}
2630*7f2fe78bSCy Schubert\sphinxAtStartPar
2631*7f2fe78bSCy SchubertThe kdc.conf file may contain the following sections:
2632*7f2fe78bSCy Schubert
2633*7f2fe78bSCy Schubert
2634*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
2635*7f2fe78bSCy Schubert\centering
2636*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|}
2637*7f2fe78bSCy Schubert\hline
2638*7f2fe78bSCy Schubert
2639*7f2fe78bSCy Schubert\sphinxAtStartPar
2640*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdcdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}kdcdefaults{]}}}}}
2641*7f2fe78bSCy Schubert&
2642*7f2fe78bSCy Schubert\sphinxAtStartPar
2643*7f2fe78bSCy SchubertDefault values for KDC behavior
2644*7f2fe78bSCy Schubert\\
2645*7f2fe78bSCy Schubert\hline
2646*7f2fe78bSCy Schubert\sphinxAtStartPar
2647*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}}
2648*7f2fe78bSCy Schubert&
2649*7f2fe78bSCy Schubert\sphinxAtStartPar
2650*7f2fe78bSCy SchubertRealm\sphinxhyphen{}specific database configuration and settings
2651*7f2fe78bSCy Schubert\\
2652*7f2fe78bSCy Schubert\hline
2653*7f2fe78bSCy Schubert\sphinxAtStartPar
2654*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:dbdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbdefaults{]}}}}}
2655*7f2fe78bSCy Schubert&
2656*7f2fe78bSCy Schubert\sphinxAtStartPar
2657*7f2fe78bSCy SchubertDefault database settings
2658*7f2fe78bSCy Schubert\\
2659*7f2fe78bSCy Schubert\hline
2660*7f2fe78bSCy Schubert\sphinxAtStartPar
2661*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:dbmodules}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbmodules{]}}}}}
2662*7f2fe78bSCy Schubert&
2663*7f2fe78bSCy Schubert\sphinxAtStartPar
2664*7f2fe78bSCy SchubertPer\sphinxhyphen{}database settings
2665*7f2fe78bSCy Schubert\\
2666*7f2fe78bSCy Schubert\hline
2667*7f2fe78bSCy Schubert\sphinxAtStartPar
2668*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:logging}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}logging{]}}}}}
2669*7f2fe78bSCy Schubert&
2670*7f2fe78bSCy Schubert\sphinxAtStartPar
2671*7f2fe78bSCy SchubertControls how Kerberos daemons perform logging
2672*7f2fe78bSCy Schubert\\
2673*7f2fe78bSCy Schubert\hline
2674*7f2fe78bSCy Schubert\end{tabulary}
2675*7f2fe78bSCy Schubert\par
2676*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
2677*7f2fe78bSCy Schubert
2678*7f2fe78bSCy Schubert
2679*7f2fe78bSCy Schubert\paragraph{{[}kdcdefaults{]}}
2680*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:kdcdefaults}}\label{\detokenize{admin/conf_files/kdc_conf:id1}}
2681*7f2fe78bSCy Schubert\sphinxAtStartPar
2682*7f2fe78bSCy SchubertSome relations in the {[}kdcdefaults{]} section specify default values for
2683*7f2fe78bSCy Schubertrealm variables, to be used if the {[}realms{]} subsection does not
2684*7f2fe78bSCy Schubertcontain a relation for the tag.  See the {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} section for
2685*7f2fe78bSCy Schubertthe definitions of these relations.
2686*7f2fe78bSCy Schubert\begin{itemize}
2687*7f2fe78bSCy Schubert\item {}
2688*7f2fe78bSCy Schubert\sphinxAtStartPar
2689*7f2fe78bSCy Schubert\sphinxstylestrong{host\_based\_services}
2690*7f2fe78bSCy Schubert
2691*7f2fe78bSCy Schubert\item {}
2692*7f2fe78bSCy Schubert\sphinxAtStartPar
2693*7f2fe78bSCy Schubert\sphinxstylestrong{kdc\_listen}
2694*7f2fe78bSCy Schubert
2695*7f2fe78bSCy Schubert\item {}
2696*7f2fe78bSCy Schubert\sphinxAtStartPar
2697*7f2fe78bSCy Schubert\sphinxstylestrong{kdc\_ports}
2698*7f2fe78bSCy Schubert
2699*7f2fe78bSCy Schubert\item {}
2700*7f2fe78bSCy Schubert\sphinxAtStartPar
2701*7f2fe78bSCy Schubert\sphinxstylestrong{kdc\_tcp\_listen}
2702*7f2fe78bSCy Schubert
2703*7f2fe78bSCy Schubert\item {}
2704*7f2fe78bSCy Schubert\sphinxAtStartPar
2705*7f2fe78bSCy Schubert\sphinxstylestrong{kdc\_tcp\_ports}
2706*7f2fe78bSCy Schubert
2707*7f2fe78bSCy Schubert\item {}
2708*7f2fe78bSCy Schubert\sphinxAtStartPar
2709*7f2fe78bSCy Schubert\sphinxstylestrong{no\_host\_referral}
2710*7f2fe78bSCy Schubert
2711*7f2fe78bSCy Schubert\item {}
2712*7f2fe78bSCy Schubert\sphinxAtStartPar
2713*7f2fe78bSCy Schubert\sphinxstylestrong{restrict\_anonymous\_to\_tgt}
2714*7f2fe78bSCy Schubert
2715*7f2fe78bSCy Schubert\end{itemize}
2716*7f2fe78bSCy Schubert
2717*7f2fe78bSCy Schubert\sphinxAtStartPar
2718*7f2fe78bSCy SchubertThe following {[}kdcdefaults{]} variables have no per\sphinxhyphen{}realm equivalent:
2719*7f2fe78bSCy Schubert\begin{description}
2720*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc\_max\_dgram\_reply\_size}}] \leavevmode
2721*7f2fe78bSCy Schubert\sphinxAtStartPar
2722*7f2fe78bSCy SchubertSpecifies the maximum packet size that can be sent over UDP.  The
2723*7f2fe78bSCy Schubertdefault value is 4096 bytes.
2724*7f2fe78bSCy Schubert
2725*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc\_tcp\_listen\_backlog}}] \leavevmode
2726*7f2fe78bSCy Schubert\sphinxAtStartPar
2727*7f2fe78bSCy Schubert(Integer.)  Set the size of the listen queue length for the KDC
2728*7f2fe78bSCy Schubertdaemon.  The value may be limited by OS settings.  The default
2729*7f2fe78bSCy Schubertvalue is 5.
2730*7f2fe78bSCy Schubert
2731*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{spake\_preauth\_kdc\_challenge}}] \leavevmode
2732*7f2fe78bSCy Schubert\sphinxAtStartPar
2733*7f2fe78bSCy Schubert(String.)  Specifies the group for a SPAKE optimistic challenge.
2734*7f2fe78bSCy SchubertSee the \sphinxstylestrong{spake\_preauth\_groups} variable in {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}
2735*7f2fe78bSCy Schubertfor possible values.  The default is not to issue an optimistic
2736*7f2fe78bSCy Schubertchallenge.  (New in release 1.17.)
2737*7f2fe78bSCy Schubert
2738*7f2fe78bSCy Schubert\end{description}
2739*7f2fe78bSCy Schubert
2740*7f2fe78bSCy Schubert
2741*7f2fe78bSCy Schubert\paragraph{{[}realms{]}}
2742*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:realms}}\label{\detokenize{admin/conf_files/kdc_conf:kdc-realms}}
2743*7f2fe78bSCy Schubert\sphinxAtStartPar
2744*7f2fe78bSCy SchubertEach tag in the {[}realms{]} section is the name of a Kerberos realm.  The
2745*7f2fe78bSCy Schubertvalue of the tag is a subsection where the relations define KDC
2746*7f2fe78bSCy Schubertparameters for that particular realm.  The following example shows how
2747*7f2fe78bSCy Schubertto define one parameter for the ATHENA.MIT.EDU realm:
2748*7f2fe78bSCy Schubert
2749*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
2750*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
2751*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
2752*7f2fe78bSCy Schubert        \PYG{n}{max\PYGZus{}renewable\PYGZus{}life} \PYG{o}{=} \PYG{l+m+mi}{7}\PYG{n}{d} \PYG{l+m+mi}{0}\PYG{n}{h} \PYG{l+m+mi}{0}\PYG{n}{m} \PYG{l+m+mi}{0}\PYG{n}{s}
2753*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
2754*7f2fe78bSCy Schubert\end{sphinxVerbatim}
2755*7f2fe78bSCy Schubert
2756*7f2fe78bSCy Schubert\sphinxAtStartPar
2757*7f2fe78bSCy SchubertThe following tags may be specified in a {[}realms{]} subsection:
2758*7f2fe78bSCy Schubert\begin{description}
2759*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{acl\_file}}] \leavevmode
2760*7f2fe78bSCy Schubert\sphinxAtStartPar
2761*7f2fe78bSCy Schubert(String.)  Location of the access control list file that
2762*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} uses to determine which principals are allowed
2763*7f2fe78bSCy Schubertwhich permissions on the Kerberos database.  To operate without an
2764*7f2fe78bSCy SchubertACL file, set this relation to the empty string with \sphinxcode{\sphinxupquote{acl\_file =
2765*7f2fe78bSCy Schubert""}}.  The default value is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kadm5.acl}}.  For more
2766*7f2fe78bSCy Schubertinformation on Kerberos ACL file see {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}.
2767*7f2fe78bSCy Schubert
2768*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{database\_module}}] \leavevmode
2769*7f2fe78bSCy Schubert\sphinxAtStartPar
2770*7f2fe78bSCy Schubert(String.)  This relation indicates the name of the configuration
2771*7f2fe78bSCy Schubertsection under {\hyperref[\detokenize{admin/conf_files/kdc_conf:dbmodules}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbmodules{]}}}}} for database\sphinxhyphen{}specific parameters
2772*7f2fe78bSCy Schubertused by the loadable database library.  The default value is the
2773*7f2fe78bSCy Schubertrealm name.  If this configuration section does not exist, default
2774*7f2fe78bSCy Schubertvalues will be used for all database parameters.
2775*7f2fe78bSCy Schubert
2776*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{database\_name}}] \leavevmode
2777*7f2fe78bSCy Schubert\sphinxAtStartPar
2778*7f2fe78bSCy Schubert(String, deprecated.)  This relation specifies the location of the
2779*7f2fe78bSCy SchubertKerberos database for this realm, if the DB2 module is being used
2780*7f2fe78bSCy Schubertand the {\hyperref[\detokenize{admin/conf_files/kdc_conf:dbmodules}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbmodules{]}}}}} configuration section does not specify a
2781*7f2fe78bSCy Schubertdatabase name.  The default value is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/principal}}.
2782*7f2fe78bSCy Schubert
2783*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_principal\_expiration}}] \leavevmode
2784*7f2fe78bSCy Schubert\sphinxAtStartPar
2785*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{abstime} string.)  Specifies the default expiration date of
2786*7f2fe78bSCy Schubertprincipals created in this realm.  The default value is 0, which
2787*7f2fe78bSCy Schubertmeans no expiration date.
2788*7f2fe78bSCy Schubert
2789*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_principal\_flags}}] \leavevmode
2790*7f2fe78bSCy Schubert\sphinxAtStartPar
2791*7f2fe78bSCy Schubert(Flag string.)  Specifies the default attributes of principals
2792*7f2fe78bSCy Schubertcreated in this realm.  The format for this string is a
2793*7f2fe78bSCy Schubertcomma\sphinxhyphen{}separated list of flags, with ‘+’ before each flag that
2794*7f2fe78bSCy Schubertshould be enabled and ‘\sphinxhyphen{}’ before each flag that should be
2795*7f2fe78bSCy Schubertdisabled.  The \sphinxstylestrong{postdateable}, \sphinxstylestrong{forwardable}, \sphinxstylestrong{tgt\sphinxhyphen{}based},
2796*7f2fe78bSCy Schubert\sphinxstylestrong{renewable}, \sphinxstylestrong{proxiable}, \sphinxstylestrong{dup\sphinxhyphen{}skey}, \sphinxstylestrong{allow\sphinxhyphen{}tickets}, and
2797*7f2fe78bSCy Schubert\sphinxstylestrong{service} flags default to enabled.
2798*7f2fe78bSCy Schubert
2799*7f2fe78bSCy Schubert\sphinxAtStartPar
2800*7f2fe78bSCy SchubertThere are a number of possible flags:
2801*7f2fe78bSCy Schubert\begin{description}
2802*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{allow\sphinxhyphen{}tickets}}] \leavevmode
2803*7f2fe78bSCy Schubert\sphinxAtStartPar
2804*7f2fe78bSCy SchubertEnabling this flag means that the KDC will issue tickets for
2805*7f2fe78bSCy Schubertthis principal.  Disabling this flag essentially deactivates
2806*7f2fe78bSCy Schubertthe principal within this realm.
2807*7f2fe78bSCy Schubert
2808*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{dup\sphinxhyphen{}skey}}] \leavevmode
2809*7f2fe78bSCy Schubert\sphinxAtStartPar
2810*7f2fe78bSCy SchubertEnabling this flag allows the KDC to issue user\sphinxhyphen{}to\sphinxhyphen{}user
2811*7f2fe78bSCy Schubertservice tickets for this principal.
2812*7f2fe78bSCy Schubert
2813*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{forwardable}}] \leavevmode
2814*7f2fe78bSCy Schubert\sphinxAtStartPar
2815*7f2fe78bSCy SchubertEnabling this flag allows the principal to obtain forwardable
2816*7f2fe78bSCy Schuberttickets.
2817*7f2fe78bSCy Schubert
2818*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{hwauth}}] \leavevmode
2819*7f2fe78bSCy Schubert\sphinxAtStartPar
2820*7f2fe78bSCy SchubertIf this flag is enabled, then the principal is required to
2821*7f2fe78bSCy Schubertpreauthenticate using a hardware device before receiving any
2822*7f2fe78bSCy Schuberttickets.
2823*7f2fe78bSCy Schubert
2824*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{no\sphinxhyphen{}auth\sphinxhyphen{}data\sphinxhyphen{}required}}] \leavevmode
2825*7f2fe78bSCy Schubert\sphinxAtStartPar
2826*7f2fe78bSCy SchubertEnabling this flag prevents PAC or AD\sphinxhyphen{}SIGNEDPATH data from
2827*7f2fe78bSCy Schubertbeing added to service tickets for the principal.
2828*7f2fe78bSCy Schubert
2829*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ok\sphinxhyphen{}as\sphinxhyphen{}delegate}}] \leavevmode
2830*7f2fe78bSCy Schubert\sphinxAtStartPar
2831*7f2fe78bSCy SchubertIf this flag is enabled, it hints the client that credentials
2832*7f2fe78bSCy Schubertcan and should be delegated when authenticating to the
2833*7f2fe78bSCy Schubertservice.
2834*7f2fe78bSCy Schubert
2835*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ok\sphinxhyphen{}to\sphinxhyphen{}auth\sphinxhyphen{}as\sphinxhyphen{}delegate}}] \leavevmode
2836*7f2fe78bSCy Schubert\sphinxAtStartPar
2837*7f2fe78bSCy SchubertEnabling this flag allows the principal to use S4USelf tickets.
2838*7f2fe78bSCy Schubert
2839*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{postdateable}}] \leavevmode
2840*7f2fe78bSCy Schubert\sphinxAtStartPar
2841*7f2fe78bSCy SchubertEnabling this flag allows the principal to obtain postdateable
2842*7f2fe78bSCy Schuberttickets.
2843*7f2fe78bSCy Schubert
2844*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{preauth}}] \leavevmode
2845*7f2fe78bSCy Schubert\sphinxAtStartPar
2846*7f2fe78bSCy SchubertIf this flag is enabled on a client principal, then that
2847*7f2fe78bSCy Schubertprincipal is required to preauthenticate to the KDC before
2848*7f2fe78bSCy Schubertreceiving any tickets.  On a service principal, enabling this
2849*7f2fe78bSCy Schubertflag means that service tickets for this principal will only
2850*7f2fe78bSCy Schubertbe issued to clients with a TGT that has the preauthenticated
2851*7f2fe78bSCy Schubertbit set.
2852*7f2fe78bSCy Schubert
2853*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{proxiable}}] \leavevmode
2854*7f2fe78bSCy Schubert\sphinxAtStartPar
2855*7f2fe78bSCy SchubertEnabling this flag allows the principal to obtain proxy
2856*7f2fe78bSCy Schuberttickets.
2857*7f2fe78bSCy Schubert
2858*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pwchange}}] \leavevmode
2859*7f2fe78bSCy Schubert\sphinxAtStartPar
2860*7f2fe78bSCy SchubertEnabling this flag forces a password change for this
2861*7f2fe78bSCy Schubertprincipal.
2862*7f2fe78bSCy Schubert
2863*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pwservice}}] \leavevmode
2864*7f2fe78bSCy Schubert\sphinxAtStartPar
2865*7f2fe78bSCy SchubertIf this flag is enabled, it marks this principal as a password
2866*7f2fe78bSCy Schubertchange service.  This should only be used in special cases,
2867*7f2fe78bSCy Schubertfor example, if a user’s password has expired, then the user
2868*7f2fe78bSCy Schuberthas to get tickets for that principal without going through
2869*7f2fe78bSCy Schubertthe normal password authentication in order to be able to
2870*7f2fe78bSCy Schubertchange the password.
2871*7f2fe78bSCy Schubert
2872*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{renewable}}] \leavevmode
2873*7f2fe78bSCy Schubert\sphinxAtStartPar
2874*7f2fe78bSCy SchubertEnabling this flag allows the principal to obtain renewable
2875*7f2fe78bSCy Schuberttickets.
2876*7f2fe78bSCy Schubert
2877*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{service}}] \leavevmode
2878*7f2fe78bSCy Schubert\sphinxAtStartPar
2879*7f2fe78bSCy SchubertEnabling this flag allows the the KDC to issue service tickets
2880*7f2fe78bSCy Schubertfor this principal.  In release 1.17 and later, user\sphinxhyphen{}to\sphinxhyphen{}user
2881*7f2fe78bSCy Schubertservice tickets are still allowed if the \sphinxstylestrong{dup\sphinxhyphen{}skey} flag is
2882*7f2fe78bSCy Schubertset.
2883*7f2fe78bSCy Schubert
2884*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{tgt\sphinxhyphen{}based}}] \leavevmode
2885*7f2fe78bSCy Schubert\sphinxAtStartPar
2886*7f2fe78bSCy SchubertEnabling this flag allows a principal to obtain tickets based
2887*7f2fe78bSCy Schuberton a ticket\sphinxhyphen{}granting\sphinxhyphen{}ticket, rather than repeating the
2888*7f2fe78bSCy Schubertauthentication process that was used to obtain the TGT.
2889*7f2fe78bSCy Schubert
2890*7f2fe78bSCy Schubert\end{description}
2891*7f2fe78bSCy Schubert
2892*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{dict\_file}}] \leavevmode
2893*7f2fe78bSCy Schubert\sphinxAtStartPar
2894*7f2fe78bSCy Schubert(String.)  Location of the dictionary file containing strings that
2895*7f2fe78bSCy Schubertare not allowed as passwords.  The file should contain one string
2896*7f2fe78bSCy Schubertper line, with no additional whitespace.  If none is specified or
2897*7f2fe78bSCy Schubertif there is no policy assigned to the principal, no dictionary
2898*7f2fe78bSCy Schubertchecks of passwords will be performed.
2899*7f2fe78bSCy Schubert
2900*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{disable\_pac}}] \leavevmode
2901*7f2fe78bSCy Schubert\sphinxAtStartPar
2902*7f2fe78bSCy Schubert(Boolean value.)  If true, the KDC will not issue PACs for this
2903*7f2fe78bSCy Schubertrealm, and S4U2Self and S4U2Proxy operations will be disabled.
2904*7f2fe78bSCy SchubertThe default is false, which will permit the KDC to issue PACs.
2905*7f2fe78bSCy SchubertNew in release 1.20.
2906*7f2fe78bSCy Schubert
2907*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{encrypted\_challenge\_indicator}}] \leavevmode
2908*7f2fe78bSCy Schubert\sphinxAtStartPar
2909*7f2fe78bSCy Schubert(String.)  Specifies the authentication indicator value that the KDC
2910*7f2fe78bSCy Schubertasserts into tickets obtained using FAST encrypted challenge
2911*7f2fe78bSCy Schubertpre\sphinxhyphen{}authentication.  New in 1.16.
2912*7f2fe78bSCy Schubert
2913*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{host\_based\_services}}] \leavevmode
2914*7f2fe78bSCy Schubert\sphinxAtStartPar
2915*7f2fe78bSCy Schubert(Whitespace\sphinxhyphen{} or comma\sphinxhyphen{}separated list.)  Lists services which will
2916*7f2fe78bSCy Schubertget host\sphinxhyphen{}based referral processing even if the server principal is
2917*7f2fe78bSCy Schubertnot marked as host\sphinxhyphen{}based by the client.
2918*7f2fe78bSCy Schubert
2919*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_enable}}] \leavevmode
2920*7f2fe78bSCy Schubert\sphinxAtStartPar
2921*7f2fe78bSCy Schubert(Boolean value.)  Specifies whether incremental database
2922*7f2fe78bSCy Schubertpropagation is enabled.  The default value is false.
2923*7f2fe78bSCy Schubert
2924*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_ulogsize}}] \leavevmode
2925*7f2fe78bSCy Schubert\sphinxAtStartPar
2926*7f2fe78bSCy Schubert(Integer.)  Specifies the maximum number of log entries to be
2927*7f2fe78bSCy Schubertretained for incremental propagation.  The default value is 1000.
2928*7f2fe78bSCy SchubertPrior to release 1.11, the maximum value was 2500.  New in release
2929*7f2fe78bSCy Schubert1.19.
2930*7f2fe78bSCy Schubert
2931*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_master\_ulogsize}}] \leavevmode
2932*7f2fe78bSCy Schubert\sphinxAtStartPar
2933*7f2fe78bSCy SchubertThe name for \sphinxstylestrong{iprop\_ulogsize} prior to release 1.19.  Its value is
2934*7f2fe78bSCy Schubertused as a fallback if \sphinxstylestrong{iprop\_ulogsize} is not specified.
2935*7f2fe78bSCy Schubert
2936*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_replica\_poll}}] \leavevmode
2937*7f2fe78bSCy Schubert\sphinxAtStartPar
2938*7f2fe78bSCy Schubert(Delta time string.)  Specifies how often the replica KDC polls
2939*7f2fe78bSCy Schubertfor new updates from the primary.  The default value is \sphinxcode{\sphinxupquote{2m}}
2940*7f2fe78bSCy Schubert(that is, two minutes).  New in release 1.17.
2941*7f2fe78bSCy Schubert
2942*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_slave\_poll}}] \leavevmode
2943*7f2fe78bSCy Schubert\sphinxAtStartPar
2944*7f2fe78bSCy Schubert(Delta time string.)  The name for \sphinxstylestrong{iprop\_replica\_poll} prior to
2945*7f2fe78bSCy Schubertrelease 1.17.  Its value is used as a fallback if
2946*7f2fe78bSCy Schubert\sphinxstylestrong{iprop\_replica\_poll} is not specified.
2947*7f2fe78bSCy Schubert
2948*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_listen}}] \leavevmode
2949*7f2fe78bSCy Schubert\sphinxAtStartPar
2950*7f2fe78bSCy Schubert(Whitespace\sphinxhyphen{} or comma\sphinxhyphen{}separated list.)  Specifies the iprop RPC
2951*7f2fe78bSCy Schubertlistening addresses and/or ports for the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemon.
2952*7f2fe78bSCy SchubertEach entry may be an interface address, a port number, or an
2953*7f2fe78bSCy Schubertaddress and port number separated by a colon.  If the address
2954*7f2fe78bSCy Schubertcontains colons, enclose it in square brackets.  If no address is
2955*7f2fe78bSCy Schubertspecified, the wildcard address is used.  If kadmind fails to bind
2956*7f2fe78bSCy Schubertto any of the specified addresses, it will fail to start.  The
2957*7f2fe78bSCy Schubertdefault (when \sphinxstylestrong{iprop\_enable} is true) is to bind to the wildcard
2958*7f2fe78bSCy Schubertaddress at the port specified in \sphinxstylestrong{iprop\_port}.  New in release
2959*7f2fe78bSCy Schubert1.15.
2960*7f2fe78bSCy Schubert
2961*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_port}}] \leavevmode
2962*7f2fe78bSCy Schubert\sphinxAtStartPar
2963*7f2fe78bSCy Schubert(Port number.)  Specifies the port number to be used for
2964*7f2fe78bSCy Schubertincremental propagation.  When \sphinxstylestrong{iprop\_enable} is true, this
2965*7f2fe78bSCy Schubertrelation is required in the replica KDC configuration file, and
2966*7f2fe78bSCy Schubertthis relation or \sphinxstylestrong{iprop\_listen} is required in the primary
2967*7f2fe78bSCy Schubertconfiguration file, as there is no default port number.  Port
2968*7f2fe78bSCy Schubertnumbers specified in \sphinxstylestrong{iprop\_listen} entries will override this
2969*7f2fe78bSCy Schubertport number for the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemon.
2970*7f2fe78bSCy Schubert
2971*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_resync\_timeout}}] \leavevmode
2972*7f2fe78bSCy Schubert\sphinxAtStartPar
2973*7f2fe78bSCy Schubert(Delta time string.)  Specifies the amount of time to wait for a
2974*7f2fe78bSCy Schubertfull propagation to complete.  This is optional in configuration
2975*7f2fe78bSCy Schubertfiles, and is used by replica KDCs only.  The default value is 5
2976*7f2fe78bSCy Schubertminutes (\sphinxcode{\sphinxupquote{5m}}).  New in release 1.11.
2977*7f2fe78bSCy Schubert
2978*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{iprop\_logfile}}] \leavevmode
2979*7f2fe78bSCy Schubert\sphinxAtStartPar
2980*7f2fe78bSCy Schubert(File name.)  Specifies where the update log file for the realm
2981*7f2fe78bSCy Schubertdatabase is to be stored.  The default is to use the
2982*7f2fe78bSCy Schubert\sphinxstylestrong{database\_name} entry from the realms section of the krb5 config
2983*7f2fe78bSCy Schubertfile, with \sphinxcode{\sphinxupquote{.ulog}} appended.  (NOTE: If \sphinxstylestrong{database\_name} isn’t
2984*7f2fe78bSCy Schubertspecified in the realms section, perhaps because the LDAP database
2985*7f2fe78bSCy Schubertback end is being used, or the file name is specified in the
2986*7f2fe78bSCy Schubert{[}dbmodules{]} section, then the hard\sphinxhyphen{}coded default for
2987*7f2fe78bSCy Schubert\sphinxstylestrong{database\_name} is used.  Determination of the \sphinxstylestrong{iprop\_logfile}
2988*7f2fe78bSCy Schubertdefault value will not use values from the {[}dbmodules{]} section.)
2989*7f2fe78bSCy Schubert
2990*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kadmind\_listen}}] \leavevmode
2991*7f2fe78bSCy Schubert\sphinxAtStartPar
2992*7f2fe78bSCy Schubert(Whitespace\sphinxhyphen{} or comma\sphinxhyphen{}separated list.)  Specifies the kadmin RPC
2993*7f2fe78bSCy Schubertlistening addresses and/or ports for the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemon.
2994*7f2fe78bSCy SchubertEach entry may be an interface address, a port number, or an
2995*7f2fe78bSCy Schubertaddress and port number separated by a colon.  If the address
2996*7f2fe78bSCy Schubertcontains colons, enclose it in square brackets.  If no address is
2997*7f2fe78bSCy Schubertspecified, the wildcard address is used.  If kadmind fails to bind
2998*7f2fe78bSCy Schubertto any of the specified addresses, it will fail to start.  The
2999*7f2fe78bSCy Schubertdefault is to bind to the wildcard address at the port specified
3000*7f2fe78bSCy Schubertin \sphinxstylestrong{kadmind\_port}, or the standard kadmin port (749).  New in
3001*7f2fe78bSCy Schubertrelease 1.15.
3002*7f2fe78bSCy Schubert
3003*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kadmind\_port}}] \leavevmode
3004*7f2fe78bSCy Schubert\sphinxAtStartPar
3005*7f2fe78bSCy Schubert(Port number.)  Specifies the port on which the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}}
3006*7f2fe78bSCy Schubertdaemon is to listen for this realm.  Port numbers specified in
3007*7f2fe78bSCy Schubert\sphinxstylestrong{kadmind\_listen} entries will override this port number.  The
3008*7f2fe78bSCy Schubertassigned port for kadmind is 749, which is used by default.
3009*7f2fe78bSCy Schubert
3010*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{key\_stash\_file}}] \leavevmode
3011*7f2fe78bSCy Schubert\sphinxAtStartPar
3012*7f2fe78bSCy Schubert(String.)  Specifies the location where the master key has been
3013*7f2fe78bSCy Schubertstored (via kdb5\_util stash).  The default is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/.k5.REALM}}, where \sphinxstyleemphasis{REALM} is the Kerberos realm.
3014*7f2fe78bSCy Schubert
3015*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc\_listen}}] \leavevmode
3016*7f2fe78bSCy Schubert\sphinxAtStartPar
3017*7f2fe78bSCy Schubert(Whitespace\sphinxhyphen{} or comma\sphinxhyphen{}separated list.)  Specifies the UDP
3018*7f2fe78bSCy Schubertlistening addresses and/or ports for the {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} daemon.
3019*7f2fe78bSCy SchubertEach entry may be an interface address, a port number, or an
3020*7f2fe78bSCy Schubertaddress and port number separated by a colon.  If the address
3021*7f2fe78bSCy Schubertcontains colons, enclose it in square brackets.  If no address is
3022*7f2fe78bSCy Schubertspecified, the wildcard address is used.  If no port is specified,
3023*7f2fe78bSCy Schubertthe standard port (88) is used.  If the KDC daemon fails to bind
3024*7f2fe78bSCy Schubertto any of the specified addresses, it will fail to start.  The
3025*7f2fe78bSCy Schubertdefault is to bind to the wildcard address on the standard port.
3026*7f2fe78bSCy SchubertNew in release 1.15.
3027*7f2fe78bSCy Schubert
3028*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc\_ports}}] \leavevmode
3029*7f2fe78bSCy Schubert\sphinxAtStartPar
3030*7f2fe78bSCy Schubert(Whitespace\sphinxhyphen{} or comma\sphinxhyphen{}separated list, deprecated.)  Prior to
3031*7f2fe78bSCy Schubertrelease 1.15, this relation lists the ports for the
3032*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} daemon to listen on for UDP requests.  In
3033*7f2fe78bSCy Schubertrelease 1.15 and later, it has the same meaning as \sphinxstylestrong{kdc\_listen}
3034*7f2fe78bSCy Schubertif that relation is not defined.
3035*7f2fe78bSCy Schubert
3036*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc\_tcp\_listen}}] \leavevmode
3037*7f2fe78bSCy Schubert\sphinxAtStartPar
3038*7f2fe78bSCy Schubert(Whitespace\sphinxhyphen{} or comma\sphinxhyphen{}separated list.)  Specifies the TCP
3039*7f2fe78bSCy Schubertlistening addresses and/or ports for the {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} daemon.
3040*7f2fe78bSCy SchubertEach entry may be an interface address, a port number, or an
3041*7f2fe78bSCy Schubertaddress and port number separated by a colon.  If the address
3042*7f2fe78bSCy Schubertcontains colons, enclose it in square brackets.  If no address is
3043*7f2fe78bSCy Schubertspecified, the wildcard address is used.  If no port is specified,
3044*7f2fe78bSCy Schubertthe standard port (88) is used.  To disable listening on TCP, set
3045*7f2fe78bSCy Schubertthis relation to the empty string with \sphinxcode{\sphinxupquote{kdc\_tcp\_listen = ""}}.
3046*7f2fe78bSCy SchubertIf the KDC daemon fails to bind to any of the specified addresses,
3047*7f2fe78bSCy Schubertit will fail to start.  The default is to bind to the wildcard
3048*7f2fe78bSCy Schubertaddress on the standard port.  New in release 1.15.
3049*7f2fe78bSCy Schubert
3050*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc\_tcp\_ports}}] \leavevmode
3051*7f2fe78bSCy Schubert\sphinxAtStartPar
3052*7f2fe78bSCy Schubert(Whitespace\sphinxhyphen{} or comma\sphinxhyphen{}separated list, deprecated.)  Prior to
3053*7f2fe78bSCy Schubertrelease 1.15, this relation lists the ports for the
3054*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} daemon to listen on for UDP requests.  In
3055*7f2fe78bSCy Schubertrelease 1.15 and later, it has the same meaning as
3056*7f2fe78bSCy Schubert\sphinxstylestrong{kdc\_tcp\_listen} if that relation is not defined.
3057*7f2fe78bSCy Schubert
3058*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kpasswd\_listen}}] \leavevmode
3059*7f2fe78bSCy Schubert\sphinxAtStartPar
3060*7f2fe78bSCy Schubert(Comma\sphinxhyphen{}separated list.)  Specifies the kpasswd listening addresses
3061*7f2fe78bSCy Schubertand/or ports for the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemon.  Each entry may be
3062*7f2fe78bSCy Schubertan interface address, a port number, or an address and port number
3063*7f2fe78bSCy Schubertseparated by a colon.  If the address contains colons, enclose it
3064*7f2fe78bSCy Schubertin square brackets.  If no address is specified, the wildcard
3065*7f2fe78bSCy Schubertaddress is used.  If kadmind fails to bind to any of the specified
3066*7f2fe78bSCy Schubertaddresses, it will fail to start.  The default is to bind to the
3067*7f2fe78bSCy Schubertwildcard address at the port specified in \sphinxstylestrong{kpasswd\_port}, or the
3068*7f2fe78bSCy Schubertstandard kpasswd port (464).  New in release 1.15.
3069*7f2fe78bSCy Schubert
3070*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kpasswd\_port}}] \leavevmode
3071*7f2fe78bSCy Schubert\sphinxAtStartPar
3072*7f2fe78bSCy Schubert(Port number.)  Specifies the port on which the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}}
3073*7f2fe78bSCy Schubertdaemon is to listen for password change requests for this realm.
3074*7f2fe78bSCy SchubertPort numbers specified in \sphinxstylestrong{kpasswd\_listen} entries will override
3075*7f2fe78bSCy Schubertthis port number.  The assigned port for password change requests
3076*7f2fe78bSCy Schubertis 464, which is used by default.
3077*7f2fe78bSCy Schubert
3078*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{master\_key\_name}}] \leavevmode
3079*7f2fe78bSCy Schubert\sphinxAtStartPar
3080*7f2fe78bSCy Schubert(String.)  Specifies the name of the principal associated with the
3081*7f2fe78bSCy Schubertmaster key.  The default is \sphinxcode{\sphinxupquote{K/M}}.
3082*7f2fe78bSCy Schubert
3083*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{master\_key\_type}}] \leavevmode
3084*7f2fe78bSCy Schubert\sphinxAtStartPar
3085*7f2fe78bSCy Schubert(Key type string.)  Specifies the master key’s key type.  The
3086*7f2fe78bSCy Schubertdefault value for this is \sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96}}.  For a list of all possible
3087*7f2fe78bSCy Schubertvalues, see {\hyperref[\detokenize{admin/conf_files/kdc_conf:encryption-types}]{\sphinxcrossref{\DUrole{std,std-ref}{Encryption types}}}}.
3088*7f2fe78bSCy Schubert
3089*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{max\_life}}] \leavevmode
3090*7f2fe78bSCy Schubert\sphinxAtStartPar
3091*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} string.)  Specifies the maximum time period for
3092*7f2fe78bSCy Schubertwhich a ticket may be valid in this realm.  The default value is
3093*7f2fe78bSCy Schubert24 hours.
3094*7f2fe78bSCy Schubert
3095*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{max\_renewable\_life}}] \leavevmode
3096*7f2fe78bSCy Schubert\sphinxAtStartPar
3097*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} string.)  Specifies the maximum time period
3098*7f2fe78bSCy Schubertduring which a valid ticket may be renewed in this realm.
3099*7f2fe78bSCy SchubertThe default value is 0.
3100*7f2fe78bSCy Schubert
3101*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{no\_host\_referral}}] \leavevmode
3102*7f2fe78bSCy Schubert\sphinxAtStartPar
3103*7f2fe78bSCy Schubert(Whitespace\sphinxhyphen{} or comma\sphinxhyphen{}separated list.)  Lists services to block
3104*7f2fe78bSCy Schubertfrom getting host\sphinxhyphen{}based referral processing, even if the client
3105*7f2fe78bSCy Schubertmarks the server principal as host\sphinxhyphen{}based or the service is also
3106*7f2fe78bSCy Schubertlisted in \sphinxstylestrong{host\_based\_services}.  \sphinxcode{\sphinxupquote{no\_host\_referral = *}} will
3107*7f2fe78bSCy Schubertdisable referral processing altogether.
3108*7f2fe78bSCy Schubert
3109*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{reject\_bad\_transit}}] \leavevmode
3110*7f2fe78bSCy Schubert\sphinxAtStartPar
3111*7f2fe78bSCy Schubert(Boolean value.)  If set to true, the KDC will check the list of
3112*7f2fe78bSCy Schuberttransited realms for cross\sphinxhyphen{}realm tickets against the transit path
3113*7f2fe78bSCy Schubertcomputed from the realm names and the capaths section of its
3114*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} file; if the path in the ticket to be issued
3115*7f2fe78bSCy Schubertcontains any realms not in the computed path, the ticket will not
3116*7f2fe78bSCy Schubertbe issued, and an error will be returned to the client instead.
3117*7f2fe78bSCy SchubertIf this value is set to false, such tickets will be issued
3118*7f2fe78bSCy Schubertanyways, and it will be left up to the application server to
3119*7f2fe78bSCy Schubertvalidate the realm transit path.
3120*7f2fe78bSCy Schubert
3121*7f2fe78bSCy Schubert\sphinxAtStartPar
3122*7f2fe78bSCy SchubertIf the disable\sphinxhyphen{}transited\sphinxhyphen{}check flag is set in the incoming
3123*7f2fe78bSCy Schubertrequest, this check is not performed at all.  Having the
3124*7f2fe78bSCy Schubert\sphinxstylestrong{reject\_bad\_transit} option will cause such ticket requests to
3125*7f2fe78bSCy Schubertbe rejected always.
3126*7f2fe78bSCy Schubert
3127*7f2fe78bSCy Schubert\sphinxAtStartPar
3128*7f2fe78bSCy SchubertThis transit path checking and config file option currently apply
3129*7f2fe78bSCy Schubertonly to TGS requests.
3130*7f2fe78bSCy Schubert
3131*7f2fe78bSCy Schubert\sphinxAtStartPar
3132*7f2fe78bSCy SchubertThe default value is true.
3133*7f2fe78bSCy Schubert
3134*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{restrict\_anonymous\_to\_tgt}}] \leavevmode
3135*7f2fe78bSCy Schubert\sphinxAtStartPar
3136*7f2fe78bSCy Schubert(Boolean value.)  If set to true, the KDC will reject ticket
3137*7f2fe78bSCy Schubertrequests from anonymous principals to service principals other
3138*7f2fe78bSCy Schubertthan the realm’s ticket\sphinxhyphen{}granting service.  This option allows
3139*7f2fe78bSCy Schubertanonymous PKINIT to be enabled for use as FAST armor tickets
3140*7f2fe78bSCy Schubertwithout allowing anonymous authentication to services.  The
3141*7f2fe78bSCy Schubertdefault value is false.  New in release 1.9.
3142*7f2fe78bSCy Schubert
3143*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{spake\_preauth\_indicator}}] \leavevmode
3144*7f2fe78bSCy Schubert\sphinxAtStartPar
3145*7f2fe78bSCy Schubert(String.)  Specifies an authentication indicator value that the
3146*7f2fe78bSCy SchubertKDC asserts into tickets obtained using SPAKE pre\sphinxhyphen{}authentication.
3147*7f2fe78bSCy SchubertThe default is not to add any indicators.  This option may be
3148*7f2fe78bSCy Schubertspecified multiple times.  New in release 1.17.
3149*7f2fe78bSCy Schubert
3150*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{supported\_enctypes}}] \leavevmode
3151*7f2fe78bSCy Schubert\sphinxAtStartPar
3152*7f2fe78bSCy Schubert(List of \sphinxstyleemphasis{key}:\sphinxstyleemphasis{salt} strings.)  Specifies the default key/salt
3153*7f2fe78bSCy Schubertcombinations of principals for this realm.  Any principals created
3154*7f2fe78bSCy Schubertthrough {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} will have keys of these types.  The
3155*7f2fe78bSCy Schubertdefault value for this tag is \sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96:normal aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96:normal}}.  For lists of
3156*7f2fe78bSCy Schubertpossible values, see {\hyperref[\detokenize{admin/conf_files/kdc_conf:keysalt-lists}]{\sphinxcrossref{\DUrole{std,std-ref}{Keysalt lists}}}}.
3157*7f2fe78bSCy Schubert
3158*7f2fe78bSCy Schubert\end{description}
3159*7f2fe78bSCy Schubert
3160*7f2fe78bSCy Schubert
3161*7f2fe78bSCy Schubert\paragraph{{[}dbdefaults{]}}
3162*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:dbdefaults}}\label{\detokenize{admin/conf_files/kdc_conf:id2}}
3163*7f2fe78bSCy Schubert\sphinxAtStartPar
3164*7f2fe78bSCy SchubertThe {[}dbdefaults{]} section specifies default values for some database
3165*7f2fe78bSCy Schubertparameters, to be used if the {[}dbmodules{]} subsection does not contain
3166*7f2fe78bSCy Schuberta relation for the tag.  See the {\hyperref[\detokenize{admin/conf_files/kdc_conf:dbmodules}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbmodules{]}}}}} section for the
3167*7f2fe78bSCy Schubertdefinitions of these relations.
3168*7f2fe78bSCy Schubert\begin{itemize}
3169*7f2fe78bSCy Schubert\item {}
3170*7f2fe78bSCy Schubert\sphinxAtStartPar
3171*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kerberos\_container\_dn}
3172*7f2fe78bSCy Schubert
3173*7f2fe78bSCy Schubert\item {}
3174*7f2fe78bSCy Schubert\sphinxAtStartPar
3175*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_dn}
3176*7f2fe78bSCy Schubert
3177*7f2fe78bSCy Schubert\item {}
3178*7f2fe78bSCy Schubert\sphinxAtStartPar
3179*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_sasl\_authcid}
3180*7f2fe78bSCy Schubert
3181*7f2fe78bSCy Schubert\item {}
3182*7f2fe78bSCy Schubert\sphinxAtStartPar
3183*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_sasl\_authzid}
3184*7f2fe78bSCy Schubert
3185*7f2fe78bSCy Schubert\item {}
3186*7f2fe78bSCy Schubert\sphinxAtStartPar
3187*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_sasl\_mech}
3188*7f2fe78bSCy Schubert
3189*7f2fe78bSCy Schubert\item {}
3190*7f2fe78bSCy Schubert\sphinxAtStartPar
3191*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_sasl\_realm}
3192*7f2fe78bSCy Schubert
3193*7f2fe78bSCy Schubert\item {}
3194*7f2fe78bSCy Schubert\sphinxAtStartPar
3195*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kadmind\_dn}
3196*7f2fe78bSCy Schubert
3197*7f2fe78bSCy Schubert\item {}
3198*7f2fe78bSCy Schubert\sphinxAtStartPar
3199*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kadmind\_sasl\_authcid}
3200*7f2fe78bSCy Schubert
3201*7f2fe78bSCy Schubert\item {}
3202*7f2fe78bSCy Schubert\sphinxAtStartPar
3203*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kadmind\_sasl\_authzid}
3204*7f2fe78bSCy Schubert
3205*7f2fe78bSCy Schubert\item {}
3206*7f2fe78bSCy Schubert\sphinxAtStartPar
3207*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kadmind\_sasl\_mech}
3208*7f2fe78bSCy Schubert
3209*7f2fe78bSCy Schubert\item {}
3210*7f2fe78bSCy Schubert\sphinxAtStartPar
3211*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kadmind\_sasl\_realm}
3212*7f2fe78bSCy Schubert
3213*7f2fe78bSCy Schubert\item {}
3214*7f2fe78bSCy Schubert\sphinxAtStartPar
3215*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_service\_password\_file}
3216*7f2fe78bSCy Schubert
3217*7f2fe78bSCy Schubert\item {}
3218*7f2fe78bSCy Schubert\sphinxAtStartPar
3219*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_conns\_per\_server}
3220*7f2fe78bSCy Schubert
3221*7f2fe78bSCy Schubert\end{itemize}
3222*7f2fe78bSCy Schubert
3223*7f2fe78bSCy Schubert
3224*7f2fe78bSCy Schubert\paragraph{{[}dbmodules{]}}
3225*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:dbmodules}}\label{\detokenize{admin/conf_files/kdc_conf:id3}}
3226*7f2fe78bSCy Schubert\sphinxAtStartPar
3227*7f2fe78bSCy SchubertThe {[}dbmodules{]} section contains parameters used by the KDC database
3228*7f2fe78bSCy Schubertlibrary and database modules.  Each tag in the {[}dbmodules{]} section is
3229*7f2fe78bSCy Schubertthe name of a Kerberos realm or a section name specified by a realm’s
3230*7f2fe78bSCy Schubert\sphinxstylestrong{database\_module} parameter.  The following example shows how to
3231*7f2fe78bSCy Schubertdefine one database parameter for the ATHENA.MIT.EDU realm:
3232*7f2fe78bSCy Schubert
3233*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3234*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{dbmodules}\PYG{p}{]}
3235*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
3236*7f2fe78bSCy Schubert        \PYG{n}{disable\PYGZus{}last\PYGZus{}success} \PYG{o}{=} \PYG{n}{true}
3237*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
3238*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3239*7f2fe78bSCy Schubert
3240*7f2fe78bSCy Schubert\sphinxAtStartPar
3241*7f2fe78bSCy SchubertThe following tags may be specified in a {[}dbmodules{]} subsection:
3242*7f2fe78bSCy Schubert\begin{description}
3243*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{database\_name}}] \leavevmode
3244*7f2fe78bSCy Schubert\sphinxAtStartPar
3245*7f2fe78bSCy SchubertThis DB2\sphinxhyphen{}specific tag indicates the location of the database in
3246*7f2fe78bSCy Schubertthe filesystem.  The default is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/principal}}.
3247*7f2fe78bSCy Schubert
3248*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{db\_library}}] \leavevmode
3249*7f2fe78bSCy Schubert\sphinxAtStartPar
3250*7f2fe78bSCy SchubertThis tag indicates the name of the loadable database module.  The
3251*7f2fe78bSCy Schubertvalue should be \sphinxcode{\sphinxupquote{db2}} for the DB2 module, \sphinxcode{\sphinxupquote{klmdb}} for the LMDB
3252*7f2fe78bSCy Schubertmodule, or \sphinxcode{\sphinxupquote{kldap}} for the LDAP module.
3253*7f2fe78bSCy Schubert
3254*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{disable\_last\_success}}] \leavevmode
3255*7f2fe78bSCy Schubert\sphinxAtStartPar
3256*7f2fe78bSCy SchubertIf set to \sphinxcode{\sphinxupquote{true}}, suppresses KDC updates to the “Last successful
3257*7f2fe78bSCy Schubertauthentication” field of principal entries requiring
3258*7f2fe78bSCy Schubertpreauthentication.  Setting this flag may improve performance.
3259*7f2fe78bSCy Schubert(Principal entries which do not require preauthentication never
3260*7f2fe78bSCy Schubertupdate the “Last successful authentication” field.).  First
3261*7f2fe78bSCy Schubertintroduced in release 1.9.
3262*7f2fe78bSCy Schubert
3263*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{disable\_lockout}}] \leavevmode
3264*7f2fe78bSCy Schubert\sphinxAtStartPar
3265*7f2fe78bSCy SchubertIf set to \sphinxcode{\sphinxupquote{true}}, suppresses KDC updates to the “Last failed
3266*7f2fe78bSCy Schubertauthentication” and “Failed password attempts” fields of principal
3267*7f2fe78bSCy Schubertentries requiring preauthentication.  Setting this flag may
3268*7f2fe78bSCy Schubertimprove performance, but also disables account lockout.  First
3269*7f2fe78bSCy Schubertintroduced in release 1.9.
3270*7f2fe78bSCy Schubert
3271*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_conns\_per\_server}}] \leavevmode
3272*7f2fe78bSCy Schubert\sphinxAtStartPar
3273*7f2fe78bSCy SchubertThis LDAP\sphinxhyphen{}specific tag indicates the number of connections to be
3274*7f2fe78bSCy Schubertmaintained per LDAP server.
3275*7f2fe78bSCy Schubert
3276*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_kdc\_dn} and \sphinxstylestrong{ldap\_kadmind\_dn}}] \leavevmode
3277*7f2fe78bSCy Schubert\sphinxAtStartPar
3278*7f2fe78bSCy SchubertThese LDAP\sphinxhyphen{}specific tags indicate the default DN for binding to
3279*7f2fe78bSCy Schubertthe LDAP server.  The {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} daemon uses
3280*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_dn}, while the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemon and other
3281*7f2fe78bSCy Schubertadministrative programs use \sphinxstylestrong{ldap\_kadmind\_dn}.  The kadmind DN
3282*7f2fe78bSCy Schubertmust have the rights to read and write the Kerberos data in the
3283*7f2fe78bSCy SchubertLDAP database.  The KDC DN must have the same rights, unless
3284*7f2fe78bSCy Schubert\sphinxstylestrong{disable\_lockout} and \sphinxstylestrong{disable\_last\_success} are true, in
3285*7f2fe78bSCy Schubertwhich case it only needs to have rights to read the Kerberos data.
3286*7f2fe78bSCy SchubertThese tags are ignored if a SASL mechanism is set with
3287*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_sasl\_mech} or \sphinxstylestrong{ldap\_kadmind\_sasl\_mech}.
3288*7f2fe78bSCy Schubert
3289*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_kdc\_sasl\_mech} and \sphinxstylestrong{ldap\_kadmind\_sasl\_mech}}] \leavevmode
3290*7f2fe78bSCy Schubert\sphinxAtStartPar
3291*7f2fe78bSCy SchubertThese LDAP\sphinxhyphen{}specific tags specify the SASL mechanism (such as
3292*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{EXTERNAL}}) to use when binding to the LDAP server.  New in
3293*7f2fe78bSCy Schubertrelease 1.13.
3294*7f2fe78bSCy Schubert
3295*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_kdc\_sasl\_authcid} and \sphinxstylestrong{ldap\_kadmind\_sasl\_authcid}}] \leavevmode
3296*7f2fe78bSCy Schubert\sphinxAtStartPar
3297*7f2fe78bSCy SchubertThese LDAP\sphinxhyphen{}specific tags specify the SASL authentication identity
3298*7f2fe78bSCy Schubertto use when binding to the LDAP server.  Not all SASL mechanisms
3299*7f2fe78bSCy Schubertrequire an authentication identity.  If the SASL mechanism
3300*7f2fe78bSCy Schubertrequires a secret (such as the password for \sphinxcode{\sphinxupquote{DIGEST\sphinxhyphen{}MD5}}), these
3301*7f2fe78bSCy Schuberttags also determine the name within the
3302*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_service\_password\_file} where the secret is stashed.  New
3303*7f2fe78bSCy Schubertin release 1.13.
3304*7f2fe78bSCy Schubert
3305*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_kdc\_sasl\_authzid} and \sphinxstylestrong{ldap\_kadmind\_sasl\_authzid}}] \leavevmode
3306*7f2fe78bSCy Schubert\sphinxAtStartPar
3307*7f2fe78bSCy SchubertThese LDAP\sphinxhyphen{}specific tags specify the SASL authorization identity
3308*7f2fe78bSCy Schubertto use when binding to the LDAP server.  In most circumstances
3309*7f2fe78bSCy Schubertthey do not need to be specified.  New in release 1.13.
3310*7f2fe78bSCy Schubert
3311*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_kdc\_sasl\_realm} and \sphinxstylestrong{ldap\_kadmind\_sasl\_realm}}] \leavevmode
3312*7f2fe78bSCy Schubert\sphinxAtStartPar
3313*7f2fe78bSCy SchubertThese LDAP\sphinxhyphen{}specific tags specify the SASL realm to use when
3314*7f2fe78bSCy Schubertbinding to the LDAP server.  In most circumstances they do not
3315*7f2fe78bSCy Schubertneed to be set.  New in release 1.13.
3316*7f2fe78bSCy Schubert
3317*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_kerberos\_container\_dn}}] \leavevmode
3318*7f2fe78bSCy Schubert\sphinxAtStartPar
3319*7f2fe78bSCy SchubertThis LDAP\sphinxhyphen{}specific tag indicates the DN of the container object
3320*7f2fe78bSCy Schubertwhere the realm objects will be located.
3321*7f2fe78bSCy Schubert
3322*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_servers}}] \leavevmode
3323*7f2fe78bSCy Schubert\sphinxAtStartPar
3324*7f2fe78bSCy SchubertThis LDAP\sphinxhyphen{}specific tag indicates the list of LDAP servers that the
3325*7f2fe78bSCy SchubertKerberos servers can connect to.  The list of LDAP servers is
3326*7f2fe78bSCy Schubertwhitespace\sphinxhyphen{}separated.  The LDAP server is specified by a LDAP URI.
3327*7f2fe78bSCy SchubertIt is recommended to use \sphinxcode{\sphinxupquote{ldapi:}} or \sphinxcode{\sphinxupquote{ldaps:}} URLs to connect
3328*7f2fe78bSCy Schubertto the LDAP server.
3329*7f2fe78bSCy Schubert
3330*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{ldap\_service\_password\_file}}] \leavevmode
3331*7f2fe78bSCy Schubert\sphinxAtStartPar
3332*7f2fe78bSCy SchubertThis LDAP\sphinxhyphen{}specific tag indicates the file containing the stashed
3333*7f2fe78bSCy Schubertpasswords (created by \sphinxcode{\sphinxupquote{kdb5\_ldap\_util stashsrvpw}}) for the
3334*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_dn} and \sphinxstylestrong{ldap\_kadmind\_dn} objects, or for the
3335*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kdc\_sasl\_authcid} or \sphinxstylestrong{ldap\_kadmind\_sasl\_authcid} names
3336*7f2fe78bSCy Schubertfor SASL authentication.  This file must be kept secure.
3337*7f2fe78bSCy Schubert
3338*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{mapsize}}] \leavevmode
3339*7f2fe78bSCy Schubert\sphinxAtStartPar
3340*7f2fe78bSCy SchubertThis LMDB\sphinxhyphen{}specific tag indicates the maximum size of the two
3341*7f2fe78bSCy Schubertdatabase environments in megabytes.  The default value is 128.
3342*7f2fe78bSCy SchubertIncrease this value to address “Environment mapsize limit reached”
3343*7f2fe78bSCy Schuberterrors.  New in release 1.17.
3344*7f2fe78bSCy Schubert
3345*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{max\_readers}}] \leavevmode
3346*7f2fe78bSCy Schubert\sphinxAtStartPar
3347*7f2fe78bSCy SchubertThis LMDB\sphinxhyphen{}specific tag indicates the maximum number of concurrent
3348*7f2fe78bSCy Schubertreading processes for the databases.  The default value is 128.
3349*7f2fe78bSCy SchubertNew in release 1.17.
3350*7f2fe78bSCy Schubert
3351*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{nosync}}] \leavevmode
3352*7f2fe78bSCy Schubert\sphinxAtStartPar
3353*7f2fe78bSCy SchubertThis LMDB\sphinxhyphen{}specific tag can be set to improve the throughput of
3354*7f2fe78bSCy Schubertkadmind and other administrative agents, at the expense of
3355*7f2fe78bSCy Schubertdurability (recent database changes may not survive a power outage
3356*7f2fe78bSCy Schubertor other sudden reboot).  It does not affect the throughput of the
3357*7f2fe78bSCy SchubertKDC.  The default value is false.  New in release 1.17.
3358*7f2fe78bSCy Schubert
3359*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{unlockiter}}] \leavevmode
3360*7f2fe78bSCy Schubert\sphinxAtStartPar
3361*7f2fe78bSCy SchubertIf set to \sphinxcode{\sphinxupquote{true}}, this DB2\sphinxhyphen{}specific tag causes iteration
3362*7f2fe78bSCy Schubertoperations to release the database lock while processing each
3363*7f2fe78bSCy Schubertprincipal.  Setting this flag to \sphinxcode{\sphinxupquote{true}} can prevent extended
3364*7f2fe78bSCy Schubertblocking of KDC or kadmin operations when dumps of large databases
3365*7f2fe78bSCy Schubertare in progress.  First introduced in release 1.13.
3366*7f2fe78bSCy Schubert
3367*7f2fe78bSCy Schubert\end{description}
3368*7f2fe78bSCy Schubert
3369*7f2fe78bSCy Schubert\sphinxAtStartPar
3370*7f2fe78bSCy SchubertThe following tag may be specified directly in the {[}dbmodules{]}
3371*7f2fe78bSCy Schubertsection to control where database modules are loaded from:
3372*7f2fe78bSCy Schubert\begin{description}
3373*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{db\_module\_dir}}] \leavevmode
3374*7f2fe78bSCy Schubert\sphinxAtStartPar
3375*7f2fe78bSCy SchubertThis tag controls where the plugin system looks for database
3376*7f2fe78bSCy Schubertmodules.  The value should be an absolute path.
3377*7f2fe78bSCy Schubert
3378*7f2fe78bSCy Schubert\end{description}
3379*7f2fe78bSCy Schubert
3380*7f2fe78bSCy Schubert
3381*7f2fe78bSCy Schubert\paragraph{{[}logging{]}}
3382*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:logging}}\label{\detokenize{admin/conf_files/kdc_conf:id4}}
3383*7f2fe78bSCy Schubert\sphinxAtStartPar
3384*7f2fe78bSCy SchubertThe {[}logging{]} section indicates how {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} and
3385*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} perform logging.  It may contain the following
3386*7f2fe78bSCy Schubertrelations:
3387*7f2fe78bSCy Schubert\begin{description}
3388*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{admin\_server}}] \leavevmode
3389*7f2fe78bSCy Schubert\sphinxAtStartPar
3390*7f2fe78bSCy SchubertSpecifies how {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} performs logging.
3391*7f2fe78bSCy Schubert
3392*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kdc}}] \leavevmode
3393*7f2fe78bSCy Schubert\sphinxAtStartPar
3394*7f2fe78bSCy SchubertSpecifies how {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} performs logging.
3395*7f2fe78bSCy Schubert
3396*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default}}] \leavevmode
3397*7f2fe78bSCy Schubert\sphinxAtStartPar
3398*7f2fe78bSCy SchubertSpecifies how either daemon performs logging in the absence of
3399*7f2fe78bSCy Schubertrelations specific to the daemon.
3400*7f2fe78bSCy Schubert
3401*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{debug}}] \leavevmode
3402*7f2fe78bSCy Schubert\sphinxAtStartPar
3403*7f2fe78bSCy Schubert(Boolean value.)  Specifies whether debugging messages are
3404*7f2fe78bSCy Schubertincluded in log outputs other than SYSLOG.  Debugging messages are
3405*7f2fe78bSCy Schubertalways included in the system log output because syslog performs
3406*7f2fe78bSCy Schubertits own priority filtering.  The default value is false.  New in
3407*7f2fe78bSCy Schubertrelease 1.15.
3408*7f2fe78bSCy Schubert
3409*7f2fe78bSCy Schubert\end{description}
3410*7f2fe78bSCy Schubert
3411*7f2fe78bSCy Schubert\sphinxAtStartPar
3412*7f2fe78bSCy SchubertLogging specifications may have the following forms:
3413*7f2fe78bSCy Schubert\begin{description}
3414*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{FILE=}\sphinxstyleemphasis{filename} or \sphinxstylestrong{FILE:}\sphinxstyleemphasis{filename}}] \leavevmode
3415*7f2fe78bSCy Schubert\sphinxAtStartPar
3416*7f2fe78bSCy SchubertThis value causes the daemon’s logging messages to go to the
3417*7f2fe78bSCy Schubert\sphinxstyleemphasis{filename}.  If the \sphinxcode{\sphinxupquote{=}} form is used, the file is overwritten.
3418*7f2fe78bSCy SchubertIf the \sphinxcode{\sphinxupquote{:}} form is used, the file is appended to.
3419*7f2fe78bSCy Schubert
3420*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{STDERR}}] \leavevmode
3421*7f2fe78bSCy Schubert\sphinxAtStartPar
3422*7f2fe78bSCy SchubertThis value causes the daemon’s logging messages to go to its
3423*7f2fe78bSCy Schubertstandard error stream.
3424*7f2fe78bSCy Schubert
3425*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{CONSOLE}}] \leavevmode
3426*7f2fe78bSCy Schubert\sphinxAtStartPar
3427*7f2fe78bSCy SchubertThis value causes the daemon’s logging messages to go to the
3428*7f2fe78bSCy Schubertconsole, if the system supports it.
3429*7f2fe78bSCy Schubert
3430*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{DEVICE=}\sphinxstyleemphasis{\textless{}devicename\textgreater{}}}] \leavevmode
3431*7f2fe78bSCy Schubert\sphinxAtStartPar
3432*7f2fe78bSCy SchubertThis causes the daemon’s logging messages to go to the specified
3433*7f2fe78bSCy Schubertdevice.
3434*7f2fe78bSCy Schubert
3435*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{SYSLOG}{[}\sphinxstylestrong{:}\sphinxstyleemphasis{severity}{[}\sphinxstylestrong{:}\sphinxstyleemphasis{facility}{]}{]}}] \leavevmode
3436*7f2fe78bSCy Schubert\sphinxAtStartPar
3437*7f2fe78bSCy SchubertThis causes the daemon’s logging messages to go to the system log.
3438*7f2fe78bSCy Schubert
3439*7f2fe78bSCy Schubert\sphinxAtStartPar
3440*7f2fe78bSCy SchubertFor backward compatibility, a severity argument may be specified,
3441*7f2fe78bSCy Schubertand must be specified in order to specify a facility.  This
3442*7f2fe78bSCy Schubertargument will be ignored.
3443*7f2fe78bSCy Schubert
3444*7f2fe78bSCy Schubert\sphinxAtStartPar
3445*7f2fe78bSCy SchubertThe facility argument specifies the facility under which the
3446*7f2fe78bSCy Schubertmessages are logged.  This may be any of the following facilities
3447*7f2fe78bSCy Schubertsupported by the syslog(3) call minus the LOG\_ prefix: \sphinxstylestrong{KERN},
3448*7f2fe78bSCy Schubert\sphinxstylestrong{USER}, \sphinxstylestrong{MAIL}, \sphinxstylestrong{DAEMON}, \sphinxstylestrong{AUTH}, \sphinxstylestrong{LPR}, \sphinxstylestrong{NEWS},
3449*7f2fe78bSCy Schubert\sphinxstylestrong{UUCP}, \sphinxstylestrong{CRON}, and \sphinxstylestrong{LOCAL0} through \sphinxstylestrong{LOCAL7}.  If no
3450*7f2fe78bSCy Schubertfacility is specified, the default is \sphinxstylestrong{AUTH}.
3451*7f2fe78bSCy Schubert
3452*7f2fe78bSCy Schubert\end{description}
3453*7f2fe78bSCy Schubert
3454*7f2fe78bSCy Schubert\sphinxAtStartPar
3455*7f2fe78bSCy SchubertIn the following example, the logging messages from the KDC will go to
3456*7f2fe78bSCy Schubertthe console and to the system log under the facility LOG\_DAEMON, and
3457*7f2fe78bSCy Schubertthe logging messages from the administrative server will be appended
3458*7f2fe78bSCy Schubertto the file \sphinxcode{\sphinxupquote{/var/adm/kadmin.log}} and sent to the device
3459*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/dev/tty04}}.
3460*7f2fe78bSCy Schubert
3461*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3462*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{logging}\PYG{p}{]}
3463*7f2fe78bSCy Schubert    \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{CONSOLE}
3464*7f2fe78bSCy Schubert    \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{SYSLOG}\PYG{p}{:}\PYG{n}{INFO}\PYG{p}{:}\PYG{n}{DAEMON}
3465*7f2fe78bSCy Schubert    \PYG{n}{admin\PYGZus{}server} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{adm}\PYG{o}{/}\PYG{n}{kadmin}\PYG{o}{.}\PYG{n}{log}
3466*7f2fe78bSCy Schubert    \PYG{n}{admin\PYGZus{}server} \PYG{o}{=} \PYG{n}{DEVICE}\PYG{o}{=}\PYG{o}{/}\PYG{n}{dev}\PYG{o}{/}\PYG{n}{tty04}
3467*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3468*7f2fe78bSCy Schubert
3469*7f2fe78bSCy Schubert\sphinxAtStartPar
3470*7f2fe78bSCy SchubertIf no logging specification is given, the default is to use syslog.
3471*7f2fe78bSCy SchubertTo disable logging entirely, specify \sphinxcode{\sphinxupquote{default = DEVICE=/dev/null}}.
3472*7f2fe78bSCy Schubert
3473*7f2fe78bSCy Schubert
3474*7f2fe78bSCy Schubert\paragraph{{[}otp{]}}
3475*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:otp}}\label{\detokenize{admin/conf_files/kdc_conf:id5}}
3476*7f2fe78bSCy Schubert\sphinxAtStartPar
3477*7f2fe78bSCy SchubertEach subsection of {[}otp{]} is the name of an OTP token type.  The tags
3478*7f2fe78bSCy Schubertwithin the subsection define the configuration required to forward a
3479*7f2fe78bSCy SchubertOne Time Password request to a RADIUS server.
3480*7f2fe78bSCy Schubert
3481*7f2fe78bSCy Schubert\sphinxAtStartPar
3482*7f2fe78bSCy SchubertFor each token type, the following tags may be specified:
3483*7f2fe78bSCy Schubert\begin{description}
3484*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{server}}] \leavevmode
3485*7f2fe78bSCy Schubert\sphinxAtStartPar
3486*7f2fe78bSCy SchubertThis is the server to send the RADIUS request to.  It can be a
3487*7f2fe78bSCy Schuberthostname with optional port, an ip address with optional port, or
3488*7f2fe78bSCy Schuberta Unix domain socket address.  The default is
3489*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/\textless{}name\textgreater{}.socket}}.
3490*7f2fe78bSCy Schubert
3491*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{secret}}] \leavevmode
3492*7f2fe78bSCy Schubert\sphinxAtStartPar
3493*7f2fe78bSCy SchubertThis tag indicates a filename (which may be relative to {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}})
3494*7f2fe78bSCy Schubertcontaining the secret used to encrypt the RADIUS packets.  The
3495*7f2fe78bSCy Schubertsecret should appear in the first line of the file by itself;
3496*7f2fe78bSCy Schubertleading and trailing whitespace on the line will be removed.  If
3497*7f2fe78bSCy Schubertthe value of \sphinxstylestrong{server} is a Unix domain socket address, this tag
3498*7f2fe78bSCy Schubertis optional, and an empty secret will be used if it is not
3499*7f2fe78bSCy Schubertspecified.  Otherwise, this tag is required.
3500*7f2fe78bSCy Schubert
3501*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{timeout}}] \leavevmode
3502*7f2fe78bSCy Schubert\sphinxAtStartPar
3503*7f2fe78bSCy SchubertAn integer which specifies the time in seconds during which the
3504*7f2fe78bSCy SchubertKDC should attempt to contact the RADIUS server.  This tag is the
3505*7f2fe78bSCy Schuberttotal time across all retries and should be less than the time
3506*7f2fe78bSCy Schubertwhich an OTP value remains valid for.  The default is 5 seconds.
3507*7f2fe78bSCy Schubert
3508*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{retries}}] \leavevmode
3509*7f2fe78bSCy Schubert\sphinxAtStartPar
3510*7f2fe78bSCy SchubertThis tag specifies the number of retries to make to the RADIUS
3511*7f2fe78bSCy Schubertserver.  The default is 3 retries (4 tries).
3512*7f2fe78bSCy Schubert
3513*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{strip\_realm}}] \leavevmode
3514*7f2fe78bSCy Schubert\sphinxAtStartPar
3515*7f2fe78bSCy SchubertIf this tag is \sphinxcode{\sphinxupquote{true}}, the principal without the realm will be
3516*7f2fe78bSCy Schubertpassed to the RADIUS server.  Otherwise, the realm will be
3517*7f2fe78bSCy Schubertincluded.  The default value is \sphinxcode{\sphinxupquote{true}}.
3518*7f2fe78bSCy Schubert
3519*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{indicator}}] \leavevmode
3520*7f2fe78bSCy Schubert\sphinxAtStartPar
3521*7f2fe78bSCy SchubertThis tag specifies an authentication indicator to be included in
3522*7f2fe78bSCy Schubertthe ticket if this token type is used to authenticate.  This
3523*7f2fe78bSCy Schubertoption may be specified multiple times.  (New in release 1.14.)
3524*7f2fe78bSCy Schubert
3525*7f2fe78bSCy Schubert\end{description}
3526*7f2fe78bSCy Schubert
3527*7f2fe78bSCy Schubert\sphinxAtStartPar
3528*7f2fe78bSCy SchubertIn the following example, requests are sent to a remote server via UDP:
3529*7f2fe78bSCy Schubert
3530*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3531*7f2fe78bSCy Schubert[otp]
3532*7f2fe78bSCy Schubert    MyRemoteTokenType = \PYGZob{}
3533*7f2fe78bSCy Schubert        server = radius.mydomain.com:1812
3534*7f2fe78bSCy Schubert        secret = SEmfiajf42\PYGZdl{}
3535*7f2fe78bSCy Schubert        timeout = 15
3536*7f2fe78bSCy Schubert        retries = 5
3537*7f2fe78bSCy Schubert        strip\PYGZus{}realm = true
3538*7f2fe78bSCy Schubert    \PYGZcb{}
3539*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3540*7f2fe78bSCy Schubert
3541*7f2fe78bSCy Schubert\sphinxAtStartPar
3542*7f2fe78bSCy SchubertAn implicit default token type named \sphinxcode{\sphinxupquote{DEFAULT}} is defined for when
3543*7f2fe78bSCy Schubertthe per\sphinxhyphen{}principal configuration does not specify a token type.  Its
3544*7f2fe78bSCy Schubertconfiguration is shown below.  You may override this token type to
3545*7f2fe78bSCy Schubertsomething applicable for your situation:
3546*7f2fe78bSCy Schubert
3547*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3548*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{otp}\PYG{p}{]}
3549*7f2fe78bSCy Schubert    \PYG{n}{DEFAULT} \PYG{o}{=} \PYG{p}{\PYGZob{}}
3550*7f2fe78bSCy Schubert        \PYG{n}{strip\PYGZus{}realm} \PYG{o}{=} \PYG{n}{false}
3551*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
3552*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3553*7f2fe78bSCy Schubert
3554*7f2fe78bSCy Schubert
3555*7f2fe78bSCy Schubert\subsubsection{PKINIT options}
3556*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:pkinit-options}}
3557*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
3558*7f2fe78bSCy Schubert\sphinxAtStartPar
3559*7f2fe78bSCy SchubertThe following are pkinit\sphinxhyphen{}specific options.  These values may
3560*7f2fe78bSCy Schubertbe specified in {[}kdcdefaults{]} as global defaults, or within
3561*7f2fe78bSCy Schuberta realm\sphinxhyphen{}specific subsection of {[}realms{]}.  Also note that a
3562*7f2fe78bSCy Schubertrealm\sphinxhyphen{}specific value over\sphinxhyphen{}rides, does not add to, a generic
3563*7f2fe78bSCy Schubert{[}kdcdefaults{]} specification.  The search order is:
3564*7f2fe78bSCy Schubert\end{sphinxadmonition}
3565*7f2fe78bSCy Schubert\begin{enumerate}
3566*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
3567*7f2fe78bSCy Schubert\item {}
3568*7f2fe78bSCy Schubert\sphinxAtStartPar
3569*7f2fe78bSCy Schubertrealm\sphinxhyphen{}specific subsection of {[}realms{]}:
3570*7f2fe78bSCy Schubert
3571*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3572*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
3573*7f2fe78bSCy Schubert    \PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{=} \PYG{p}{\PYGZob{}}
3574*7f2fe78bSCy Schubert        \PYG{n}{pkinit\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}\PYG{o}{.}\PYG{n}{crt}
3575*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
3576*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3577*7f2fe78bSCy Schubert
3578*7f2fe78bSCy Schubert\item {}
3579*7f2fe78bSCy Schubert\sphinxAtStartPar
3580*7f2fe78bSCy Schubertgeneric value in the {[}kdcdefaults{]} section:
3581*7f2fe78bSCy Schubert
3582*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3583*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{kdcdefaults}\PYG{p}{]}
3584*7f2fe78bSCy Schubert    \PYG{n}{pkinit\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{DIR}\PYG{p}{:}\PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{generic\PYGZus{}trusted\PYGZus{}cas}\PYG{o}{/}
3585*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3586*7f2fe78bSCy Schubert
3587*7f2fe78bSCy Schubert\end{enumerate}
3588*7f2fe78bSCy Schubert
3589*7f2fe78bSCy Schubert\sphinxAtStartPar
3590*7f2fe78bSCy SchubertFor information about the syntax of some of these options, see
3591*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:pkinit-identity}]{\sphinxcrossref{\DUrole{std,std-ref}{Specifying PKINIT identity information}}}} in
3592*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.
3593*7f2fe78bSCy Schubert\begin{description}
3594*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_anchors}}] \leavevmode
3595*7f2fe78bSCy Schubert\sphinxAtStartPar
3596*7f2fe78bSCy SchubertSpecifies the location of trusted anchor (root) certificates which
3597*7f2fe78bSCy Schubertthe KDC trusts to sign client certificates.  This option is
3598*7f2fe78bSCy Schubertrequired if pkinit is to be supported by the KDC.  This option may
3599*7f2fe78bSCy Schubertbe specified multiple times.
3600*7f2fe78bSCy Schubert
3601*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_dh\_min\_bits}}] \leavevmode
3602*7f2fe78bSCy Schubert\sphinxAtStartPar
3603*7f2fe78bSCy SchubertSpecifies the minimum number of bits the KDC is willing to accept
3604*7f2fe78bSCy Schubertfor a client’s Diffie\sphinxhyphen{}Hellman key.  The default is 2048.
3605*7f2fe78bSCy Schubert
3606*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_allow\_upn}}] \leavevmode
3607*7f2fe78bSCy Schubert\sphinxAtStartPar
3608*7f2fe78bSCy SchubertSpecifies that the KDC is willing to accept client certificates
3609*7f2fe78bSCy Schubertwith the Microsoft UserPrincipalName (UPN) Subject Alternative
3610*7f2fe78bSCy SchubertName (SAN).  This means the KDC accepts the binding of the UPN in
3611*7f2fe78bSCy Schubertthe certificate to the Kerberos principal name.  The default value
3612*7f2fe78bSCy Schubertis false.
3613*7f2fe78bSCy Schubert
3614*7f2fe78bSCy Schubert\sphinxAtStartPar
3615*7f2fe78bSCy SchubertWithout this option, the KDC will only accept certificates with
3616*7f2fe78bSCy Schubertthe id\sphinxhyphen{}pkinit\sphinxhyphen{}san as defined in \index{RFC@\spxentry{RFC}!RFC 4556@\spxentry{RFC 4556}}\sphinxhref{https://tools.ietf.org/html/rfc4556.html}{\sphinxstylestrong{RFC 4556}}.  There is currently
3617*7f2fe78bSCy Schubertno option to disable SAN checking in the KDC.
3618*7f2fe78bSCy Schubert
3619*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_eku\_checking}}] \leavevmode
3620*7f2fe78bSCy Schubert\sphinxAtStartPar
3621*7f2fe78bSCy SchubertThis option specifies what Extended Key Usage (EKU) values the KDC
3622*7f2fe78bSCy Schubertis willing to accept in client certificates.  The values
3623*7f2fe78bSCy Schubertrecognized in the kdc.conf file are:
3624*7f2fe78bSCy Schubert\begin{description}
3625*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kpClientAuth}}] \leavevmode
3626*7f2fe78bSCy Schubert\sphinxAtStartPar
3627*7f2fe78bSCy SchubertThis is the default value and specifies that client
3628*7f2fe78bSCy Schubertcertificates must have the id\sphinxhyphen{}pkinit\sphinxhyphen{}KPClientAuth EKU as
3629*7f2fe78bSCy Schubertdefined in \index{RFC@\spxentry{RFC}!RFC 4556@\spxentry{RFC 4556}}\sphinxhref{https://tools.ietf.org/html/rfc4556.html}{\sphinxstylestrong{RFC 4556}}.
3630*7f2fe78bSCy Schubert
3631*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{scLogin}}] \leavevmode
3632*7f2fe78bSCy Schubert\sphinxAtStartPar
3633*7f2fe78bSCy SchubertIf scLogin is specified, client certificates with the
3634*7f2fe78bSCy SchubertMicrosoft Smart Card Login EKU (id\sphinxhyphen{}ms\sphinxhyphen{}kp\sphinxhyphen{}sc\sphinxhyphen{}logon) will be
3635*7f2fe78bSCy Schubertaccepted.
3636*7f2fe78bSCy Schubert
3637*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{none}}] \leavevmode
3638*7f2fe78bSCy Schubert\sphinxAtStartPar
3639*7f2fe78bSCy SchubertIf none is specified, then client certificates will not be
3640*7f2fe78bSCy Schubertchecked to verify they have an acceptable EKU.  The use of
3641*7f2fe78bSCy Schubertthis option is not recommended.
3642*7f2fe78bSCy Schubert
3643*7f2fe78bSCy Schubert\end{description}
3644*7f2fe78bSCy Schubert
3645*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_identity}}] \leavevmode
3646*7f2fe78bSCy Schubert\sphinxAtStartPar
3647*7f2fe78bSCy SchubertSpecifies the location of the KDC’s X.509 identity information.
3648*7f2fe78bSCy SchubertThis option is required if pkinit is to be supported by the KDC.
3649*7f2fe78bSCy Schubert
3650*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_indicator}}] \leavevmode
3651*7f2fe78bSCy Schubert\sphinxAtStartPar
3652*7f2fe78bSCy SchubertSpecifies an authentication indicator to include in the ticket if
3653*7f2fe78bSCy Schubertpkinit is used to authenticate.  This option may be specified
3654*7f2fe78bSCy Schubertmultiple times.  (New in release 1.14.)
3655*7f2fe78bSCy Schubert
3656*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_pool}}] \leavevmode
3657*7f2fe78bSCy Schubert\sphinxAtStartPar
3658*7f2fe78bSCy SchubertSpecifies the location of intermediate certificates which may be
3659*7f2fe78bSCy Schubertused by the KDC to complete the trust chain between a client’s
3660*7f2fe78bSCy Schubertcertificate and a trusted anchor.  This option may be specified
3661*7f2fe78bSCy Schubertmultiple times.
3662*7f2fe78bSCy Schubert
3663*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_revoke}}] \leavevmode
3664*7f2fe78bSCy Schubert\sphinxAtStartPar
3665*7f2fe78bSCy SchubertSpecifies the location of Certificate Revocation List (CRL)
3666*7f2fe78bSCy Schubertinformation to be used by the KDC when verifying the validity of
3667*7f2fe78bSCy Schubertclient certificates.  This option may be specified multiple times.
3668*7f2fe78bSCy Schubert
3669*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_require\_crl\_checking}}] \leavevmode
3670*7f2fe78bSCy Schubert\sphinxAtStartPar
3671*7f2fe78bSCy SchubertThe default certificate verification process will always check the
3672*7f2fe78bSCy Schubertavailable revocation information to see if a certificate has been
3673*7f2fe78bSCy Schubertrevoked.  If a match is found for the certificate in a CRL,
3674*7f2fe78bSCy Schubertverification fails.  If the certificate being verified is not
3675*7f2fe78bSCy Schubertlisted in a CRL, or there is no CRL present for its issuing CA,
3676*7f2fe78bSCy Schubertand \sphinxstylestrong{pkinit\_require\_crl\_checking} is false, then verification
3677*7f2fe78bSCy Schubertsucceeds.
3678*7f2fe78bSCy Schubert
3679*7f2fe78bSCy Schubert\sphinxAtStartPar
3680*7f2fe78bSCy SchubertHowever, if \sphinxstylestrong{pkinit\_require\_crl\_checking} is true and there is
3681*7f2fe78bSCy Schubertno CRL information available for the issuing CA, then verification
3682*7f2fe78bSCy Schubertfails.
3683*7f2fe78bSCy Schubert
3684*7f2fe78bSCy Schubert\sphinxAtStartPar
3685*7f2fe78bSCy Schubert\sphinxstylestrong{pkinit\_require\_crl\_checking} should be set to true if the
3686*7f2fe78bSCy Schubertpolicy is such that up\sphinxhyphen{}to\sphinxhyphen{}date CRLs must be present for every CA.
3687*7f2fe78bSCy Schubert
3688*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_require\_freshness}}] \leavevmode
3689*7f2fe78bSCy Schubert\sphinxAtStartPar
3690*7f2fe78bSCy SchubertSpecifies whether to require clients to include a freshness token
3691*7f2fe78bSCy Schubertin PKINIT requests.  The default value is false.  (New in release
3692*7f2fe78bSCy Schubert1.17.)
3693*7f2fe78bSCy Schubert
3694*7f2fe78bSCy Schubert\end{description}
3695*7f2fe78bSCy Schubert
3696*7f2fe78bSCy Schubert
3697*7f2fe78bSCy Schubert\subsubsection{Encryption types}
3698*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:encryption-types}}\label{\detokenize{admin/conf_files/kdc_conf:id6}}
3699*7f2fe78bSCy Schubert\sphinxAtStartPar
3700*7f2fe78bSCy SchubertAny tag in the configuration files which requires a list of encryption
3701*7f2fe78bSCy Schuberttypes can be set to some combination of the following strings.
3702*7f2fe78bSCy SchubertEncryption types marked as “weak” and “deprecated” are available for
3703*7f2fe78bSCy Schubertcompatibility but not recommended for use.
3704*7f2fe78bSCy Schubert
3705*7f2fe78bSCy Schubert
3706*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
3707*7f2fe78bSCy Schubert\centering
3708*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|}
3709*7f2fe78bSCy Schubert\hline
3710*7f2fe78bSCy Schubert
3711*7f2fe78bSCy Schubert\sphinxAtStartPar
3712*7f2fe78bSCy Schubertdes3\sphinxhyphen{}cbc\sphinxhyphen{}raw
3713*7f2fe78bSCy Schubert&
3714*7f2fe78bSCy Schubert\sphinxAtStartPar
3715*7f2fe78bSCy SchubertTriple DES cbc mode raw (weak)
3716*7f2fe78bSCy Schubert\\
3717*7f2fe78bSCy Schubert\hline
3718*7f2fe78bSCy Schubert\sphinxAtStartPar
3719*7f2fe78bSCy Schubertdes3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 des3\sphinxhyphen{}hmac\sphinxhyphen{}sha1 des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1\sphinxhyphen{}kd
3720*7f2fe78bSCy Schubert&
3721*7f2fe78bSCy Schubert\sphinxAtStartPar
3722*7f2fe78bSCy SchubertTriple DES cbc mode with HMAC/sha1 (deprecated)
3723*7f2fe78bSCy Schubert\\
3724*7f2fe78bSCy Schubert\hline
3725*7f2fe78bSCy Schubert\sphinxAtStartPar
3726*7f2fe78bSCy Schubertaes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes256\sphinxhyphen{}cts aes256\sphinxhyphen{}sha1
3727*7f2fe78bSCy Schubert&
3728*7f2fe78bSCy Schubert\sphinxAtStartPar
3729*7f2fe78bSCy SchubertAES\sphinxhyphen{}256 CTS mode with 96\sphinxhyphen{}bit SHA\sphinxhyphen{}1 HMAC
3730*7f2fe78bSCy Schubert\\
3731*7f2fe78bSCy Schubert\hline
3732*7f2fe78bSCy Schubert\sphinxAtStartPar
3733*7f2fe78bSCy Schubertaes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes128\sphinxhyphen{}cts aes128\sphinxhyphen{}sha1
3734*7f2fe78bSCy Schubert&
3735*7f2fe78bSCy Schubert\sphinxAtStartPar
3736*7f2fe78bSCy SchubertAES\sphinxhyphen{}128 CTS mode with 96\sphinxhyphen{}bit SHA\sphinxhyphen{}1 HMAC
3737*7f2fe78bSCy Schubert\\
3738*7f2fe78bSCy Schubert\hline
3739*7f2fe78bSCy Schubert\sphinxAtStartPar
3740*7f2fe78bSCy Schubertaes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha384\sphinxhyphen{}192 aes256\sphinxhyphen{}sha2
3741*7f2fe78bSCy Schubert&
3742*7f2fe78bSCy Schubert\sphinxAtStartPar
3743*7f2fe78bSCy SchubertAES\sphinxhyphen{}256 CTS mode with 192\sphinxhyphen{}bit SHA\sphinxhyphen{}384 HMAC
3744*7f2fe78bSCy Schubert\\
3745*7f2fe78bSCy Schubert\hline
3746*7f2fe78bSCy Schubert\sphinxAtStartPar
3747*7f2fe78bSCy Schubertaes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha256\sphinxhyphen{}128 aes128\sphinxhyphen{}sha2
3748*7f2fe78bSCy Schubert&
3749*7f2fe78bSCy Schubert\sphinxAtStartPar
3750*7f2fe78bSCy SchubertAES\sphinxhyphen{}128 CTS mode with 128\sphinxhyphen{}bit SHA\sphinxhyphen{}256 HMAC
3751*7f2fe78bSCy Schubert\\
3752*7f2fe78bSCy Schubert\hline
3753*7f2fe78bSCy Schubert\sphinxAtStartPar
3754*7f2fe78bSCy Schubertarcfour\sphinxhyphen{}hmac rc4\sphinxhyphen{}hmac arcfour\sphinxhyphen{}hmac\sphinxhyphen{}md5
3755*7f2fe78bSCy Schubert&
3756*7f2fe78bSCy Schubert\sphinxAtStartPar
3757*7f2fe78bSCy SchubertRC4 with HMAC/MD5 (deprecated)
3758*7f2fe78bSCy Schubert\\
3759*7f2fe78bSCy Schubert\hline
3760*7f2fe78bSCy Schubert\sphinxAtStartPar
3761*7f2fe78bSCy Schubertarcfour\sphinxhyphen{}hmac\sphinxhyphen{}exp rc4\sphinxhyphen{}hmac\sphinxhyphen{}exp arcfour\sphinxhyphen{}hmac\sphinxhyphen{}md5\sphinxhyphen{}exp
3762*7f2fe78bSCy Schubert&
3763*7f2fe78bSCy Schubert\sphinxAtStartPar
3764*7f2fe78bSCy SchubertExportable RC4 with HMAC/MD5 (weak)
3765*7f2fe78bSCy Schubert\\
3766*7f2fe78bSCy Schubert\hline
3767*7f2fe78bSCy Schubert\sphinxAtStartPar
3768*7f2fe78bSCy Schubertcamellia256\sphinxhyphen{}cts\sphinxhyphen{}cmac camellia256\sphinxhyphen{}cts
3769*7f2fe78bSCy Schubert&
3770*7f2fe78bSCy Schubert\sphinxAtStartPar
3771*7f2fe78bSCy SchubertCamellia\sphinxhyphen{}256 CTS mode with CMAC
3772*7f2fe78bSCy Schubert\\
3773*7f2fe78bSCy Schubert\hline
3774*7f2fe78bSCy Schubert\sphinxAtStartPar
3775*7f2fe78bSCy Schubertcamellia128\sphinxhyphen{}cts\sphinxhyphen{}cmac camellia128\sphinxhyphen{}cts
3776*7f2fe78bSCy Schubert&
3777*7f2fe78bSCy Schubert\sphinxAtStartPar
3778*7f2fe78bSCy SchubertCamellia\sphinxhyphen{}128 CTS mode with CMAC
3779*7f2fe78bSCy Schubert\\
3780*7f2fe78bSCy Schubert\hline
3781*7f2fe78bSCy Schubert\sphinxAtStartPar
3782*7f2fe78bSCy Schubertdes3
3783*7f2fe78bSCy Schubert&
3784*7f2fe78bSCy Schubert\sphinxAtStartPar
3785*7f2fe78bSCy SchubertThe triple DES family: des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1
3786*7f2fe78bSCy Schubert\\
3787*7f2fe78bSCy Schubert\hline
3788*7f2fe78bSCy Schubert\sphinxAtStartPar
3789*7f2fe78bSCy Schubertaes
3790*7f2fe78bSCy Schubert&
3791*7f2fe78bSCy Schubert\sphinxAtStartPar
3792*7f2fe78bSCy SchubertThe AES family: aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96, aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96, aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha384\sphinxhyphen{}192, and aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha256\sphinxhyphen{}128
3793*7f2fe78bSCy Schubert\\
3794*7f2fe78bSCy Schubert\hline
3795*7f2fe78bSCy Schubert\sphinxAtStartPar
3796*7f2fe78bSCy Schubertrc4
3797*7f2fe78bSCy Schubert&
3798*7f2fe78bSCy Schubert\sphinxAtStartPar
3799*7f2fe78bSCy SchubertThe RC4 family: arcfour\sphinxhyphen{}hmac
3800*7f2fe78bSCy Schubert\\
3801*7f2fe78bSCy Schubert\hline
3802*7f2fe78bSCy Schubert\sphinxAtStartPar
3803*7f2fe78bSCy Schubertcamellia
3804*7f2fe78bSCy Schubert&
3805*7f2fe78bSCy Schubert\sphinxAtStartPar
3806*7f2fe78bSCy SchubertThe Camellia family: camellia256\sphinxhyphen{}cts\sphinxhyphen{}cmac and camellia128\sphinxhyphen{}cts\sphinxhyphen{}cmac
3807*7f2fe78bSCy Schubert\\
3808*7f2fe78bSCy Schubert\hline
3809*7f2fe78bSCy Schubert\end{tabulary}
3810*7f2fe78bSCy Schubert\par
3811*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
3812*7f2fe78bSCy Schubert
3813*7f2fe78bSCy Schubert\sphinxAtStartPar
3814*7f2fe78bSCy SchubertThe string \sphinxstylestrong{DEFAULT} can be used to refer to the default set of
3815*7f2fe78bSCy Schuberttypes for the variable in question.  Types or families can be removed
3816*7f2fe78bSCy Schubertfrom the current list by prefixing them with a minus sign (“\sphinxhyphen{}“).
3817*7f2fe78bSCy SchubertTypes or families can be prefixed with a plus sign (“+”) for symmetry;
3818*7f2fe78bSCy Schubertit has the same meaning as just listing the type or family.  For
3819*7f2fe78bSCy Schubertexample, “\sphinxcode{\sphinxupquote{DEFAULT \sphinxhyphen{}rc4}}” would be the default set of encryption
3820*7f2fe78bSCy Schuberttypes with RC4 types removed, and “\sphinxcode{\sphinxupquote{des3 DEFAULT}}” would be the
3821*7f2fe78bSCy Schubertdefault set of encryption types with triple DES types moved to the
3822*7f2fe78bSCy Schubertfront.
3823*7f2fe78bSCy Schubert
3824*7f2fe78bSCy Schubert\sphinxAtStartPar
3825*7f2fe78bSCy SchubertWhile \sphinxstylestrong{aes128\sphinxhyphen{}cts} and \sphinxstylestrong{aes256\sphinxhyphen{}cts} are supported for all Kerberos
3826*7f2fe78bSCy Schubertoperations, they are not supported by very old versions of our GSSAPI
3827*7f2fe78bSCy Schubertimplementation (krb5\sphinxhyphen{}1.3.1 and earlier).  Services running versions of
3828*7f2fe78bSCy Schubertkrb5 without AES support must not be given keys of these encryption
3829*7f2fe78bSCy Schuberttypes in the KDC database.
3830*7f2fe78bSCy Schubert
3831*7f2fe78bSCy Schubert\sphinxAtStartPar
3832*7f2fe78bSCy SchubertThe \sphinxstylestrong{aes128\sphinxhyphen{}sha2} and \sphinxstylestrong{aes256\sphinxhyphen{}sha2} encryption types are new in
3833*7f2fe78bSCy Schubertrelease 1.15.  Services running versions of krb5 without support for
3834*7f2fe78bSCy Schubertthese newer encryption types must not be given keys of these
3835*7f2fe78bSCy Schubertencryption types in the KDC database.
3836*7f2fe78bSCy Schubert
3837*7f2fe78bSCy Schubert
3838*7f2fe78bSCy Schubert\subsubsection{Keysalt lists}
3839*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:keysalt-lists}}\label{\detokenize{admin/conf_files/kdc_conf:id7}}
3840*7f2fe78bSCy Schubert\sphinxAtStartPar
3841*7f2fe78bSCy SchubertKerberos keys for users are usually derived from passwords.  Kerberos
3842*7f2fe78bSCy Schubertcommands and configuration parameters that affect generation of keys
3843*7f2fe78bSCy Schuberttake lists of enctype\sphinxhyphen{}salttype (“keysalt”) pairs, known as \sphinxstyleemphasis{keysalt
3844*7f2fe78bSCy Schubertlists}.  Each keysalt pair is an enctype name followed by a salttype
3845*7f2fe78bSCy Schubertname, in the format \sphinxstyleemphasis{enc}:\sphinxstyleemphasis{salt}.  Individual keysalt list members are
3846*7f2fe78bSCy Schubertseparated by comma (“,”) characters or space characters.  For example:
3847*7f2fe78bSCy Schubert
3848*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3849*7f2fe78bSCy Schubert\PYG{n}{kadmin} \PYG{o}{\PYGZhy{}}\PYG{n}{e} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{p}{:}\PYG{n}{normal}\PYG{p}{,}\PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{p}{:}\PYG{n}{normal}
3850*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3851*7f2fe78bSCy Schubert
3852*7f2fe78bSCy Schubert\sphinxAtStartPar
3853*7f2fe78bSCy Schubertwould start up kadmin so that by default it would generate
3854*7f2fe78bSCy Schubertpassword\sphinxhyphen{}derived keys for the \sphinxstylestrong{aes256\sphinxhyphen{}cts} and \sphinxstylestrong{aes128\sphinxhyphen{}cts}
3855*7f2fe78bSCy Schubertencryption types, using a \sphinxstylestrong{normal} salt.
3856*7f2fe78bSCy Schubert
3857*7f2fe78bSCy Schubert\sphinxAtStartPar
3858*7f2fe78bSCy SchubertTo ensure that people who happen to pick the same password do not have
3859*7f2fe78bSCy Schubertthe same key, Kerberos 5 incorporates more information into the key
3860*7f2fe78bSCy Schubertusing something called a salt.  The supported salt types are as
3861*7f2fe78bSCy Schubertfollows:
3862*7f2fe78bSCy Schubert
3863*7f2fe78bSCy Schubert
3864*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
3865*7f2fe78bSCy Schubert\centering
3866*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|}
3867*7f2fe78bSCy Schubert\hline
3868*7f2fe78bSCy Schubert
3869*7f2fe78bSCy Schubert\sphinxAtStartPar
3870*7f2fe78bSCy Schubertnormal
3871*7f2fe78bSCy Schubert&
3872*7f2fe78bSCy Schubert\sphinxAtStartPar
3873*7f2fe78bSCy Schubertdefault for Kerberos Version 5
3874*7f2fe78bSCy Schubert\\
3875*7f2fe78bSCy Schubert\hline
3876*7f2fe78bSCy Schubert\sphinxAtStartPar
3877*7f2fe78bSCy Schubertnorealm
3878*7f2fe78bSCy Schubert&
3879*7f2fe78bSCy Schubert\sphinxAtStartPar
3880*7f2fe78bSCy Schubertsame as the default, without using realm information
3881*7f2fe78bSCy Schubert\\
3882*7f2fe78bSCy Schubert\hline
3883*7f2fe78bSCy Schubert\sphinxAtStartPar
3884*7f2fe78bSCy Schubertonlyrealm
3885*7f2fe78bSCy Schubert&
3886*7f2fe78bSCy Schubert\sphinxAtStartPar
3887*7f2fe78bSCy Schubertuses only realm information as the salt
3888*7f2fe78bSCy Schubert\\
3889*7f2fe78bSCy Schubert\hline
3890*7f2fe78bSCy Schubert\sphinxAtStartPar
3891*7f2fe78bSCy Schubertspecial
3892*7f2fe78bSCy Schubert&
3893*7f2fe78bSCy Schubert\sphinxAtStartPar
3894*7f2fe78bSCy Schubertgenerate a random salt
3895*7f2fe78bSCy Schubert\\
3896*7f2fe78bSCy Schubert\hline
3897*7f2fe78bSCy Schubert\end{tabulary}
3898*7f2fe78bSCy Schubert\par
3899*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
3900*7f2fe78bSCy Schubert
3901*7f2fe78bSCy Schubert
3902*7f2fe78bSCy Schubert\subsubsection{Sample kdc.conf File}
3903*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:sample-kdc-conf-file}}
3904*7f2fe78bSCy Schubert\sphinxAtStartPar
3905*7f2fe78bSCy SchubertHere’s an example of a kdc.conf file:
3906*7f2fe78bSCy Schubert
3907*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3908*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{kdcdefaults}\PYG{p}{]}
3909*7f2fe78bSCy Schubert    \PYG{n}{kdc\PYGZus{}listen} \PYG{o}{=} \PYG{l+m+mi}{88}
3910*7f2fe78bSCy Schubert    \PYG{n}{kdc\PYGZus{}tcp\PYGZus{}listen} \PYG{o}{=} \PYG{l+m+mi}{88}
3911*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
3912*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
3913*7f2fe78bSCy Schubert        \PYG{n}{kadmind\PYGZus{}port} \PYG{o}{=} \PYG{l+m+mi}{749}
3914*7f2fe78bSCy Schubert        \PYG{n}{max\PYGZus{}life} \PYG{o}{=} \PYG{l+m+mi}{12}\PYG{n}{h} \PYG{l+m+mi}{0}\PYG{n}{m} \PYG{l+m+mi}{0}\PYG{n}{s}
3915*7f2fe78bSCy Schubert        \PYG{n}{max\PYGZus{}renewable\PYGZus{}life} \PYG{o}{=} \PYG{l+m+mi}{7}\PYG{n}{d} \PYG{l+m+mi}{0}\PYG{n}{h} \PYG{l+m+mi}{0}\PYG{n}{m} \PYG{l+m+mi}{0}\PYG{n}{s}
3916*7f2fe78bSCy Schubert        \PYG{n}{master\PYGZus{}key\PYGZus{}type} \PYG{o}{=} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}
3917*7f2fe78bSCy Schubert        \PYG{n}{supported\PYGZus{}enctypes} \PYG{o}{=} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal}
3918*7f2fe78bSCy Schubert        \PYG{n}{database\PYGZus{}module} \PYG{o}{=} \PYG{n}{openldap\PYGZus{}ldapconf}
3919*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
3920*7f2fe78bSCy Schubert
3921*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{logging}\PYG{p}{]}
3922*7f2fe78bSCy Schubert    \PYG{n}{kdc} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{/}\PYG{n}{kdc}\PYG{o}{.}\PYG{n}{log}
3923*7f2fe78bSCy Schubert    \PYG{n}{admin\PYGZus{}server} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{/}\PYG{n}{kadmin}\PYG{o}{.}\PYG{n}{log}
3924*7f2fe78bSCy Schubert
3925*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{dbdefaults}\PYG{p}{]}
3926*7f2fe78bSCy Schubert    \PYG{n}{ldap\PYGZus{}kerberos\PYGZus{}container\PYGZus{}dn} \PYG{o}{=} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{krbcontainer}\PYG{p}{,}\PYG{n}{dc}\PYG{o}{=}\PYG{n}{mit}\PYG{p}{,}\PYG{n}{dc}\PYG{o}{=}\PYG{n}{edu}
3927*7f2fe78bSCy Schubert
3928*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{dbmodules}\PYG{p}{]}
3929*7f2fe78bSCy Schubert    \PYG{n}{openldap\PYGZus{}ldapconf} \PYG{o}{=} \PYG{p}{\PYGZob{}}
3930*7f2fe78bSCy Schubert        \PYG{n}{db\PYGZus{}library} \PYG{o}{=} \PYG{n}{kldap}
3931*7f2fe78bSCy Schubert        \PYG{n}{disable\PYGZus{}last\PYGZus{}success} \PYG{o}{=} \PYG{n}{true}
3932*7f2fe78bSCy Schubert        \PYG{n}{ldap\PYGZus{}kdc\PYGZus{}dn} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=krbadmin,dc=mit,dc=edu}\PYG{l+s+s2}{\PYGZdq{}}
3933*7f2fe78bSCy Schubert            \PYG{c+c1}{\PYGZsh{} this object needs to have read rights on}
3934*7f2fe78bSCy Schubert            \PYG{c+c1}{\PYGZsh{} the realm container and principal subtrees}
3935*7f2fe78bSCy Schubert        \PYG{n}{ldap\PYGZus{}kadmind\PYGZus{}dn} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=krbadmin,dc=mit,dc=edu}\PYG{l+s+s2}{\PYGZdq{}}
3936*7f2fe78bSCy Schubert            \PYG{c+c1}{\PYGZsh{} this object needs to have read and write rights on}
3937*7f2fe78bSCy Schubert            \PYG{c+c1}{\PYGZsh{} the realm container and principal subtrees}
3938*7f2fe78bSCy Schubert        \PYG{n}{ldap\PYGZus{}service\PYGZus{}password\PYGZus{}file} \PYG{o}{=} \PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{/}\PYG{n}{service}\PYG{o}{.}\PYG{n}{keyfile}
3939*7f2fe78bSCy Schubert        \PYG{n}{ldap\PYGZus{}servers} \PYG{o}{=} \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
3940*7f2fe78bSCy Schubert        \PYG{n}{ldap\PYGZus{}conns\PYGZus{}per\PYGZus{}server} \PYG{o}{=} \PYG{l+m+mi}{5}
3941*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
3942*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3943*7f2fe78bSCy Schubert
3944*7f2fe78bSCy Schubert
3945*7f2fe78bSCy Schubert\subsubsection{FILES}
3946*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:files}}
3947*7f2fe78bSCy Schubert\sphinxAtStartPar
3948*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kdc.conf}}
3949*7f2fe78bSCy Schubert
3950*7f2fe78bSCy Schubert
3951*7f2fe78bSCy Schubert\subsubsection{SEE ALSO}
3952*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kdc_conf:see-also}}
3953*7f2fe78bSCy Schubert\sphinxAtStartPar
3954*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}, {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}}, {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}
3955*7f2fe78bSCy Schubert
3956*7f2fe78bSCy Schubert
3957*7f2fe78bSCy Schubert\subsection{kadm5.acl}
3958*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kadm5_acl:kadm5-acl}}\label{\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}}\label{\detokenize{admin/conf_files/kadm5_acl::doc}}
3959*7f2fe78bSCy Schubert
3960*7f2fe78bSCy Schubert\subsubsection{DESCRIPTION}
3961*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kadm5_acl:description}}
3962*7f2fe78bSCy Schubert\sphinxAtStartPar
3963*7f2fe78bSCy SchubertThe Kerberos {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} daemon uses an Access Control List
3964*7f2fe78bSCy Schubert(ACL) file to manage access rights to the Kerberos database.
3965*7f2fe78bSCy SchubertFor operations that affect principals, the ACL file also controls
3966*7f2fe78bSCy Schubertwhich principals can operate on which other principals.
3967*7f2fe78bSCy Schubert
3968*7f2fe78bSCy Schubert\sphinxAtStartPar
3969*7f2fe78bSCy SchubertThe default location of the Kerberos ACL file is
3970*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kadm5.acl}}  unless this is overridden by the \sphinxstyleemphasis{acl\_file}
3971*7f2fe78bSCy Schubertvariable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
3972*7f2fe78bSCy Schubert
3973*7f2fe78bSCy Schubert
3974*7f2fe78bSCy Schubert\subsubsection{SYNTAX}
3975*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kadm5_acl:syntax}}
3976*7f2fe78bSCy Schubert\sphinxAtStartPar
3977*7f2fe78bSCy SchubertEmpty lines and lines starting with the sharp sign (\sphinxcode{\sphinxupquote{\#}}) are
3978*7f2fe78bSCy Schubertignored.  Lines containing ACL entries have the format:
3979*7f2fe78bSCy Schubert
3980*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
3981*7f2fe78bSCy Schubert\PYG{n}{principal}  \PYG{n}{permissions}  \PYG{p}{[}\PYG{n}{target\PYGZus{}principal}  \PYG{p}{[}\PYG{n}{restrictions}\PYG{p}{]} \PYG{p}{]}
3982*7f2fe78bSCy Schubert\end{sphinxVerbatim}
3983*7f2fe78bSCy Schubert
3984*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
3985*7f2fe78bSCy Schubert\sphinxAtStartPar
3986*7f2fe78bSCy SchubertLine order in the ACL file is important.  The first matching entry
3987*7f2fe78bSCy Schubertwill control access for an actor principal on a target principal.
3988*7f2fe78bSCy Schubert\end{sphinxadmonition}
3989*7f2fe78bSCy Schubert\begin{description}
3990*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{principal}}] \leavevmode
3991*7f2fe78bSCy Schubert\sphinxAtStartPar
3992*7f2fe78bSCy Schubert(Partially or fully qualified Kerberos principal name.) Specifies
3993*7f2fe78bSCy Schubertthe principal whose permissions are to be set.
3994*7f2fe78bSCy Schubert
3995*7f2fe78bSCy Schubert\sphinxAtStartPar
3996*7f2fe78bSCy SchubertEach component of the name may be wildcarded using the \sphinxcode{\sphinxupquote{*}}
3997*7f2fe78bSCy Schubertcharacter.
3998*7f2fe78bSCy Schubert
3999*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{permissions}}] \leavevmode
4000*7f2fe78bSCy Schubert\sphinxAtStartPar
4001*7f2fe78bSCy SchubertSpecifies what operations may or may not be performed by a
4002*7f2fe78bSCy Schubert\sphinxstyleemphasis{principal} matching a particular entry.  This is a string of one or
4003*7f2fe78bSCy Schubertmore of the following list of characters or their upper\sphinxhyphen{}case
4004*7f2fe78bSCy Schubertcounterparts.  If the character is \sphinxstyleemphasis{upper\sphinxhyphen{}case}, then the operation
4005*7f2fe78bSCy Schubertis disallowed.  If the character is \sphinxstyleemphasis{lower\sphinxhyphen{}case}, then the operation
4006*7f2fe78bSCy Schubertis permitted.
4007*7f2fe78bSCy Schubert
4008*7f2fe78bSCy Schubert
4009*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
4010*7f2fe78bSCy Schubert\centering
4011*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|}
4012*7f2fe78bSCy Schubert\hline
4013*7f2fe78bSCy Schubert
4014*7f2fe78bSCy Schubert\sphinxAtStartPar
4015*7f2fe78bSCy Schuberta
4016*7f2fe78bSCy Schubert&
4017*7f2fe78bSCy Schubert\sphinxAtStartPar
4018*7f2fe78bSCy Schubert{[}Dis{]}allows the addition of principals or policies
4019*7f2fe78bSCy Schubert\\
4020*7f2fe78bSCy Schubert\hline
4021*7f2fe78bSCy Schubert\sphinxAtStartPar
4022*7f2fe78bSCy Schubertc
4023*7f2fe78bSCy Schubert&
4024*7f2fe78bSCy Schubert\sphinxAtStartPar
4025*7f2fe78bSCy Schubert{[}Dis{]}allows the changing of passwords for principals
4026*7f2fe78bSCy Schubert\\
4027*7f2fe78bSCy Schubert\hline
4028*7f2fe78bSCy Schubert\sphinxAtStartPar
4029*7f2fe78bSCy Schubertd
4030*7f2fe78bSCy Schubert&
4031*7f2fe78bSCy Schubert\sphinxAtStartPar
4032*7f2fe78bSCy Schubert{[}Dis{]}allows the deletion of principals or policies
4033*7f2fe78bSCy Schubert\\
4034*7f2fe78bSCy Schubert\hline
4035*7f2fe78bSCy Schubert\sphinxAtStartPar
4036*7f2fe78bSCy Schuberte
4037*7f2fe78bSCy Schubert&
4038*7f2fe78bSCy Schubert\sphinxAtStartPar
4039*7f2fe78bSCy Schubert{[}Dis{]}allows the extraction of principal keys
4040*7f2fe78bSCy Schubert\\
4041*7f2fe78bSCy Schubert\hline
4042*7f2fe78bSCy Schubert\sphinxAtStartPar
4043*7f2fe78bSCy Schuberti
4044*7f2fe78bSCy Schubert&
4045*7f2fe78bSCy Schubert\sphinxAtStartPar
4046*7f2fe78bSCy Schubert{[}Dis{]}allows inquiries about principals or policies
4047*7f2fe78bSCy Schubert\\
4048*7f2fe78bSCy Schubert\hline
4049*7f2fe78bSCy Schubert\sphinxAtStartPar
4050*7f2fe78bSCy Schubertl
4051*7f2fe78bSCy Schubert&
4052*7f2fe78bSCy Schubert\sphinxAtStartPar
4053*7f2fe78bSCy Schubert{[}Dis{]}allows the listing of all principals or policies
4054*7f2fe78bSCy Schubert\\
4055*7f2fe78bSCy Schubert\hline
4056*7f2fe78bSCy Schubert\sphinxAtStartPar
4057*7f2fe78bSCy Schubertm
4058*7f2fe78bSCy Schubert&
4059*7f2fe78bSCy Schubert\sphinxAtStartPar
4060*7f2fe78bSCy Schubert{[}Dis{]}allows the modification of principals or policies
4061*7f2fe78bSCy Schubert\\
4062*7f2fe78bSCy Schubert\hline
4063*7f2fe78bSCy Schubert\sphinxAtStartPar
4064*7f2fe78bSCy Schubertp
4065*7f2fe78bSCy Schubert&
4066*7f2fe78bSCy Schubert\sphinxAtStartPar
4067*7f2fe78bSCy Schubert{[}Dis{]}allows the propagation of the principal database (used in {\hyperref[\detokenize{admin/database:incr-db-prop}]{\sphinxcrossref{\DUrole{std,std-ref}{Incremental database propagation}}}})
4068*7f2fe78bSCy Schubert\\
4069*7f2fe78bSCy Schubert\hline
4070*7f2fe78bSCy Schubert\sphinxAtStartPar
4071*7f2fe78bSCy Schuberts
4072*7f2fe78bSCy Schubert&
4073*7f2fe78bSCy Schubert\sphinxAtStartPar
4074*7f2fe78bSCy Schubert{[}Dis{]}allows the explicit setting of the key for a principal
4075*7f2fe78bSCy Schubert\\
4076*7f2fe78bSCy Schubert\hline
4077*7f2fe78bSCy Schubert\sphinxAtStartPar
4078*7f2fe78bSCy Schubertx
4079*7f2fe78bSCy Schubert&
4080*7f2fe78bSCy Schubert\sphinxAtStartPar
4081*7f2fe78bSCy SchubertShort for admcilsp. All privileges (except \sphinxcode{\sphinxupquote{e}})
4082*7f2fe78bSCy Schubert\\
4083*7f2fe78bSCy Schubert\hline
4084*7f2fe78bSCy Schubert\sphinxAtStartPar
4085*7f2fe78bSCy Schubert*
4086*7f2fe78bSCy Schubert&
4087*7f2fe78bSCy Schubert\sphinxAtStartPar
4088*7f2fe78bSCy SchubertSame as x.
4089*7f2fe78bSCy Schubert\\
4090*7f2fe78bSCy Schubert\hline
4091*7f2fe78bSCy Schubert\end{tabulary}
4092*7f2fe78bSCy Schubert\par
4093*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
4094*7f2fe78bSCy Schubert
4095*7f2fe78bSCy Schubert\end{description}
4096*7f2fe78bSCy Schubert
4097*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
4098*7f2fe78bSCy Schubert\sphinxAtStartPar
4099*7f2fe78bSCy SchubertThe \sphinxcode{\sphinxupquote{extract}} privilege is not included in the wildcard
4100*7f2fe78bSCy Schubertprivilege; it must be explicitly assigned.  This privilege
4101*7f2fe78bSCy Schubertallows the user to extract keys from the database, and must be
4102*7f2fe78bSCy Schuberthandled with great care to avoid disclosure of important keys
4103*7f2fe78bSCy Schubertlike those of the kadmin/* or krbtgt/* principals.  The
4104*7f2fe78bSCy Schubert\sphinxstylestrong{lockdown\_keys} principal attribute can be used to prevent
4105*7f2fe78bSCy Schubertkey extraction from specific principals regardless of the
4106*7f2fe78bSCy Schubertgranted privilege.
4107*7f2fe78bSCy Schubert\end{sphinxadmonition}
4108*7f2fe78bSCy Schubert\begin{description}
4109*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{target\_principal}}] \leavevmode
4110*7f2fe78bSCy Schubert\sphinxAtStartPar
4111*7f2fe78bSCy Schubert(Optional. Partially or fully qualified Kerberos principal name.)
4112*7f2fe78bSCy SchubertSpecifies the principal on which \sphinxstyleemphasis{permissions} may be applied.
4113*7f2fe78bSCy SchubertEach component of the name may be wildcarded using the \sphinxcode{\sphinxupquote{*}}
4114*7f2fe78bSCy Schubertcharacter.
4115*7f2fe78bSCy Schubert
4116*7f2fe78bSCy Schubert\sphinxAtStartPar
4117*7f2fe78bSCy Schubert\sphinxstyleemphasis{target\_principal} can also include back\sphinxhyphen{}references to \sphinxstyleemphasis{principal},
4118*7f2fe78bSCy Schubertin which \sphinxcode{\sphinxupquote{*number}} matches the corresponding wildcard in
4119*7f2fe78bSCy Schubert\sphinxstyleemphasis{principal}.
4120*7f2fe78bSCy Schubert
4121*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{restrictions}}] \leavevmode
4122*7f2fe78bSCy Schubert\sphinxAtStartPar
4123*7f2fe78bSCy Schubert(Optional) A string of flags. Allowed restrictions are:
4124*7f2fe78bSCy Schubert\begin{quote}
4125*7f2fe78bSCy Schubert\begin{description}
4126*7f2fe78bSCy Schubert\item[{\{+|\sphinxhyphen{}\}\sphinxstyleemphasis{flagname}}] \leavevmode
4127*7f2fe78bSCy Schubert\sphinxAtStartPar
4128*7f2fe78bSCy Schubertflag is forced to the indicated value.  The permissible flags
4129*7f2fe78bSCy Schubertare the same as those for the \sphinxstylestrong{default\_principal\_flags}
4130*7f2fe78bSCy Schubertvariable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
4131*7f2fe78bSCy Schubert
4132*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{\sphinxhyphen{}clearpolicy}}] \leavevmode
4133*7f2fe78bSCy Schubert\sphinxAtStartPar
4134*7f2fe78bSCy Schubertpolicy is forced to be empty.
4135*7f2fe78bSCy Schubert
4136*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{\sphinxhyphen{}policy pol}}] \leavevmode
4137*7f2fe78bSCy Schubert\sphinxAtStartPar
4138*7f2fe78bSCy Schubertpolicy is forced to be \sphinxstyleemphasis{pol}.
4139*7f2fe78bSCy Schubert
4140*7f2fe78bSCy Schubert\item[{\sphinxhyphen{}\{\sphinxstyleemphasis{expire, pwexpire, maxlife, maxrenewlife}\} \sphinxstyleemphasis{time}}] \leavevmode
4141*7f2fe78bSCy Schubert\sphinxAtStartPar
4142*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) associated value will be forced to
4143*7f2fe78bSCy SchubertMIN(\sphinxstyleemphasis{time}, requested value).
4144*7f2fe78bSCy Schubert
4145*7f2fe78bSCy Schubert\end{description}
4146*7f2fe78bSCy Schubert\end{quote}
4147*7f2fe78bSCy Schubert
4148*7f2fe78bSCy Schubert\sphinxAtStartPar
4149*7f2fe78bSCy SchubertThe above flags act as restrictions on any add or modify operation
4150*7f2fe78bSCy Schubertwhich is allowed due to that ACL line.
4151*7f2fe78bSCy Schubert
4152*7f2fe78bSCy Schubert\end{description}
4153*7f2fe78bSCy Schubert
4154*7f2fe78bSCy Schubert\begin{sphinxadmonition}{warning}{Warning:}
4155*7f2fe78bSCy Schubert\sphinxAtStartPar
4156*7f2fe78bSCy SchubertIf the kadmind ACL file is modified, the kadmind daemon needs to be
4157*7f2fe78bSCy Schubertrestarted for changes to take effect.
4158*7f2fe78bSCy Schubert\end{sphinxadmonition}
4159*7f2fe78bSCy Schubert
4160*7f2fe78bSCy Schubert
4161*7f2fe78bSCy Schubert\subsubsection{EXAMPLE}
4162*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kadm5_acl:example}}
4163*7f2fe78bSCy Schubert\sphinxAtStartPar
4164*7f2fe78bSCy SchubertHere is an example of a kadm5.acl file:
4165*7f2fe78bSCy Schubert
4166*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4167*7f2fe78bSCy Schubert\PYG{o}{*}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}    \PYG{o}{*}                               \PYG{c+c1}{\PYGZsh{} line 1}
4168*7f2fe78bSCy Schubert\PYG{n}{joeadmin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}   \PYG{n}{ADMCIL}                          \PYG{c+c1}{\PYGZsh{} line 2}
4169*7f2fe78bSCy Schubert\PYG{n}{joeadmin}\PYG{o}{/}\PYG{o}{*}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{n}{i}   \PYG{o}{*}\PYG{o}{/}\PYG{n}{root}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}       \PYG{c+c1}{\PYGZsh{} line 3}
4170*7f2fe78bSCy Schubert\PYG{o}{*}\PYG{o}{/}\PYG{n}{root}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}     \PYG{n}{ci}  \PYG{o}{*}\PYG{l+m+mi}{1}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}           \PYG{c+c1}{\PYGZsh{} line 4}
4171*7f2fe78bSCy Schubert\PYG{o}{*}\PYG{o}{/}\PYG{n}{root}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}     \PYG{n}{l}   \PYG{o}{*}                           \PYG{c+c1}{\PYGZsh{} line 5}
4172*7f2fe78bSCy Schubert\PYG{n}{sms}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}        \PYG{n}{x}   \PYG{o}{*} \PYG{o}{\PYGZhy{}}\PYG{n}{maxlife} \PYG{l+m+mi}{9}\PYG{n}{h} \PYG{o}{\PYGZhy{}}\PYG{n}{postdateable} \PYG{c+c1}{\PYGZsh{} line 6}
4173*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4174*7f2fe78bSCy Schubert
4175*7f2fe78bSCy Schubert\sphinxAtStartPar
4176*7f2fe78bSCy Schubert(line 1) Any principal in the \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} realm with an
4177*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{admin}} instance has all administrative privileges except extracting
4178*7f2fe78bSCy Schubertkeys.
4179*7f2fe78bSCy Schubert
4180*7f2fe78bSCy Schubert\sphinxAtStartPar
4181*7f2fe78bSCy Schubert(lines 1\sphinxhyphen{}3) The user \sphinxcode{\sphinxupquote{joeadmin}} has all permissions except
4182*7f2fe78bSCy Schubertextracting keys with his \sphinxcode{\sphinxupquote{admin}} instance,
4183*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{joeadmin/admin@ATHENA.MIT.EDU}} (matches line 1).  He has no
4184*7f2fe78bSCy Schubertpermissions at all with his null instance, \sphinxcode{\sphinxupquote{joeadmin@ATHENA.MIT.EDU}}
4185*7f2fe78bSCy Schubert(matches line 2).  His \sphinxcode{\sphinxupquote{root}} and other non\sphinxhyphen{}\sphinxcode{\sphinxupquote{admin}}, non\sphinxhyphen{}null
4186*7f2fe78bSCy Schubertinstances (e.g., \sphinxcode{\sphinxupquote{extra}} or \sphinxcode{\sphinxupquote{dbadmin}}) have inquire permissions
4187*7f2fe78bSCy Schubertwith any principal that has the instance \sphinxcode{\sphinxupquote{root}} (matches line 3).
4188*7f2fe78bSCy Schubert
4189*7f2fe78bSCy Schubert\sphinxAtStartPar
4190*7f2fe78bSCy Schubert(line 4) Any \sphinxcode{\sphinxupquote{root}} principal in \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} can inquire
4191*7f2fe78bSCy Schubertor change the password of their null instance, but not any other
4192*7f2fe78bSCy Schubertnull instance.  (Here, \sphinxcode{\sphinxupquote{*1}} denotes a back\sphinxhyphen{}reference to the
4193*7f2fe78bSCy Schubertcomponent matching the first wildcard in the actor principal.)
4194*7f2fe78bSCy Schubert
4195*7f2fe78bSCy Schubert\sphinxAtStartPar
4196*7f2fe78bSCy Schubert(line 5) Any \sphinxcode{\sphinxupquote{root}} principal in \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} can generate
4197*7f2fe78bSCy Schubertthe list of principals in the database, and the list of policies
4198*7f2fe78bSCy Schubertin the database.  This line is separate from line 4, because list
4199*7f2fe78bSCy Schubertpermission can only be granted globally, not to specific target
4200*7f2fe78bSCy Schubertprincipals.
4201*7f2fe78bSCy Schubert
4202*7f2fe78bSCy Schubert\sphinxAtStartPar
4203*7f2fe78bSCy Schubert(line 6) Finally, the Service Management System principal
4204*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{sms@ATHENA.MIT.EDU}} has all permissions except extracting keys, but
4205*7f2fe78bSCy Schubertany principal that it creates or modifies will not be able to get
4206*7f2fe78bSCy Schubertpostdateable tickets or tickets with a life of longer than 9 hours.
4207*7f2fe78bSCy Schubert
4208*7f2fe78bSCy Schubert
4209*7f2fe78bSCy Schubert\subsubsection{MODULE BEHAVIOR}
4210*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kadm5_acl:module-behavior}}
4211*7f2fe78bSCy Schubert\sphinxAtStartPar
4212*7f2fe78bSCy SchubertThe ACL file can coexist with other authorization modules in release
4213*7f2fe78bSCy Schubert1.16 and later, as configured in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:kadm5-auth}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5\_auth interface}}}} section of
4214*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.  The ACL file will positively authorize
4215*7f2fe78bSCy Schubertoperations according to the rules above, but will never
4216*7f2fe78bSCy Schubertauthoritatively deny an operation, so other modules can authorize
4217*7f2fe78bSCy Schubertoperations in addition to those authorized by the ACL file.
4218*7f2fe78bSCy Schubert
4219*7f2fe78bSCy Schubert\sphinxAtStartPar
4220*7f2fe78bSCy SchubertTo operate without an ACL file, set the \sphinxstyleemphasis{acl\_file} variable in
4221*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} to the empty string with \sphinxcode{\sphinxupquote{acl\_file = ""}}.
4222*7f2fe78bSCy Schubert
4223*7f2fe78bSCy Schubert
4224*7f2fe78bSCy Schubert\subsubsection{SEE ALSO}
4225*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_files/kadm5_acl:see-also}}
4226*7f2fe78bSCy Schubert\sphinxAtStartPar
4227*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}, {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}}
4228*7f2fe78bSCy Schubert
4229*7f2fe78bSCy Schubert
4230*7f2fe78bSCy Schubert\chapter{Realm configuration decisions}
4231*7f2fe78bSCy Schubert\label{\detokenize{admin/realm_config:realm-configuration-decisions}}\label{\detokenize{admin/realm_config::doc}}
4232*7f2fe78bSCy Schubert\sphinxAtStartPar
4233*7f2fe78bSCy SchubertBefore installing Kerberos V5, it is necessary to consider the
4234*7f2fe78bSCy Schubertfollowing issues:
4235*7f2fe78bSCy Schubert\begin{itemize}
4236*7f2fe78bSCy Schubert\item {}
4237*7f2fe78bSCy Schubert\sphinxAtStartPar
4238*7f2fe78bSCy SchubertThe name of your Kerberos realm (or the name of each realm, if you
4239*7f2fe78bSCy Schubertneed more than one).
4240*7f2fe78bSCy Schubert
4241*7f2fe78bSCy Schubert\item {}
4242*7f2fe78bSCy Schubert\sphinxAtStartPar
4243*7f2fe78bSCy SchubertHow you will assign your hostnames to Kerberos realms.
4244*7f2fe78bSCy Schubert
4245*7f2fe78bSCy Schubert\item {}
4246*7f2fe78bSCy Schubert\sphinxAtStartPar
4247*7f2fe78bSCy SchubertWhich ports your KDC and and kadmind services will use, if they will
4248*7f2fe78bSCy Schubertnot be using the default ports.
4249*7f2fe78bSCy Schubert
4250*7f2fe78bSCy Schubert\item {}
4251*7f2fe78bSCy Schubert\sphinxAtStartPar
4252*7f2fe78bSCy SchubertHow many replica KDCs you need and where they should be located.
4253*7f2fe78bSCy Schubert
4254*7f2fe78bSCy Schubert\item {}
4255*7f2fe78bSCy Schubert\sphinxAtStartPar
4256*7f2fe78bSCy SchubertThe hostnames of your primary and replica KDCs.
4257*7f2fe78bSCy Schubert
4258*7f2fe78bSCy Schubert\item {}
4259*7f2fe78bSCy Schubert\sphinxAtStartPar
4260*7f2fe78bSCy SchubertHow frequently you will propagate the database from the primary KDC
4261*7f2fe78bSCy Schubertto the replica KDCs.
4262*7f2fe78bSCy Schubert
4263*7f2fe78bSCy Schubert\end{itemize}
4264*7f2fe78bSCy Schubert
4265*7f2fe78bSCy Schubert
4266*7f2fe78bSCy Schubert\section{Realm name}
4267*7f2fe78bSCy Schubert\label{\detokenize{admin/realm_config:realm-name}}
4268*7f2fe78bSCy Schubert\sphinxAtStartPar
4269*7f2fe78bSCy SchubertAlthough your Kerberos realm can be any ASCII string, convention is to
4270*7f2fe78bSCy Schubertmake it the same as your domain name, in upper\sphinxhyphen{}case letters.
4271*7f2fe78bSCy Schubert
4272*7f2fe78bSCy Schubert\sphinxAtStartPar
4273*7f2fe78bSCy SchubertFor example, hosts in the domain \sphinxcode{\sphinxupquote{example.com}} would be in the
4274*7f2fe78bSCy SchubertKerberos realm:
4275*7f2fe78bSCy Schubert
4276*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4277*7f2fe78bSCy Schubert\PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM}
4278*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4279*7f2fe78bSCy Schubert
4280*7f2fe78bSCy Schubert\sphinxAtStartPar
4281*7f2fe78bSCy SchubertIf you need multiple Kerberos realms, MIT recommends that you use
4282*7f2fe78bSCy Schubertdescriptive names which end with your domain name, such as:
4283*7f2fe78bSCy Schubert
4284*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4285*7f2fe78bSCy Schubert\PYG{n}{BOSTON}\PYG{o}{.}\PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM}
4286*7f2fe78bSCy Schubert\PYG{n}{HOUSTON}\PYG{o}{.}\PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM}
4287*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4288*7f2fe78bSCy Schubert
4289*7f2fe78bSCy Schubert
4290*7f2fe78bSCy Schubert\section{Mapping hostnames onto Kerberos realms}
4291*7f2fe78bSCy Schubert\label{\detokenize{admin/realm_config:mapping-hostnames-onto-kerberos-realms}}\label{\detokenize{admin/realm_config:mapping-hostnames}}
4292*7f2fe78bSCy Schubert\sphinxAtStartPar
4293*7f2fe78bSCy SchubertMapping hostnames onto Kerberos realms is done in one of three ways.
4294*7f2fe78bSCy Schubert
4295*7f2fe78bSCy Schubert\sphinxAtStartPar
4296*7f2fe78bSCy SchubertThe first mechanism works through a set of rules in the
4297*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:domain-realm}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}domain\_realm{]}}}}} section of {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.  You can specify
4298*7f2fe78bSCy Schubertmappings for an entire domain or on a per\sphinxhyphen{}hostname basis.  Typically
4299*7f2fe78bSCy Schubertyou would do this by specifying the mappings for a given domain or
4300*7f2fe78bSCy Schubertsubdomain and listing the exceptions.
4301*7f2fe78bSCy Schubert
4302*7f2fe78bSCy Schubert\sphinxAtStartPar
4303*7f2fe78bSCy SchubertThe second mechanism is to use KDC host\sphinxhyphen{}based service referrals.  With
4304*7f2fe78bSCy Schubertthis method, the KDC’s krb5.conf has a full {[}domain\_realm{]} mapping for
4305*7f2fe78bSCy Schuberthosts, but the clients do not, or have mappings for only a subset of
4306*7f2fe78bSCy Schubertthe hosts they might contact.  When a client needs to contact a server
4307*7f2fe78bSCy Schuberthost for which it has no mapping, it will ask the client realm’s KDC
4308*7f2fe78bSCy Schubertfor the service ticket, and will receive a referral to the appropriate
4309*7f2fe78bSCy Schubertservice realm.
4310*7f2fe78bSCy Schubert
4311*7f2fe78bSCy Schubert\sphinxAtStartPar
4312*7f2fe78bSCy SchubertTo use referrals, clients must be running MIT krb5 1.6 or later, and
4313*7f2fe78bSCy Schubertthe KDC must be running MIT krb5 1.7 or later.  The
4314*7f2fe78bSCy Schubert\sphinxstylestrong{host\_based\_services} and \sphinxstylestrong{no\_host\_referral} variables in the
4315*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} section of {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} can be used to
4316*7f2fe78bSCy Schubertfine\sphinxhyphen{}tune referral behavior on the KDC.
4317*7f2fe78bSCy Schubert
4318*7f2fe78bSCy Schubert\sphinxAtStartPar
4319*7f2fe78bSCy SchubertIt is also possible for clients to use DNS TXT records, if
4320*7f2fe78bSCy Schubert\sphinxstylestrong{dns\_lookup\_realm} is enabled in {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.  Such lookups
4321*7f2fe78bSCy Schubertare disabled by default because DNS is an insecure protocol and security
4322*7f2fe78bSCy Schubertholes could result if DNS records are spoofed.  If enabled, the client
4323*7f2fe78bSCy Schubertwill try to look up a TXT record formed by prepending the prefix
4324*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{\_kerberos}} to the hostname in question.  If that record is not
4325*7f2fe78bSCy Schubertfound, the client will attempt a lookup by prepending \sphinxcode{\sphinxupquote{\_kerberos}} to the
4326*7f2fe78bSCy Schuberthost’s domain name, then its parent domain, up to the top\sphinxhyphen{}level domain.
4327*7f2fe78bSCy SchubertFor the hostname \sphinxcode{\sphinxupquote{boston.engineering.example.com}}, the names looked up
4328*7f2fe78bSCy Schubertwould be:
4329*7f2fe78bSCy Schubert
4330*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4331*7f2fe78bSCy Schubert\PYG{n}{\PYGZus{}kerberos}\PYG{o}{.}\PYG{n}{boston}\PYG{o}{.}\PYG{n}{engineering}\PYG{o}{.}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}
4332*7f2fe78bSCy Schubert\PYG{n}{\PYGZus{}kerberos}\PYG{o}{.}\PYG{n}{engineering}\PYG{o}{.}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}
4333*7f2fe78bSCy Schubert\PYG{n}{\PYGZus{}kerberos}\PYG{o}{.}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}
4334*7f2fe78bSCy Schubert\PYG{n}{\PYGZus{}kerberos}\PYG{o}{.}\PYG{n}{com}
4335*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4336*7f2fe78bSCy Schubert
4337*7f2fe78bSCy Schubert\sphinxAtStartPar
4338*7f2fe78bSCy SchubertThe value of the first TXT record found is taken as the realm name.
4339*7f2fe78bSCy Schubert
4340*7f2fe78bSCy Schubert\sphinxAtStartPar
4341*7f2fe78bSCy SchubertEven if you do not choose to use this mechanism within your site,
4342*7f2fe78bSCy Schubertyou may wish to set it up anyway, for use when interacting with other sites.
4343*7f2fe78bSCy Schubert
4344*7f2fe78bSCy Schubert
4345*7f2fe78bSCy Schubert\section{Ports for the KDC and admin services}
4346*7f2fe78bSCy Schubert\label{\detokenize{admin/realm_config:ports-for-the-kdc-and-admin-services}}
4347*7f2fe78bSCy Schubert\sphinxAtStartPar
4348*7f2fe78bSCy SchubertThe default ports used by Kerberos are port 88 for the KDC and port
4349*7f2fe78bSCy Schubert749 for the admin server.  You can, however, choose to run on other
4350*7f2fe78bSCy Schubertports, as long as they are specified in each host’s
4351*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} files or in DNS SRV records, and the
4352*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} file on each KDC.  For a more thorough treatment of
4353*7f2fe78bSCy Schubertport numbers used by the Kerberos V5 programs, refer to the
4354*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/appl_servers:conf-firewall}]{\sphinxcrossref{\DUrole{std,std-ref}{Configuring your firewall to work with Kerberos V5}}}}.
4355*7f2fe78bSCy Schubert
4356*7f2fe78bSCy Schubert
4357*7f2fe78bSCy Schubert\section{Replica KDCs}
4358*7f2fe78bSCy Schubert\label{\detokenize{admin/realm_config:replica-kdcs}}
4359*7f2fe78bSCy Schubert\sphinxAtStartPar
4360*7f2fe78bSCy SchubertReplica KDCs provide an additional source of Kerberos ticket\sphinxhyphen{}granting
4361*7f2fe78bSCy Schubertservices in the event of inaccessibility of the primary KDC.  The
4362*7f2fe78bSCy Schubertnumber of replica KDCs you need and the decision of where to place them,
4363*7f2fe78bSCy Schubertboth physically and logically, depends on the specifics of your
4364*7f2fe78bSCy Schubertnetwork.
4365*7f2fe78bSCy Schubert
4366*7f2fe78bSCy Schubert\sphinxAtStartPar
4367*7f2fe78bSCy SchubertKerberos authentication requires that each client be able to contact a
4368*7f2fe78bSCy SchubertKDC.  Therefore, you need to anticipate any likely reason a KDC might
4369*7f2fe78bSCy Schubertbe unavailable and have a replica KDC to take up the slack.
4370*7f2fe78bSCy Schubert
4371*7f2fe78bSCy Schubert\sphinxAtStartPar
4372*7f2fe78bSCy SchubertSome considerations include:
4373*7f2fe78bSCy Schubert\begin{itemize}
4374*7f2fe78bSCy Schubert\item {}
4375*7f2fe78bSCy Schubert\sphinxAtStartPar
4376*7f2fe78bSCy SchubertHave at least one replica KDC as a backup, for when the primary KDC
4377*7f2fe78bSCy Schubertis down, is being upgraded, or is otherwise unavailable.
4378*7f2fe78bSCy Schubert
4379*7f2fe78bSCy Schubert\item {}
4380*7f2fe78bSCy Schubert\sphinxAtStartPar
4381*7f2fe78bSCy SchubertIf your network is split such that a network outage is likely to
4382*7f2fe78bSCy Schubertcause a network partition (some segment or segments of the network
4383*7f2fe78bSCy Schubertto become cut off or isolated from other segments), have a replica
4384*7f2fe78bSCy SchubertKDC accessible to each segment.
4385*7f2fe78bSCy Schubert
4386*7f2fe78bSCy Schubert\item {}
4387*7f2fe78bSCy Schubert\sphinxAtStartPar
4388*7f2fe78bSCy SchubertIf possible, have at least one replica KDC in a different building
4389*7f2fe78bSCy Schubertfrom the primary, in case of power outages, fires, or other
4390*7f2fe78bSCy Schubertlocalized disasters.
4391*7f2fe78bSCy Schubert
4392*7f2fe78bSCy Schubert\end{itemize}
4393*7f2fe78bSCy Schubert
4394*7f2fe78bSCy Schubert
4395*7f2fe78bSCy Schubert\section{Hostnames for KDCs}
4396*7f2fe78bSCy Schubert\label{\detokenize{admin/realm_config:hostnames-for-kdcs}}\label{\detokenize{admin/realm_config:kdc-hostnames}}
4397*7f2fe78bSCy Schubert\sphinxAtStartPar
4398*7f2fe78bSCy SchubertMIT recommends that your KDCs have a predefined set of CNAME records
4399*7f2fe78bSCy Schubert(DNS hostname aliases), such as \sphinxcode{\sphinxupquote{kerberos}} for the primary KDC and
4400*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{kerberos\sphinxhyphen{}1}}, \sphinxcode{\sphinxupquote{kerberos\sphinxhyphen{}2}}, … for the replica KDCs.  This way,
4401*7f2fe78bSCy Schubertif you need to swap a machine, you only need to change a DNS entry,
4402*7f2fe78bSCy Schubertrather than having to change hostnames.
4403*7f2fe78bSCy Schubert
4404*7f2fe78bSCy Schubert\sphinxAtStartPar
4405*7f2fe78bSCy SchubertAs of MIT krb5 1.4, clients can locate a realm’s KDCs through DNS
4406*7f2fe78bSCy Schubertusing SRV records (\index{RFC@\spxentry{RFC}!RFC 2782@\spxentry{RFC 2782}}\sphinxhref{https://tools.ietf.org/html/rfc2782.html}{\sphinxstylestrong{RFC 2782}}), assuming the Kerberos realm name is
4407*7f2fe78bSCy Schubertalso a DNS domain name.  These records indicate the hostname and port
4408*7f2fe78bSCy Schubertnumber to contact for that service, optionally with weighting and
4409*7f2fe78bSCy Schubertprioritization.  The domain name used in the SRV record name is the
4410*7f2fe78bSCy Schubertrealm name.  Several different Kerberos\sphinxhyphen{}related service names are
4411*7f2fe78bSCy Schubertused:
4412*7f2fe78bSCy Schubert\begin{description}
4413*7f2fe78bSCy Schubert\item[{\_kerberos.\_udp}] \leavevmode
4414*7f2fe78bSCy Schubert\sphinxAtStartPar
4415*7f2fe78bSCy SchubertThis is for contacting any KDC by UDP.  This entry will be used
4416*7f2fe78bSCy Schubertthe most often.  Normally you should list port 88 on each of your
4417*7f2fe78bSCy SchubertKDCs.
4418*7f2fe78bSCy Schubert
4419*7f2fe78bSCy Schubert\item[{\_kerberos.\_tcp}] \leavevmode
4420*7f2fe78bSCy Schubert\sphinxAtStartPar
4421*7f2fe78bSCy SchubertThis is for contacting any KDC by TCP.  Normally you should use
4422*7f2fe78bSCy Schubertport 88.  This entry should be omitted if the KDC does not listen
4423*7f2fe78bSCy Schuberton TCP ports, as was the default prior to release 1.13.
4424*7f2fe78bSCy Schubert
4425*7f2fe78bSCy Schubert\item[{\_kerberos\sphinxhyphen{}master.\_udp}] \leavevmode
4426*7f2fe78bSCy Schubert\sphinxAtStartPar
4427*7f2fe78bSCy SchubertThis entry should refer to those KDCs, if any, that will
4428*7f2fe78bSCy Schubertimmediately see password changes to the Kerberos database.  If a
4429*7f2fe78bSCy Schubertuser is logging in and the password appears to be incorrect, the
4430*7f2fe78bSCy Schubertclient will retry with the primary KDC before failing with an
4431*7f2fe78bSCy Schubert“incorrect password” error given.
4432*7f2fe78bSCy Schubert
4433*7f2fe78bSCy Schubert\sphinxAtStartPar
4434*7f2fe78bSCy SchubertIf you have only one KDC, or for whatever reason there is no
4435*7f2fe78bSCy Schubertaccessible KDC that would get database changes faster than the
4436*7f2fe78bSCy Schubertothers, you do not need to define this entry.
4437*7f2fe78bSCy Schubert
4438*7f2fe78bSCy Schubert\item[{\_kerberos\sphinxhyphen{}adm.\_tcp}] \leavevmode
4439*7f2fe78bSCy Schubert\sphinxAtStartPar
4440*7f2fe78bSCy SchubertThis should list port 749 on your primary KDC.  Support for it is
4441*7f2fe78bSCy Schubertnot complete at this time, but it will eventually be used by the
4442*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} program and related utilities.  For now, you will
4443*7f2fe78bSCy Schubertalso need the \sphinxstylestrong{admin\_server} variable in {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.
4444*7f2fe78bSCy Schubert
4445*7f2fe78bSCy Schubert\item[{\_kerberos\sphinxhyphen{}master.\_tcp}] \leavevmode
4446*7f2fe78bSCy Schubert\sphinxAtStartPar
4447*7f2fe78bSCy SchubertThe corresponding TCP port for \_kerberos\sphinxhyphen{}master.\_udp, assuming the
4448*7f2fe78bSCy Schubertprimary KDC listens on a TCP port.
4449*7f2fe78bSCy Schubert
4450*7f2fe78bSCy Schubert\item[{\_kpasswd.\_udp}] \leavevmode
4451*7f2fe78bSCy Schubert\sphinxAtStartPar
4452*7f2fe78bSCy SchubertThis entry should list port 464 on your primary KDC.  It is used
4453*7f2fe78bSCy Schubertwhen a user changes her password.  If this entry is not defined
4454*7f2fe78bSCy Schubertbut a \_kerberos\sphinxhyphen{}adm.\_tcp entry is defined, the client will use the
4455*7f2fe78bSCy Schubert\_kerberos\sphinxhyphen{}adm.\_tcp entry with the port number changed to 464.
4456*7f2fe78bSCy Schubert
4457*7f2fe78bSCy Schubert\item[{\_kpasswd.\_tcp}] \leavevmode
4458*7f2fe78bSCy Schubert\sphinxAtStartPar
4459*7f2fe78bSCy SchubertThe corresponding TCP port for \_kpasswd.\_udp.
4460*7f2fe78bSCy Schubert
4461*7f2fe78bSCy Schubert\end{description}
4462*7f2fe78bSCy Schubert
4463*7f2fe78bSCy Schubert\sphinxAtStartPar
4464*7f2fe78bSCy SchubertThe DNS SRV specification requires that the hostnames listed be the
4465*7f2fe78bSCy Schubertcanonical names, not aliases.  So, for example, you might include the
4466*7f2fe78bSCy Schubertfollowing records in your (BIND\sphinxhyphen{}style) zone file:
4467*7f2fe78bSCy Schubert
4468*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4469*7f2fe78bSCy Schubert\PYGZdl{}ORIGIN foobar.com.
4470*7f2fe78bSCy Schubert\PYGZus{}kerberos               TXT       \PYGZdq{}FOOBAR.COM\PYGZdq{}
4471*7f2fe78bSCy Schubertkerberos                CNAME     daisy
4472*7f2fe78bSCy Schubertkerberos\PYGZhy{}1              CNAME     use\PYGZhy{}the\PYGZhy{}force\PYGZhy{}luke
4473*7f2fe78bSCy Schubertkerberos\PYGZhy{}2              CNAME     bunny\PYGZhy{}rabbit
4474*7f2fe78bSCy Schubert\PYGZus{}kerberos.\PYGZus{}udp          SRV       0 0 88 daisy
4475*7f2fe78bSCy Schubert                        SRV       0 0 88 use\PYGZhy{}the\PYGZhy{}force\PYGZhy{}luke
4476*7f2fe78bSCy Schubert                        SRV       0 0 88 bunny\PYGZhy{}rabbit
4477*7f2fe78bSCy Schubert\PYGZus{}kerberos\PYGZhy{}master.\PYGZus{}udp   SRV       0 0 88 daisy
4478*7f2fe78bSCy Schubert\PYGZus{}kerberos\PYGZhy{}adm.\PYGZus{}tcp      SRV       0 0 749 daisy
4479*7f2fe78bSCy Schubert\PYGZus{}kpasswd.\PYGZus{}udp           SRV       0 0 464 daisy
4480*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4481*7f2fe78bSCy Schubert
4482*7f2fe78bSCy Schubert\sphinxAtStartPar
4483*7f2fe78bSCy SchubertClients can also be configured with the explicit location of services
4484*7f2fe78bSCy Schubertusing the \sphinxstylestrong{kdc}, \sphinxstylestrong{master\_kdc}, \sphinxstylestrong{admin\_server}, and
4485*7f2fe78bSCy Schubert\sphinxstylestrong{kpasswd\_server} variables in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} section of
4486*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.  Even if some clients will be configured with
4487*7f2fe78bSCy Schubertexplicit server locations, providing SRV records will still benefit
4488*7f2fe78bSCy Schubertunconfigured clients, and be useful for other sites.
4489*7f2fe78bSCy Schubert
4490*7f2fe78bSCy Schubert
4491*7f2fe78bSCy Schubert\section{KDC Discovery}
4492*7f2fe78bSCy Schubert\label{\detokenize{admin/realm_config:kdc-discovery}}\label{\detokenize{admin/realm_config:id1}}
4493*7f2fe78bSCy Schubert\sphinxAtStartPar
4494*7f2fe78bSCy SchubertAs of MIT krb5 1.15, clients can also locate KDCs in DNS through URI
4495*7f2fe78bSCy Schubertrecords (\index{RFC@\spxentry{RFC}!RFC 7553@\spxentry{RFC 7553}}\sphinxhref{https://tools.ietf.org/html/rfc7553.html}{\sphinxstylestrong{RFC 7553}}).  Limitations with the SRV record format may
4496*7f2fe78bSCy Schubertresult in extra DNS queries in situations where a client must failover
4497*7f2fe78bSCy Schubertto other transport types, or find a primary server.  The URI record
4498*7f2fe78bSCy Schubertcan convey more information about a realm’s KDCs with a single query.
4499*7f2fe78bSCy Schubert
4500*7f2fe78bSCy Schubert\sphinxAtStartPar
4501*7f2fe78bSCy SchubertThe client performs a query for the following URI records:
4502*7f2fe78bSCy Schubert\begin{itemize}
4503*7f2fe78bSCy Schubert\item {}
4504*7f2fe78bSCy Schubert\sphinxAtStartPar
4505*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{\_kerberos.REALM}} for finding KDCs.
4506*7f2fe78bSCy Schubert
4507*7f2fe78bSCy Schubert\item {}
4508*7f2fe78bSCy Schubert\sphinxAtStartPar
4509*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{\_kerberos\sphinxhyphen{}adm.REALM}} for finding kadmin services.
4510*7f2fe78bSCy Schubert
4511*7f2fe78bSCy Schubert\item {}
4512*7f2fe78bSCy Schubert\sphinxAtStartPar
4513*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{\_kpasswd.REALM}} for finding password services.
4514*7f2fe78bSCy Schubert
4515*7f2fe78bSCy Schubert\end{itemize}
4516*7f2fe78bSCy Schubert
4517*7f2fe78bSCy Schubert\sphinxAtStartPar
4518*7f2fe78bSCy SchubertThe URI record includes a priority, weight, and a URI string that
4519*7f2fe78bSCy Schubertconsists of case\sphinxhyphen{}insensitive colon separated fields, in the form
4520*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{scheme:{[}flags{]}:transport:residual}}.
4521*7f2fe78bSCy Schubert\begin{itemize}
4522*7f2fe78bSCy Schubert\item {}
4523*7f2fe78bSCy Schubert\sphinxAtStartPar
4524*7f2fe78bSCy Schubert\sphinxstyleemphasis{scheme} defines the registered URI type.  It should always be
4525*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{krb5srv}}.
4526*7f2fe78bSCy Schubert
4527*7f2fe78bSCy Schubert\item {}
4528*7f2fe78bSCy Schubert\sphinxAtStartPar
4529*7f2fe78bSCy Schubert\sphinxstyleemphasis{flags} contains zero or more flag characters.  Currently the only
4530*7f2fe78bSCy Schubertvalid flag is \sphinxcode{\sphinxupquote{m}}, which indicates that the record is for a
4531*7f2fe78bSCy Schubertprimary server.
4532*7f2fe78bSCy Schubert
4533*7f2fe78bSCy Schubert\item {}
4534*7f2fe78bSCy Schubert\sphinxAtStartPar
4535*7f2fe78bSCy Schubert\sphinxstyleemphasis{transport} defines the transport type of the residual URL or
4536*7f2fe78bSCy Schubertaddress.  Accepted values are \sphinxcode{\sphinxupquote{tcp}}, \sphinxcode{\sphinxupquote{udp}}, or \sphinxcode{\sphinxupquote{kkdcp}} for the
4537*7f2fe78bSCy SchubertMS\sphinxhyphen{}KKDCP type.
4538*7f2fe78bSCy Schubert
4539*7f2fe78bSCy Schubert\item {}
4540*7f2fe78bSCy Schubert\sphinxAtStartPar
4541*7f2fe78bSCy Schubert\sphinxstyleemphasis{residual} contains the hostname, IP address, or URL to be
4542*7f2fe78bSCy Schubertcontacted using the specified transport, with an optional port
4543*7f2fe78bSCy Schubertextension.  The MS\sphinxhyphen{}KKDCP transport type uses a HTTPS URL, and can
4544*7f2fe78bSCy Schubertinclude a port and/or path extension.
4545*7f2fe78bSCy Schubert
4546*7f2fe78bSCy Schubert\end{itemize}
4547*7f2fe78bSCy Schubert
4548*7f2fe78bSCy Schubert\sphinxAtStartPar
4549*7f2fe78bSCy SchubertAn example of URI records in a zone file:
4550*7f2fe78bSCy Schubert
4551*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4552*7f2fe78bSCy Schubert\PYG{n}{\PYGZus{}kerberos}\PYG{o}{.}\PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM}  \PYG{n}{URI}  \PYG{l+m+mi}{10} \PYG{l+m+mi}{1} \PYG{n}{krb5srv}\PYG{p}{:}\PYG{n}{m}\PYG{p}{:}\PYG{n}{tcp}\PYG{p}{:}\PYG{n}{kdc1}\PYG{o}{.}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}
4553*7f2fe78bSCy Schubert                       \PYG{n}{URI}  \PYG{l+m+mi}{20} \PYG{l+m+mi}{1} \PYG{n}{krb5srv}\PYG{p}{:}\PYG{n}{m}\PYG{p}{:}\PYG{n}{udp}\PYG{p}{:}\PYG{n}{kdc2}\PYG{o}{.}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com}\PYG{p}{:}\PYG{l+m+mi}{89}
4554*7f2fe78bSCy Schubert                       \PYG{n}{URI}  \PYG{l+m+mi}{40} \PYG{l+m+mi}{1} \PYG{n}{krb5srv}\PYG{p}{:}\PYG{p}{:}\PYG{n}{udp}\PYG{p}{:}\PYG{l+m+mf}{10.10}\PYG{l+m+mf}{.0}\PYG{l+m+mf}{.23}
4555*7f2fe78bSCy Schubert                       \PYG{n}{URI}  \PYG{l+m+mi}{30} \PYG{l+m+mi}{1} \PYG{n}{krb5srv}\PYG{p}{:}\PYG{p}{:}\PYG{n}{kkdcp}\PYG{p}{:}\PYG{n}{https}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{proxy}\PYG{p}{:}\PYG{l+m+mi}{89}\PYG{o}{/}\PYG{n}{auth}
4556*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4557*7f2fe78bSCy Schubert
4558*7f2fe78bSCy Schubert\sphinxAtStartPar
4559*7f2fe78bSCy SchubertURI lookups are enabled by default, and can be disabled by setting
4560*7f2fe78bSCy Schubert\sphinxstylestrong{dns\_uri\_lookup} in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}} section of
4561*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} to False.  When enabled, URI lookups take
4562*7f2fe78bSCy Schubertprecedence over SRV lookups, falling back to SRV lookups if no URI
4563*7f2fe78bSCy Schubertrecords are found.
4564*7f2fe78bSCy Schubert
4565*7f2fe78bSCy Schubert
4566*7f2fe78bSCy Schubert\section{Database propagation}
4567*7f2fe78bSCy Schubert\label{\detokenize{admin/realm_config:database-propagation}}\label{\detokenize{admin/realm_config:db-prop}}
4568*7f2fe78bSCy Schubert\sphinxAtStartPar
4569*7f2fe78bSCy SchubertThe Kerberos database resides on the primary KDC, and must be
4570*7f2fe78bSCy Schubertpropagated regularly (usually by a cron job) to the replica KDCs.  In
4571*7f2fe78bSCy Schubertdeciding how frequently the propagation should happen, you will need
4572*7f2fe78bSCy Schubertto balance the amount of time the propagation takes against the
4573*7f2fe78bSCy Schubertmaximum reasonable amount of time a user should have to wait for a
4574*7f2fe78bSCy Schubertpassword change to take effect.
4575*7f2fe78bSCy Schubert
4576*7f2fe78bSCy Schubert\sphinxAtStartPar
4577*7f2fe78bSCy SchubertIf the propagation time is longer than this maximum reasonable time
4578*7f2fe78bSCy Schubert(e.g., you have a particularly large database, you have a lot of
4579*7f2fe78bSCy Schubertreplicas, or you experience frequent network delays), you may wish to
4580*7f2fe78bSCy Schubertcut down on your propagation delay by performing the propagation in
4581*7f2fe78bSCy Schubertparallel.  To do this, have the primary KDC propagate the database to
4582*7f2fe78bSCy Schubertone set of replicas, and then have each of these replicas propagate
4583*7f2fe78bSCy Schubertthe database to additional replicas.
4584*7f2fe78bSCy Schubert
4585*7f2fe78bSCy Schubert\sphinxAtStartPar
4586*7f2fe78bSCy SchubertSee also {\hyperref[\detokenize{admin/database:incr-db-prop}]{\sphinxcrossref{\DUrole{std,std-ref}{Incremental database propagation}}}}
4587*7f2fe78bSCy Schubert
4588*7f2fe78bSCy Schubert
4589*7f2fe78bSCy Schubert\chapter{Database administration}
4590*7f2fe78bSCy Schubert\label{\detokenize{admin/database:database-administration}}\label{\detokenize{admin/database::doc}}
4591*7f2fe78bSCy Schubert\sphinxAtStartPar
4592*7f2fe78bSCy SchubertA Kerberos database contains all of a realm’s Kerberos principals,
4593*7f2fe78bSCy Schuberttheir passwords, and other administrative information about each
4594*7f2fe78bSCy Schubertprincipal.  For the most part, you will use the {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}
4595*7f2fe78bSCy Schubertprogram to manipulate the Kerberos database as a whole, and the
4596*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} program to make changes to the entries in the
4597*7f2fe78bSCy Schubertdatabase.  (One notable exception is that users will use the
4598*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{kpasswd(1)} program to change their own passwords.)  The kadmin
4599*7f2fe78bSCy Schubertprogram has its own command\sphinxhyphen{}line interface, to which you type the
4600*7f2fe78bSCy Schubertdatabase administrating commands.
4601*7f2fe78bSCy Schubert
4602*7f2fe78bSCy Schubert\sphinxAtStartPar
4603*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} provides a means to create, delete, load, or dump
4604*7f2fe78bSCy Schuberta Kerberos database.  It also contains commands to roll over the
4605*7f2fe78bSCy Schubertdatabase master key, and to stash a copy of the key so that the
4606*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} and {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} daemons can use the database
4607*7f2fe78bSCy Schubertwithout manual input.
4608*7f2fe78bSCy Schubert
4609*7f2fe78bSCy Schubert\sphinxAtStartPar
4610*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} provides for the maintenance of Kerberos principals,
4611*7f2fe78bSCy Schubertpassword policies, and service key tables (keytabs).  Normally it
4612*7f2fe78bSCy Schubertoperates as a network client using Kerberos authentication to
4613*7f2fe78bSCy Schubertcommunicate with {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}}, but there is also a variant, named
4614*7f2fe78bSCy Schubertkadmin.local, which directly accesses the Kerberos database on the
4615*7f2fe78bSCy Schubertlocal filesystem (or through LDAP).  kadmin.local is necessary to set
4616*7f2fe78bSCy Schubertup enough of the database to be able to use the remote version.
4617*7f2fe78bSCy Schubert
4618*7f2fe78bSCy Schubert\sphinxAtStartPar
4619*7f2fe78bSCy Schubertkadmin can authenticate to the admin server using the service
4620*7f2fe78bSCy Schubertprincipal \sphinxcode{\sphinxupquote{kadmin/admin}} or \sphinxcode{\sphinxupquote{kadmin/HOST}} (where \sphinxstyleemphasis{HOST} is the
4621*7f2fe78bSCy Schuberthostname of the admin server).  If the credentials cache contains a
4622*7f2fe78bSCy Schubertticket for either service principal and the \sphinxstylestrong{\sphinxhyphen{}c} ccache option is
4623*7f2fe78bSCy Schubertspecified, that ticket is used to authenticate to KADM5.  Otherwise,
4624*7f2fe78bSCy Schubertthe \sphinxstylestrong{\sphinxhyphen{}p} and \sphinxstylestrong{\sphinxhyphen{}k} options are used to specify the client Kerberos
4625*7f2fe78bSCy Schubertprincipal name used to authenticate.  Once kadmin has determined the
4626*7f2fe78bSCy Schubertprincipal name, it requests a \sphinxcode{\sphinxupquote{kadmin/admin}} Kerberos service ticket
4627*7f2fe78bSCy Schubertfrom the KDC, and uses that service ticket to authenticate to KADM5.
4628*7f2fe78bSCy Schubert
4629*7f2fe78bSCy Schubert\sphinxAtStartPar
4630*7f2fe78bSCy SchubertSee {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} for the available kadmin and kadmin.local
4631*7f2fe78bSCy Schubertcommands and options.
4632*7f2fe78bSCy Schubert
4633*7f2fe78bSCy Schubert
4634*7f2fe78bSCy Schubert\section{Principals}
4635*7f2fe78bSCy Schubert\label{\detokenize{admin/database:principals}}\label{\detokenize{admin/database:id1}}
4636*7f2fe78bSCy Schubert\sphinxAtStartPar
4637*7f2fe78bSCy SchubertEach entry in the Kerberos database contains a Kerberos principal and
4638*7f2fe78bSCy Schubertthe attributes and policies associated with that principal.
4639*7f2fe78bSCy Schubert
4640*7f2fe78bSCy Schubert\sphinxAtStartPar
4641*7f2fe78bSCy SchubertTo add a principal to the database, use the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}
4642*7f2fe78bSCy Schubert\sphinxstylestrong{add\_principal} command.  User principals should usually be created
4643*7f2fe78bSCy Schubertwith the \sphinxcode{\sphinxupquote{+requires\_preauth \sphinxhyphen{}allow\_svr}} options to help mitigate
4644*7f2fe78bSCy Schubertdictionary attacks (see {\hyperref[\detokenize{admin/dictionary:dictionary}]{\sphinxcrossref{\DUrole{std,std-ref}{Addressing dictionary attack risks}}}}):
4645*7f2fe78bSCy Schubert
4646*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4647*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addprinc} \PYG{o}{+}\PYG{n}{requires\PYGZus{}preauth} \PYG{o}{\PYGZhy{}}\PYG{n}{allow\PYGZus{}svr} \PYG{n}{alice}
4648*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{alice@KRBTEST.COM}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
4649*7f2fe78bSCy Schubert\PYG{n}{Re}\PYG{o}{\PYGZhy{}}\PYG{n}{enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{alice@KRBTEST.COM}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
4650*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4651*7f2fe78bSCy Schubert
4652*7f2fe78bSCy Schubert\sphinxAtStartPar
4653*7f2fe78bSCy SchubertUser principals which will authenticate with {\hyperref[\detokenize{admin/pkinit:pkinit}]{\sphinxcrossref{\DUrole{std,std-ref}{PKINIT configuration}}}} should
4654*7f2fe78bSCy Schubertinstead by created with the \sphinxcode{\sphinxupquote{\sphinxhyphen{}nokey}} option:
4655*7f2fe78bSCy Schubert\begin{quote}
4656*7f2fe78bSCy Schubert
4657*7f2fe78bSCy Schubert\sphinxAtStartPar
4658*7f2fe78bSCy Schubertkadmin: addprinc \sphinxhyphen{}nokey alice
4659*7f2fe78bSCy Schubert\end{quote}
4660*7f2fe78bSCy Schubert
4661*7f2fe78bSCy Schubert\sphinxAtStartPar
4662*7f2fe78bSCy SchubertService principals can be created with the \sphinxcode{\sphinxupquote{\sphinxhyphen{}nokey}} option;
4663*7f2fe78bSCy Schubertlong\sphinxhyphen{}term keys will be added when a keytab is generated:
4664*7f2fe78bSCy Schubert
4665*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4666*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{nokey} \PYG{n}{host}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
4667*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{ktadd} \PYG{o}{\PYGZhy{}}\PYG{n}{k} \PYG{n}{foo}\PYG{o}{.}\PYG{n}{keytab} \PYG{n}{host}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
4668*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
4669*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
4670*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4671*7f2fe78bSCy Schubert
4672*7f2fe78bSCy Schubert\sphinxAtStartPar
4673*7f2fe78bSCy SchubertTo modify attributes of an existing principal, use the kadmin
4674*7f2fe78bSCy Schubert\sphinxstylestrong{modify\_principal} command:
4675*7f2fe78bSCy Schubert
4676*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4677*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{modprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{expire} \PYG{n}{tomorrow} \PYG{n}{alice}
4678*7f2fe78bSCy Schubert\PYG{n}{Principal} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{alice@KRBTEST.COM}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{modified}\PYG{o}{.}
4679*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4680*7f2fe78bSCy Schubert
4681*7f2fe78bSCy Schubert\sphinxAtStartPar
4682*7f2fe78bSCy SchubertTo delete a principal, use the kadmin \sphinxstylestrong{delete\_principal} command:
4683*7f2fe78bSCy Schubert
4684*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4685*7f2fe78bSCy Schubertkadmin: delprinc alice
4686*7f2fe78bSCy SchubertAre you sure you want to delete the principal \PYGZdq{}alice@KRBTEST.COM\PYGZdq{}? (yes/no): yes
4687*7f2fe78bSCy SchubertPrincipal \PYGZdq{}alice@KRBTEST.COM\PYGZdq{} deleted.
4688*7f2fe78bSCy SchubertMake sure that you have removed this principal from all ACLs before reusing.
4689*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4690*7f2fe78bSCy Schubert
4691*7f2fe78bSCy Schubert\sphinxAtStartPar
4692*7f2fe78bSCy SchubertTo change a principal’s password, use the kadmin \sphinxstylestrong{change\_password}
4693*7f2fe78bSCy Schubertcommand.  Password changes made through kadmin are subject to the same
4694*7f2fe78bSCy Schubertpassword policies as would apply to password changes made through
4695*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{kpasswd(1)}.
4696*7f2fe78bSCy Schubert
4697*7f2fe78bSCy Schubert\sphinxAtStartPar
4698*7f2fe78bSCy SchubertTo view the attributes of a principal, use the kadmin\textasciigrave{}
4699*7f2fe78bSCy Schubert\sphinxstylestrong{get\_principal} command.
4700*7f2fe78bSCy Schubert
4701*7f2fe78bSCy Schubert\sphinxAtStartPar
4702*7f2fe78bSCy SchubertTo generate a listing of principals, use the kadmin
4703*7f2fe78bSCy Schubert\sphinxstylestrong{list\_principals} command.
4704*7f2fe78bSCy Schubert
4705*7f2fe78bSCy Schubert
4706*7f2fe78bSCy Schubert\section{Policies}
4707*7f2fe78bSCy Schubert\label{\detokenize{admin/database:policies}}\label{\detokenize{admin/database:id2}}
4708*7f2fe78bSCy Schubert\sphinxAtStartPar
4709*7f2fe78bSCy SchubertA policy is a set of rules governing passwords.  Policies can dictate
4710*7f2fe78bSCy Schubertminimum and maximum password lifetimes, minimum number of characters
4711*7f2fe78bSCy Schubertand character classes a password must contain, and the number of old
4712*7f2fe78bSCy Schubertpasswords kept in the database.
4713*7f2fe78bSCy Schubert
4714*7f2fe78bSCy Schubert\sphinxAtStartPar
4715*7f2fe78bSCy SchubertTo add a new policy, use the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} \sphinxstylestrong{add\_policy} command:
4716*7f2fe78bSCy Schubert
4717*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4718*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addpol} \PYG{o}{\PYGZhy{}}\PYG{n}{maxlife} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{1 year}\PYG{l+s+s2}{\PYGZdq{}} \PYG{o}{\PYGZhy{}}\PYG{n}{history} \PYG{l+m+mi}{3} \PYG{n}{stduser}
4719*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4720*7f2fe78bSCy Schubert
4721*7f2fe78bSCy Schubert\sphinxAtStartPar
4722*7f2fe78bSCy SchubertTo modify attributes of a principal, use the kadmin \sphinxstylestrong{modify\_policy}
4723*7f2fe78bSCy Schubertcommand.  To delete a policy, use the kadmin \sphinxstylestrong{delete\_policy}
4724*7f2fe78bSCy Schubertcommand.
4725*7f2fe78bSCy Schubert
4726*7f2fe78bSCy Schubert\sphinxAtStartPar
4727*7f2fe78bSCy SchubertTo associate a policy with a principal, use the kadmin
4728*7f2fe78bSCy Schubert\sphinxstylestrong{modify\_principal} command with the \sphinxstylestrong{\sphinxhyphen{}policy} option:
4729*7f2fe78bSCy Schubert\begin{quote}
4730*7f2fe78bSCy Schubert
4731*7f2fe78bSCy Schubert\sphinxAtStartPar
4732*7f2fe78bSCy Schubertkadmin: modprinc \sphinxhyphen{}policy stduser alice
4733*7f2fe78bSCy SchubertPrincipal “\sphinxhref{mailto:alice@KRBTEST.COM}{alice@KRBTEST.COM}” modified.
4734*7f2fe78bSCy Schubert\end{quote}
4735*7f2fe78bSCy Schubert
4736*7f2fe78bSCy Schubert\sphinxAtStartPar
4737*7f2fe78bSCy SchubertA principal entry may be associated with a nonexistent policy, either
4738*7f2fe78bSCy Schubertbecause the policy did not exist at the time of associated or was
4739*7f2fe78bSCy Schubertdeleted afterwards.  kadmin will warn when associated a principal with
4740*7f2fe78bSCy Schuberta nonexistent policy, and will annotate the policy name with “{[}does
4741*7f2fe78bSCy Schubertnot exist{]}” in the \sphinxstylestrong{get\_principal} output.
4742*7f2fe78bSCy Schubert
4743*7f2fe78bSCy Schubert
4744*7f2fe78bSCy Schubert\subsection{Updating the history key}
4745*7f2fe78bSCy Schubert\label{\detokenize{admin/database:updating-the-history-key}}\label{\detokenize{admin/database:updating-history-key}}
4746*7f2fe78bSCy Schubert\sphinxAtStartPar
4747*7f2fe78bSCy SchubertIf a policy specifies a number of old keys kept of two or more, the
4748*7f2fe78bSCy Schubertstored old keys are encrypted in a history key, which is found in the
4749*7f2fe78bSCy Schubertkey data of the \sphinxcode{\sphinxupquote{kadmin/history}} principal.
4750*7f2fe78bSCy Schubert
4751*7f2fe78bSCy Schubert\sphinxAtStartPar
4752*7f2fe78bSCy SchubertCurrently there is no support for proper rollover of the history key,
4753*7f2fe78bSCy Schubertbut you can change the history key (for example, to use a better
4754*7f2fe78bSCy Schubertencryption type) at the cost of invalidating currently stored old
4755*7f2fe78bSCy Schubertkeys.  To change the history key, run:
4756*7f2fe78bSCy Schubert
4757*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4758*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{change\PYGZus{}password} \PYG{o}{\PYGZhy{}}\PYG{n}{randkey} \PYG{n}{kadmin}\PYG{o}{/}\PYG{n}{history}
4759*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4760*7f2fe78bSCy Schubert
4761*7f2fe78bSCy Schubert\sphinxAtStartPar
4762*7f2fe78bSCy SchubertThis command will fail if you specify the \sphinxstylestrong{\sphinxhyphen{}keepold} flag.  Only one
4763*7f2fe78bSCy Schubertnew history key will be created, even if you specify multiple key/salt
4764*7f2fe78bSCy Schubertcombinations.
4765*7f2fe78bSCy Schubert
4766*7f2fe78bSCy Schubert\sphinxAtStartPar
4767*7f2fe78bSCy SchubertIn the future, we plan to migrate towards encrypting old keys in the
4768*7f2fe78bSCy Schubertmaster key instead of the history key, and implementing proper
4769*7f2fe78bSCy Schubertrollover support for stored old keys.
4770*7f2fe78bSCy Schubert
4771*7f2fe78bSCy Schubert
4772*7f2fe78bSCy Schubert\section{Privileges}
4773*7f2fe78bSCy Schubert\label{\detokenize{admin/database:privileges}}\label{\detokenize{admin/database:id3}}
4774*7f2fe78bSCy Schubert\sphinxAtStartPar
4775*7f2fe78bSCy SchubertAdministrative privileges for the Kerberos database are stored in the
4776*7f2fe78bSCy Schubertfile {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}.
4777*7f2fe78bSCy Schubert
4778*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
4779*7f2fe78bSCy Schubert\sphinxAtStartPar
4780*7f2fe78bSCy SchubertA common use of an admin instance is so you can grant
4781*7f2fe78bSCy Schubertseparate permissions (such as administrator access to the
4782*7f2fe78bSCy SchubertKerberos database) to a separate Kerberos principal. For
4783*7f2fe78bSCy Schubertexample, the user \sphinxcode{\sphinxupquote{joeadmin}} might have a principal for
4784*7f2fe78bSCy Schuberthis administrative use, called \sphinxcode{\sphinxupquote{joeadmin/admin}}.  This
4785*7f2fe78bSCy Schubertway, \sphinxcode{\sphinxupquote{joeadmin}} would obtain \sphinxcode{\sphinxupquote{joeadmin/admin}} tickets
4786*7f2fe78bSCy Schubertonly when he actually needs to use those permissions.
4787*7f2fe78bSCy Schubert\end{sphinxadmonition}
4788*7f2fe78bSCy Schubert
4789*7f2fe78bSCy Schubert
4790*7f2fe78bSCy Schubert\section{Operations on the Kerberos database}
4791*7f2fe78bSCy Schubert\label{\detokenize{admin/database:operations-on-the-kerberos-database}}\label{\detokenize{admin/database:db-operations}}
4792*7f2fe78bSCy Schubert\sphinxAtStartPar
4793*7f2fe78bSCy SchubertThe {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} command is the primary tool for administrating
4794*7f2fe78bSCy Schubertthe Kerberos database when using the DB2 or LMDB modules (see
4795*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/dbtypes:dbtypes}]{\sphinxcrossref{\DUrole{std,std-ref}{Database types}}}}).  Creating a database is described in
4796*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/install_kdc:create-db}]{\sphinxcrossref{\DUrole{std,std-ref}{Create the KDC database}}}}.
4797*7f2fe78bSCy Schubert
4798*7f2fe78bSCy Schubert\sphinxAtStartPar
4799*7f2fe78bSCy SchubertTo create a stash file using the master password (because the database
4800*7f2fe78bSCy Schubertwas not created with one using the \sphinxcode{\sphinxupquote{create \sphinxhyphen{}s}} flag, or after
4801*7f2fe78bSCy Schubertrestoring from a backup which did not contain the stash file), use the
4802*7f2fe78bSCy Schubertkdb5\_util \sphinxstylestrong{stash} command:
4803*7f2fe78bSCy Schubert
4804*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4805*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}util stash
4806*7f2fe78bSCy Schubertkdb5\PYGZus{}util: Cannot find/read stored master key while reading master key
4807*7f2fe78bSCy Schubertkdb5\PYGZus{}util: Warning: proceeding without master key
4808*7f2fe78bSCy SchubertEnter KDC database master key:  \PYGZlt{}= Type the KDC database master password.
4809*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4810*7f2fe78bSCy Schubert
4811*7f2fe78bSCy Schubert\sphinxAtStartPar
4812*7f2fe78bSCy SchubertTo destroy a database, use the kdb5\_util destroy command:
4813*7f2fe78bSCy Schubert
4814*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4815*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}util destroy
4816*7f2fe78bSCy SchubertDeleting KDC database stored in \PYGZsq{}/var/krb5kdc/principal\PYGZsq{}, are you sure?
4817*7f2fe78bSCy Schubert(type \PYGZsq{}yes\PYGZsq{} to confirm)? yes
4818*7f2fe78bSCy SchubertOK, deleting database \PYGZsq{}/var/krb5kdc/principal\PYGZsq{}...
4819*7f2fe78bSCy Schubert** Database \PYGZsq{}/var/krb5kdc/principal\PYGZsq{} destroyed.
4820*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4821*7f2fe78bSCy Schubert
4822*7f2fe78bSCy Schubert
4823*7f2fe78bSCy Schubert\subsection{Dumping and loading a Kerberos database}
4824*7f2fe78bSCy Schubert\label{\detokenize{admin/database:dumping-and-loading-a-kerberos-database}}\label{\detokenize{admin/database:restore-from-dump}}
4825*7f2fe78bSCy Schubert\sphinxAtStartPar
4826*7f2fe78bSCy SchubertTo dump a Kerberos database into a text file for backup or transfer
4827*7f2fe78bSCy Schubertpurposes, use the {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} \sphinxstylestrong{dump} command on one of the
4828*7f2fe78bSCy SchubertKDCs:
4829*7f2fe78bSCy Schubert
4830*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4831*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}util dump dumpfile
4832*7f2fe78bSCy Schubert
4833*7f2fe78bSCy Schubert\PYGZdl{} kbd5\PYGZus{}util dump \PYGZhy{}verbose dumpfile
4834*7f2fe78bSCy Schubertkadmin/admin@ATHENA.MIT.EDU
4835*7f2fe78bSCy Schubertkrbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU
4836*7f2fe78bSCy Schubertkadmin/history@ATHENA.MIT.EDU
4837*7f2fe78bSCy SchubertK/M@ATHENA.MIT.EDU
4838*7f2fe78bSCy Schubertkadmin/changepw@ATHENA.MIT.EDU
4839*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4840*7f2fe78bSCy Schubert
4841*7f2fe78bSCy Schubert\sphinxAtStartPar
4842*7f2fe78bSCy SchubertYou may specify which principals to dump, using full principal names
4843*7f2fe78bSCy Schubertincluding realm:
4844*7f2fe78bSCy Schubert
4845*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4846*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}util dump \PYGZhy{}verbose someprincs K/M@ATHENA.MIT.EDU kadmin/admin@ATHENA.MIT.EDU
4847*7f2fe78bSCy Schubertkadmin/admin@ATHENA.MIT.EDU
4848*7f2fe78bSCy SchubertK/M@ATHENA.MIT.EDU
4849*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4850*7f2fe78bSCy Schubert
4851*7f2fe78bSCy Schubert\sphinxAtStartPar
4852*7f2fe78bSCy SchubertTo restore a Kerberos database dump from a file, use the
4853*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} \sphinxstylestrong{load} command:
4854*7f2fe78bSCy Schubert
4855*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4856*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}util load dumpfile
4857*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4858*7f2fe78bSCy Schubert
4859*7f2fe78bSCy Schubert\sphinxAtStartPar
4860*7f2fe78bSCy SchubertTo update an existing database with a partial dump file containing
4861*7f2fe78bSCy Schubertonly some principals, use the \sphinxcode{\sphinxupquote{\sphinxhyphen{}update}} flag:
4862*7f2fe78bSCy Schubert
4863*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4864*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}util load \PYGZhy{}update someprincs
4865*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4866*7f2fe78bSCy Schubert
4867*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
4868*7f2fe78bSCy Schubert\sphinxAtStartPar
4869*7f2fe78bSCy SchubertIf the database file exists, and the \sphinxstyleemphasis{\sphinxhyphen{}update} flag was not
4870*7f2fe78bSCy Schubertgiven, \sphinxstyleemphasis{kdb5\_util} will overwrite the existing database.
4871*7f2fe78bSCy Schubert\end{sphinxadmonition}
4872*7f2fe78bSCy Schubert
4873*7f2fe78bSCy Schubert
4874*7f2fe78bSCy Schubert\subsection{Updating the master key}
4875*7f2fe78bSCy Schubert\label{\detokenize{admin/database:updating-the-master-key}}\label{\detokenize{admin/database:updating-master-key}}
4876*7f2fe78bSCy Schubert\sphinxAtStartPar
4877*7f2fe78bSCy SchubertStarting with release 1.7, {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} allows the master key
4878*7f2fe78bSCy Schubertto be changed using a rollover process, with minimal loss of
4879*7f2fe78bSCy Schubertavailability.  To roll over the master key, follow these steps:
4880*7f2fe78bSCy Schubert\begin{enumerate}
4881*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
4882*7f2fe78bSCy Schubert\item {}
4883*7f2fe78bSCy Schubert\sphinxAtStartPar
4884*7f2fe78bSCy SchubertOn the primary KDC, run \sphinxcode{\sphinxupquote{kdb5\_util list\_mkeys}} to view the
4885*7f2fe78bSCy Schubertcurrent master key version number (KVNO).  If you have never rolled
4886*7f2fe78bSCy Schubertover the master key before, this will likely be version 1:
4887*7f2fe78bSCy Schubert
4888*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4889*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}util list\PYGZus{}mkeys
4890*7f2fe78bSCy SchubertMaster keys for Principal: K/M@KRBTEST.COM
4891*7f2fe78bSCy SchubertKVNO: 1, Enctype: aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha384\PYGZhy{}192, Active on: Thu Jan 01 00:00:00 UTC 1970 *
4892*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4893*7f2fe78bSCy Schubert
4894*7f2fe78bSCy Schubert\item {}
4895*7f2fe78bSCy Schubert\sphinxAtStartPar
4896*7f2fe78bSCy SchubertOn the primary KDC, run \sphinxcode{\sphinxupquote{kdb5\_util use\_mkey 1}} to ensure that a
4897*7f2fe78bSCy Schubertmaster key activation list is present in the database.  This step
4898*7f2fe78bSCy Schubertis unnecessary in release 1.11.4 or later, or if the database was
4899*7f2fe78bSCy Schubertinitially created with release 1.7 or later.
4900*7f2fe78bSCy Schubert
4901*7f2fe78bSCy Schubert\item {}
4902*7f2fe78bSCy Schubert\sphinxAtStartPar
4903*7f2fe78bSCy SchubertOn the primary KDC, run \sphinxcode{\sphinxupquote{kdb5\_util add\_mkey \sphinxhyphen{}s}} to create a new
4904*7f2fe78bSCy Schubertmaster key and write it to the stash file.  Enter a secure password
4905*7f2fe78bSCy Schubertwhen prompted.  If this is the first time you are changing the
4906*7f2fe78bSCy Schubertmaster key, the new key will have version 2.  The new master key
4907*7f2fe78bSCy Schubertwill not be used until you make it active.
4908*7f2fe78bSCy Schubert
4909*7f2fe78bSCy Schubert\item {}
4910*7f2fe78bSCy Schubert\sphinxAtStartPar
4911*7f2fe78bSCy SchubertPropagate the database to all replica KDCs, either manually or by
4912*7f2fe78bSCy Schubertwaiting until the next scheduled propagation.  If you do not have
4913*7f2fe78bSCy Schubertany replica KDCs, you can skip this and the next step.
4914*7f2fe78bSCy Schubert
4915*7f2fe78bSCy Schubert\item {}
4916*7f2fe78bSCy Schubert\sphinxAtStartPar
4917*7f2fe78bSCy SchubertOn each replica KDC, run \sphinxcode{\sphinxupquote{kdb5\_util list\_mkeys}} to verify that
4918*7f2fe78bSCy Schubertthe new master key is present, and then \sphinxcode{\sphinxupquote{kdb5\_util stash}} to
4919*7f2fe78bSCy Schubertwrite the new master key to the replica KDC’s stash file.
4920*7f2fe78bSCy Schubert
4921*7f2fe78bSCy Schubert\item {}
4922*7f2fe78bSCy Schubert\sphinxAtStartPar
4923*7f2fe78bSCy SchubertOn the primary KDC, run \sphinxcode{\sphinxupquote{kdb5\_util use\_mkey 2}} to begin using the
4924*7f2fe78bSCy Schubertnew master key.  Replace \sphinxcode{\sphinxupquote{2}} with the version of the new master
4925*7f2fe78bSCy Schubertkey, as appropriate.  You can optionally specify a date for the new
4926*7f2fe78bSCy Schubertmaster key to become active; by default, it will become active
4927*7f2fe78bSCy Schubertimmediately.  Prior to release 1.12, {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} must be
4928*7f2fe78bSCy Schubertrestarted for this change to take full effect.
4929*7f2fe78bSCy Schubert
4930*7f2fe78bSCy Schubert\item {}
4931*7f2fe78bSCy Schubert\sphinxAtStartPar
4932*7f2fe78bSCy SchubertOn the primary KDC, run \sphinxcode{\sphinxupquote{kdb5\_util update\_princ\_encryption}}.
4933*7f2fe78bSCy SchubertThis command will iterate over the database and re\sphinxhyphen{}encrypt all keys
4934*7f2fe78bSCy Schubertin the new master key.  If the database is large and uses DB2, the
4935*7f2fe78bSCy Schubertprimary KDC will become unavailable while this command runs, but
4936*7f2fe78bSCy Schubertclients should fail over to replica KDCs (if any are present)
4937*7f2fe78bSCy Schubertduring this time period.  In release 1.13 and later, you can
4938*7f2fe78bSCy Schubertinstead run \sphinxcode{\sphinxupquote{kdb5\_util \sphinxhyphen{}x unlockiter update\_princ\_encryption}} to
4939*7f2fe78bSCy Schubertuse unlocked iteration; this variant will take longer, but will
4940*7f2fe78bSCy Schubertkeep the database available to the KDC and kadmind while it runs.
4941*7f2fe78bSCy Schubert
4942*7f2fe78bSCy Schubert\item {}
4943*7f2fe78bSCy Schubert\sphinxAtStartPar
4944*7f2fe78bSCy SchubertWait until the above changes have propagated to all replica KDCs
4945*7f2fe78bSCy Schubertand until all running KDC and kadmind processes have serviced
4946*7f2fe78bSCy Schubertrequests using updated principal entries.
4947*7f2fe78bSCy Schubert
4948*7f2fe78bSCy Schubert\item {}
4949*7f2fe78bSCy Schubert\sphinxAtStartPar
4950*7f2fe78bSCy SchubertOn the primary KDC, run \sphinxcode{\sphinxupquote{kdb5\_util purge\_mkeys}} to clean up the
4951*7f2fe78bSCy Schubertold master key.
4952*7f2fe78bSCy Schubert
4953*7f2fe78bSCy Schubert\end{enumerate}
4954*7f2fe78bSCy Schubert
4955*7f2fe78bSCy Schubert
4956*7f2fe78bSCy Schubert\section{Operations on the LDAP database}
4957*7f2fe78bSCy Schubert\label{\detokenize{admin/database:operations-on-the-ldap-database}}\label{\detokenize{admin/database:ops-on-ldap}}
4958*7f2fe78bSCy Schubert\sphinxAtStartPar
4959*7f2fe78bSCy SchubertThe {\hyperref[\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_ldap\_util}}}} command is the primary tool for
4960*7f2fe78bSCy Schubertadministrating the Kerberos database when using the LDAP module.
4961*7f2fe78bSCy SchubertCreating an LDAP Kerberos database is describe in {\hyperref[\detokenize{admin/conf_ldap:conf-ldap}]{\sphinxcrossref{\DUrole{std,std-ref}{Configuring Kerberos with OpenLDAP back\sphinxhyphen{}end}}}}.
4962*7f2fe78bSCy Schubert
4963*7f2fe78bSCy Schubert\sphinxAtStartPar
4964*7f2fe78bSCy SchubertTo view a list of realms in the LDAP database, use the kdb5\_ldap\_util
4965*7f2fe78bSCy Schubert\sphinxstylestrong{list} command:
4966*7f2fe78bSCy Schubert
4967*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4968*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util list
4969*7f2fe78bSCy SchubertKRBTEST.COM
4970*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4971*7f2fe78bSCy Schubert
4972*7f2fe78bSCy Schubert\sphinxAtStartPar
4973*7f2fe78bSCy SchubertTo modify the attributes of a realm, use the kdb5\_ldap\_util \sphinxstylestrong{modify}
4974*7f2fe78bSCy Schubertcommand.  For example, to change the default realm’s maximum ticket
4975*7f2fe78bSCy Schubertlife:
4976*7f2fe78bSCy Schubert
4977*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4978*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util modify \PYGZhy{}maxtktlife \PYGZdq{}10 hours\PYGZdq{}
4979*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4980*7f2fe78bSCy Schubert
4981*7f2fe78bSCy Schubert\sphinxAtStartPar
4982*7f2fe78bSCy SchubertTo display the attributes of a realm, use the kdb5\_ldap\_util \sphinxstylestrong{view}
4983*7f2fe78bSCy Schubertcommand:
4984*7f2fe78bSCy Schubert
4985*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4986*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util view
4987*7f2fe78bSCy Schubert               Realm Name: KRBTEST.COM
4988*7f2fe78bSCy Schubert      Maximum Ticket Life: 0 days 00:10:00
4989*7f2fe78bSCy Schubert\end{sphinxVerbatim}
4990*7f2fe78bSCy Schubert
4991*7f2fe78bSCy Schubert\sphinxAtStartPar
4992*7f2fe78bSCy SchubertTo remove a realm from the LDAP database, destroying its contents, use
4993*7f2fe78bSCy Schubertthe kdb5\_ldap\_util \sphinxstylestrong{destroy} command:
4994*7f2fe78bSCy Schubert
4995*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
4996*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util destroy
4997*7f2fe78bSCy SchubertDeleting KDC database of \PYGZsq{}KRBTEST.COM\PYGZsq{}, are you sure?
4998*7f2fe78bSCy Schubert(type \PYGZsq{}yes\PYGZsq{} to confirm)? yes
4999*7f2fe78bSCy SchubertOK, deleting database of \PYGZsq{}KRBTEST.COM\PYGZsq{}...
5000*7f2fe78bSCy Schubert** Database of \PYGZsq{}KRBTEST.COM\PYGZsq{} destroyed.
5001*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5002*7f2fe78bSCy Schubert
5003*7f2fe78bSCy Schubert
5004*7f2fe78bSCy Schubert\subsection{Ticket Policy operations}
5005*7f2fe78bSCy Schubert\label{\detokenize{admin/database:ticket-policy-operations}}
5006*7f2fe78bSCy Schubert\sphinxAtStartPar
5007*7f2fe78bSCy SchubertUnlike the DB2 and LMDB modules, the LDAP module supports ticket
5008*7f2fe78bSCy Schubertpolicy objects, which can be associated with principals to restrict
5009*7f2fe78bSCy Schubertmaximum ticket lifetimes and set mandatory principal flags.  Ticket
5010*7f2fe78bSCy Schubertpolicy objects are distinct from the password policies described
5011*7f2fe78bSCy Schubertearlier on this page, and are chiefly managed through kdb5\_ldap\_util
5012*7f2fe78bSCy Schubertrather than kadmin.  To create a new ticket policy, use the
5013*7f2fe78bSCy Schubertkdb5\_ldap\_util \sphinxstylestrong{create\_policy} command:
5014*7f2fe78bSCy Schubert
5015*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5016*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util create\PYGZus{}policy \PYGZhy{}maxrenewlife \PYGZdq{}2 days\PYGZdq{} users
5017*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5018*7f2fe78bSCy Schubert
5019*7f2fe78bSCy Schubert\sphinxAtStartPar
5020*7f2fe78bSCy SchubertTo associate a ticket policy with a principal, use the
5021*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} \sphinxstylestrong{modify\_principal} (or \sphinxstylestrong{add\_principal}) command
5022*7f2fe78bSCy Schubertwith the \sphinxstylestrong{\sphinxhyphen{}x tktpolicy=}\sphinxstyleemphasis{policy} option:
5023*7f2fe78bSCy Schubert
5024*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5025*7f2fe78bSCy Schubert\PYGZdl{} kadmin.local modprinc \PYGZhy{}x tktpolicy=users alice
5026*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5027*7f2fe78bSCy Schubert
5028*7f2fe78bSCy Schubert\sphinxAtStartPar
5029*7f2fe78bSCy SchubertTo remove a ticket policy reference from a principal, use the same
5030*7f2fe78bSCy Schubertcommand with an empty \sphinxstyleemphasis{policy}:
5031*7f2fe78bSCy Schubert
5032*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5033*7f2fe78bSCy Schubert\PYGZdl{} kadmin.local modprinc \PYGZhy{}x tktpolicy= alice
5034*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5035*7f2fe78bSCy Schubert
5036*7f2fe78bSCy Schubert\sphinxAtStartPar
5037*7f2fe78bSCy SchubertTo list the existing ticket policy objects, use the kdb5\_ldap\_util
5038*7f2fe78bSCy Schubert\sphinxstylestrong{list\_policy} command:
5039*7f2fe78bSCy Schubert
5040*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5041*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util list\PYGZus{}policy
5042*7f2fe78bSCy Schubertusers
5043*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5044*7f2fe78bSCy Schubert
5045*7f2fe78bSCy Schubert\sphinxAtStartPar
5046*7f2fe78bSCy SchubertTo modify the attributes of a ticket policy object, use the
5047*7f2fe78bSCy Schubertkdb5\_ldap\_util \sphinxstylestrong{modify\_policy} command:
5048*7f2fe78bSCy Schubert
5049*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5050*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util modify\PYGZus{}policy \PYGZhy{}allow\PYGZus{}svr +requires\PYGZus{}preauth users
5051*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5052*7f2fe78bSCy Schubert
5053*7f2fe78bSCy Schubert\sphinxAtStartPar
5054*7f2fe78bSCy SchubertTo view the attributes of a ticket policy object, use the
5055*7f2fe78bSCy Schubertkdb5\_ldap\_util \sphinxstylestrong{view\_policy} command:
5056*7f2fe78bSCy Schubert
5057*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5058*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util view\PYGZus{}policy users
5059*7f2fe78bSCy Schubert            Ticket policy: users
5060*7f2fe78bSCy Schubert   Maximum renewable life: 2 days 00:00:00
5061*7f2fe78bSCy Schubert             Ticket flags: REQUIRES\PYGZus{}PRE\PYGZus{}AUTH DISALLOW\PYGZus{}SVR
5062*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5063*7f2fe78bSCy Schubert
5064*7f2fe78bSCy Schubert\sphinxAtStartPar
5065*7f2fe78bSCy SchubertTo destroy an ticket policy object, use the kdb5\_ldap\_util
5066*7f2fe78bSCy Schubert\sphinxstylestrong{destroy\_policy} command:
5067*7f2fe78bSCy Schubert
5068*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5069*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}ldap\PYGZus{}util destroy\PYGZus{}policy users
5070*7f2fe78bSCy SchubertThis will delete the policy object \PYGZsq{}users\PYGZsq{}, are you sure?
5071*7f2fe78bSCy Schubert(type \PYGZsq{}yes\PYGZsq{} to confirm)? yes
5072*7f2fe78bSCy Schubert** policy object \PYGZsq{}users\PYGZsq{} deleted.
5073*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5074*7f2fe78bSCy Schubert
5075*7f2fe78bSCy Schubert
5076*7f2fe78bSCy Schubert\section{Cross\sphinxhyphen{}realm authentication}
5077*7f2fe78bSCy Schubert\label{\detokenize{admin/database:cross-realm-authentication}}\label{\detokenize{admin/database:xrealm-authn}}
5078*7f2fe78bSCy Schubert\sphinxAtStartPar
5079*7f2fe78bSCy SchubertIn order for a KDC in one realm to authenticate Kerberos users in a
5080*7f2fe78bSCy Schubertdifferent realm, it must share a key with the KDC in the other realm.
5081*7f2fe78bSCy SchubertIn both databases, there must be krbtgt service principals for both realms.
5082*7f2fe78bSCy SchubertFor example, if you need to do cross\sphinxhyphen{}realm authentication between the realms
5083*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} and \sphinxcode{\sphinxupquote{EXAMPLE.COM}}, you would need to add the
5084*7f2fe78bSCy Schubertprincipals \sphinxcode{\sphinxupquote{krbtgt/EXAMPLE.COM@ATHENA.MIT.EDU}} and
5085*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{krbtgt/ATHENA.MIT.EDU@EXAMPLE.COM}} to both databases.
5086*7f2fe78bSCy SchubertThese principals must all have the same passwords, key version
5087*7f2fe78bSCy Schubertnumbers, and encryption types; this may require explicitly setting
5088*7f2fe78bSCy Schubertthe key version number with the \sphinxstylestrong{\sphinxhyphen{}kvno} option.
5089*7f2fe78bSCy Schubert
5090*7f2fe78bSCy Schubert\sphinxAtStartPar
5091*7f2fe78bSCy SchubertIn the ATHENA.MIT.EDU and EXAMPLE.COM cross\sphinxhyphen{}realm case, the administrators
5092*7f2fe78bSCy Schubertwould run the following commands on the KDCs in both realms:
5093*7f2fe78bSCy Schubert
5094*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5095*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}}\PYG{p}{:} \PYG{n}{kadmin}\PYG{o}{.}\PYG{n}{local} \PYG{o}{\PYGZhy{}}\PYG{n}{e} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{aes256\PYGZhy{}cts:normal}\PYG{l+s+s2}{\PYGZdq{}}
5096*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{requires\PYGZus{}preauth} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{n+nd}{@EXAMPLE}\PYG{o}{.}\PYG{n}{COM}
5097*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{n+nd}{@EXAMPLE}\PYG{o}{.}\PYG{n}{COM}\PYG{p}{:}
5098*7f2fe78bSCy Schubert\PYG{n}{Re}\PYG{o}{\PYGZhy{}}\PYG{n}{enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{n+nd}{@EXAMPLE}\PYG{o}{.}\PYG{n}{COM}\PYG{p}{:}
5099*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{requires\PYGZus{}preauth} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
5100*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{p}{:}
5101*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{EXAMPLE}\PYG{o}{.}\PYG{n}{COM}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{p}{:}
5102*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
5103*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5104*7f2fe78bSCy Schubert
5105*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
5106*7f2fe78bSCy Schubert\sphinxAtStartPar
5107*7f2fe78bSCy SchubertEven if most principals in a realm are generally created
5108*7f2fe78bSCy Schubertwith the \sphinxstylestrong{requires\_preauth} flag enabled, this flag is not
5109*7f2fe78bSCy Schubertdesirable on cross\sphinxhyphen{}realm authentication keys because doing
5110*7f2fe78bSCy Schubertso makes it impossible to disable preauthentication on a
5111*7f2fe78bSCy Schubertservice\sphinxhyphen{}by\sphinxhyphen{}service basis.  Disabling it as in the example
5112*7f2fe78bSCy Schubertabove is recommended.
5113*7f2fe78bSCy Schubert\end{sphinxadmonition}
5114*7f2fe78bSCy Schubert
5115*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
5116*7f2fe78bSCy Schubert\sphinxAtStartPar
5117*7f2fe78bSCy SchubertIt is very important that these principals have good
5118*7f2fe78bSCy Schubertpasswords.  MIT recommends that TGT principal passwords be
5119*7f2fe78bSCy Schubertat least 26 characters of random ASCII text.
5120*7f2fe78bSCy Schubert\end{sphinxadmonition}
5121*7f2fe78bSCy Schubert
5122*7f2fe78bSCy Schubert
5123*7f2fe78bSCy Schubert\section{Changing the krbtgt key}
5124*7f2fe78bSCy Schubert\label{\detokenize{admin/database:changing-the-krbtgt-key}}\label{\detokenize{admin/database:changing-krbtgt-key}}
5125*7f2fe78bSCy Schubert\sphinxAtStartPar
5126*7f2fe78bSCy SchubertA Kerberos Ticket Granting Ticket (TGT) is a service ticket for the
5127*7f2fe78bSCy Schubertprincipal \sphinxcode{\sphinxupquote{krbtgt/REALM}}.  The key for this principal is created
5128*7f2fe78bSCy Schubertwhen the Kerberos database is initialized and need not be changed.
5129*7f2fe78bSCy SchubertHowever, it will only have the encryption types supported by the KDC
5130*7f2fe78bSCy Schubertat the time of the initial database creation.  To allow use of newer
5131*7f2fe78bSCy Schubertencryption types for the TGT, this key has to be changed.
5132*7f2fe78bSCy Schubert
5133*7f2fe78bSCy Schubert\sphinxAtStartPar
5134*7f2fe78bSCy SchubertChanging this key using the normal {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}
5135*7f2fe78bSCy Schubert\sphinxstylestrong{change\_password} command would invalidate any previously issued
5136*7f2fe78bSCy SchubertTGTs.  Therefore, when changing this key, normally one should use the
5137*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}keepold} flag to change\_password to retain the previous key in the
5138*7f2fe78bSCy Schubertdatabase as well as the new key.  For example:
5139*7f2fe78bSCy Schubert
5140*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5141*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{change\PYGZus{}password} \PYG{o}{\PYGZhy{}}\PYG{n}{randkey} \PYG{o}{\PYGZhy{}}\PYG{n}{keepold} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
5142*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5143*7f2fe78bSCy Schubert
5144*7f2fe78bSCy Schubert\begin{sphinxadmonition}{warning}{Warning:}
5145*7f2fe78bSCy Schubert\sphinxAtStartPar
5146*7f2fe78bSCy SchubertAfter issuing this command, the old key is still valid
5147*7f2fe78bSCy Schubertand is still vulnerable to (for instance) brute force
5148*7f2fe78bSCy Schubertattacks.  To completely retire an old key or encryption
5149*7f2fe78bSCy Schuberttype, run the kadmin \sphinxstylestrong{purgekeys} command to delete keys
5150*7f2fe78bSCy Schubertwith older kvnos, ideally first making sure that all
5151*7f2fe78bSCy Schuberttickets issued with the old keys have expired.
5152*7f2fe78bSCy Schubert\end{sphinxadmonition}
5153*7f2fe78bSCy Schubert
5154*7f2fe78bSCy Schubert\sphinxAtStartPar
5155*7f2fe78bSCy SchubertOnly the first krbtgt key of the newest key version is used to encrypt
5156*7f2fe78bSCy Schubertticket\sphinxhyphen{}granting tickets.  However, the set of encryption types present
5157*7f2fe78bSCy Schubertin the krbtgt keys is used by default to determine the session key
5158*7f2fe78bSCy Schuberttypes supported by the krbtgt service (see
5159*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/enctypes:session-key-selection}]{\sphinxcrossref{\DUrole{std,std-ref}{Session key selection}}}}).  Because non\sphinxhyphen{}MIT Kerberos clients
5160*7f2fe78bSCy Schubertsometimes send a limited set of encryption types when making AS
5161*7f2fe78bSCy Schubertrequests, it can be important for the krbtgt service to support
5162*7f2fe78bSCy Schubertmultiple encryption types.  This can be accomplished by giving the
5163*7f2fe78bSCy Schubertkrbtgt principal multiple keys, which is usually as simple as not
5164*7f2fe78bSCy Schubertspecifying any \sphinxstylestrong{\sphinxhyphen{}e} option when changing the krbtgt key, or by
5165*7f2fe78bSCy Schubertsetting the \sphinxstylestrong{session\_enctypes} string attribute on the krbtgt
5166*7f2fe78bSCy Schubertprincipal (see {\hyperref[\detokenize{admin/admin_commands/kadmin_local:set-string}]{\sphinxcrossref{\DUrole{std,std-ref}{set\_string}}}}).
5167*7f2fe78bSCy Schubert
5168*7f2fe78bSCy Schubert\sphinxAtStartPar
5169*7f2fe78bSCy SchubertDue to a bug in releases 1.8 through 1.13, renewed and forwarded
5170*7f2fe78bSCy Schuberttickets may not work if the original ticket was obtained prior to a
5171*7f2fe78bSCy Schubertkrbtgt key change and the modified ticket is obtained afterwards.
5172*7f2fe78bSCy SchubertUpgrading the KDC to release 1.14 or later will correct this bug.
5173*7f2fe78bSCy Schubert
5174*7f2fe78bSCy Schubert
5175*7f2fe78bSCy Schubert\section{Incremental database propagation}
5176*7f2fe78bSCy Schubert\label{\detokenize{admin/database:incremental-database-propagation}}\label{\detokenize{admin/database:incr-db-prop}}
5177*7f2fe78bSCy Schubert
5178*7f2fe78bSCy Schubert\subsection{Overview}
5179*7f2fe78bSCy Schubert\label{\detokenize{admin/database:overview}}
5180*7f2fe78bSCy Schubert\sphinxAtStartPar
5181*7f2fe78bSCy SchubertAt some very large sites, dumping and transmitting the database can
5182*7f2fe78bSCy Schuberttake more time than is desirable for changes to propagate from the
5183*7f2fe78bSCy Schubertprimary KDC to the replica KDCs.  The incremental propagation support
5184*7f2fe78bSCy Schubertadded in the 1.7 release is intended to address this.
5185*7f2fe78bSCy Schubert
5186*7f2fe78bSCy Schubert\sphinxAtStartPar
5187*7f2fe78bSCy SchubertWith incremental propagation enabled, all programs on the primary KDC
5188*7f2fe78bSCy Schubertthat change the database also write information about the changes to
5189*7f2fe78bSCy Schubertan “update log” file, maintained as a circular buffer of a certain
5190*7f2fe78bSCy Schubertsize.  A process on each replica KDC connects to a service on the
5191*7f2fe78bSCy Schubertprimary KDC (currently implemented in the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} server) and
5192*7f2fe78bSCy Schubertperiodically requests the changes that have been made since the last
5193*7f2fe78bSCy Schubertcheck.  By default, this check is done every two minutes.
5194*7f2fe78bSCy Schubert
5195*7f2fe78bSCy Schubert\sphinxAtStartPar
5196*7f2fe78bSCy SchubertIncremental propagation uses the following entries in the per\sphinxhyphen{}realm
5197*7f2fe78bSCy Schubertdata in the KDC config file (See {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}):
5198*7f2fe78bSCy Schubert
5199*7f2fe78bSCy Schubert
5200*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
5201*7f2fe78bSCy Schubert\centering
5202*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|T|}
5203*7f2fe78bSCy Schubert\hline
5204*7f2fe78bSCy Schubert
5205*7f2fe78bSCy Schubert\sphinxAtStartPar
5206*7f2fe78bSCy Schubertiprop\_enable
5207*7f2fe78bSCy Schubert&
5208*7f2fe78bSCy Schubert\sphinxAtStartPar
5209*7f2fe78bSCy Schubert\sphinxstyleemphasis{boolean}
5210*7f2fe78bSCy Schubert&
5211*7f2fe78bSCy Schubert\sphinxAtStartPar
5212*7f2fe78bSCy SchubertIf \sphinxstyleemphasis{true}, then incremental propagation is enabled, and (as noted below) normal kprop propagation is disabled. The default is \sphinxstyleemphasis{false}.
5213*7f2fe78bSCy Schubert\\
5214*7f2fe78bSCy Schubert\hline
5215*7f2fe78bSCy Schubert\sphinxAtStartPar
5216*7f2fe78bSCy Schubertiprop\_master\_ulogsize
5217*7f2fe78bSCy Schubert&
5218*7f2fe78bSCy Schubert\sphinxAtStartPar
5219*7f2fe78bSCy Schubert\sphinxstyleemphasis{integer}
5220*7f2fe78bSCy Schubert&
5221*7f2fe78bSCy Schubert\sphinxAtStartPar
5222*7f2fe78bSCy SchubertIndicates the number of entries that should be retained in the update log. The default is 1000; the maximum number is 2500.
5223*7f2fe78bSCy Schubert\\
5224*7f2fe78bSCy Schubert\hline
5225*7f2fe78bSCy Schubert\sphinxAtStartPar
5226*7f2fe78bSCy Schubertiprop\_replica\_poll
5227*7f2fe78bSCy Schubert&
5228*7f2fe78bSCy Schubert\sphinxAtStartPar
5229*7f2fe78bSCy Schubert\sphinxstyleemphasis{time interval}
5230*7f2fe78bSCy Schubert&
5231*7f2fe78bSCy Schubert\sphinxAtStartPar
5232*7f2fe78bSCy SchubertIndicates how often the replica should poll the primary KDC for changes to the database. The default is two minutes.
5233*7f2fe78bSCy Schubert\\
5234*7f2fe78bSCy Schubert\hline
5235*7f2fe78bSCy Schubert\sphinxAtStartPar
5236*7f2fe78bSCy Schubertiprop\_port
5237*7f2fe78bSCy Schubert&
5238*7f2fe78bSCy Schubert\sphinxAtStartPar
5239*7f2fe78bSCy Schubert\sphinxstyleemphasis{integer}
5240*7f2fe78bSCy Schubert&
5241*7f2fe78bSCy Schubert\sphinxAtStartPar
5242*7f2fe78bSCy SchubertSpecifies the port number to be used for incremental propagation. This is required in both primary and replica configuration files.
5243*7f2fe78bSCy Schubert\\
5244*7f2fe78bSCy Schubert\hline
5245*7f2fe78bSCy Schubert\sphinxAtStartPar
5246*7f2fe78bSCy Schubertiprop\_resync\_timeout
5247*7f2fe78bSCy Schubert&
5248*7f2fe78bSCy Schubert\sphinxAtStartPar
5249*7f2fe78bSCy Schubert\sphinxstyleemphasis{integer}
5250*7f2fe78bSCy Schubert&
5251*7f2fe78bSCy Schubert\sphinxAtStartPar
5252*7f2fe78bSCy SchubertSpecifies the number of seconds to wait for a full propagation to complete. This is optional on replica configurations.  Defaults to 300 seconds (5 minutes).
5253*7f2fe78bSCy Schubert\\
5254*7f2fe78bSCy Schubert\hline
5255*7f2fe78bSCy Schubert\sphinxAtStartPar
5256*7f2fe78bSCy Schubertiprop\_logfile
5257*7f2fe78bSCy Schubert&
5258*7f2fe78bSCy Schubert\sphinxAtStartPar
5259*7f2fe78bSCy Schubert\sphinxstyleemphasis{file name}
5260*7f2fe78bSCy Schubert&
5261*7f2fe78bSCy Schubert\sphinxAtStartPar
5262*7f2fe78bSCy SchubertSpecifies where the update log file for the realm database is to be stored. The default is to use the \sphinxstyleemphasis{database\_name} entry from the realms section of the config file {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}, with \sphinxstyleemphasis{.ulog} appended. (NOTE: If database\_name isn’t specified in the realms section, perhaps because the LDAP database back end is being used, or the file name is specified in the \sphinxstyleemphasis{dbmodules} section, then the hard\sphinxhyphen{}coded default for \sphinxstyleemphasis{database\_name} is used. Determination of the \sphinxstyleemphasis{iprop\_logfile}  default value will not use values from the \sphinxstyleemphasis{dbmodules} section.)
5263*7f2fe78bSCy Schubert\\
5264*7f2fe78bSCy Schubert\hline
5265*7f2fe78bSCy Schubert\end{tabulary}
5266*7f2fe78bSCy Schubert\par
5267*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
5268*7f2fe78bSCy Schubert
5269*7f2fe78bSCy Schubert\sphinxAtStartPar
5270*7f2fe78bSCy SchubertBoth primary and replica sides must have a principal named
5271*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{kiprop/hostname}} (where \sphinxstyleemphasis{hostname} is the lowercase,
5272*7f2fe78bSCy Schubertfully\sphinxhyphen{}qualified, canonical name for the host) registered in the
5273*7f2fe78bSCy SchubertKerberos database, and have keys for that principal stored in the
5274*7f2fe78bSCy Schubertdefault keytab file ({\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFKTNAME}}}}).  The \sphinxcode{\sphinxupquote{kiprop/hostname}} principal may
5275*7f2fe78bSCy Schuberthave been created automatically for the primary KDC, but it must
5276*7f2fe78bSCy Schubertalways be created for replica KDCs.
5277*7f2fe78bSCy Schubert
5278*7f2fe78bSCy Schubert\sphinxAtStartPar
5279*7f2fe78bSCy SchubertOn the primary KDC side, the \sphinxcode{\sphinxupquote{kiprop/hostname}} principal must be
5280*7f2fe78bSCy Schubertlisted in the kadmind ACL file {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}, and given the
5281*7f2fe78bSCy Schubert\sphinxstylestrong{p} privilege (see {\hyperref[\detokenize{admin/database:privileges}]{\sphinxcrossref{\DUrole{std,std-ref}{Privileges}}}}).
5282*7f2fe78bSCy Schubert
5283*7f2fe78bSCy Schubert\sphinxAtStartPar
5284*7f2fe78bSCy SchubertOn the replica KDC side, {\hyperref[\detokenize{admin/admin_commands/kpropd:kpropd-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kpropd}}}} should be run.  When
5285*7f2fe78bSCy Schubertincremental propagation is enabled, it will connect to the kadmind on
5286*7f2fe78bSCy Schubertthe primary KDC and start requesting updates.
5287*7f2fe78bSCy Schubert
5288*7f2fe78bSCy Schubert\sphinxAtStartPar
5289*7f2fe78bSCy SchubertThe normal kprop mechanism is disabled by the incremental propagation
5290*7f2fe78bSCy Schubertsupport.  However, if the replica has been unable to fetch changes
5291*7f2fe78bSCy Schubertfrom the primary KDC for too long (network problems, perhaps), the log
5292*7f2fe78bSCy Schuberton the primary may wrap around and overwrite some of the updates that
5293*7f2fe78bSCy Schubertthe replica has not yet retrieved.  In this case, the replica will
5294*7f2fe78bSCy Schubertinstruct the primary KDC to dump the current database out to a file
5295*7f2fe78bSCy Schubertand invoke a one\sphinxhyphen{}time kprop propagation, with special options to also
5296*7f2fe78bSCy Schubertconvey the point in the update log at which the replica should resume
5297*7f2fe78bSCy Schubertfetching incremental updates.  Thus, all the keytab and ACL setup
5298*7f2fe78bSCy Schubertpreviously described for kprop propagation is still needed.
5299*7f2fe78bSCy Schubert
5300*7f2fe78bSCy Schubert\sphinxAtStartPar
5301*7f2fe78bSCy SchubertIf an environment has a large number of replicas, it may be desirable
5302*7f2fe78bSCy Schubertto arrange them in a hierarchy instead of having the primary serve
5303*7f2fe78bSCy Schubertupdates to every replica.  To do this, run \sphinxcode{\sphinxupquote{kadmind \sphinxhyphen{}proponly}} on
5304*7f2fe78bSCy Schuberteach intermediate replica, and \sphinxcode{\sphinxupquote{kpropd \sphinxhyphen{}A upstreamhostname}} on
5305*7f2fe78bSCy Schubertdownstream replicas to direct each one to the appropriate upstream
5306*7f2fe78bSCy Schubertreplica.
5307*7f2fe78bSCy Schubert
5308*7f2fe78bSCy Schubert\sphinxAtStartPar
5309*7f2fe78bSCy SchubertThere are several known restrictions in the current implementation:
5310*7f2fe78bSCy Schubert\begin{itemize}
5311*7f2fe78bSCy Schubert\item {}
5312*7f2fe78bSCy Schubert\sphinxAtStartPar
5313*7f2fe78bSCy SchubertThe incremental update protocol does not transport changes to policy
5314*7f2fe78bSCy Schubertobjects.  Any policy changes on the primary will result in full
5315*7f2fe78bSCy Schubertresyncs to all replicas.
5316*7f2fe78bSCy Schubert
5317*7f2fe78bSCy Schubert\item {}
5318*7f2fe78bSCy Schubert\sphinxAtStartPar
5319*7f2fe78bSCy SchubertThe replica’s KDB module must support locking; it cannot be using the
5320*7f2fe78bSCy SchubertLDAP KDB module.
5321*7f2fe78bSCy Schubert
5322*7f2fe78bSCy Schubert\item {}
5323*7f2fe78bSCy Schubert\sphinxAtStartPar
5324*7f2fe78bSCy SchubertThe primary and replica must be able to initiate TCP connections in
5325*7f2fe78bSCy Schubertboth directions, without an intervening NAT.
5326*7f2fe78bSCy Schubert
5327*7f2fe78bSCy Schubert\end{itemize}
5328*7f2fe78bSCy Schubert
5329*7f2fe78bSCy Schubert
5330*7f2fe78bSCy Schubert\subsection{Sun/MIT incremental propagation differences}
5331*7f2fe78bSCy Schubert\label{\detokenize{admin/database:sun-mit-incremental-propagation-differences}}
5332*7f2fe78bSCy Schubert\sphinxAtStartPar
5333*7f2fe78bSCy SchubertSun donated the original code for supporting incremental database
5334*7f2fe78bSCy Schubertpropagation to MIT.  Some changes have been made in the MIT source
5335*7f2fe78bSCy Schuberttree that will be visible to administrators.  (These notes are based
5336*7f2fe78bSCy Schuberton Sun’s patches.  Changes to Sun’s implementation since then may not
5337*7f2fe78bSCy Schubertbe reflected here.)
5338*7f2fe78bSCy Schubert
5339*7f2fe78bSCy Schubert\sphinxAtStartPar
5340*7f2fe78bSCy SchubertThe Sun config file support looks for \sphinxcode{\sphinxupquote{sunw\_dbprop\_enable}},
5341*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{sunw\_dbprop\_master\_ulogsize}}, and \sphinxcode{\sphinxupquote{sunw\_dbprop\_slave\_poll}}.
5342*7f2fe78bSCy Schubert
5343*7f2fe78bSCy Schubert\sphinxAtStartPar
5344*7f2fe78bSCy SchubertThe incremental propagation service is implemented as an ONC RPC
5345*7f2fe78bSCy Schubertservice.  In the Sun implementation, the service is registered with
5346*7f2fe78bSCy Schubertrpcbind (also known as portmapper) and the client looks up the port
5347*7f2fe78bSCy Schubertnumber to contact.  In the MIT implementation, where interaction with
5348*7f2fe78bSCy Schubertsome modern versions of rpcbind doesn’t always work well, the port
5349*7f2fe78bSCy Schubertnumber must be specified in the config file on both the primary and
5350*7f2fe78bSCy Schubertreplica sides.
5351*7f2fe78bSCy Schubert
5352*7f2fe78bSCy Schubert\sphinxAtStartPar
5353*7f2fe78bSCy SchubertThe Sun implementation hard\sphinxhyphen{}codes pathnames in \sphinxcode{\sphinxupquote{/var/krb5}} for the
5354*7f2fe78bSCy Schubertupdate log and the per\sphinxhyphen{}replica kprop dump files.  In the MIT
5355*7f2fe78bSCy Schubertimplementation, the pathname for the update log is specified in the
5356*7f2fe78bSCy Schubertconfig file, and the per\sphinxhyphen{}replica dump files are stored in
5357*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/replica\_datatrans\_hostname}}.
5358*7f2fe78bSCy Schubert
5359*7f2fe78bSCy Schubert
5360*7f2fe78bSCy Schubert\chapter{Database types}
5361*7f2fe78bSCy Schubert\label{\detokenize{admin/dbtypes:database-types}}\label{\detokenize{admin/dbtypes:dbtypes}}\label{\detokenize{admin/dbtypes::doc}}
5362*7f2fe78bSCy Schubert\sphinxAtStartPar
5363*7f2fe78bSCy SchubertA Kerberos database can be implemented with one of three built\sphinxhyphen{}in
5364*7f2fe78bSCy Schubertdatabase providers, called KDB modules.  Software which incorporates
5365*7f2fe78bSCy Schubertthe MIT krb5 KDC may also provide its own KDB module.  The following
5366*7f2fe78bSCy Schubertsubsections describe the three built\sphinxhyphen{}in KDB modules and the
5367*7f2fe78bSCy Schubertconfiguration specific to them.
5368*7f2fe78bSCy Schubert
5369*7f2fe78bSCy Schubert\sphinxAtStartPar
5370*7f2fe78bSCy SchubertThe database type can be configured with the \sphinxstylestrong{db\_library} variable
5371*7f2fe78bSCy Schubertin the {\hyperref[\detokenize{admin/conf_files/kdc_conf:dbmodules}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbmodules{]}}}}} subsection for the realm.  For example:
5372*7f2fe78bSCy Schubert
5373*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5374*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{dbmodules}\PYG{p}{]}
5375*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
5376*7f2fe78bSCy Schubert        \PYG{n}{db\PYGZus{}library} \PYG{o}{=} \PYG{n}{db2}
5377*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
5378*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5379*7f2fe78bSCy Schubert
5380*7f2fe78bSCy Schubert\sphinxAtStartPar
5381*7f2fe78bSCy SchubertIf the \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} realm subsection contains a
5382*7f2fe78bSCy Schubert\sphinxstylestrong{database\_module} setting, then the subsection within
5383*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{{[}dbmodules{]}}} should use that name instead of \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}}.
5384*7f2fe78bSCy Schubert
5385*7f2fe78bSCy Schubert\sphinxAtStartPar
5386*7f2fe78bSCy SchubertTo transition from one database type to another, stop the
5387*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} service, use \sphinxcode{\sphinxupquote{kdb5\_util dump}} to create a dump
5388*7f2fe78bSCy Schubertfile, change the \sphinxstylestrong{db\_library} value and set any appropriate
5389*7f2fe78bSCy Schubertconfiguration for the new database type, and use \sphinxcode{\sphinxupquote{kdb5\_util load}} to
5390*7f2fe78bSCy Schubertcreate and populate the new database.  If the new database type is
5391*7f2fe78bSCy SchubertLDAP, create the new database using \sphinxcode{\sphinxupquote{kdb5\_ldap\_util}} and populate it
5392*7f2fe78bSCy Schubertfrom the dump file using \sphinxcode{\sphinxupquote{kdb5\_util load \sphinxhyphen{}update}}.  Then restart the
5393*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} and {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} services.
5394*7f2fe78bSCy Schubert
5395*7f2fe78bSCy Schubert
5396*7f2fe78bSCy Schubert\section{Berkeley database module (db2)}
5397*7f2fe78bSCy Schubert\label{\detokenize{admin/dbtypes:berkeley-database-module-db2}}
5398*7f2fe78bSCy Schubert\sphinxAtStartPar
5399*7f2fe78bSCy SchubertThe default KDB module is \sphinxcode{\sphinxupquote{db2}}, which uses a version of the
5400*7f2fe78bSCy SchubertBerkeley DB library.  It creates four files based on the database
5401*7f2fe78bSCy Schubertpathname.  If the pathname ends with \sphinxcode{\sphinxupquote{principal}} then the four files
5402*7f2fe78bSCy Schubertare:
5403*7f2fe78bSCy Schubert\begin{itemize}
5404*7f2fe78bSCy Schubert\item {}
5405*7f2fe78bSCy Schubert\sphinxAtStartPar
5406*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{principal}}, containing principal entry data
5407*7f2fe78bSCy Schubert
5408*7f2fe78bSCy Schubert\item {}
5409*7f2fe78bSCy Schubert\sphinxAtStartPar
5410*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{principal.ok}}, a lock file for the principal database
5411*7f2fe78bSCy Schubert
5412*7f2fe78bSCy Schubert\item {}
5413*7f2fe78bSCy Schubert\sphinxAtStartPar
5414*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{principal.kadm5}}, containing policy object data
5415*7f2fe78bSCy Schubert
5416*7f2fe78bSCy Schubert\item {}
5417*7f2fe78bSCy Schubert\sphinxAtStartPar
5418*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{principal.kadm5.lock}}, a lock file for the policy database
5419*7f2fe78bSCy Schubert
5420*7f2fe78bSCy Schubert\end{itemize}
5421*7f2fe78bSCy Schubert
5422*7f2fe78bSCy Schubert\sphinxAtStartPar
5423*7f2fe78bSCy SchubertFor large databases, the {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} \sphinxstylestrong{dump} command (perhaps
5424*7f2fe78bSCy Schubertinvoked by {\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}} or by {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} for incremental
5425*7f2fe78bSCy Schubertpropagation) may cause {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} to stop for a noticeable
5426*7f2fe78bSCy Schubertperiod of time while it iterates over the database.  This delay can be
5427*7f2fe78bSCy Schubertavoided by disabling account lockout features so that the KDC does not
5428*7f2fe78bSCy Schubertperform database writes (see {\hyperref[\detokenize{admin/lockout:disable-lockout}]{\sphinxcrossref{\DUrole{std,std-ref}{KDC performance and account lockout}}}}).  Alternatively,
5429*7f2fe78bSCy Schuberta slower form of iteration can be enabled by setting the
5430*7f2fe78bSCy Schubert\sphinxstylestrong{unlockiter} variable to \sphinxcode{\sphinxupquote{true}}.  For example:
5431*7f2fe78bSCy Schubert
5432*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5433*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{dbmodules}\PYG{p}{]}
5434*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
5435*7f2fe78bSCy Schubert        \PYG{n}{db\PYGZus{}library} \PYG{o}{=} \PYG{n}{db2}
5436*7f2fe78bSCy Schubert        \PYG{n}{unlockiter} \PYG{o}{=} \PYG{n}{true}
5437*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
5438*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5439*7f2fe78bSCy Schubert
5440*7f2fe78bSCy Schubert\sphinxAtStartPar
5441*7f2fe78bSCy SchubertIn rare cases, a power failure or other unclean system shutdown may
5442*7f2fe78bSCy Schubertcause inconsistencies in the internal pointers within a database file,
5443*7f2fe78bSCy Schubertsuch that \sphinxcode{\sphinxupquote{kdb5\_util dump}} cannot retrieve all principal entries in
5444*7f2fe78bSCy Schubertthe database.  In this situation, it may be possible to retrieve all
5445*7f2fe78bSCy Schubertof the principal data by running \sphinxcode{\sphinxupquote{kdb5\_util dump \sphinxhyphen{}recurse}} to
5446*7f2fe78bSCy Schubertiterate over the database using the tree pointers instead of the
5447*7f2fe78bSCy Schubertiteration pointers.  Running \sphinxcode{\sphinxupquote{kdb5\_util dump \sphinxhyphen{}rev}} to iterate over
5448*7f2fe78bSCy Schubertthe database backwards may also retrieve some of the data which is not
5449*7f2fe78bSCy Schubertretrieved by a normal dump operation.
5450*7f2fe78bSCy Schubert
5451*7f2fe78bSCy Schubert
5452*7f2fe78bSCy Schubert\section{Lightning Memory\sphinxhyphen{}Mapped Database module (klmdb)}
5453*7f2fe78bSCy Schubert\label{\detokenize{admin/dbtypes:lightning-memory-mapped-database-module-klmdb}}
5454*7f2fe78bSCy Schubert\sphinxAtStartPar
5455*7f2fe78bSCy SchubertThe klmdb module was added in release 1.17.  It uses the LMDB library,
5456*7f2fe78bSCy Schubertand may offer better performance and reliability than the db2 module.
5457*7f2fe78bSCy SchubertIt creates four files based on the database pathname.  If the pathname
5458*7f2fe78bSCy Schubertends with \sphinxcode{\sphinxupquote{principal}}, then the four files are:
5459*7f2fe78bSCy Schubert\begin{itemize}
5460*7f2fe78bSCy Schubert\item {}
5461*7f2fe78bSCy Schubert\sphinxAtStartPar
5462*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{principal.mdb}}, containing policy object data and most principal
5463*7f2fe78bSCy Schubertentry data
5464*7f2fe78bSCy Schubert
5465*7f2fe78bSCy Schubert\item {}
5466*7f2fe78bSCy Schubert\sphinxAtStartPar
5467*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{principal.mdb\sphinxhyphen{}lock}}, a lock file for the primary database
5468*7f2fe78bSCy Schubert
5469*7f2fe78bSCy Schubert\item {}
5470*7f2fe78bSCy Schubert\sphinxAtStartPar
5471*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{principal.lockout.mdb}}, containing the account lockout attributes
5472*7f2fe78bSCy Schubert(last successful authentication time, last failed authentication
5473*7f2fe78bSCy Schuberttime, and number of failed attempts) for each principal entry
5474*7f2fe78bSCy Schubert
5475*7f2fe78bSCy Schubert\item {}
5476*7f2fe78bSCy Schubert\sphinxAtStartPar
5477*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{principal.lockout.mdb\sphinxhyphen{}lock}}, a lock file for the lockout database
5478*7f2fe78bSCy Schubert
5479*7f2fe78bSCy Schubert\end{itemize}
5480*7f2fe78bSCy Schubert
5481*7f2fe78bSCy Schubert\sphinxAtStartPar
5482*7f2fe78bSCy SchubertSeparating out the lockout attributes ensures that the KDC will never
5483*7f2fe78bSCy Schubertblock on an administrative operation such as a database dump or load.
5484*7f2fe78bSCy SchubertIt also allows the KDC to operate without write access to the primary
5485*7f2fe78bSCy Schubertdatabase.  If both account lockout features are disabled (see
5486*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/lockout:disable-lockout}]{\sphinxcrossref{\DUrole{std,std-ref}{KDC performance and account lockout}}}}), the lockout database files will be created
5487*7f2fe78bSCy Schubertbut will not subsequently be opened, and the account lockout
5488*7f2fe78bSCy Schubertattributes will always have zero values.
5489*7f2fe78bSCy Schubert
5490*7f2fe78bSCy Schubert\sphinxAtStartPar
5491*7f2fe78bSCy SchubertBecause LMDB creates a memory map to the database files, it requires a
5492*7f2fe78bSCy Schubertconfigured memory map size which also determines the maximum size of
5493*7f2fe78bSCy Schubertthe database.  This size is applied equally to the two databases, so
5494*7f2fe78bSCy Schuberttwice the configured size will be consumed in the process address
5495*7f2fe78bSCy Schubertspace; this is primarily a limitation on 32\sphinxhyphen{}bit platforms.  The
5496*7f2fe78bSCy Schubertdefault value of 128 megabytes should be sufficient for several
5497*7f2fe78bSCy Schuberthundred thousand principal entries.  If the limit is reached, kadmin
5498*7f2fe78bSCy Schubertoperations will fail and the error message “Environment mapsize limit
5499*7f2fe78bSCy Schubertreached” will appear in the kadmind log file.  In this case, the
5500*7f2fe78bSCy Schubert\sphinxstylestrong{mapsize} variable can be used to increase the map size.  The
5501*7f2fe78bSCy Schubertfollowing example sets the map size to 512 megabytes:
5502*7f2fe78bSCy Schubert
5503*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5504*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{dbmodules}\PYG{p}{]}
5505*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
5506*7f2fe78bSCy Schubert        \PYG{n}{db\PYGZus{}library} \PYG{o}{=} \PYG{n}{klmdb}
5507*7f2fe78bSCy Schubert        \PYG{n}{mapsize} \PYG{o}{=} \PYG{l+m+mi}{512}
5508*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
5509*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5510*7f2fe78bSCy Schubert
5511*7f2fe78bSCy Schubert\sphinxAtStartPar
5512*7f2fe78bSCy SchubertLMDB has a configurable maximum number of readers.  The default value
5513*7f2fe78bSCy Schubertof 128 should be sufficient for most deployments.  If you are going to
5514*7f2fe78bSCy Schubertuse a large number of KDC worker processes, it may be necessary to set
5515*7f2fe78bSCy Schubertthe \sphinxstylestrong{max\_readers} variable to a larger number.
5516*7f2fe78bSCy Schubert
5517*7f2fe78bSCy Schubert\sphinxAtStartPar
5518*7f2fe78bSCy SchubertBy default, LMDB synchronizes database files to disk after each write
5519*7f2fe78bSCy Schuberttransaction to ensure durability in the case of an unclean system
5520*7f2fe78bSCy Schubertshutdown.  The klmdb module always turns synchronization off for the
5521*7f2fe78bSCy Schubertlockout database to ensure reasonable KDC performance, but leaves it
5522*7f2fe78bSCy Schuberton for the primary database.  If high throughput for administrative
5523*7f2fe78bSCy Schubertoperations (including password changes) is required, the \sphinxstylestrong{nosync}
5524*7f2fe78bSCy Schubertvariable can be set to “true” to disable synchronization for the
5525*7f2fe78bSCy Schubertprimary database.
5526*7f2fe78bSCy Schubert
5527*7f2fe78bSCy Schubert\sphinxAtStartPar
5528*7f2fe78bSCy SchubertThe klmdb module does not support explicit locking with the
5529*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} \sphinxstylestrong{lock} command.
5530*7f2fe78bSCy Schubert
5531*7f2fe78bSCy Schubert
5532*7f2fe78bSCy Schubert\section{LDAP module (kldap)}
5533*7f2fe78bSCy Schubert\label{\detokenize{admin/dbtypes:ldap-module-kldap}}
5534*7f2fe78bSCy Schubert\sphinxAtStartPar
5535*7f2fe78bSCy SchubertThe kldap module stores principal and policy data using an LDAP
5536*7f2fe78bSCy Schubertserver.  To use it you must configure an LDAP server to use the
5537*7f2fe78bSCy SchubertKerberos schema.  See {\hyperref[\detokenize{admin/conf_ldap:conf-ldap}]{\sphinxcrossref{\DUrole{std,std-ref}{Configuring Kerberos with OpenLDAP back\sphinxhyphen{}end}}}} for details.
5538*7f2fe78bSCy Schubert
5539*7f2fe78bSCy Schubert\sphinxAtStartPar
5540*7f2fe78bSCy SchubertBecause {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} is single\sphinxhyphen{}threaded, latency in LDAP database
5541*7f2fe78bSCy Schubertaccesses may limit KDC operation throughput.  If the LDAP server is
5542*7f2fe78bSCy Schubertlocated on the same server host as the KDC and accessed through an
5543*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{ldapi://}} URL, latency should be minimal.  If this is not possible,
5544*7f2fe78bSCy Schubertconsider starting multiple KDC worker processes with the
5545*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} \sphinxstylestrong{\sphinxhyphen{}w} option to enable concurrent processing of KDC
5546*7f2fe78bSCy Schubertrequests.
5547*7f2fe78bSCy Schubert
5548*7f2fe78bSCy Schubert\sphinxAtStartPar
5549*7f2fe78bSCy SchubertThe kldap module does not support explicit locking with the
5550*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} \sphinxstylestrong{lock} command.
5551*7f2fe78bSCy Schubert
5552*7f2fe78bSCy Schubert
5553*7f2fe78bSCy Schubert\chapter{Account lockout}
5554*7f2fe78bSCy Schubert\label{\detokenize{admin/lockout:account-lockout}}\label{\detokenize{admin/lockout:lockout}}\label{\detokenize{admin/lockout::doc}}
5555*7f2fe78bSCy Schubert\sphinxAtStartPar
5556*7f2fe78bSCy SchubertAs of release 1.8, the KDC can be configured to lock out principals
5557*7f2fe78bSCy Schubertafter a number of failed authentication attempts within a period of
5558*7f2fe78bSCy Schuberttime.  Account lockout can make it more difficult to attack a
5559*7f2fe78bSCy Schubertprincipal’s password by brute force, but also makes it easy for an
5560*7f2fe78bSCy Schubertattacker to deny access to a principal.
5561*7f2fe78bSCy Schubert
5562*7f2fe78bSCy Schubert
5563*7f2fe78bSCy Schubert\section{Configuring account lockout}
5564*7f2fe78bSCy Schubert\label{\detokenize{admin/lockout:configuring-account-lockout}}
5565*7f2fe78bSCy Schubert\sphinxAtStartPar
5566*7f2fe78bSCy SchubertAccount lockout only works for principals with the
5567*7f2fe78bSCy Schubert\sphinxstylestrong{+requires\_preauth} flag set.  Without this flag, the KDC cannot
5568*7f2fe78bSCy Schubertknow whether or not a client successfully decrypted the ticket it
5569*7f2fe78bSCy Schubertissued.  It is also important to set the \sphinxstylestrong{\sphinxhyphen{}allow\_svr} flag on a
5570*7f2fe78bSCy Schubertprincipal to protect its password from an off\sphinxhyphen{}line dictionary attack
5571*7f2fe78bSCy Schubertthrough a TGS request.  You can set these flags on a principal with
5572*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} as follows:
5573*7f2fe78bSCy Schubert
5574*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5575*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{modprinc} \PYG{o}{+}\PYG{n}{requires\PYGZus{}preauth} \PYG{o}{\PYGZhy{}}\PYG{n}{allow\PYGZus{}svr} \PYG{n}{PRINCNAME}
5576*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5577*7f2fe78bSCy Schubert
5578*7f2fe78bSCy Schubert\sphinxAtStartPar
5579*7f2fe78bSCy SchubertAccount lockout parameters are configured via {\hyperref[\detokenize{admin/database:policies}]{\sphinxcrossref{\DUrole{std,std-ref}{policy objects}}}}.  There may be an existing policy associated with user
5580*7f2fe78bSCy Schubertprincipals (such as the “default” policy), or you may need to create a
5581*7f2fe78bSCy Schubertnew one and associate it with each user principal.
5582*7f2fe78bSCy Schubert
5583*7f2fe78bSCy Schubert\sphinxAtStartPar
5584*7f2fe78bSCy SchubertThe policy parameters related to account lockout are:
5585*7f2fe78bSCy Schubert\begin{itemize}
5586*7f2fe78bSCy Schubert\item {}
5587*7f2fe78bSCy Schubert\sphinxAtStartPar
5588*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:policy-maxfailure}]{\sphinxcrossref{\DUrole{std,std-ref}{maxfailure}}}}: the number of failed attempts
5589*7f2fe78bSCy Schubertbefore the principal is locked out
5590*7f2fe78bSCy Schubert
5591*7f2fe78bSCy Schubert\item {}
5592*7f2fe78bSCy Schubert\sphinxAtStartPar
5593*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:policy-failurecountinterval}]{\sphinxcrossref{\DUrole{std,std-ref}{failurecountinterval}}}}: the
5594*7f2fe78bSCy Schubertallowable interval between failed attempts
5595*7f2fe78bSCy Schubert
5596*7f2fe78bSCy Schubert\item {}
5597*7f2fe78bSCy Schubert\sphinxAtStartPar
5598*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:policy-lockoutduration}]{\sphinxcrossref{\DUrole{std,std-ref}{lockoutduration}}}}: the amount of time
5599*7f2fe78bSCy Schuberta principal is locked out for
5600*7f2fe78bSCy Schubert
5601*7f2fe78bSCy Schubert\end{itemize}
5602*7f2fe78bSCy Schubert
5603*7f2fe78bSCy Schubert\sphinxAtStartPar
5604*7f2fe78bSCy SchubertHere is an example of setting these parameters on a new policy and
5605*7f2fe78bSCy Schubertassociating it with a principal:
5606*7f2fe78bSCy Schubert
5607*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5608*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addpol} \PYG{o}{\PYGZhy{}}\PYG{n}{maxfailure} \PYG{l+m+mi}{10} \PYG{o}{\PYGZhy{}}\PYG{n}{failurecountinterval} \PYG{l+m+mi}{180}
5609*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{lockoutduration} \PYG{l+m+mi}{60} \PYG{n}{lockout\PYGZus{}policy}
5610*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{modprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{policy} \PYG{n}{lockout\PYGZus{}policy} \PYG{n}{PRINCNAME}
5611*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5612*7f2fe78bSCy Schubert
5613*7f2fe78bSCy Schubert
5614*7f2fe78bSCy Schubert\section{Testing account lockout}
5615*7f2fe78bSCy Schubert\label{\detokenize{admin/lockout:testing-account-lockout}}
5616*7f2fe78bSCy Schubert\sphinxAtStartPar
5617*7f2fe78bSCy SchubertTo test that account lockout is working, try authenticating as the
5618*7f2fe78bSCy Schubertprincipal (hopefully not one that might be in use) multiple times with
5619*7f2fe78bSCy Schubertthe wrong password.  For instance, if \sphinxstylestrong{maxfailure} is set to 2, you
5620*7f2fe78bSCy Schubertmight see:
5621*7f2fe78bSCy Schubert
5622*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5623*7f2fe78bSCy Schubert\PYGZdl{} kinit user
5624*7f2fe78bSCy SchubertPassword for user@KRBTEST.COM:
5625*7f2fe78bSCy Schubertkinit: Password incorrect while getting initial credentials
5626*7f2fe78bSCy Schubert\PYGZdl{} kinit user
5627*7f2fe78bSCy SchubertPassword for user@KRBTEST.COM:
5628*7f2fe78bSCy Schubertkinit: Password incorrect while getting initial credentials
5629*7f2fe78bSCy Schubert\PYGZdl{} kinit user
5630*7f2fe78bSCy Schubertkinit: Client\PYGZsq{}s credentials have been revoked while getting initial credentials
5631*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5632*7f2fe78bSCy Schubert
5633*7f2fe78bSCy Schubert
5634*7f2fe78bSCy Schubert\section{Account lockout principal state}
5635*7f2fe78bSCy Schubert\label{\detokenize{admin/lockout:account-lockout-principal-state}}
5636*7f2fe78bSCy Schubert\sphinxAtStartPar
5637*7f2fe78bSCy SchubertA principal entry keeps three pieces of state related to account
5638*7f2fe78bSCy Schubertlockout:
5639*7f2fe78bSCy Schubert\begin{itemize}
5640*7f2fe78bSCy Schubert\item {}
5641*7f2fe78bSCy Schubert\sphinxAtStartPar
5642*7f2fe78bSCy SchubertThe time of last successful authentication
5643*7f2fe78bSCy Schubert
5644*7f2fe78bSCy Schubert\item {}
5645*7f2fe78bSCy Schubert\sphinxAtStartPar
5646*7f2fe78bSCy SchubertThe time of last failed authentication
5647*7f2fe78bSCy Schubert
5648*7f2fe78bSCy Schubert\item {}
5649*7f2fe78bSCy Schubert\sphinxAtStartPar
5650*7f2fe78bSCy SchubertA counter of failed attempts
5651*7f2fe78bSCy Schubert
5652*7f2fe78bSCy Schubert\end{itemize}
5653*7f2fe78bSCy Schubert
5654*7f2fe78bSCy Schubert\sphinxAtStartPar
5655*7f2fe78bSCy SchubertThe time of last successful authentication is not actually needed for
5656*7f2fe78bSCy Schubertthe account lockout system to function, but may be of administrative
5657*7f2fe78bSCy Schubertinterest.  These fields can be observed with the \sphinxstylestrong{getprinc} kadmin
5658*7f2fe78bSCy Schubertcommand.  For example:
5659*7f2fe78bSCy Schubert
5660*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5661*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{getprinc} \PYG{n}{user}
5662*7f2fe78bSCy Schubert\PYG{n}{Principal}\PYG{p}{:} \PYG{n}{user}\PYG{n+nd}{@KRBTEST}\PYG{o}{.}\PYG{n}{COM}
5663*7f2fe78bSCy Schubert\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
5664*7f2fe78bSCy Schubert\PYG{n}{Last} \PYG{n}{successful} \PYG{n}{authentication}\PYG{p}{:} \PYG{p}{[}\PYG{n}{never}\PYG{p}{]}
5665*7f2fe78bSCy Schubert\PYG{n}{Last} \PYG{n}{failed} \PYG{n}{authentication}\PYG{p}{:} \PYG{n}{Mon} \PYG{n}{Dec} \PYG{l+m+mi}{03} \PYG{l+m+mi}{12}\PYG{p}{:}\PYG{l+m+mi}{30}\PYG{p}{:}\PYG{l+m+mi}{33} \PYG{n}{EST} \PYG{l+m+mi}{2012}
5666*7f2fe78bSCy Schubert\PYG{n}{Failed} \PYG{n}{password} \PYG{n}{attempts}\PYG{p}{:} \PYG{l+m+mi}{2}
5667*7f2fe78bSCy Schubert\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
5668*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5669*7f2fe78bSCy Schubert
5670*7f2fe78bSCy Schubert\sphinxAtStartPar
5671*7f2fe78bSCy SchubertA principal which has been locked out can be administratively unlocked
5672*7f2fe78bSCy Schubertwith the \sphinxstylestrong{\sphinxhyphen{}unlock} option to the \sphinxstylestrong{modprinc} kadmin command:
5673*7f2fe78bSCy Schubert
5674*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5675*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{modprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{unlock} \PYG{n}{PRINCNAME}
5676*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5677*7f2fe78bSCy Schubert
5678*7f2fe78bSCy Schubert\sphinxAtStartPar
5679*7f2fe78bSCy SchubertThis command will reset the number of failed attempts to 0.
5680*7f2fe78bSCy Schubert
5681*7f2fe78bSCy Schubert
5682*7f2fe78bSCy Schubert\section{KDC replication and account lockout}
5683*7f2fe78bSCy Schubert\label{\detokenize{admin/lockout:kdc-replication-and-account-lockout}}
5684*7f2fe78bSCy Schubert\sphinxAtStartPar
5685*7f2fe78bSCy SchubertThe account lockout state of a principal is not replicated by either
5686*7f2fe78bSCy Schuberttraditional {\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}} or incremental propagation.  Because of
5687*7f2fe78bSCy Schubertthis, the number of attempts an attacker can make within a time period
5688*7f2fe78bSCy Schubertis multiplied by the number of KDCs.  For instance, if the
5689*7f2fe78bSCy Schubert\sphinxstylestrong{maxfailure} parameter on a policy is 10 and there are four KDCs in
5690*7f2fe78bSCy Schubertthe environment (a primary and three replicas), an attacker could make
5691*7f2fe78bSCy Schubertas many as 40 attempts before the principal is locked out on all four
5692*7f2fe78bSCy SchubertKDCs.
5693*7f2fe78bSCy Schubert
5694*7f2fe78bSCy Schubert\sphinxAtStartPar
5695*7f2fe78bSCy SchubertAn administrative unlock is propagated from the primary to the replica
5696*7f2fe78bSCy SchubertKDCs during the next propagation.  Propagation of an administrative
5697*7f2fe78bSCy Schubertunlock will cause the counter of failed attempts on each replica to
5698*7f2fe78bSCy Schubertreset to 1 on the next failure.
5699*7f2fe78bSCy Schubert
5700*7f2fe78bSCy Schubert\sphinxAtStartPar
5701*7f2fe78bSCy SchubertIf a KDC environment uses a replication strategy other than kprop or
5702*7f2fe78bSCy Schubertincremental propagation, such as the LDAP KDB module with multi\sphinxhyphen{}master
5703*7f2fe78bSCy SchubertLDAP replication, then account lockout state may be replicated between
5704*7f2fe78bSCy SchubertKDCs and the concerns of this section may not apply.
5705*7f2fe78bSCy Schubert
5706*7f2fe78bSCy Schubert
5707*7f2fe78bSCy Schubert\section{KDC performance and account lockout}
5708*7f2fe78bSCy Schubert\label{\detokenize{admin/lockout:kdc-performance-and-account-lockout}}\label{\detokenize{admin/lockout:disable-lockout}}
5709*7f2fe78bSCy Schubert\sphinxAtStartPar
5710*7f2fe78bSCy SchubertIn order to fully track account lockout state, the KDC must write to
5711*7f2fe78bSCy Schubertthe the database on each successful and failed authentication.
5712*7f2fe78bSCy SchubertWriting to the database is generally more expensive than reading from
5713*7f2fe78bSCy Schubertit, so these writes may have a significant impact on KDC performance.
5714*7f2fe78bSCy SchubertAs of release 1.9, it is possible to turn off account lockout state
5715*7f2fe78bSCy Schuberttracking in order to improve performance, by setting the
5716*7f2fe78bSCy Schubert\sphinxstylestrong{disable\_last\_success} and \sphinxstylestrong{disable\_lockout} variables in the
5717*7f2fe78bSCy Schubertdatabase module subsection of {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.  For example:
5718*7f2fe78bSCy Schubert
5719*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5720*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{dbmodules}\PYG{p}{]}
5721*7f2fe78bSCy Schubert    \PYG{n}{DB} \PYG{o}{=} \PYG{p}{\PYGZob{}}
5722*7f2fe78bSCy Schubert        \PYG{n}{disable\PYGZus{}last\PYGZus{}success} \PYG{o}{=} \PYG{n}{true}
5723*7f2fe78bSCy Schubert        \PYG{n}{disable\PYGZus{}lockout} \PYG{o}{=} \PYG{n}{true}
5724*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
5725*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5726*7f2fe78bSCy Schubert
5727*7f2fe78bSCy Schubert\sphinxAtStartPar
5728*7f2fe78bSCy SchubertOf the two variables, setting \sphinxstylestrong{disable\_last\_success} will usually
5729*7f2fe78bSCy Schuberthave the largest positive impact on performance, and will still allow
5730*7f2fe78bSCy Schubertaccount lockout policies to operate.  However, it will make it
5731*7f2fe78bSCy Schubertimpossible to observe the last successful authentication time with
5732*7f2fe78bSCy Schubertkadmin.
5733*7f2fe78bSCy Schubert
5734*7f2fe78bSCy Schubert
5735*7f2fe78bSCy Schubert\section{KDC setup and account lockout}
5736*7f2fe78bSCy Schubert\label{\detokenize{admin/lockout:kdc-setup-and-account-lockout}}
5737*7f2fe78bSCy Schubert\sphinxAtStartPar
5738*7f2fe78bSCy SchubertTo update the account lockout state on principals, the KDC must be
5739*7f2fe78bSCy Schubertable to write to the principal database.  For the DB2 module, no
5740*7f2fe78bSCy Schubertspecial setup is required.  For the LDAP module, the KDC DN must be
5741*7f2fe78bSCy Schubertgranted write access to the principal objects.  If the KDC DN has only
5742*7f2fe78bSCy Schubertread access, account lockout will not function.
5743*7f2fe78bSCy Schubert
5744*7f2fe78bSCy Schubert
5745*7f2fe78bSCy Schubert\chapter{Configuring Kerberos with OpenLDAP back\sphinxhyphen{}end}
5746*7f2fe78bSCy Schubert\label{\detokenize{admin/conf_ldap:configuring-kerberos-with-openldap-back-end}}\label{\detokenize{admin/conf_ldap:conf-ldap}}\label{\detokenize{admin/conf_ldap::doc}}\begin{enumerate}
5747*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
5748*7f2fe78bSCy Schubert\item {}
5749*7f2fe78bSCy Schubert\sphinxAtStartPar
5750*7f2fe78bSCy SchubertMake sure the LDAP server is using local authentication
5751*7f2fe78bSCy Schubert(\sphinxcode{\sphinxupquote{ldapi://}}) or TLS (\sphinxcode{\sphinxupquote{ldaps}}).  See
5752*7f2fe78bSCy Schubert\sphinxurl{https://www.openldap.org/doc/admin/tls.html} for instructions on
5753*7f2fe78bSCy Schubertconfiguring TLS support in OpenLDAP.
5754*7f2fe78bSCy Schubert
5755*7f2fe78bSCy Schubert\item {}
5756*7f2fe78bSCy Schubert\sphinxAtStartPar
5757*7f2fe78bSCy SchubertAdd the Kerberos schema file to the LDAP Server using the OpenLDAP
5758*7f2fe78bSCy SchubertLDIF file from the krb5 source directory
5759*7f2fe78bSCy Schubert(\sphinxcode{\sphinxupquote{src/plugins/kdb/ldap/libkdb\_ldap/kerberos.openldap.ldif}}).
5760*7f2fe78bSCy SchubertThe following example uses local authentication:
5761*7f2fe78bSCy Schubert
5762*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5763*7f2fe78bSCy Schubert\PYG{n}{ldapadd} \PYG{o}{\PYGZhy{}}\PYG{n}{Y} \PYG{n}{EXTERNAL} \PYG{o}{\PYGZhy{}}\PYG{n}{H} \PYG{n}{ldapi}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{o}{/} \PYG{o}{\PYGZhy{}}\PYG{n}{f} \PYG{o}{/}\PYG{n}{path}\PYG{o}{/}\PYG{n}{to}\PYG{o}{/}\PYG{n}{kerberos}\PYG{o}{.}\PYG{n}{openldap}\PYG{o}{.}\PYG{n}{ldif}
5764*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5765*7f2fe78bSCy Schubert
5766*7f2fe78bSCy Schubert\item {}
5767*7f2fe78bSCy Schubert\sphinxAtStartPar
5768*7f2fe78bSCy SchubertChoose DNs for the {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} and {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} servers
5769*7f2fe78bSCy Schubertto bind to the LDAP server, and create them if necessary.  Specify
5770*7f2fe78bSCy Schubertthese DNs with the \sphinxstylestrong{ldap\_kdc\_dn} and \sphinxstylestrong{ldap\_kadmind\_dn}
5771*7f2fe78bSCy Schubertdirectives in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.  The kadmind DN will also be
5772*7f2fe78bSCy Schubertused for administrative commands such as {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}.
5773*7f2fe78bSCy Schubert
5774*7f2fe78bSCy Schubert\sphinxAtStartPar
5775*7f2fe78bSCy SchubertAlternatively, you may configure krb5kdc and kadmind to use SASL
5776*7f2fe78bSCy Schubertauthentication to access the LDAP server; see the {\hyperref[\detokenize{admin/conf_files/kdc_conf:dbmodules}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbmodules{]}}}}}
5777*7f2fe78bSCy Schubertrelations \sphinxstylestrong{ldap\_kdc\_sasl\_mech} and similar.
5778*7f2fe78bSCy Schubert
5779*7f2fe78bSCy Schubert\item {}
5780*7f2fe78bSCy Schubert\sphinxAtStartPar
5781*7f2fe78bSCy SchubertSpecify a location for the LDAP service password file by setting
5782*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_service\_password\_file}.  Use \sphinxcode{\sphinxupquote{kdb5\_ldap\_util stashsrvpw}}
5783*7f2fe78bSCy Schubertto stash passwords for the KDC and kadmind DNs chosen above.  For
5784*7f2fe78bSCy Schubertexample:
5785*7f2fe78bSCy Schubert
5786*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5787*7f2fe78bSCy Schubert\PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{n}{stashsrvpw} \PYG{o}{\PYGZhy{}}\PYG{n}{f} \PYG{o}{/}\PYG{n}{path}\PYG{o}{/}\PYG{n}{to}\PYG{o}{/}\PYG{n}{service}\PYG{o}{.}\PYG{n}{keyfile} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{krbadmin}\PYG{p}{,}\PYG{n}{dc}\PYG{o}{=}\PYG{n}{example}\PYG{p}{,}\PYG{n}{dc}\PYG{o}{=}\PYG{n}{com}
5788*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5789*7f2fe78bSCy Schubert
5790*7f2fe78bSCy Schubert\sphinxAtStartPar
5791*7f2fe78bSCy SchubertSkip this step if you are using SASL authentication and the
5792*7f2fe78bSCy Schubertmechanism does not require a password.
5793*7f2fe78bSCy Schubert
5794*7f2fe78bSCy Schubert\item {}
5795*7f2fe78bSCy Schubert\sphinxAtStartPar
5796*7f2fe78bSCy SchubertChoose a DN for the global Kerberos container entry (but do not
5797*7f2fe78bSCy Schubertcreate the entry at this time).  Specify this DN with the
5798*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kerberos\_container\_dn} directive in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
5799*7f2fe78bSCy SchubertRealm container entries will be created underneath this DN.
5800*7f2fe78bSCy SchubertPrincipal entries may exist either underneath the realm container
5801*7f2fe78bSCy Schubert(the default) or in separate trees referenced from the realm
5802*7f2fe78bSCy Schubertcontainer.
5803*7f2fe78bSCy Schubert
5804*7f2fe78bSCy Schubert\item {}
5805*7f2fe78bSCy Schubert\sphinxAtStartPar
5806*7f2fe78bSCy SchubertConfigure the LDAP server ACLs to enable the KDC and kadmin server
5807*7f2fe78bSCy SchubertDNs to read and write the Kerberos data.  If
5808*7f2fe78bSCy Schubert\sphinxstylestrong{disable\_last\_success} and \sphinxstylestrong{disable\_lockout} are both set to
5809*7f2fe78bSCy Schuberttrue in the {\hyperref[\detokenize{admin/conf_files/kdc_conf:dbmodules}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbmodules{]}}}}} subsection for the realm, then the
5810*7f2fe78bSCy SchubertKDC DN only requires read access to the Kerberos data.
5811*7f2fe78bSCy Schubert
5812*7f2fe78bSCy Schubert\sphinxAtStartPar
5813*7f2fe78bSCy SchubertSample access control information:
5814*7f2fe78bSCy Schubert
5815*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5816*7f2fe78bSCy Schubert\PYG{n}{access} \PYG{n}{to} \PYG{n}{dn}\PYG{o}{.}\PYG{n}{base}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}
5817*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{o}{*} \PYG{n}{read}
5818*7f2fe78bSCy Schubert
5819*7f2fe78bSCy Schubert\PYG{n}{access} \PYG{n}{to} \PYG{n}{dn}\PYG{o}{.}\PYG{n}{base}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=Subschema}\PYG{l+s+s2}{\PYGZdq{}}
5820*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{o}{*} \PYG{n}{read}
5821*7f2fe78bSCy Schubert
5822*7f2fe78bSCy Schubert\PYG{c+c1}{\PYGZsh{} Provide access to the realm container.}
5823*7f2fe78bSCy Schubert\PYG{n}{access} \PYG{n}{to} \PYG{n}{dn}\PYG{o}{.}\PYG{n}{subtree}\PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=EXAMPLE.COM,cn=krbcontainer,dc=example,dc=com}\PYG{l+s+s2}{\PYGZdq{}}
5824*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{n}{dn}\PYG{o}{.}\PYG{n}{exact}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=kdc\PYGZhy{}service,dc=example,dc=com}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{write}
5825*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{n}{dn}\PYG{o}{.}\PYG{n}{exact}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=adm\PYGZhy{}service,dc=example,dc=com}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{write}
5826*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{o}{*} \PYG{n}{none}
5827*7f2fe78bSCy Schubert
5828*7f2fe78bSCy Schubert\PYG{c+c1}{\PYGZsh{} Provide access to principals, if not underneath the realm container.}
5829*7f2fe78bSCy Schubert\PYG{n}{access} \PYG{n}{to} \PYG{n}{dn}\PYG{o}{.}\PYG{n}{subtree}\PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{ou=users,dc=example,dc=com}\PYG{l+s+s2}{\PYGZdq{}}
5830*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{n}{dn}\PYG{o}{.}\PYG{n}{exact}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=kdc\PYGZhy{}service,dc=example,dc=com}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{write}
5831*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{n}{dn}\PYG{o}{.}\PYG{n}{exact}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=adm\PYGZhy{}service,dc=example,dc=com}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{write}
5832*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{o}{*} \PYG{n}{none}
5833*7f2fe78bSCy Schubert
5834*7f2fe78bSCy Schubert\PYG{n}{access} \PYG{n}{to} \PYG{o}{*}
5835*7f2fe78bSCy Schubert    \PYG{n}{by} \PYG{o}{*} \PYG{n}{read}
5836*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5837*7f2fe78bSCy Schubert
5838*7f2fe78bSCy Schubert\sphinxAtStartPar
5839*7f2fe78bSCy SchubertIf the locations of the container and principals or the DNs of the
5840*7f2fe78bSCy Schubertservice objects for a realm are changed then this information
5841*7f2fe78bSCy Schubertshould be updated.
5842*7f2fe78bSCy Schubert
5843*7f2fe78bSCy Schubert\item {}
5844*7f2fe78bSCy Schubert\sphinxAtStartPar
5845*7f2fe78bSCy SchubertIn {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}, make sure the following relations are set
5846*7f2fe78bSCy Schubertin the {\hyperref[\detokenize{admin/conf_files/kdc_conf:dbmodules}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbmodules{]}}}}} subsection for the realm:
5847*7f2fe78bSCy Schubert
5848*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5849*7f2fe78bSCy Schubertdb\PYGZus{}library (set to ``kldap``)
5850*7f2fe78bSCy Schubertldap\PYGZus{}kerberos\PYGZus{}container\PYGZus{}dn
5851*7f2fe78bSCy Schubertldap\PYGZus{}kdc\PYGZus{}dn
5852*7f2fe78bSCy Schubertldap\PYGZus{}kadmind\PYGZus{}dn
5853*7f2fe78bSCy Schubertldap\PYGZus{}service\PYGZus{}password\PYGZus{}file
5854*7f2fe78bSCy Schubertldap\PYGZus{}servers
5855*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5856*7f2fe78bSCy Schubert
5857*7f2fe78bSCy Schubert\item {}
5858*7f2fe78bSCy Schubert\sphinxAtStartPar
5859*7f2fe78bSCy SchubertCreate the realm using {\hyperref[\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_ldap\_util}}}}:
5860*7f2fe78bSCy Schubert\begin{quote}
5861*7f2fe78bSCy Schubert
5862*7f2fe78bSCy Schubert\sphinxAtStartPar
5863*7f2fe78bSCy Schubertkdb5\_ldap\_util create \sphinxhyphen{}subtrees ou=users,dc=example,dc=com \sphinxhyphen{}s
5864*7f2fe78bSCy Schubert\end{quote}
5865*7f2fe78bSCy Schubert
5866*7f2fe78bSCy Schubert\sphinxAtStartPar
5867*7f2fe78bSCy SchubertUse the \sphinxstylestrong{\sphinxhyphen{}subtrees} option if the principals are to exist in a
5868*7f2fe78bSCy Schubertseparate subtree from the realm container.  Before executing the
5869*7f2fe78bSCy Schubertcommand, make sure that the subtree mentioned above
5870*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{(ou=users,dc=example,dc=com)}} exists.  If the principals will
5871*7f2fe78bSCy Schubertexist underneath the realm container, omit the \sphinxstylestrong{\sphinxhyphen{}subtrees} option
5872*7f2fe78bSCy Schubertand do not worry about creating the principal subtree.
5873*7f2fe78bSCy Schubert
5874*7f2fe78bSCy Schubert\sphinxAtStartPar
5875*7f2fe78bSCy SchubertFor more information, refer to the section {\hyperref[\detokenize{admin/database:ops-on-ldap}]{\sphinxcrossref{\DUrole{std,std-ref}{Operations on the LDAP database}}}}.
5876*7f2fe78bSCy Schubert
5877*7f2fe78bSCy Schubert\sphinxAtStartPar
5878*7f2fe78bSCy SchubertThe realm object is created under the
5879*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kerberos\_container\_dn} specified in the configuration
5880*7f2fe78bSCy Schubertfile.  This operation will also create the Kerberos container, if
5881*7f2fe78bSCy Schubertnot present already.  This container can be used to store
5882*7f2fe78bSCy Schubertinformation related to multiple realms.
5883*7f2fe78bSCy Schubert
5884*7f2fe78bSCy Schubert\item {}
5885*7f2fe78bSCy Schubert\sphinxAtStartPar
5886*7f2fe78bSCy SchubertAdd an \sphinxcode{\sphinxupquote{eq}} index for \sphinxcode{\sphinxupquote{krbPrincipalName}} to speed up principal
5887*7f2fe78bSCy Schubertlookup operations.  See
5888*7f2fe78bSCy Schubert\sphinxurl{https://www.openldap.org/doc/admin/tuning.html\#Indexes} for
5889*7f2fe78bSCy Schubertdetails.
5890*7f2fe78bSCy Schubert
5891*7f2fe78bSCy Schubert\end{enumerate}
5892*7f2fe78bSCy Schubert
5893*7f2fe78bSCy Schubert\sphinxAtStartPar
5894*7f2fe78bSCy SchubertWith the LDAP back end it is possible to provide aliases for principal
5895*7f2fe78bSCy Schubertentries.  Currently we provide no administrative utilities for
5896*7f2fe78bSCy Schubertcreating aliases, so it must be done by direct manipulation of the
5897*7f2fe78bSCy SchubertLDAP entries.
5898*7f2fe78bSCy Schubert
5899*7f2fe78bSCy Schubert\sphinxAtStartPar
5900*7f2fe78bSCy SchubertAn entry with aliases contains multiple values of the
5901*7f2fe78bSCy Schubert\sphinxstyleemphasis{krbPrincipalName} attribute.  Since LDAP attribute values are not
5902*7f2fe78bSCy Schubertordered, it is necessary to specify which principal name is canonical,
5903*7f2fe78bSCy Schubertby using the \sphinxstyleemphasis{krbCanonicalName} attribute.  Therefore, to create
5904*7f2fe78bSCy Schubertaliases for an entry, first set the \sphinxstyleemphasis{krbCanonicalName} attribute of
5905*7f2fe78bSCy Schubertthe entry to the canonical principal name (which should be identical
5906*7f2fe78bSCy Schubertto the pre\sphinxhyphen{}existing \sphinxstyleemphasis{krbPrincipalName} value), and then add additional
5907*7f2fe78bSCy Schubert\sphinxstyleemphasis{krbPrincipalName} attributes for the aliases.
5908*7f2fe78bSCy Schubert
5909*7f2fe78bSCy Schubert\sphinxAtStartPar
5910*7f2fe78bSCy SchubertPrincipal aliases are only returned by the KDC when the client
5911*7f2fe78bSCy Schubertrequests canonicalization.  Canonicalization is normally requested for
5912*7f2fe78bSCy Schubertservice principals; for client principals, an explicit flag is often
5913*7f2fe78bSCy Schubertrequired (e.g., \sphinxcode{\sphinxupquote{kinit \sphinxhyphen{}C}}) and canonicalization is only performed
5914*7f2fe78bSCy Schubertfor initial ticket requests.
5915*7f2fe78bSCy Schubert
5916*7f2fe78bSCy Schubert
5917*7f2fe78bSCy Schubert\chapter{Application servers}
5918*7f2fe78bSCy Schubert\label{\detokenize{admin/appl_servers:application-servers}}\label{\detokenize{admin/appl_servers::doc}}
5919*7f2fe78bSCy Schubert\sphinxAtStartPar
5920*7f2fe78bSCy SchubertIf you need to install the Kerberos V5 programs on an application
5921*7f2fe78bSCy Schubertserver, please refer to the Kerberos V5 Installation Guide.  Once you
5922*7f2fe78bSCy Schuberthave installed the software, you need to add that host to the Kerberos
5923*7f2fe78bSCy Schubertdatabase (see {\hyperref[\detokenize{admin/database:principals}]{\sphinxcrossref{\DUrole{std,std-ref}{Principals}}}}), and generate a keytab for that host,
5924*7f2fe78bSCy Schubertthat contains the host’s key.  You also need to make sure the host’s
5925*7f2fe78bSCy Schubertclock is within your maximum clock skew of the KDCs.
5926*7f2fe78bSCy Schubert
5927*7f2fe78bSCy Schubert
5928*7f2fe78bSCy Schubert\section{Keytabs}
5929*7f2fe78bSCy Schubert\label{\detokenize{admin/appl_servers:keytabs}}
5930*7f2fe78bSCy Schubert\sphinxAtStartPar
5931*7f2fe78bSCy SchubertA keytab is a host’s copy of its own keylist, which is analogous to a
5932*7f2fe78bSCy Schubertuser’s password.  An application server that needs to authenticate
5933*7f2fe78bSCy Schubertitself to the KDC has to have a keytab that contains its own principal
5934*7f2fe78bSCy Schubertand key.  Just as it is important for users to protect their
5935*7f2fe78bSCy Schubertpasswords, it is equally important for hosts to protect their keytabs.
5936*7f2fe78bSCy SchubertYou should always store keytab files on local disk, and make them
5937*7f2fe78bSCy Schubertreadable only by root, and you should never send a keytab file over a
5938*7f2fe78bSCy Schubertnetwork in the clear.  Ideally, you should run the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}
5939*7f2fe78bSCy Schubertcommand to extract a keytab on the host on which the keytab is to
5940*7f2fe78bSCy Schubertreside.
5941*7f2fe78bSCy Schubert
5942*7f2fe78bSCy Schubert
5943*7f2fe78bSCy Schubert\subsection{Adding principals to keytabs}
5944*7f2fe78bSCy Schubert\label{\detokenize{admin/appl_servers:adding-principals-to-keytabs}}\label{\detokenize{admin/appl_servers:add-princ-kt}}
5945*7f2fe78bSCy Schubert\sphinxAtStartPar
5946*7f2fe78bSCy SchubertTo generate a keytab, or to add a principal to an existing keytab, use
5947*7f2fe78bSCy Schubertthe \sphinxstylestrong{ktadd} command from kadmin.  Here is a sample session, using
5948*7f2fe78bSCy Schubertconfiguration files that enable only AES encryption:
5949*7f2fe78bSCy Schubert
5950*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5951*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{ktadd} \PYG{n}{host}\PYG{o}{/}\PYG{n}{daffodil}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
5952*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{daffodil}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}
5953*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{daffodil}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}
5954*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5955*7f2fe78bSCy Schubert
5956*7f2fe78bSCy Schubert
5957*7f2fe78bSCy Schubert\subsection{Removing principals from keytabs}
5958*7f2fe78bSCy Schubert\label{\detokenize{admin/appl_servers:removing-principals-from-keytabs}}
5959*7f2fe78bSCy Schubert\sphinxAtStartPar
5960*7f2fe78bSCy SchubertTo remove a principal from an existing keytab, use the kadmin
5961*7f2fe78bSCy Schubert\sphinxstylestrong{ktremove} command:
5962*7f2fe78bSCy Schubert
5963*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
5964*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}  \PYG{n}{ktremove} \PYG{n}{host}\PYG{o}{/}\PYG{n}{daffodil}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
5965*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{daffodil}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2} \PYG{n}{removed} \PYG{k+kn}{from} \PYG{n+nn}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
5966*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{daffodil}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2} \PYG{n}{removed} \PYG{k+kn}{from} \PYG{n+nn}{keytab} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
5967*7f2fe78bSCy Schubert\end{sphinxVerbatim}
5968*7f2fe78bSCy Schubert
5969*7f2fe78bSCy Schubert
5970*7f2fe78bSCy Schubert\subsection{Using a keytab to acquire client credentials}
5971*7f2fe78bSCy Schubert\label{\detokenize{admin/appl_servers:using-a-keytab-to-acquire-client-credentials}}
5972*7f2fe78bSCy Schubert\sphinxAtStartPar
5973*7f2fe78bSCy SchubertWhile keytabs are ordinarily used to accept credentials from clients,
5974*7f2fe78bSCy Schubertthey can also be used to acquire initial credentials, allowing one
5975*7f2fe78bSCy Schubertservice to authenticate to another.
5976*7f2fe78bSCy Schubert
5977*7f2fe78bSCy Schubert\sphinxAtStartPar
5978*7f2fe78bSCy SchubertTo manually obtain credentials using a keytab, use the \DUrole{xref,std,std-ref}{kinit(1)}
5979*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}k} option, together with the \sphinxstylestrong{\sphinxhyphen{}t} option if the keytab is not in
5980*7f2fe78bSCy Schubertthe default location.
5981*7f2fe78bSCy Schubert
5982*7f2fe78bSCy Schubert\sphinxAtStartPar
5983*7f2fe78bSCy SchubertBeginning with release 1.11, GSSAPI applications can be configured to
5984*7f2fe78bSCy Schubertautomatically obtain initial credentials from a keytab as needed.  The
5985*7f2fe78bSCy Schubertrecommended configuration is as follows:
5986*7f2fe78bSCy Schubert\begin{enumerate}
5987*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
5988*7f2fe78bSCy Schubert\item {}
5989*7f2fe78bSCy Schubert\sphinxAtStartPar
5990*7f2fe78bSCy SchubertCreate a keytab containing a single entry for the desired client
5991*7f2fe78bSCy Schubertidentity.
5992*7f2fe78bSCy Schubert
5993*7f2fe78bSCy Schubert\item {}
5994*7f2fe78bSCy Schubert\sphinxAtStartPar
5995*7f2fe78bSCy SchubertPlace the keytab in a location readable by the service, and set the
5996*7f2fe78bSCy Schubert\sphinxstylestrong{KRB5\_CLIENT\_KTNAME} environment variable to its filename.
5997*7f2fe78bSCy SchubertAlternatively, use the \sphinxstylestrong{default\_client\_keytab\_name} profile
5998*7f2fe78bSCy Schubertvariable in {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}, or use the default location of
5999*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFCKTNAME}}}}.
6000*7f2fe78bSCy Schubert
6001*7f2fe78bSCy Schubert\item {}
6002*7f2fe78bSCy Schubert\sphinxAtStartPar
6003*7f2fe78bSCy SchubertSet \sphinxstylestrong{KRB5CCNAME} to a filename writable by the service, which
6004*7f2fe78bSCy Schubertwill not be used for any other purpose.  Do not manually obtain
6005*7f2fe78bSCy Schubertcredentials at this location.  (Another credential cache type
6006*7f2fe78bSCy Schubertbesides \sphinxstylestrong{FILE} can be used if desired, as long the cache will not
6007*7f2fe78bSCy Schubertconflict with another use.  A \sphinxstylestrong{MEMORY} cache can be used if the
6008*7f2fe78bSCy Schubertservice runs as a long\sphinxhyphen{}lived process.  See \DUrole{xref,std,std-ref}{ccache\_definition}
6009*7f2fe78bSCy Schubertfor details.)
6010*7f2fe78bSCy Schubert
6011*7f2fe78bSCy Schubert\item {}
6012*7f2fe78bSCy Schubert\sphinxAtStartPar
6013*7f2fe78bSCy SchubertStart the service.  When it authenticates using GSSAPI, it will
6014*7f2fe78bSCy Schubertautomatically obtain credentials from the client keytab into the
6015*7f2fe78bSCy Schubertspecified credential cache, and refresh them before they expire.
6016*7f2fe78bSCy Schubert
6017*7f2fe78bSCy Schubert\end{enumerate}
6018*7f2fe78bSCy Schubert
6019*7f2fe78bSCy Schubert
6020*7f2fe78bSCy Schubert\section{Clock Skew}
6021*7f2fe78bSCy Schubert\label{\detokenize{admin/appl_servers:clock-skew}}
6022*7f2fe78bSCy Schubert\sphinxAtStartPar
6023*7f2fe78bSCy SchubertA Kerberos application server host must keep its clock synchronized or
6024*7f2fe78bSCy Schubertit will reject authentication requests from clients.  Modern operating
6025*7f2fe78bSCy Schubertsystems typically provide a facility to maintain the correct time;
6026*7f2fe78bSCy Schubertmake sure it is enabled.  This is especially important on virtual
6027*7f2fe78bSCy Schubertmachines, where clocks tend to drift more rapidly than normal machine
6028*7f2fe78bSCy Schubertclocks.
6029*7f2fe78bSCy Schubert
6030*7f2fe78bSCy Schubert\sphinxAtStartPar
6031*7f2fe78bSCy SchubertThe default allowable clock skew is controlled by the \sphinxstylestrong{clockskew}
6032*7f2fe78bSCy Schubertvariable in {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}.
6033*7f2fe78bSCy Schubert
6034*7f2fe78bSCy Schubert
6035*7f2fe78bSCy Schubert\section{Getting DNS information correct}
6036*7f2fe78bSCy Schubert\label{\detokenize{admin/appl_servers:getting-dns-information-correct}}
6037*7f2fe78bSCy Schubert\sphinxAtStartPar
6038*7f2fe78bSCy SchubertSeveral aspects of Kerberos rely on name service.  When a hostname is
6039*7f2fe78bSCy Schubertused to name a service, clients may canonicalize the hostname using
6040*7f2fe78bSCy Schubertforward and possibly reverse name resolution.  The result of this
6041*7f2fe78bSCy Schubertcanonicalization must match the principal entry in the host’s keytab,
6042*7f2fe78bSCy Schubertor authentication will fail.  To work with all client canonicalization
6043*7f2fe78bSCy Schubertconfigurations, each host’s canonical name must be the fully\sphinxhyphen{}qualified
6044*7f2fe78bSCy Schuberthost name (including the domain), and each host’s IP address must
6045*7f2fe78bSCy Schubertreverse\sphinxhyphen{}resolve to the canonical name.
6046*7f2fe78bSCy Schubert
6047*7f2fe78bSCy Schubert\sphinxAtStartPar
6048*7f2fe78bSCy SchubertConfiguration of hostnames varies by operating system.  On the
6049*7f2fe78bSCy Schubertapplication server itself, canonicalization will typically use the
6050*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/etc/hosts}} file rather than the DNS.  Ensure that the line for the
6051*7f2fe78bSCy Schubertserver’s hostname is in the following form:
6052*7f2fe78bSCy Schubert
6053*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6054*7f2fe78bSCy Schubert\PYG{n}{IP} \PYG{n}{address}      \PYG{n}{fully}\PYG{o}{\PYGZhy{}}\PYG{n}{qualified} \PYG{n}{hostname}        \PYG{n}{aliases}
6055*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6056*7f2fe78bSCy Schubert
6057*7f2fe78bSCy Schubert\sphinxAtStartPar
6058*7f2fe78bSCy SchubertHere is a sample \sphinxcode{\sphinxupquote{/etc/hosts}} file:
6059*7f2fe78bSCy Schubert
6060*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6061*7f2fe78bSCy Schubert\PYG{c+c1}{\PYGZsh{} this is a comment}
6062*7f2fe78bSCy Schubert\PYG{l+m+mf}{127.0}\PYG{l+m+mf}{.0}\PYG{l+m+mf}{.1}      \PYG{n}{localhost} \PYG{n}{localhost}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
6063*7f2fe78bSCy Schubert\PYG{l+m+mf}{10.0}\PYG{l+m+mf}{.0}\PYG{l+m+mf}{.6}       \PYG{n}{daffodil}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{n}{daffodil} \PYG{n}{trillium} \PYG{n}{wake}\PYG{o}{\PYGZhy{}}\PYG{n}{robin}
6064*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6065*7f2fe78bSCy Schubert
6066*7f2fe78bSCy Schubert\sphinxAtStartPar
6067*7f2fe78bSCy SchubertThe output of \sphinxcode{\sphinxupquote{klist \sphinxhyphen{}k}} for this example host should look like:
6068*7f2fe78bSCy Schubert
6069*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6070*7f2fe78bSCy Schubert\PYG{n}{viola}\PYG{c+c1}{\PYGZsh{} klist \PYGZhy{}k}
6071*7f2fe78bSCy Schubert\PYG{n}{Keytab} \PYG{n}{name}\PYG{p}{:} \PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}
6072*7f2fe78bSCy Schubert\PYG{n}{KVNO} \PYG{n}{Principal}
6073*7f2fe78bSCy Schubert\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}} \PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}
6074*7f2fe78bSCy Schubert   \PYG{l+m+mi}{2} \PYG{n}{host}\PYG{o}{/}\PYG{n}{daffodil}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
6075*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6076*7f2fe78bSCy Schubert
6077*7f2fe78bSCy Schubert\sphinxAtStartPar
6078*7f2fe78bSCy SchubertIf you were to ssh to this host with a fresh credentials cache (ticket
6079*7f2fe78bSCy Schubertfile), and then \DUrole{xref,std,std-ref}{klist(1)}, the output should list a service
6080*7f2fe78bSCy Schubertprincipal of \sphinxcode{\sphinxupquote{host/daffodil.mit.edu@ATHENA.MIT.EDU}}.
6081*7f2fe78bSCy Schubert
6082*7f2fe78bSCy Schubert
6083*7f2fe78bSCy Schubert\section{Configuring your firewall to work with Kerberos V5}
6084*7f2fe78bSCy Schubert\label{\detokenize{admin/appl_servers:configuring-your-firewall-to-work-with-kerberos-v5}}\label{\detokenize{admin/appl_servers:conf-firewall}}
6085*7f2fe78bSCy Schubert\sphinxAtStartPar
6086*7f2fe78bSCy SchubertIf you need off\sphinxhyphen{}site users to be able to get Kerberos tickets in your
6087*7f2fe78bSCy Schubertrealm, they must be able to get to your KDC.  This requires either
6088*7f2fe78bSCy Schubertthat you have a replica KDC outside your firewall, or that you
6089*7f2fe78bSCy Schubertconfigure your firewall to allow UDP requests into at least one of
6090*7f2fe78bSCy Schubertyour KDCs, on whichever port the KDC is running.  (The default is port
6091*7f2fe78bSCy Schubert88; other ports may be specified in the KDC’s {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}
6092*7f2fe78bSCy Schubertfile.)  Similarly, if you need off\sphinxhyphen{}site users to be able to change
6093*7f2fe78bSCy Schuberttheir passwords in your realm, they must be able to get to your
6094*7f2fe78bSCy SchubertKerberos admin server on the kpasswd port (which defaults to 464).  If
6095*7f2fe78bSCy Schubertyou need off\sphinxhyphen{}site users to be able to administer your Kerberos realm,
6096*7f2fe78bSCy Schubertthey must be able to get to your Kerberos admin server on the
6097*7f2fe78bSCy Schubertadministrative port (which defaults to 749).
6098*7f2fe78bSCy Schubert
6099*7f2fe78bSCy Schubert\sphinxAtStartPar
6100*7f2fe78bSCy SchubertIf your on\sphinxhyphen{}site users inside your firewall will need to get to KDCs in
6101*7f2fe78bSCy Schubertother realms, you will also need to configure your firewall to allow
6102*7f2fe78bSCy Schubertoutgoing TCP and UDP requests to port 88, and to port 464 to allow
6103*7f2fe78bSCy Schubertpassword changes.  If your on\sphinxhyphen{}site users inside your firewall will
6104*7f2fe78bSCy Schubertneed to get to Kerberos admin servers in other realms, you will also
6105*7f2fe78bSCy Schubertneed to allow outgoing TCP and UDP requests to port 749.
6106*7f2fe78bSCy Schubert
6107*7f2fe78bSCy Schubert\sphinxAtStartPar
6108*7f2fe78bSCy SchubertIf any of your KDCs are outside your firewall, you will need to allow
6109*7f2fe78bSCy Schubertkprop requests to get through to the remote KDC.  {\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}} uses
6110*7f2fe78bSCy Schubertthe \sphinxcode{\sphinxupquote{krb5\_prop}} service on port 754 (tcp).
6111*7f2fe78bSCy Schubert
6112*7f2fe78bSCy Schubert\sphinxAtStartPar
6113*7f2fe78bSCy SchubertThe book \sphinxstyleemphasis{UNIX System Security}, by David Curry, is a good starting
6114*7f2fe78bSCy Schubertpoint for learning to configure firewalls.
6115*7f2fe78bSCy Schubert
6116*7f2fe78bSCy Schubert
6117*7f2fe78bSCy Schubert\chapter{Host configuration}
6118*7f2fe78bSCy Schubert\label{\detokenize{admin/host_config:host-configuration}}\label{\detokenize{admin/host_config::doc}}
6119*7f2fe78bSCy Schubert\sphinxAtStartPar
6120*7f2fe78bSCy SchubertAll hosts running Kerberos software, whether they are clients,
6121*7f2fe78bSCy Schubertapplication servers, or KDCs, can be configured using
6122*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.  Here we describe some of the behavior changes
6123*7f2fe78bSCy Schubertyou might want to make.
6124*7f2fe78bSCy Schubert
6125*7f2fe78bSCy Schubert
6126*7f2fe78bSCy Schubert\section{Default realm}
6127*7f2fe78bSCy Schubert\label{\detokenize{admin/host_config:default-realm}}
6128*7f2fe78bSCy Schubert\sphinxAtStartPar
6129*7f2fe78bSCy SchubertIn the {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}} section, the \sphinxstylestrong{default\_realm} realm
6130*7f2fe78bSCy Schubertrelation sets the default Kerberos realm.  For example:
6131*7f2fe78bSCy Schubert
6132*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6133*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{libdefaults}\PYG{p}{]}
6134*7f2fe78bSCy Schubert    \PYG{n}{default\PYGZus{}realm} \PYG{o}{=} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
6135*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6136*7f2fe78bSCy Schubert
6137*7f2fe78bSCy Schubert\sphinxAtStartPar
6138*7f2fe78bSCy SchubertThe default realm affects Kerberos behavior in the following ways:
6139*7f2fe78bSCy Schubert\begin{itemize}
6140*7f2fe78bSCy Schubert\item {}
6141*7f2fe78bSCy Schubert\sphinxAtStartPar
6142*7f2fe78bSCy SchubertWhen a principal name is parsed from text, the default realm is used
6143*7f2fe78bSCy Schubertif no \sphinxcode{\sphinxupquote{@REALM}} component is specified.
6144*7f2fe78bSCy Schubert
6145*7f2fe78bSCy Schubert\item {}
6146*7f2fe78bSCy Schubert\sphinxAtStartPar
6147*7f2fe78bSCy SchubertThe default realm affects login authorization as described below.
6148*7f2fe78bSCy Schubert
6149*7f2fe78bSCy Schubert\item {}
6150*7f2fe78bSCy Schubert\sphinxAtStartPar
6151*7f2fe78bSCy SchubertFor programs which operate on a Kerberos database, the default realm
6152*7f2fe78bSCy Schubertis used to determine which database to operate on, unless the \sphinxstylestrong{\sphinxhyphen{}r}
6153*7f2fe78bSCy Schubertparameter is given to specify a realm.
6154*7f2fe78bSCy Schubert
6155*7f2fe78bSCy Schubert\item {}
6156*7f2fe78bSCy Schubert\sphinxAtStartPar
6157*7f2fe78bSCy SchubertA server program may use the default realm when looking up its key
6158*7f2fe78bSCy Schubertin a {\hyperref[\detokenize{admin/install_appl_srv:keytab-file}]{\sphinxcrossref{\DUrole{std,std-ref}{keytab file}}}}, if its realm is not
6159*7f2fe78bSCy Schubertdetermined by {\hyperref[\detokenize{admin/conf_files/krb5_conf:domain-realm}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}domain\_realm{]}}}}} configuration or by the server
6160*7f2fe78bSCy Schubertprogram itself.
6161*7f2fe78bSCy Schubert
6162*7f2fe78bSCy Schubert\item {}
6163*7f2fe78bSCy Schubert\sphinxAtStartPar
6164*7f2fe78bSCy SchubertIf \DUrole{xref,std,std-ref}{kinit(1)} is passed the \sphinxstylestrong{\sphinxhyphen{}n} flag, it requests anonymous
6165*7f2fe78bSCy Schuberttickets from the default realm.
6166*7f2fe78bSCy Schubert
6167*7f2fe78bSCy Schubert\end{itemize}
6168*7f2fe78bSCy Schubert
6169*7f2fe78bSCy Schubert\sphinxAtStartPar
6170*7f2fe78bSCy SchubertIn some situations, these uses of the default realm might conflict.
6171*7f2fe78bSCy SchubertFor example, it might be desirable for principal name parsing to use
6172*7f2fe78bSCy Schubertone realm by default, but for login authorization to use a second
6173*7f2fe78bSCy Schubertrealm.  In this situation, the first realm can be configured as the
6174*7f2fe78bSCy Schubertdefault realm, and \sphinxstylestrong{auth\_to\_local} relations can be used as
6175*7f2fe78bSCy Schubertdescribed below to use the second realm for login authorization.
6176*7f2fe78bSCy Schubert
6177*7f2fe78bSCy Schubert
6178*7f2fe78bSCy Schubert\section{Login authorization}
6179*7f2fe78bSCy Schubert\label{\detokenize{admin/host_config:login-authorization}}\label{\detokenize{admin/host_config:id1}}
6180*7f2fe78bSCy Schubert\sphinxAtStartPar
6181*7f2fe78bSCy SchubertIf a host runs a Kerberos\sphinxhyphen{}enabled login service such as OpenSSH with
6182*7f2fe78bSCy SchubertGSSAPIAuthentication enabled, login authorization rules determine
6183*7f2fe78bSCy Schubertwhether a Kerberos principal is allowed to access a local account.
6184*7f2fe78bSCy Schubert
6185*7f2fe78bSCy Schubert\sphinxAtStartPar
6186*7f2fe78bSCy SchubertBy default, a Kerberos principal is allowed access to an account if
6187*7f2fe78bSCy Schubertits realm matches the default realm and its name matches the account
6188*7f2fe78bSCy Schubertname.  (For historical reasons, access is also granted by default if
6189*7f2fe78bSCy Schubertthe name has two components and the second component matches the
6190*7f2fe78bSCy Schubertdefault realm; for instance, \sphinxcode{\sphinxupquote{alice/ATHENA.MIT.EDU@ATHENA.MIT.EDU}}
6191*7f2fe78bSCy Schubertis granted access to the \sphinxcode{\sphinxupquote{alice}} account if \sphinxcode{\sphinxupquote{ATHENA.MIT.EDU}} is
6192*7f2fe78bSCy Schubertthe default realm.)
6193*7f2fe78bSCy Schubert
6194*7f2fe78bSCy Schubert\sphinxAtStartPar
6195*7f2fe78bSCy SchubertThe simplest way to control local access is using \DUrole{xref,std,std-ref}{.k5login(5)}
6196*7f2fe78bSCy Schubertfiles.  To use these, place a \sphinxcode{\sphinxupquote{.k5login}} file in the home directory
6197*7f2fe78bSCy Schubertof each account listing the principal names which should have login
6198*7f2fe78bSCy Schubertaccess to that account.  If it is not desirable to use \sphinxcode{\sphinxupquote{.k5login}}
6199*7f2fe78bSCy Schubertfiles located in account home directories, the \sphinxstylestrong{k5login\_directory}
6200*7f2fe78bSCy Schubertrelation in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}} section can specify a directory
6201*7f2fe78bSCy Schubertcontaining one file per account uname.
6202*7f2fe78bSCy Schubert
6203*7f2fe78bSCy Schubert\sphinxAtStartPar
6204*7f2fe78bSCy SchubertBy default, if a \sphinxcode{\sphinxupquote{.k5login}} file is present, it controls
6205*7f2fe78bSCy Schubertauthorization both positively and negatively\textendash{}any principal name
6206*7f2fe78bSCy Schubertcontained in the file is granted access and any other principal name
6207*7f2fe78bSCy Schubertis denied access, even if it would have had access if the \sphinxcode{\sphinxupquote{.k5login}}
6208*7f2fe78bSCy Schubertfile didn’t exist.  The \sphinxstylestrong{k5login\_authoritative} relation in the
6209*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}} section can be set to false to make \sphinxcode{\sphinxupquote{.k5login}}
6210*7f2fe78bSCy Schubertfiles provide positive authorization only.
6211*7f2fe78bSCy Schubert
6212*7f2fe78bSCy Schubert\sphinxAtStartPar
6213*7f2fe78bSCy SchubertThe \sphinxstylestrong{auth\_to\_local} relation in the {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} section for the
6214*7f2fe78bSCy Schubertdefault realm can specify pattern\sphinxhyphen{}matching rules to control login
6215*7f2fe78bSCy Schubertauthorization.  For example, the following configuration allows access
6216*7f2fe78bSCy Schubertto principals from a different realm than the default realm:
6217*7f2fe78bSCy Schubert
6218*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6219*7f2fe78bSCy Schubert[realms]
6220*7f2fe78bSCy Schubert    DEFAULT.REALM = \PYGZob{}
6221*7f2fe78bSCy Schubert        \PYGZsh{} Allow access to principals from OTHER.REALM.
6222*7f2fe78bSCy Schubert        \PYGZsh{}
6223*7f2fe78bSCy Schubert        \PYGZsh{} [1:\PYGZdl{}1@\PYGZdl{}0] matches single\PYGZhy{}component principal names and creates
6224*7f2fe78bSCy Schubert        \PYGZsh{} a selection string containing the principal name and realm.
6225*7f2fe78bSCy Schubert        \PYGZsh{}
6226*7f2fe78bSCy Schubert        \PYGZsh{} (.*@OTHER\PYGZbs{}.REALM) matches against the selection string, so that
6227*7f2fe78bSCy Schubert        \PYGZsh{} only principals in OTHER.REALM are matched.
6228*7f2fe78bSCy Schubert        \PYGZsh{}
6229*7f2fe78bSCy Schubert        \PYGZsh{} s/@OTHER\PYGZbs{}.REALM\PYGZdl{}// removes the realm name, leaving behind the
6230*7f2fe78bSCy Schubert        \PYGZsh{} principal name as the account name.
6231*7f2fe78bSCy Schubert        auth\PYGZus{}to\PYGZus{}local = RULE:[1:\PYGZdl{}1@\PYGZdl{}0](.*@OTHER\PYGZbs{}.REALM)s/@OTHER\PYGZbs{}.REALM\PYGZdl{}//
6232*7f2fe78bSCy Schubert
6233*7f2fe78bSCy Schubert        \PYGZsh{} Also allow principals from the default realm.  Omit this line
6234*7f2fe78bSCy Schubert        \PYGZsh{} to only allow access to principals in OTHER.REALM.
6235*7f2fe78bSCy Schubert        auth\PYGZus{}to\PYGZus{}local = DEFAULT
6236*7f2fe78bSCy Schubert    \PYGZcb{}
6237*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6238*7f2fe78bSCy Schubert
6239*7f2fe78bSCy Schubert\sphinxAtStartPar
6240*7f2fe78bSCy SchubertThe \sphinxstylestrong{auth\_to\_local\_names} subsection of the {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} section
6241*7f2fe78bSCy Schubertfor the default realm can specify explicit mappings from principal
6242*7f2fe78bSCy Schubertnames to local accounts.  The key used in this subsection is the
6243*7f2fe78bSCy Schubertprincipal name without realm, so it is only safe to use in a Kerberos
6244*7f2fe78bSCy Schubertenvironment with a single realm or a tightly controlled set of realms.
6245*7f2fe78bSCy SchubertAn example use of \sphinxstylestrong{auth\_to\_local\_names} might be:
6246*7f2fe78bSCy Schubert
6247*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6248*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
6249*7f2fe78bSCy Schubert    \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
6250*7f2fe78bSCy Schubert        \PYG{n}{auth\PYGZus{}to\PYGZus{}local\PYGZus{}names} \PYG{o}{=} \PYG{p}{\PYGZob{}}
6251*7f2fe78bSCy Schubert            \PYG{c+c1}{\PYGZsh{} Careful, these match principals in any realm!}
6252*7f2fe78bSCy Schubert            \PYG{n}{host}\PYG{o}{/}\PYG{n}{example}\PYG{o}{.}\PYG{n}{com} \PYG{o}{=} \PYG{n}{hostaccount}
6253*7f2fe78bSCy Schubert            \PYG{n}{fred} \PYG{o}{=} \PYG{n}{localfred}
6254*7f2fe78bSCy Schubert        \PYG{p}{\PYGZcb{}}
6255*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
6256*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6257*7f2fe78bSCy Schubert
6258*7f2fe78bSCy Schubert\sphinxAtStartPar
6259*7f2fe78bSCy SchubertLocal authorization behavior can also be modified using plugin
6260*7f2fe78bSCy Schubertmodules; see \DUrole{xref,std,std-ref}{hostrealm\_plugin} for details.
6261*7f2fe78bSCy Schubert
6262*7f2fe78bSCy Schubert
6263*7f2fe78bSCy Schubert\section{Plugin module configuration}
6264*7f2fe78bSCy Schubert\label{\detokenize{admin/host_config:plugin-module-configuration}}\label{\detokenize{admin/host_config:plugin-config}}
6265*7f2fe78bSCy Schubert\sphinxAtStartPar
6266*7f2fe78bSCy SchubertMany aspects of Kerberos behavior, such as client preauthentication
6267*7f2fe78bSCy Schubertand KDC service location, can be modified through the use of plugin
6268*7f2fe78bSCy Schubertmodules.  For most of these behaviors, you can use the {\hyperref[\detokenize{admin/conf_files/krb5_conf:plugins}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}plugins{]}}}}}
6269*7f2fe78bSCy Schubertsection of krb5.conf to register third\sphinxhyphen{}party modules, and to switch
6270*7f2fe78bSCy Schubertoff registered or built\sphinxhyphen{}in modules.
6271*7f2fe78bSCy Schubert
6272*7f2fe78bSCy Schubert\sphinxAtStartPar
6273*7f2fe78bSCy SchubertA plugin module takes the form of a Unix shared object
6274*7f2fe78bSCy Schubert(\sphinxcode{\sphinxupquote{modname.so}}) or Windows DLL (\sphinxcode{\sphinxupquote{modname.dll}}).  If you have
6275*7f2fe78bSCy Schubertinstalled a third\sphinxhyphen{}party plugin module and want to register it, you do
6276*7f2fe78bSCy Schubertso using the \sphinxstylestrong{module} relation in the appropriate subsection of the
6277*7f2fe78bSCy Schubert{[}plugins{]} section.  The value for \sphinxstylestrong{module} must give the module name
6278*7f2fe78bSCy Schubertand the path to the module, separated by a colon.  The module name
6279*7f2fe78bSCy Schubertwill often be the same as the shared object’s name, but in unusual
6280*7f2fe78bSCy Schubertcases (such as a shared object which implements multiple modules for
6281*7f2fe78bSCy Schubertthe same interface) it might not be.  For example, to register a
6282*7f2fe78bSCy Schubertclient preauthentication module named \sphinxcode{\sphinxupquote{mypreauth}} installed at
6283*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/path/to/mypreauth.so}}, you could write:
6284*7f2fe78bSCy Schubert
6285*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6286*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{plugins}\PYG{p}{]}
6287*7f2fe78bSCy Schubert    \PYG{n}{clpreauth} \PYG{o}{=} \PYG{p}{\PYGZob{}}
6288*7f2fe78bSCy Schubert        \PYG{n}{module} \PYG{o}{=} \PYG{n}{mypreauth}\PYG{p}{:}\PYG{o}{/}\PYG{n}{path}\PYG{o}{/}\PYG{n}{to}\PYG{o}{/}\PYG{n}{mypreauth}\PYG{o}{.}\PYG{n}{so}
6289*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
6290*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6291*7f2fe78bSCy Schubert
6292*7f2fe78bSCy Schubert\sphinxAtStartPar
6293*7f2fe78bSCy SchubertMany of the pluggable behaviors in MIT krb5 contain built\sphinxhyphen{}in modules
6294*7f2fe78bSCy Schubertwhich can be switched off.  You can disable a built\sphinxhyphen{}in module (or one
6295*7f2fe78bSCy Schubertyou have registered) using the \sphinxstylestrong{disable} directive in the
6296*7f2fe78bSCy Schubertappropriate subsection of the {[}plugins{]} section.  For example, to
6297*7f2fe78bSCy Schubertdisable the use of .k5identity files to select credential caches, you
6298*7f2fe78bSCy Schubertcould write:
6299*7f2fe78bSCy Schubert
6300*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6301*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{plugins}\PYG{p}{]}
6302*7f2fe78bSCy Schubert    \PYG{n}{ccselect} \PYG{o}{=} \PYG{p}{\PYGZob{}}
6303*7f2fe78bSCy Schubert        \PYG{n}{disable} \PYG{o}{=} \PYG{n}{k5identity}
6304*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
6305*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6306*7f2fe78bSCy Schubert
6307*7f2fe78bSCy Schubert\sphinxAtStartPar
6308*7f2fe78bSCy SchubertIf you want to disable multiple modules, specify the \sphinxstylestrong{disable}
6309*7f2fe78bSCy Schubertdirective multiple times, giving one module to disable each time.
6310*7f2fe78bSCy Schubert
6311*7f2fe78bSCy Schubert\sphinxAtStartPar
6312*7f2fe78bSCy SchubertAlternatively, you can explicitly specify which modules you want to be
6313*7f2fe78bSCy Schubertenabled for that behavior using the \sphinxstylestrong{enable\_only} directive.  For
6314*7f2fe78bSCy Schubertexample, to make {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} check password quality using only a
6315*7f2fe78bSCy Schubertmodule you have registered, and no other mechanism, you could write:
6316*7f2fe78bSCy Schubert
6317*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6318*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{plugins}\PYG{p}{]}
6319*7f2fe78bSCy Schubert    \PYG{n}{pwqual} \PYG{o}{=} \PYG{p}{\PYGZob{}}
6320*7f2fe78bSCy Schubert        \PYG{n}{module} \PYG{o}{=} \PYG{n}{mymodule}\PYG{p}{:}\PYG{o}{/}\PYG{n}{path}\PYG{o}{/}\PYG{n}{to}\PYG{o}{/}\PYG{n}{mymodule}\PYG{o}{.}\PYG{n}{so}
6321*7f2fe78bSCy Schubert        \PYG{n}{enable\PYGZus{}only} \PYG{o}{=} \PYG{n}{mymodule}
6322*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
6323*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6324*7f2fe78bSCy Schubert
6325*7f2fe78bSCy Schubert\sphinxAtStartPar
6326*7f2fe78bSCy SchubertAgain, if you want to specify multiple modules, specify the
6327*7f2fe78bSCy Schubert\sphinxstylestrong{enable\_only} directive multiple times, giving one module to enable
6328*7f2fe78bSCy Schuberteach time.
6329*7f2fe78bSCy Schubert
6330*7f2fe78bSCy Schubert\sphinxAtStartPar
6331*7f2fe78bSCy SchubertSome Kerberos interfaces use different mechanisms to register plugin
6332*7f2fe78bSCy Schubertmodules.
6333*7f2fe78bSCy Schubert
6334*7f2fe78bSCy Schubert
6335*7f2fe78bSCy Schubert\subsection{KDC location modules}
6336*7f2fe78bSCy Schubert\label{\detokenize{admin/host_config:kdc-location-modules}}
6337*7f2fe78bSCy Schubert\sphinxAtStartPar
6338*7f2fe78bSCy SchubertFor historical reasons, modules to control how KDC servers are located
6339*7f2fe78bSCy Schubertare registered simply by placing the shared object or DLL into the
6340*7f2fe78bSCy Schubert“libkrb5” subdirectory of the krb5 plugin directory, which defaults to
6341*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LIBDIR}}}}\sphinxcode{\sphinxupquote{/krb5/plugins}}.  For example, Samba’s winbind krb5
6342*7f2fe78bSCy Schubertlocator plugin would be registered by placing its shared object in
6343*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LIBDIR}}}}\sphinxcode{\sphinxupquote{/krb5/plugins/libkrb5/winbind\_krb5\_locator.so}}.
6344*7f2fe78bSCy Schubert
6345*7f2fe78bSCy Schubert
6346*7f2fe78bSCy Schubert\subsection{GSSAPI mechanism modules}
6347*7f2fe78bSCy Schubert\label{\detokenize{admin/host_config:gssapi-mechanism-modules}}\label{\detokenize{admin/host_config:gssapi-plugin-config}}
6348*7f2fe78bSCy Schubert\sphinxAtStartPar
6349*7f2fe78bSCy SchubertGSSAPI mechanism modules are registered using the file
6350*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{SYSCONFDIR}}}}\sphinxcode{\sphinxupquote{/gss/mech}} or configuration files in the
6351*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{SYSCONFDIR}}}}\sphinxcode{\sphinxupquote{/gss/mech.d}} directory with a \sphinxcode{\sphinxupquote{.conf}}
6352*7f2fe78bSCy Schubertsuffix.  Each line in these files has the form:
6353*7f2fe78bSCy Schubert
6354*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6355*7f2fe78bSCy Schubert\PYG{n}{name}  \PYG{n}{oid}  \PYG{n}{pathname}  \PYG{p}{[}\PYG{n}{options}\PYG{p}{]}  \PYG{o}{\PYGZlt{}}\PYG{n+nb}{type}\PYG{o}{\PYGZgt{}}
6356*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6357*7f2fe78bSCy Schubert
6358*7f2fe78bSCy Schubert\sphinxAtStartPar
6359*7f2fe78bSCy SchubertOnly the name, oid, and pathname are required.  \sphinxstyleemphasis{name} is the
6360*7f2fe78bSCy Schubertmechanism name, which may be used for debugging or logging purposes.
6361*7f2fe78bSCy Schubert\sphinxstyleemphasis{oid} is the object identifier of the GSSAPI mechanism to be
6362*7f2fe78bSCy Schubertregistered.  \sphinxstyleemphasis{pathname} is a path to the module shared object or DLL.
6363*7f2fe78bSCy Schubert\sphinxstyleemphasis{options} (if present) are options provided to the plugin module,
6364*7f2fe78bSCy Schubertsurrounded in square brackets.  \sphinxstyleemphasis{type} (if present) can be used to
6365*7f2fe78bSCy Schubertindicate a special type of module.  Currently the only special module
6366*7f2fe78bSCy Schuberttype is “interposer”, for a module designed to intercept calls to
6367*7f2fe78bSCy Schubertother mechanisms.
6368*7f2fe78bSCy Schubert
6369*7f2fe78bSCy Schubert\sphinxAtStartPar
6370*7f2fe78bSCy SchubertIf the environment variable \sphinxstylestrong{GSS\_MECH\_CONFIG} is set, its value is
6371*7f2fe78bSCy Schubertused as the sole mechanism configuration filename.
6372*7f2fe78bSCy Schubert
6373*7f2fe78bSCy Schubert
6374*7f2fe78bSCy Schubert\subsection{Configuration profile modules}
6375*7f2fe78bSCy Schubert\label{\detokenize{admin/host_config:configuration-profile-modules}}\label{\detokenize{admin/host_config:profile-plugin-config}}
6376*7f2fe78bSCy Schubert\sphinxAtStartPar
6377*7f2fe78bSCy SchubertA configuration profile module replaces the information source for
6378*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} itself.  To use a profile module, begin krb5.conf
6379*7f2fe78bSCy Schubertwith the line:
6380*7f2fe78bSCy Schubert
6381*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6382*7f2fe78bSCy Schubert\PYG{n}{module} \PYG{n}{PATHNAME}\PYG{p}{:}\PYG{n}{STRING}
6383*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6384*7f2fe78bSCy Schubert
6385*7f2fe78bSCy Schubert\sphinxAtStartPar
6386*7f2fe78bSCy Schubertwhere \sphinxstyleemphasis{PATHNAME} is a path to the module shared object or DLL, and
6387*7f2fe78bSCy Schubert\sphinxstyleemphasis{STRING} is a string to provide to the module.  The module will then
6388*7f2fe78bSCy Schuberttake over, and the rest of krb5.conf will be ignored.
6389*7f2fe78bSCy Schubert
6390*7f2fe78bSCy Schubert
6391*7f2fe78bSCy Schubert\chapter{Backups of secure hosts}
6392*7f2fe78bSCy Schubert\label{\detokenize{admin/backup_host:backups-of-secure-hosts}}\label{\detokenize{admin/backup_host::doc}}
6393*7f2fe78bSCy Schubert\sphinxAtStartPar
6394*7f2fe78bSCy SchubertWhen you back up a secure host, you should exclude the host’s keytab
6395*7f2fe78bSCy Schubertfile from the backup.  If someone obtained a copy of the keytab from a
6396*7f2fe78bSCy Schubertbackup, that person could make any host masquerade as the host whose
6397*7f2fe78bSCy Schubertkeytab was compromised.  In many configurations, knowledge of the
6398*7f2fe78bSCy Schuberthost’s keytab also allows root access to the host.  This could be
6399*7f2fe78bSCy Schubertparticularly dangerous if the compromised keytab was from one of your
6400*7f2fe78bSCy SchubertKDCs.  If the machine has a disk crash and the keytab file is lost, it
6401*7f2fe78bSCy Schubertis easy to generate another keytab file.  (See {\hyperref[\detokenize{admin/appl_servers:add-princ-kt}]{\sphinxcrossref{\DUrole{std,std-ref}{Adding principals to keytabs}}}}.)
6402*7f2fe78bSCy SchubertIf you are unable to exclude particular files from backups, you should
6403*7f2fe78bSCy Schubertensure that the backups are kept as secure as the host’s root
6404*7f2fe78bSCy Schubertpassword.
6405*7f2fe78bSCy Schubert
6406*7f2fe78bSCy Schubert
6407*7f2fe78bSCy Schubert\section{Backing up the Kerberos database}
6408*7f2fe78bSCy Schubert\label{\detokenize{admin/backup_host:backing-up-the-kerberos-database}}
6409*7f2fe78bSCy Schubert\sphinxAtStartPar
6410*7f2fe78bSCy SchubertAs with any file, it is possible that your Kerberos database could
6411*7f2fe78bSCy Schubertbecome corrupted.  If this happens on one of the replica KDCs, you
6412*7f2fe78bSCy Schubertmight never notice, since the next automatic propagation of the
6413*7f2fe78bSCy Schubertdatabase would install a fresh copy.  However, if it happens to the
6414*7f2fe78bSCy Schubertprimary KDC, the corrupted database would be propagated to all of the
6415*7f2fe78bSCy Schubertreplicas during the next propagation.  For this reason, MIT recommends
6416*7f2fe78bSCy Schubertthat you back up your Kerberos database regularly.  Because the primary
6417*7f2fe78bSCy SchubertKDC is continuously dumping the database to a file in order to
6418*7f2fe78bSCy Schubertpropagate it to the replica KDCs, it is a simple matter to have a cron
6419*7f2fe78bSCy Schubertjob periodically copy the dump file to a secure machine elsewhere on
6420*7f2fe78bSCy Schubertyour network.  (Of course, it is important to make the host where
6421*7f2fe78bSCy Schubertthese backups are stored as secure as your KDCs, and to encrypt its
6422*7f2fe78bSCy Schuberttransmission across your network.)  Then if your database becomes
6423*7f2fe78bSCy Schubertcorrupted, you can load the most recent dump onto the primary KDC.
6424*7f2fe78bSCy Schubert(See {\hyperref[\detokenize{admin/database:restore-from-dump}]{\sphinxcrossref{\DUrole{std,std-ref}{Dumping and loading a Kerberos database}}}}.)
6425*7f2fe78bSCy Schubert
6426*7f2fe78bSCy Schubert
6427*7f2fe78bSCy Schubert\chapter{PKINIT configuration}
6428*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:pkinit-configuration}}\label{\detokenize{admin/pkinit:pkinit}}\label{\detokenize{admin/pkinit::doc}}
6429*7f2fe78bSCy Schubert\sphinxAtStartPar
6430*7f2fe78bSCy SchubertPKINIT is a preauthentication mechanism for Kerberos 5 which uses
6431*7f2fe78bSCy SchubertX.509 certificates to authenticate the KDC to clients and vice versa.
6432*7f2fe78bSCy SchubertPKINIT can also be used to enable anonymity support, allowing clients
6433*7f2fe78bSCy Schubertto communicate securely with the KDC or with application servers
6434*7f2fe78bSCy Schubertwithout authenticating as a particular client principal.
6435*7f2fe78bSCy Schubert
6436*7f2fe78bSCy Schubert
6437*7f2fe78bSCy Schubert\section{Creating certificates}
6438*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:creating-certificates}}
6439*7f2fe78bSCy Schubert\sphinxAtStartPar
6440*7f2fe78bSCy SchubertPKINIT requires an X.509 certificate for the KDC and one for each
6441*7f2fe78bSCy Schubertclient principal which will authenticate using PKINIT.  For anonymous
6442*7f2fe78bSCy SchubertPKINIT, a KDC certificate is required, but client certificates are
6443*7f2fe78bSCy Schubertnot.  A commercially issued server certificate can be used for the KDC
6444*7f2fe78bSCy Schubertcertificate, but generally cannot be used for client certificates.
6445*7f2fe78bSCy Schubert
6446*7f2fe78bSCy Schubert\sphinxAtStartPar
6447*7f2fe78bSCy SchubertThe instruction in this section describe how to establish a
6448*7f2fe78bSCy Schubertcertificate authority and create standard PKINIT certificates.  Skip
6449*7f2fe78bSCy Schubertthis section if you are using a commercially issued server certificate
6450*7f2fe78bSCy Schubertas the KDC certificate for anonymous PKINIT, or if you are configuring
6451*7f2fe78bSCy Schuberta client to use an Active Directory KDC.
6452*7f2fe78bSCy Schubert
6453*7f2fe78bSCy Schubert
6454*7f2fe78bSCy Schubert\subsection{Generating a certificate authority certificate}
6455*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:generating-a-certificate-authority-certificate}}
6456*7f2fe78bSCy Schubert\sphinxAtStartPar
6457*7f2fe78bSCy SchubertYou can establish a new certificate authority (CA) for use with a
6458*7f2fe78bSCy SchubertPKINIT deployment with the commands:
6459*7f2fe78bSCy Schubert
6460*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6461*7f2fe78bSCy Schubert\PYG{n}{openssl} \PYG{n}{genrsa} \PYG{o}{\PYGZhy{}}\PYG{n}{out} \PYG{n}{cakey}\PYG{o}{.}\PYG{n}{pem} \PYG{l+m+mi}{2048}
6462*7f2fe78bSCy Schubert\PYG{n}{openssl} \PYG{n}{req} \PYG{o}{\PYGZhy{}}\PYG{n}{key} \PYG{n}{cakey}\PYG{o}{.}\PYG{n}{pem} \PYG{o}{\PYGZhy{}}\PYG{n}{new} \PYG{o}{\PYGZhy{}}\PYG{n}{x509} \PYG{o}{\PYGZhy{}}\PYG{n}{out} \PYG{n}{cacert}\PYG{o}{.}\PYG{n}{pem} \PYG{o}{\PYGZhy{}}\PYG{n}{days} \PYG{l+m+mi}{3650}
6463*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6464*7f2fe78bSCy Schubert
6465*7f2fe78bSCy Schubert\sphinxAtStartPar
6466*7f2fe78bSCy SchubertThe second command will ask for the values of several certificate
6467*7f2fe78bSCy Schubertfields.  These fields can be set to any values.  You can adjust the
6468*7f2fe78bSCy Schubertexpiration time of the CA certificate by changing the number after
6469*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{\sphinxhyphen{}days}}.  Since the CA certificate must be deployed to client
6470*7f2fe78bSCy Schubertmachines each time it changes, it should normally have an expiration
6471*7f2fe78bSCy Schuberttime far in the future; however, expiration times after 2037 may cause
6472*7f2fe78bSCy Schubertinteroperability issues in rare circumstances.
6473*7f2fe78bSCy Schubert
6474*7f2fe78bSCy Schubert\sphinxAtStartPar
6475*7f2fe78bSCy SchubertThe result of these commands will be two files, cakey.pem and
6476*7f2fe78bSCy Schubertcacert.pem.  cakey.pem will contain a 2048\sphinxhyphen{}bit RSA private key, which
6477*7f2fe78bSCy Schubertmust be carefully protected.  cacert.pem will contain the CA
6478*7f2fe78bSCy Schubertcertificate, which must be placed in the filesystems of the KDC and
6479*7f2fe78bSCy Schuberteach client host.  cakey.pem will be required to create KDC and client
6480*7f2fe78bSCy Schubertcertificates.
6481*7f2fe78bSCy Schubert
6482*7f2fe78bSCy Schubert
6483*7f2fe78bSCy Schubert\subsection{Generating a KDC certificate}
6484*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:generating-a-kdc-certificate}}
6485*7f2fe78bSCy Schubert\sphinxAtStartPar
6486*7f2fe78bSCy SchubertA KDC certificate for use with PKINIT is required to have some unusual
6487*7f2fe78bSCy Schubertfields, which makes generating them with OpenSSL somewhat complicated.
6488*7f2fe78bSCy SchubertFirst, you will need a file containing the following:
6489*7f2fe78bSCy Schubert
6490*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6491*7f2fe78bSCy Schubert[kdc\PYGZus{}cert]
6492*7f2fe78bSCy SchubertbasicConstraints=CA:FALSE
6493*7f2fe78bSCy SchubertkeyUsage=nonRepudiation,digitalSignature,keyEncipherment,keyAgreement
6494*7f2fe78bSCy SchubertextendedKeyUsage=1.3.6.1.5.2.3.5
6495*7f2fe78bSCy SchubertsubjectKeyIdentifier=hash
6496*7f2fe78bSCy SchubertauthorityKeyIdentifier=keyid,issuer
6497*7f2fe78bSCy SchubertissuerAltName=issuer:copy
6498*7f2fe78bSCy SchubertsubjectAltName=otherName:1.3.6.1.5.2.2;SEQUENCE:kdc\PYGZus{}princ\PYGZus{}name
6499*7f2fe78bSCy Schubert
6500*7f2fe78bSCy Schubert[kdc\PYGZus{}princ\PYGZus{}name]
6501*7f2fe78bSCy Schubertrealm=EXP:0,GeneralString:\PYGZdl{}\PYGZob{}ENV::REALM\PYGZcb{}
6502*7f2fe78bSCy Schubertprincipal\PYGZus{}name=EXP:1,SEQUENCE:kdc\PYGZus{}principal\PYGZus{}seq
6503*7f2fe78bSCy Schubert
6504*7f2fe78bSCy Schubert[kdc\PYGZus{}principal\PYGZus{}seq]
6505*7f2fe78bSCy Schubertname\PYGZus{}type=EXP:0,INTEGER:2
6506*7f2fe78bSCy Schubertname\PYGZus{}string=EXP:1,SEQUENCE:kdc\PYGZus{}principals
6507*7f2fe78bSCy Schubert
6508*7f2fe78bSCy Schubert[kdc\PYGZus{}principals]
6509*7f2fe78bSCy Schubertprinc1=GeneralString:krbtgt
6510*7f2fe78bSCy Schubertprinc2=GeneralString:\PYGZdl{}\PYGZob{}ENV::REALM\PYGZcb{}
6511*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6512*7f2fe78bSCy Schubert
6513*7f2fe78bSCy Schubert\sphinxAtStartPar
6514*7f2fe78bSCy SchubertIf the above contents are placed in extensions.kdc, you can generate
6515*7f2fe78bSCy Schubertand sign a KDC certificate with the following commands:
6516*7f2fe78bSCy Schubert
6517*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6518*7f2fe78bSCy Schubert\PYG{n}{openssl} \PYG{n}{genrsa} \PYG{o}{\PYGZhy{}}\PYG{n}{out} \PYG{n}{kdckey}\PYG{o}{.}\PYG{n}{pem} \PYG{l+m+mi}{2048}
6519*7f2fe78bSCy Schubert\PYG{n}{openssl} \PYG{n}{req} \PYG{o}{\PYGZhy{}}\PYG{n}{new} \PYG{o}{\PYGZhy{}}\PYG{n}{out} \PYG{n}{kdc}\PYG{o}{.}\PYG{n}{req} \PYG{o}{\PYGZhy{}}\PYG{n}{key} \PYG{n}{kdckey}\PYG{o}{.}\PYG{n}{pem}
6520*7f2fe78bSCy Schubert\PYG{n}{env} \PYG{n}{REALM}\PYG{o}{=}\PYG{n}{YOUR\PYGZus{}REALMNAME} \PYG{n}{openssl} \PYG{n}{x509} \PYG{o}{\PYGZhy{}}\PYG{n}{req} \PYG{o}{\PYGZhy{}}\PYG{o+ow}{in} \PYG{n}{kdc}\PYG{o}{.}\PYG{n}{req} \PYGZbs{}
6521*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{CAkey} \PYG{n}{cakey}\PYG{o}{.}\PYG{n}{pem} \PYG{o}{\PYGZhy{}}\PYG{n}{CA} \PYG{n}{cacert}\PYG{o}{.}\PYG{n}{pem} \PYG{o}{\PYGZhy{}}\PYG{n}{out} \PYG{n}{kdc}\PYG{o}{.}\PYG{n}{pem} \PYG{o}{\PYGZhy{}}\PYG{n}{days} \PYG{l+m+mi}{365} \PYGZbs{}
6522*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{extfile} \PYG{n}{extensions}\PYG{o}{.}\PYG{n}{kdc} \PYG{o}{\PYGZhy{}}\PYG{n}{extensions} \PYG{n}{kdc\PYGZus{}cert} \PYG{o}{\PYGZhy{}}\PYG{n}{CAcreateserial}
6523*7f2fe78bSCy Schubert\PYG{n}{rm} \PYG{n}{kdc}\PYG{o}{.}\PYG{n}{req}
6524*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6525*7f2fe78bSCy Schubert
6526*7f2fe78bSCy Schubert\sphinxAtStartPar
6527*7f2fe78bSCy SchubertThe second command will ask for the values of certificate fields,
6528*7f2fe78bSCy Schubertwhich can be set to any values.  In the third command, substitute your
6529*7f2fe78bSCy SchubertKDC’s realm name for YOUR\_REALMNAME.  You can adjust the certificate’s
6530*7f2fe78bSCy Schubertexpiration date by changing the number after \sphinxcode{\sphinxupquote{\sphinxhyphen{}days}}.  Remember to
6531*7f2fe78bSCy Schubertcreate a new KDC certificate before the old one expires.
6532*7f2fe78bSCy Schubert
6533*7f2fe78bSCy Schubert\sphinxAtStartPar
6534*7f2fe78bSCy SchubertThe result of this operation will be in two files, kdckey.pem and
6535*7f2fe78bSCy Schubertkdc.pem.  Both files must be placed in the KDC’s filesystem.
6536*7f2fe78bSCy Schubertkdckey.pem, which contains the KDC’s private key, must be carefully
6537*7f2fe78bSCy Schubertprotected.
6538*7f2fe78bSCy Schubert
6539*7f2fe78bSCy Schubert\sphinxAtStartPar
6540*7f2fe78bSCy SchubertIf you examine the KDC certificate with \sphinxcode{\sphinxupquote{openssl x509 \sphinxhyphen{}in kdc.pem
6541*7f2fe78bSCy Schubert\sphinxhyphen{}text \sphinxhyphen{}noout}}, OpenSSL will not know how to display the KDC principal
6542*7f2fe78bSCy Schubertname in the Subject Alternative Name extension, so it will appear as
6543*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{othername:\textless{}unsupported\textgreater{}}}.  This is normal and does not mean
6544*7f2fe78bSCy Schubertanything is wrong with the KDC certificate.
6545*7f2fe78bSCy Schubert
6546*7f2fe78bSCy Schubert
6547*7f2fe78bSCy Schubert\subsection{Generating client certificates}
6548*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:generating-client-certificates}}
6549*7f2fe78bSCy Schubert\sphinxAtStartPar
6550*7f2fe78bSCy SchubertPKINIT client certificates also must have some unusual certificate
6551*7f2fe78bSCy Schubertfields.  To generate a client certificate with OpenSSL for a
6552*7f2fe78bSCy Schubertsingle\sphinxhyphen{}component principal name, you will need an extensions file
6553*7f2fe78bSCy Schubert(different from the KDC extensions file above) containing:
6554*7f2fe78bSCy Schubert
6555*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6556*7f2fe78bSCy Schubert[client\PYGZus{}cert]
6557*7f2fe78bSCy SchubertbasicConstraints=CA:FALSE
6558*7f2fe78bSCy SchubertkeyUsage=digitalSignature,keyEncipherment,keyAgreement
6559*7f2fe78bSCy SchubertextendedKeyUsage=1.3.6.1.5.2.3.4
6560*7f2fe78bSCy SchubertsubjectKeyIdentifier=hash
6561*7f2fe78bSCy SchubertauthorityKeyIdentifier=keyid,issuer
6562*7f2fe78bSCy SchubertissuerAltName=issuer:copy
6563*7f2fe78bSCy SchubertsubjectAltName=otherName:1.3.6.1.5.2.2;SEQUENCE:princ\PYGZus{}name
6564*7f2fe78bSCy Schubert
6565*7f2fe78bSCy Schubert[princ\PYGZus{}name]
6566*7f2fe78bSCy Schubertrealm=EXP:0,GeneralString:\PYGZdl{}\PYGZob{}ENV::REALM\PYGZcb{}
6567*7f2fe78bSCy Schubertprincipal\PYGZus{}name=EXP:1,SEQUENCE:principal\PYGZus{}seq
6568*7f2fe78bSCy Schubert
6569*7f2fe78bSCy Schubert[principal\PYGZus{}seq]
6570*7f2fe78bSCy Schubertname\PYGZus{}type=EXP:0,INTEGER:1
6571*7f2fe78bSCy Schubertname\PYGZus{}string=EXP:1,SEQUENCE:principals
6572*7f2fe78bSCy Schubert
6573*7f2fe78bSCy Schubert[principals]
6574*7f2fe78bSCy Schubertprinc1=GeneralString:\PYGZdl{}\PYGZob{}ENV::CLIENT\PYGZcb{}
6575*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6576*7f2fe78bSCy Schubert
6577*7f2fe78bSCy Schubert\sphinxAtStartPar
6578*7f2fe78bSCy SchubertIf the above contents are placed in extensions.client, you can
6579*7f2fe78bSCy Schubertgenerate and sign a client certificate with the following commands:
6580*7f2fe78bSCy Schubert
6581*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6582*7f2fe78bSCy Schubert\PYG{n}{openssl} \PYG{n}{genrsa} \PYG{o}{\PYGZhy{}}\PYG{n}{out} \PYG{n}{clientkey}\PYG{o}{.}\PYG{n}{pem} \PYG{l+m+mi}{2048}
6583*7f2fe78bSCy Schubert\PYG{n}{openssl} \PYG{n}{req} \PYG{o}{\PYGZhy{}}\PYG{n}{new} \PYG{o}{\PYGZhy{}}\PYG{n}{key} \PYG{n}{clientkey}\PYG{o}{.}\PYG{n}{pem} \PYG{o}{\PYGZhy{}}\PYG{n}{out} \PYG{n}{client}\PYG{o}{.}\PYG{n}{req}
6584*7f2fe78bSCy Schubert\PYG{n}{env} \PYG{n}{REALM}\PYG{o}{=}\PYG{n}{YOUR\PYGZus{}REALMNAME} \PYG{n}{CLIENT}\PYG{o}{=}\PYG{n}{YOUR\PYGZus{}PRINCNAME} \PYG{n}{openssl} \PYG{n}{x509} \PYGZbs{}
6585*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{CAkey} \PYG{n}{cakey}\PYG{o}{.}\PYG{n}{pem} \PYG{o}{\PYGZhy{}}\PYG{n}{CA} \PYG{n}{cacert}\PYG{o}{.}\PYG{n}{pem} \PYG{o}{\PYGZhy{}}\PYG{n}{req} \PYG{o}{\PYGZhy{}}\PYG{o+ow}{in} \PYG{n}{client}\PYG{o}{.}\PYG{n}{req} \PYGZbs{}
6586*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{extensions} \PYG{n}{client\PYGZus{}cert} \PYG{o}{\PYGZhy{}}\PYG{n}{extfile} \PYG{n}{extensions}\PYG{o}{.}\PYG{n}{client} \PYGZbs{}
6587*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{days} \PYG{l+m+mi}{365} \PYG{o}{\PYGZhy{}}\PYG{n}{out} \PYG{n}{client}\PYG{o}{.}\PYG{n}{pem}
6588*7f2fe78bSCy Schubert\PYG{n}{rm} \PYG{n}{client}\PYG{o}{.}\PYG{n}{req}
6589*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6590*7f2fe78bSCy Schubert
6591*7f2fe78bSCy Schubert\sphinxAtStartPar
6592*7f2fe78bSCy SchubertNormally, the first two commands should be run on the client host, and
6593*7f2fe78bSCy Schubertthe resulting client.req file transferred to the certificate authority
6594*7f2fe78bSCy Schuberthost for the third command.  As in the previous steps, the second
6595*7f2fe78bSCy Schubertcommand will ask for the values of certificate fields, which can be
6596*7f2fe78bSCy Schubertset to any values.  In the third command, substitute your realm’s name
6597*7f2fe78bSCy Schubertfor YOUR\_REALMNAME and the client’s principal name (without realm) for
6598*7f2fe78bSCy SchubertYOUR\_PRINCNAME.  You can adjust the certificate’s expiration date by
6599*7f2fe78bSCy Schubertchanging the number after \sphinxcode{\sphinxupquote{\sphinxhyphen{}days}}.
6600*7f2fe78bSCy Schubert
6601*7f2fe78bSCy Schubert\sphinxAtStartPar
6602*7f2fe78bSCy SchubertThe result of this operation will be two files, clientkey.pem and
6603*7f2fe78bSCy Schubertclient.pem.  Both files must be present on the client’s host;
6604*7f2fe78bSCy Schubertclientkey.pem, which contains the client’s private key, must be
6605*7f2fe78bSCy Schubertprotected from access by others.
6606*7f2fe78bSCy Schubert
6607*7f2fe78bSCy Schubert\sphinxAtStartPar
6608*7f2fe78bSCy SchubertAs in the KDC certificate, OpenSSL will display the client principal
6609*7f2fe78bSCy Schubertname as \sphinxcode{\sphinxupquote{othername:\textless{}unsupported\textgreater{}}} in the Subject Alternative Name
6610*7f2fe78bSCy Schubertextension of a PKINIT client certificate.
6611*7f2fe78bSCy Schubert
6612*7f2fe78bSCy Schubert\sphinxAtStartPar
6613*7f2fe78bSCy SchubertIf the client principal name contains more than one component
6614*7f2fe78bSCy Schubert(e.g. \sphinxcode{\sphinxupquote{host/example.com@REALM}}), the \sphinxcode{\sphinxupquote{{[}principals{]}}} section of
6615*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{extensions.client}} must be altered to contain multiple entries.
6616*7f2fe78bSCy Schubert(Simply setting \sphinxcode{\sphinxupquote{CLIENT}} to \sphinxcode{\sphinxupquote{host/example.com}} would generate a
6617*7f2fe78bSCy Schubertcertificate for \sphinxcode{\sphinxupquote{host\textbackslash{}/example.com@REALM}} which would not match the
6618*7f2fe78bSCy Schubertmulti\sphinxhyphen{}component principal name.)  For a two\sphinxhyphen{}component principal, the
6619*7f2fe78bSCy Schubertsection should read:
6620*7f2fe78bSCy Schubert
6621*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6622*7f2fe78bSCy Schubert[principals]
6623*7f2fe78bSCy Schubertprinc1=GeneralString:\PYGZdl{}\PYGZob{}ENV::CLIENT1\PYGZcb{}
6624*7f2fe78bSCy Schubertprinc2=GeneralString:\PYGZdl{}\PYGZob{}ENV::CLIENT2\PYGZcb{}
6625*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6626*7f2fe78bSCy Schubert
6627*7f2fe78bSCy Schubert\sphinxAtStartPar
6628*7f2fe78bSCy SchubertThe environment variables \sphinxcode{\sphinxupquote{CLIENT1}} and \sphinxcode{\sphinxupquote{CLIENT2}} must then be set
6629*7f2fe78bSCy Schubertto the first and second components when running \sphinxcode{\sphinxupquote{openssl x509}}.
6630*7f2fe78bSCy Schubert
6631*7f2fe78bSCy Schubert
6632*7f2fe78bSCy Schubert\section{Configuring the KDC}
6633*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:configuring-the-kdc}}
6634*7f2fe78bSCy Schubert\sphinxAtStartPar
6635*7f2fe78bSCy SchubertThe KDC must have filesystem access to the KDC certificate (kdc.pem)
6636*7f2fe78bSCy Schubertand the KDC private key (kdckey.pem).  Configure the following
6637*7f2fe78bSCy Schubertrelation in the KDC’s {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} file, either in the
6638*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdcdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}kdcdefaults{]}}}}} section or in a {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection (with
6639*7f2fe78bSCy Schubertappropriate pathnames):
6640*7f2fe78bSCy Schubert
6641*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6642*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}identity} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{lib}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{/}\PYG{n}{kdc}\PYG{o}{.}\PYG{n}{pem}\PYG{p}{,}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{lib}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{/}\PYG{n}{kdckey}\PYG{o}{.}\PYG{n}{pem}
6643*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6644*7f2fe78bSCy Schubert
6645*7f2fe78bSCy Schubert\sphinxAtStartPar
6646*7f2fe78bSCy SchubertIf any clients will authenticate using regular (as opposed to
6647*7f2fe78bSCy Schubertanonymous) PKINIT, the KDC must also have filesystem access to the CA
6648*7f2fe78bSCy Schubertcertificate (cacert.pem), and the following configuration (with the
6649*7f2fe78bSCy Schubertappropriate pathname):
6650*7f2fe78bSCy Schubert
6651*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6652*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n}{lib}\PYG{o}{/}\PYG{n}{krb5kdc}\PYG{o}{/}\PYG{n}{cacert}\PYG{o}{.}\PYG{n}{pem}
6653*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6654*7f2fe78bSCy Schubert
6655*7f2fe78bSCy Schubert\sphinxAtStartPar
6656*7f2fe78bSCy SchubertBecause of the larger size of requests and responses using PKINIT, you
6657*7f2fe78bSCy Schubertmay also need to allow TCP access to the KDC:
6658*7f2fe78bSCy Schubert
6659*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6660*7f2fe78bSCy Schubert\PYG{n}{kdc\PYGZus{}tcp\PYGZus{}listen} \PYG{o}{=} \PYG{l+m+mi}{88}
6661*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6662*7f2fe78bSCy Schubert
6663*7f2fe78bSCy Schubert\sphinxAtStartPar
6664*7f2fe78bSCy SchubertRestart the {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} daemon to pick up the configuration
6665*7f2fe78bSCy Schubertchanges.
6666*7f2fe78bSCy Schubert
6667*7f2fe78bSCy Schubert\sphinxAtStartPar
6668*7f2fe78bSCy SchubertThe principal entry for each PKINIT\sphinxhyphen{}using client must be configured to
6669*7f2fe78bSCy Schubertrequire preauthentication.  Ensure this with the command:
6670*7f2fe78bSCy Schubert
6671*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6672*7f2fe78bSCy Schubert\PYG{n}{kadmin} \PYG{o}{\PYGZhy{}}\PYG{n}{q} \PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{modprinc +requires\PYGZus{}preauth YOUR\PYGZus{}PRINCNAME}\PYG{l+s+s1}{\PYGZsq{}}
6673*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6674*7f2fe78bSCy Schubert
6675*7f2fe78bSCy Schubert\sphinxAtStartPar
6676*7f2fe78bSCy SchubertStarting with release 1.12, it is possible to remove the long\sphinxhyphen{}term
6677*7f2fe78bSCy Schubertkeys of a principal entry, which can save some space in the database
6678*7f2fe78bSCy Schubertand help to clarify some PKINIT\sphinxhyphen{}related error conditions by not asking
6679*7f2fe78bSCy Schubertfor a password:
6680*7f2fe78bSCy Schubert
6681*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6682*7f2fe78bSCy Schubert\PYG{n}{kadmin} \PYG{o}{\PYGZhy{}}\PYG{n}{q} \PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{purgekeys \PYGZhy{}all YOUR\PYGZus{}PRINCNAME}\PYG{l+s+s1}{\PYGZsq{}}
6683*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6684*7f2fe78bSCy Schubert
6685*7f2fe78bSCy Schubert\sphinxAtStartPar
6686*7f2fe78bSCy SchubertThese principal options can also be specified at principal creation
6687*7f2fe78bSCy Schuberttime as follows:
6688*7f2fe78bSCy Schubert
6689*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6690*7f2fe78bSCy Schubert\PYG{n}{kadmin} \PYG{o}{\PYGZhy{}}\PYG{n}{q} \PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{add\PYGZus{}principal +requires\PYGZus{}preauth \PYGZhy{}nokey YOUR\PYGZus{}PRINCNAME}\PYG{l+s+s1}{\PYGZsq{}}
6691*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6692*7f2fe78bSCy Schubert
6693*7f2fe78bSCy Schubert\sphinxAtStartPar
6694*7f2fe78bSCy SchubertBy default, the KDC requires PKINIT client certificates to have the
6695*7f2fe78bSCy Schubertstandard Extended Key Usage and Subject Alternative Name attributes
6696*7f2fe78bSCy Schubertfor PKINIT.  Starting in release 1.16, it is possible to authorize
6697*7f2fe78bSCy Schubertclient certificates based on the subject or other criteria instead of
6698*7f2fe78bSCy Schubertthe standard PKINIT Subject Alternative Name, by setting the
6699*7f2fe78bSCy Schubert\sphinxstylestrong{pkinit\_cert\_match} string attribute on each client principal entry.
6700*7f2fe78bSCy SchubertFor example:
6701*7f2fe78bSCy Schubert
6702*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6703*7f2fe78bSCy Schubert\PYG{n}{kadmin} \PYG{n}{set\PYGZus{}string} \PYG{n}{user}\PYG{n+nd}{@REALM} \PYG{n}{pkinit\PYGZus{}cert\PYGZus{}match} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZlt{}SUBJECT\PYGZgt{}CN=user@REALM\PYGZdl{}}\PYG{l+s+s2}{\PYGZdq{}}
6704*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6705*7f2fe78bSCy Schubert
6706*7f2fe78bSCy Schubert\sphinxAtStartPar
6707*7f2fe78bSCy SchubertThe \sphinxstylestrong{pkinit\_cert\_match} string attribute follows the syntax used by
6708*7f2fe78bSCy Schubertthe {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} \sphinxstylestrong{pkinit\_cert\_match} relation.  To allow the
6709*7f2fe78bSCy Schubertuse of non\sphinxhyphen{}PKINIT client certificates, it will also be necessary to
6710*7f2fe78bSCy Schubertdisable key usage checking using the \sphinxstylestrong{pkinit\_eku\_checking} relation;
6711*7f2fe78bSCy Schubertfor example:
6712*7f2fe78bSCy Schubert
6713*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6714*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{kdcdefaults}\PYG{p}{]}
6715*7f2fe78bSCy Schubert    \PYG{n}{pkinit\PYGZus{}eku\PYGZus{}checking} \PYG{o}{=} \PYG{n}{none}
6716*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6717*7f2fe78bSCy Schubert
6718*7f2fe78bSCy Schubert
6719*7f2fe78bSCy Schubert\section{Configuring the clients}
6720*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:configuring-the-clients}}
6721*7f2fe78bSCy Schubert\sphinxAtStartPar
6722*7f2fe78bSCy SchubertClient hosts must be configured to trust the issuing authority for the
6723*7f2fe78bSCy SchubertKDC certificate.  For a newly established certificate authority, the
6724*7f2fe78bSCy Schubertclient host must have filesystem access to the CA certificate
6725*7f2fe78bSCy Schubert(cacert.pem) and the following relation in {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} in the
6726*7f2fe78bSCy Schubertappropriate {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection (with appropriate pathnames):
6727*7f2fe78bSCy Schubert
6728*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6729*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{/}\PYG{n}{cacert}\PYG{o}{.}\PYG{n}{pem}
6730*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6731*7f2fe78bSCy Schubert
6732*7f2fe78bSCy Schubert\sphinxAtStartPar
6733*7f2fe78bSCy SchubertIf the KDC certificate is a commercially issued server certificate,
6734*7f2fe78bSCy Schubertthe issuing certificate is most likely included in a system directory.
6735*7f2fe78bSCy SchubertYou can specify it by filename as above, or specify the whole
6736*7f2fe78bSCy Schubertdirectory like so:
6737*7f2fe78bSCy Schubert
6738*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6739*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{DIR}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{ssl}\PYG{o}{/}\PYG{n}{certs}
6740*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6741*7f2fe78bSCy Schubert
6742*7f2fe78bSCy Schubert\sphinxAtStartPar
6743*7f2fe78bSCy SchubertA commercially issued server certificate will usually not have the
6744*7f2fe78bSCy Schubertstandard PKINIT principal name or Extended Key Usage extensions, so
6745*7f2fe78bSCy Schubertthe following additional configuration is required:
6746*7f2fe78bSCy Schubert
6747*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6748*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}eku\PYGZus{}checking} \PYG{o}{=} \PYG{n}{kpServerAuth}
6749*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}kdc\PYGZus{}hostname} \PYG{o}{=} \PYG{n}{hostname}\PYG{o}{.}\PYG{n}{of}\PYG{o}{.}\PYG{n}{kdc}\PYG{o}{.}\PYG{n}{certificate}
6750*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6751*7f2fe78bSCy Schubert
6752*7f2fe78bSCy Schubert\sphinxAtStartPar
6753*7f2fe78bSCy SchubertMultiple \sphinxstylestrong{pkinit\_kdc\_hostname} relations can be configured to
6754*7f2fe78bSCy Schubertrecognize multiple KDC certificates.  If the KDC is an Active
6755*7f2fe78bSCy SchubertDirectory domain controller, setting \sphinxstylestrong{pkinit\_kdc\_hostname} is
6756*7f2fe78bSCy Schubertnecessary, but it should not be necessary to set
6757*7f2fe78bSCy Schubert\sphinxstylestrong{pkinit\_eku\_checking}.
6758*7f2fe78bSCy Schubert
6759*7f2fe78bSCy Schubert\sphinxAtStartPar
6760*7f2fe78bSCy SchubertTo perform regular (as opposed to anonymous) PKINIT authentication, a
6761*7f2fe78bSCy Schubertclient host must have filesystem access to a client certificate
6762*7f2fe78bSCy Schubert(client.pem), and the corresponding private key (clientkey.pem).
6763*7f2fe78bSCy SchubertConfigure the following relations in the client host’s
6764*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} file in the appropriate {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection
6765*7f2fe78bSCy Schubert(with appropriate pathnames):
6766*7f2fe78bSCy Schubert
6767*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6768*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}identities} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{/}\PYG{n}{client}\PYG{o}{.}\PYG{n}{pem}\PYG{p}{,}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{/}\PYG{n}{clientkey}\PYG{o}{.}\PYG{n}{pem}
6769*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6770*7f2fe78bSCy Schubert
6771*7f2fe78bSCy Schubert\sphinxAtStartPar
6772*7f2fe78bSCy SchubertIf the KDC and client are properly configured, it should now be
6773*7f2fe78bSCy Schubertpossible to run \sphinxcode{\sphinxupquote{kinit username}} without entering a password.
6774*7f2fe78bSCy Schubert
6775*7f2fe78bSCy Schubert
6776*7f2fe78bSCy Schubert\section{Anonymous PKINIT}
6777*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:anonymous-pkinit}}\label{\detokenize{admin/pkinit:id1}}
6778*7f2fe78bSCy Schubert\sphinxAtStartPar
6779*7f2fe78bSCy SchubertAnonymity support in Kerberos allows a client to obtain a ticket
6780*7f2fe78bSCy Schubertwithout authenticating as any particular principal.  Such a ticket can
6781*7f2fe78bSCy Schubertbe used as a FAST armor ticket, or to securely communicate with an
6782*7f2fe78bSCy Schubertapplication server anonymously.
6783*7f2fe78bSCy Schubert
6784*7f2fe78bSCy Schubert\sphinxAtStartPar
6785*7f2fe78bSCy SchubertTo configure anonymity support, you must generate or otherwise procure
6786*7f2fe78bSCy Schuberta KDC certificate and configure the KDC host, but you do not need to
6787*7f2fe78bSCy Schubertgenerate any client certificates.  On the KDC, you must set the
6788*7f2fe78bSCy Schubert\sphinxstylestrong{pkinit\_identity} variable to provide the KDC certificate, but do
6789*7f2fe78bSCy Schubertnot need to set the \sphinxstylestrong{pkinit\_anchors} variable or store the issuing
6790*7f2fe78bSCy Schubertcertificate if you won’t have any client certificates to verify.  On
6791*7f2fe78bSCy Schubertclient hosts, you must set the \sphinxstylestrong{pkinit\_anchors} variable (and
6792*7f2fe78bSCy Schubertpossibly \sphinxstylestrong{pkinit\_kdc\_hostname} and \sphinxstylestrong{pkinit\_eku\_checking}) in order
6793*7f2fe78bSCy Schubertto trust the issuing authority for the KDC certificate, but do not
6794*7f2fe78bSCy Schubertneed to set the \sphinxstylestrong{pkinit\_identities} variable.
6795*7f2fe78bSCy Schubert
6796*7f2fe78bSCy Schubert\sphinxAtStartPar
6797*7f2fe78bSCy SchubertAnonymity support is not enabled by default.  To enable it, you must
6798*7f2fe78bSCy Schubertcreate the principal \sphinxcode{\sphinxupquote{WELLKNOWN/ANONYMOUS}} using the command:
6799*7f2fe78bSCy Schubert
6800*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6801*7f2fe78bSCy Schubert\PYG{n}{kadmin} \PYG{o}{\PYGZhy{}}\PYG{n}{q} \PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{addprinc \PYGZhy{}randkey WELLKNOWN/ANONYMOUS}\PYG{l+s+s1}{\PYGZsq{}}
6802*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6803*7f2fe78bSCy Schubert
6804*7f2fe78bSCy Schubert\sphinxAtStartPar
6805*7f2fe78bSCy SchubertSome Kerberos deployments include application servers which lack
6806*7f2fe78bSCy Schubertproper access control, and grant some level of access to any user who
6807*7f2fe78bSCy Schubertcan authenticate.  In such an environment, enabling anonymity support
6808*7f2fe78bSCy Schuberton the KDC would present a security issue.  If you need to enable
6809*7f2fe78bSCy Schubertanonymity support for TGTs (for use as FAST armor tickets) without
6810*7f2fe78bSCy Schubertenabling anonymous authentication to application servers, you can set
6811*7f2fe78bSCy Schubertthe variable \sphinxstylestrong{restrict\_anonymous\_to\_tgt} to \sphinxcode{\sphinxupquote{true}} in the
6812*7f2fe78bSCy Schubertappropriate {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection of the KDC’s
6813*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} file.
6814*7f2fe78bSCy Schubert
6815*7f2fe78bSCy Schubert\sphinxAtStartPar
6816*7f2fe78bSCy SchubertTo obtain anonymous credentials on a client, run \sphinxcode{\sphinxupquote{kinit \sphinxhyphen{}n}}, or
6817*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{kinit \sphinxhyphen{}n @REALMNAME}} to specify a realm.  The resulting tickets
6818*7f2fe78bSCy Schubertwill have the client name \sphinxcode{\sphinxupquote{WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS}}.
6819*7f2fe78bSCy Schubert
6820*7f2fe78bSCy Schubert
6821*7f2fe78bSCy Schubert\section{Freshness tokens}
6822*7f2fe78bSCy Schubert\label{\detokenize{admin/pkinit:freshness-tokens}}
6823*7f2fe78bSCy Schubert\sphinxAtStartPar
6824*7f2fe78bSCy SchubertFreshness tokens can ensure that the client has recently had access to
6825*7f2fe78bSCy Schubertits certificate private key.  If freshness tokens are not required by
6826*7f2fe78bSCy Schubertthe KDC, a client program with temporary possession of the private key
6827*7f2fe78bSCy Schubertcan compose requests for future timestamps and use them later.
6828*7f2fe78bSCy Schubert
6829*7f2fe78bSCy Schubert\sphinxAtStartPar
6830*7f2fe78bSCy SchubertIn release 1.17 and later, freshness tokens are supported by the
6831*7f2fe78bSCy Schubertclient and are sent by the KDC when the client indicates support for
6832*7f2fe78bSCy Schubertthem.  Because not all clients support freshness tokens yet, they are
6833*7f2fe78bSCy Schubertnot required by default.  To check if freshness tokens are supported
6834*7f2fe78bSCy Schubertby a realm’s clients, look in the KDC logs for the lines:
6835*7f2fe78bSCy Schubert
6836*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6837*7f2fe78bSCy Schubert\PYG{n}{PKINIT}\PYG{p}{:} \PYG{n}{freshness} \PYG{n}{token} \PYG{n}{received} \PYG{k+kn}{from} \PYG{o}{\PYGZlt{}}\PYG{n}{client} \PYG{n}{principal}\PYG{o}{\PYGZgt{}}
6838*7f2fe78bSCy Schubert\PYG{n}{PKINIT}\PYG{p}{:} \PYG{n}{no} \PYG{n}{freshness} \PYG{n}{token} \PYG{n}{received} \PYG{k+kn}{from} \PYG{o}{\PYGZlt{}}\PYG{n}{client} \PYG{n}{principal}\PYG{o}{\PYGZgt{}}
6839*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6840*7f2fe78bSCy Schubert
6841*7f2fe78bSCy Schubert\sphinxAtStartPar
6842*7f2fe78bSCy SchubertTo require freshness tokens for all clients in a realm (except for
6843*7f2fe78bSCy Schubertclients authenticating anonymously), set the
6844*7f2fe78bSCy Schubert\sphinxstylestrong{pkinit\_require\_freshness} variable to \sphinxcode{\sphinxupquote{true}} in the appropriate
6845*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection of the KDC’s {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} file.  To
6846*7f2fe78bSCy Schuberttest that this option is in effect, run \sphinxcode{\sphinxupquote{kinit \sphinxhyphen{}X disable\_freshness}}
6847*7f2fe78bSCy Schubertand verify that authentication is unsuccessful.
6848*7f2fe78bSCy Schubert
6849*7f2fe78bSCy Schubert
6850*7f2fe78bSCy Schubert\chapter{OTP Preauthentication}
6851*7f2fe78bSCy Schubert\label{\detokenize{admin/otp:otp-preauthentication}}\label{\detokenize{admin/otp:otp-preauth}}\label{\detokenize{admin/otp::doc}}
6852*7f2fe78bSCy Schubert\sphinxAtStartPar
6853*7f2fe78bSCy SchubertOTP is a preauthentication mechanism for Kerberos 5 which uses One
6854*7f2fe78bSCy SchubertTime Passwords (OTP) to authenticate the client to the KDC.  The OTP
6855*7f2fe78bSCy Schubertis passed to the KDC over an encrypted FAST channel in clear\sphinxhyphen{}text.
6856*7f2fe78bSCy SchubertThe KDC uses the password along with per\sphinxhyphen{}user configuration to proxy
6857*7f2fe78bSCy Schubertthe request to a third\sphinxhyphen{}party RADIUS system.  This enables
6858*7f2fe78bSCy Schubertout\sphinxhyphen{}of\sphinxhyphen{}the\sphinxhyphen{}box compatibility with a large number of already widely
6859*7f2fe78bSCy Schubertdeployed proprietary systems.
6860*7f2fe78bSCy Schubert
6861*7f2fe78bSCy Schubert\sphinxAtStartPar
6862*7f2fe78bSCy SchubertAdditionally, our implementation of the OTP system allows for the
6863*7f2fe78bSCy Schubertpassing of RADIUS requests over a UNIX domain stream socket.  This
6864*7f2fe78bSCy Schubertpermits the use of a local companion daemon which can handle the
6865*7f2fe78bSCy Schubertdetails of authentication.
6866*7f2fe78bSCy Schubert
6867*7f2fe78bSCy Schubert
6868*7f2fe78bSCy Schubert\section{Defining token types}
6869*7f2fe78bSCy Schubert\label{\detokenize{admin/otp:defining-token-types}}
6870*7f2fe78bSCy Schubert\sphinxAtStartPar
6871*7f2fe78bSCy SchubertToken types are defined in either {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} or
6872*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} according to the following format:
6873*7f2fe78bSCy Schubert
6874*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6875*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{otp}\PYG{p}{]}
6876*7f2fe78bSCy Schubert    \PYG{o}{\PYGZlt{}}\PYG{n}{name}\PYG{o}{\PYGZgt{}} \PYG{o}{=} \PYG{p}{\PYGZob{}}
6877*7f2fe78bSCy Schubert        \PYG{n}{server} \PYG{o}{=} \PYG{o}{\PYGZlt{}}\PYG{n}{host}\PYG{p}{:}\PYG{n}{port} \PYG{o+ow}{or} \PYG{n}{filename}\PYG{o}{\PYGZgt{}} \PYG{p}{(}\PYG{n}{default}\PYG{p}{:} \PYG{n}{see} \PYG{n}{below}\PYG{p}{)}
6878*7f2fe78bSCy Schubert        \PYG{n}{secret} \PYG{o}{=} \PYG{o}{\PYGZlt{}}\PYG{n}{filename}\PYG{o}{\PYGZgt{}}
6879*7f2fe78bSCy Schubert        \PYG{n}{timeout} \PYG{o}{=} \PYG{o}{\PYGZlt{}}\PYG{n}{integer}\PYG{o}{\PYGZgt{}} \PYG{p}{(}\PYG{n}{default}\PYG{p}{:} \PYG{l+m+mi}{5} \PYG{p}{[}\PYG{n}{seconds}\PYG{p}{]}\PYG{p}{)}
6880*7f2fe78bSCy Schubert        \PYG{n}{retries} \PYG{o}{=} \PYG{o}{\PYGZlt{}}\PYG{n}{integer}\PYG{o}{\PYGZgt{}} \PYG{p}{(}\PYG{n}{default}\PYG{p}{:} \PYG{l+m+mi}{3}\PYG{p}{)}
6881*7f2fe78bSCy Schubert        \PYG{n}{strip\PYGZus{}realm} \PYG{o}{=} \PYG{o}{\PYGZlt{}}\PYG{n}{boolean}\PYG{o}{\PYGZgt{}} \PYG{p}{(}\PYG{n}{default}\PYG{p}{:} \PYG{n}{true}\PYG{p}{)}
6882*7f2fe78bSCy Schubert        \PYG{n}{indicator} \PYG{o}{=} \PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{o}{\PYGZgt{}} \PYG{p}{(}\PYG{n}{default}\PYG{p}{:} \PYG{n}{none}\PYG{p}{)}
6883*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
6884*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6885*7f2fe78bSCy Schubert
6886*7f2fe78bSCy Schubert\sphinxAtStartPar
6887*7f2fe78bSCy SchubertIf the server field begins with ‘/’, it will be interpreted as a UNIX
6888*7f2fe78bSCy Schubertsocket.  Otherwise, it is assumed to be in the format host:port.  When
6889*7f2fe78bSCy Schuberta UNIX domain socket is specified, the secret field is optional and an
6890*7f2fe78bSCy Schubertempty secret is used by default.  If the server field is not
6891*7f2fe78bSCy Schubertspecified, it defaults to {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{RUNSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/\textless{}name\textgreater{}.socket}}.
6892*7f2fe78bSCy Schubert
6893*7f2fe78bSCy Schubert\sphinxAtStartPar
6894*7f2fe78bSCy SchubertWhen forwarding the request over RADIUS, by default the principal is
6895*7f2fe78bSCy Schubertused in the User\sphinxhyphen{}Name attribute of the RADIUS packet.  The strip\_realm
6896*7f2fe78bSCy Schubertparameter controls whether the principal is forwarded with or without
6897*7f2fe78bSCy Schubertthe realm portion.
6898*7f2fe78bSCy Schubert
6899*7f2fe78bSCy Schubert\sphinxAtStartPar
6900*7f2fe78bSCy SchubertIf an indicator field is present, tickets issued using this token type
6901*7f2fe78bSCy Schubertwill be annotated with the specified authentication indicator (see
6902*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/auth_indicator:auth-indicator}]{\sphinxcrossref{\DUrole{std,std-ref}{Authentication indicators}}}}).  This key may be specified multiple times to
6903*7f2fe78bSCy Schubertadd multiple indicators.
6904*7f2fe78bSCy Schubert
6905*7f2fe78bSCy Schubert
6906*7f2fe78bSCy Schubert\section{The default token type}
6907*7f2fe78bSCy Schubert\label{\detokenize{admin/otp:the-default-token-type}}
6908*7f2fe78bSCy Schubert\sphinxAtStartPar
6909*7f2fe78bSCy SchubertA default token type is used internally when no token type is specified for a
6910*7f2fe78bSCy Schubertgiven user.  It is defined as follows:
6911*7f2fe78bSCy Schubert
6912*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6913*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{otp}\PYG{p}{]}
6914*7f2fe78bSCy Schubert    \PYG{n}{DEFAULT} \PYG{o}{=} \PYG{p}{\PYGZob{}}
6915*7f2fe78bSCy Schubert        \PYG{n}{strip\PYGZus{}realm} \PYG{o}{=} \PYG{n}{false}
6916*7f2fe78bSCy Schubert    \PYG{p}{\PYGZcb{}}
6917*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6918*7f2fe78bSCy Schubert
6919*7f2fe78bSCy Schubert\sphinxAtStartPar
6920*7f2fe78bSCy SchubertThe administrator may override the internal \sphinxcode{\sphinxupquote{DEFAULT}} token type
6921*7f2fe78bSCy Schubertsimply by defining a configuration with the same name.
6922*7f2fe78bSCy Schubert
6923*7f2fe78bSCy Schubert
6924*7f2fe78bSCy Schubert\section{Token instance configuration}
6925*7f2fe78bSCy Schubert\label{\detokenize{admin/otp:token-instance-configuration}}
6926*7f2fe78bSCy Schubert\sphinxAtStartPar
6927*7f2fe78bSCy SchubertTo enable OTP for a client principal, the administrator must define
6928*7f2fe78bSCy Schubertthe \sphinxstylestrong{otp} string attribute for that principal.  (See
6929*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:set-string}]{\sphinxcrossref{\DUrole{std,std-ref}{set\_string}}}}.)  The \sphinxstylestrong{otp} user string is a JSON string of the
6930*7f2fe78bSCy Schubertformat:
6931*7f2fe78bSCy Schubert
6932*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6933*7f2fe78bSCy Schubert[\PYGZob{}
6934*7f2fe78bSCy Schubert    \PYGZdq{}type\PYGZdq{}: \PYG{n+nt}{\PYGZlt{}string}\PYG{n+nt}{\PYGZgt{}},
6935*7f2fe78bSCy Schubert    \PYGZdq{}username\PYGZdq{}: \PYG{n+nt}{\PYGZlt{}string}\PYG{n+nt}{\PYGZgt{}},
6936*7f2fe78bSCy Schubert    \PYGZdq{}indicators\PYGZdq{}: [\PYG{n+nt}{\PYGZlt{}string}\PYG{n+nt}{\PYGZgt{}}, ...]
6937*7f2fe78bSCy Schubert \PYGZcb{}, ...]
6938*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6939*7f2fe78bSCy Schubert
6940*7f2fe78bSCy Schubert\sphinxAtStartPar
6941*7f2fe78bSCy SchubertThis is an array of token objects.  Both fields of token objects are
6942*7f2fe78bSCy Schubertoptional.  The \sphinxstylestrong{type} field names the token type of this token; if
6943*7f2fe78bSCy Schubertnot specified, it defaults to \sphinxcode{\sphinxupquote{DEFAULT}}.  The \sphinxstylestrong{username} field
6944*7f2fe78bSCy Schubertspecifies the value to be sent in the User\sphinxhyphen{}Name RADIUS attribute.  If
6945*7f2fe78bSCy Schubertnot specified, the principal name is sent, with or without realm as
6946*7f2fe78bSCy Schubertdefined in the token type.  The \sphinxstylestrong{indicators} field specifies a list
6947*7f2fe78bSCy Schubertof authentication indicators to annotate tickets with, overriding any
6948*7f2fe78bSCy Schubertindicators specified in the token type.
6949*7f2fe78bSCy Schubert
6950*7f2fe78bSCy Schubert\sphinxAtStartPar
6951*7f2fe78bSCy SchubertFor ease of configuration, an empty array (\sphinxcode{\sphinxupquote{{[}{]}}}) is treated as
6952*7f2fe78bSCy Schubertequivalent to one DEFAULT token (\sphinxcode{\sphinxupquote{{[}\{\}{]}}}).
6953*7f2fe78bSCy Schubert
6954*7f2fe78bSCy Schubert
6955*7f2fe78bSCy Schubert\section{Other considerations}
6956*7f2fe78bSCy Schubert\label{\detokenize{admin/otp:other-considerations}}\begin{enumerate}
6957*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
6958*7f2fe78bSCy Schubert\item {}
6959*7f2fe78bSCy Schubert\sphinxAtStartPar
6960*7f2fe78bSCy SchubertFAST is required for OTP to work.
6961*7f2fe78bSCy Schubert
6962*7f2fe78bSCy Schubert\end{enumerate}
6963*7f2fe78bSCy Schubert
6964*7f2fe78bSCy Schubert
6965*7f2fe78bSCy Schubert\chapter{SPAKE Preauthentication}
6966*7f2fe78bSCy Schubert\label{\detokenize{admin/spake:spake-preauthentication}}\label{\detokenize{admin/spake:spake}}\label{\detokenize{admin/spake::doc}}
6967*7f2fe78bSCy Schubert\sphinxAtStartPar
6968*7f2fe78bSCy SchubertSPAKE preauthentication (added in release 1.17) uses public key
6969*7f2fe78bSCy Schubertcryptography techniques to protect against {\hyperref[\detokenize{admin/dictionary:dictionary}]{\sphinxcrossref{\DUrole{std,std-ref}{password dictionary
6970*7f2fe78bSCy Schubertattacks}}}}.  Unlike {\hyperref[\detokenize{admin/pkinit:pkinit}]{\sphinxcrossref{\DUrole{std,std-ref}{PKINIT}}}}, it does not
6971*7f2fe78bSCy Schubertrequire any additional infrastructure such as certificates; it simply
6972*7f2fe78bSCy Schubertneeds to be turned on.  Using SPAKE preauthentication may modestly
6973*7f2fe78bSCy Schubertincrease the CPU and network load on the KDC.
6974*7f2fe78bSCy Schubert
6975*7f2fe78bSCy Schubert\sphinxAtStartPar
6976*7f2fe78bSCy SchubertSPAKE preauthentication can use one of four elliptic curve groups for
6977*7f2fe78bSCy Schubertits password\sphinxhyphen{}authenticated key exchange.  The recommended group is
6978*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{edwards25519}}; three NIST curves (\sphinxcode{\sphinxupquote{P\sphinxhyphen{}256}}, \sphinxcode{\sphinxupquote{P\sphinxhyphen{}384}}, and
6979*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{P\sphinxhyphen{}521}}) are also supported.
6980*7f2fe78bSCy Schubert
6981*7f2fe78bSCy Schubert\sphinxAtStartPar
6982*7f2fe78bSCy SchubertBy default, SPAKE with the \sphinxcode{\sphinxupquote{edwards25519}} group is enabled on
6983*7f2fe78bSCy Schubertclients, but the KDC does not offer SPAKE by default.  To turn it on,
6984*7f2fe78bSCy Schubertset the \sphinxstylestrong{spake\_preauth\_groups} variable in {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}} to a
6985*7f2fe78bSCy Schubertlist of allowed groups.  This variable affects both the client and the
6986*7f2fe78bSCy SchubertKDC.  Simply setting it to \sphinxcode{\sphinxupquote{edwards25519}} is recommended:
6987*7f2fe78bSCy Schubert
6988*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6989*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{libdefaults}\PYG{p}{]}
6990*7f2fe78bSCy Schubert    \PYG{n}{spake\PYGZus{}preauth\PYGZus{}groups} \PYG{o}{=} \PYG{n}{edwards25519}
6991*7f2fe78bSCy Schubert\end{sphinxVerbatim}
6992*7f2fe78bSCy Schubert
6993*7f2fe78bSCy Schubert\sphinxAtStartPar
6994*7f2fe78bSCy SchubertSet the \sphinxstylestrong{+requires\_preauth} and \sphinxstylestrong{\sphinxhyphen{}allow\_svr} flags on client
6995*7f2fe78bSCy Schubertprincipal entries, as you would for any preauthentication mechanism:
6996*7f2fe78bSCy Schubert
6997*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
6998*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{modprinc} \PYG{o}{+}\PYG{n}{requires\PYGZus{}preauth} \PYG{o}{\PYGZhy{}}\PYG{n}{allow\PYGZus{}svr} \PYG{n}{PRINCNAME}
6999*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7000*7f2fe78bSCy Schubert
7001*7f2fe78bSCy Schubert\sphinxAtStartPar
7002*7f2fe78bSCy SchubertClients which do not implement SPAKE preauthentication will fall back
7003*7f2fe78bSCy Schubertto encrypted timestamp.
7004*7f2fe78bSCy Schubert
7005*7f2fe78bSCy Schubert\sphinxAtStartPar
7006*7f2fe78bSCy SchubertAn active attacker can force a fallback to encrypted timestamp by
7007*7f2fe78bSCy Schubertmodifying the initial KDC response, defeating the protection against
7008*7f2fe78bSCy Schubertdictionary attacks.  To prevent this fallback on clients which do
7009*7f2fe78bSCy Schubertimplement SPAKE preauthentication, set the
7010*7f2fe78bSCy Schubert\sphinxstylestrong{disable\_encrypted\_timestamp} variable to \sphinxcode{\sphinxupquote{true}} in the
7011*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection for realms whose KDCs offer SPAKE
7012*7f2fe78bSCy Schubertpreauthentication.
7013*7f2fe78bSCy Schubert
7014*7f2fe78bSCy Schubert\sphinxAtStartPar
7015*7f2fe78bSCy SchubertBy default, SPAKE preauthentication requires an extra network round
7016*7f2fe78bSCy Schuberttrip to the KDC during initial authentication.  If most of the clients
7017*7f2fe78bSCy Schubertin a realm support SPAKE, this extra round trip can be eliminated
7018*7f2fe78bSCy Schubertusing an optimistic challenge, by setting the
7019*7f2fe78bSCy Schubert\sphinxstylestrong{spake\_preauth\_kdc\_challenge} variable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdcdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}kdcdefaults{]}}}}} to a
7020*7f2fe78bSCy Schubertsingle group name:
7021*7f2fe78bSCy Schubert
7022*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7023*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{kdcdefaults}\PYG{p}{]}
7024*7f2fe78bSCy Schubert    \PYG{n}{spake\PYGZus{}preauth\PYGZus{}kdc\PYGZus{}challenge} \PYG{o}{=} \PYG{n}{edwards25519}
7025*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7026*7f2fe78bSCy Schubert
7027*7f2fe78bSCy Schubert\sphinxAtStartPar
7028*7f2fe78bSCy SchubertUsing optimistic challenge will cause the KDC to do extra work for
7029*7f2fe78bSCy Schubertinitial authentication requests that do not result in SPAKE
7030*7f2fe78bSCy Schubertpreauthentication, but will save work when SPAKE preauthentication is
7031*7f2fe78bSCy Schubertused.
7032*7f2fe78bSCy Schubert
7033*7f2fe78bSCy Schubert
7034*7f2fe78bSCy Schubert\chapter{Addressing dictionary attack risks}
7035*7f2fe78bSCy Schubert\label{\detokenize{admin/dictionary:addressing-dictionary-attack-risks}}\label{\detokenize{admin/dictionary:dictionary}}\label{\detokenize{admin/dictionary::doc}}
7036*7f2fe78bSCy Schubert\sphinxAtStartPar
7037*7f2fe78bSCy SchubertKerberos initial authentication is normally secured using the client
7038*7f2fe78bSCy Schubertprincipal’s long\sphinxhyphen{}term key, which for users is generally derived from a
7039*7f2fe78bSCy Schubertpassword.  Using a pasword\sphinxhyphen{}derived long\sphinxhyphen{}term key carries the risk of a
7040*7f2fe78bSCy Schubertdictionary attack, where an attacker tries a sequence of possible
7041*7f2fe78bSCy Schubertpasswords, possibly requiring much less effort than would be required
7042*7f2fe78bSCy Schubertto try all possible values of the key.  Even if {\hyperref[\detokenize{admin/database:policies}]{\sphinxcrossref{\DUrole{std,std-ref}{password policy
7043*7f2fe78bSCy Schubertobjects}}}} are used to force users not to pick trivial
7044*7f2fe78bSCy Schubertpasswords, dictionary attacks can sometimes be successful against a
7045*7f2fe78bSCy Schubertsignificant fraction of the users in a realm.  Dictionary attacks are
7046*7f2fe78bSCy Schubertnot a concern for principals using random keys.
7047*7f2fe78bSCy Schubert
7048*7f2fe78bSCy Schubert\sphinxAtStartPar
7049*7f2fe78bSCy SchubertA dictionary attack may be online or offline.  An online dictionary
7050*7f2fe78bSCy Schubertattack is performed by trying each password in a separate request to
7051*7f2fe78bSCy Schubertthe KDC, and is therefore visible to the KDC and also limited in speed
7052*7f2fe78bSCy Schubertby the KDC’s processing power and the network capacity between the
7053*7f2fe78bSCy Schubertclient and the KDC.  Online dictionary attacks can be mitigated using
7054*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/lockout:lockout}]{\sphinxcrossref{\DUrole{std,std-ref}{account lockout}}}}.  This measure is not totally
7055*7f2fe78bSCy Schubertsatisfactory, as it makes it easy for an attacker to deny access to a
7056*7f2fe78bSCy Schubertclient principal.
7057*7f2fe78bSCy Schubert
7058*7f2fe78bSCy Schubert\sphinxAtStartPar
7059*7f2fe78bSCy SchubertAn offline dictionary attack is performed by obtaining a ciphertext
7060*7f2fe78bSCy Schubertgenerated using the password\sphinxhyphen{}derived key, and trying each password
7061*7f2fe78bSCy Schubertagainst the ciphertext.  This category of attack is invisible to the
7062*7f2fe78bSCy SchubertKDC and can be performed much faster than an online attack.  The
7063*7f2fe78bSCy Schubertattack will generally take much longer with more recent encryption
7064*7f2fe78bSCy Schuberttypes (particularly the ones based on AES), because those encryption
7065*7f2fe78bSCy Schuberttypes use a much more expensive string\sphinxhyphen{}to\sphinxhyphen{}key function.  However, the
7066*7f2fe78bSCy Schubertbest defense is to deny the attacker access to a useful ciphertext.
7067*7f2fe78bSCy SchubertThe required defensive measures depend on the attacker’s level of
7068*7f2fe78bSCy Schubertnetwork access.
7069*7f2fe78bSCy Schubert
7070*7f2fe78bSCy Schubert\sphinxAtStartPar
7071*7f2fe78bSCy SchubertAn off\sphinxhyphen{}path attacker has no access to packets sent between legitimate
7072*7f2fe78bSCy Schubertusers and the KDC.  An off\sphinxhyphen{}path attacker could gain access to an
7073*7f2fe78bSCy Schubertattackable ciphertext either by making an AS request for a client
7074*7f2fe78bSCy Schubertprincipal which does not have the \sphinxstylestrong{+requires\_preauth} flag, or by
7075*7f2fe78bSCy Schubertmaking a TGS request (after authenticating as a different user) for a
7076*7f2fe78bSCy Schubertserver principal which does not have the \sphinxstylestrong{\sphinxhyphen{}allow\_svr} flag.  To
7077*7f2fe78bSCy Schubertaddress off\sphinxhyphen{}path attackers, a KDC administrator should set those flags
7078*7f2fe78bSCy Schuberton principals with password\sphinxhyphen{}derived keys:
7079*7f2fe78bSCy Schubert
7080*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7081*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{add\PYGZus{}principal} \PYG{o}{+}\PYG{n}{requires\PYGZus{}preauth} \PYG{o}{\PYGZhy{}}\PYG{n}{allow\PYGZus{}svr} \PYG{n}{princname}
7082*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7083*7f2fe78bSCy Schubert
7084*7f2fe78bSCy Schubert\sphinxAtStartPar
7085*7f2fe78bSCy SchubertAn attacker with passive network access (one who can monitor packets
7086*7f2fe78bSCy Schubertsent between legitimate users and the KDC, but cannot change them or
7087*7f2fe78bSCy Schubertinsert their own packets) can gain access to an attackable ciphertext
7088*7f2fe78bSCy Schubertby observing an authentication by a user using the most common form of
7089*7f2fe78bSCy Schubertpreauthentication, encrypted timestamp.  Any of the following methods
7090*7f2fe78bSCy Schubertcan prevent dictionary attacks by attackers with passive network
7091*7f2fe78bSCy Schubertaccess:
7092*7f2fe78bSCy Schubert\begin{itemize}
7093*7f2fe78bSCy Schubert\item {}
7094*7f2fe78bSCy Schubert\sphinxAtStartPar
7095*7f2fe78bSCy SchubertEnabling {\hyperref[\detokenize{admin/spake:spake}]{\sphinxcrossref{\DUrole{std,std-ref}{SPAKE preauthentication}}}} (added in release
7096*7f2fe78bSCy Schubert1.17) on the KDC, and ensuring that all clients are able to support
7097*7f2fe78bSCy Schubertit.
7098*7f2fe78bSCy Schubert
7099*7f2fe78bSCy Schubert\item {}
7100*7f2fe78bSCy Schubert\sphinxAtStartPar
7101*7f2fe78bSCy SchubertUsing an {\hyperref[\detokenize{admin/https:https}]{\sphinxcrossref{\DUrole{std,std-ref}{HTTPS proxy}}}} for communication with the KDC,
7102*7f2fe78bSCy Schubertif the attacker cannot monitor communication between the proxy
7103*7f2fe78bSCy Schubertserver and the KDC.
7104*7f2fe78bSCy Schubert
7105*7f2fe78bSCy Schubert\item {}
7106*7f2fe78bSCy Schubert\sphinxAtStartPar
7107*7f2fe78bSCy SchubertUsing FAST, protecting the initial authentication with either a
7108*7f2fe78bSCy Schubertrandom key (such as a host key) or with {\hyperref[\detokenize{admin/pkinit:anonymous-pkinit}]{\sphinxcrossref{\DUrole{std,std-ref}{anonymous PKINIT}}}}.
7109*7f2fe78bSCy Schubert
7110*7f2fe78bSCy Schubert\end{itemize}
7111*7f2fe78bSCy Schubert
7112*7f2fe78bSCy Schubert\sphinxAtStartPar
7113*7f2fe78bSCy SchubertAn attacker with active network access (one who can inject or modify
7114*7f2fe78bSCy Schubertpackets sent between legitimate users and the KDC) can try to fool the
7115*7f2fe78bSCy Schubertclient software into sending an attackable ciphertext using an
7116*7f2fe78bSCy Schubertencryption type and salt string of the attacker’s choosing.  Any of the
7117*7f2fe78bSCy Schubertfollowing methods can prevent dictionary attacks by active attackers:
7118*7f2fe78bSCy Schubert\begin{itemize}
7119*7f2fe78bSCy Schubert\item {}
7120*7f2fe78bSCy Schubert\sphinxAtStartPar
7121*7f2fe78bSCy SchubertEnabling SPAKE preauthentication and setting the
7122*7f2fe78bSCy Schubert\sphinxstylestrong{disable\_encrypted\_timestamp} variable to \sphinxcode{\sphinxupquote{true}} in the
7123*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection of the client configuration.
7124*7f2fe78bSCy Schubert
7125*7f2fe78bSCy Schubert\item {}
7126*7f2fe78bSCy Schubert\sphinxAtStartPar
7127*7f2fe78bSCy SchubertUsing an HTTPS proxy as described above, configured in the client’s
7128*7f2fe78bSCy Schubertkrb5.conf realm configuration.  If {\hyperref[\detokenize{admin/realm_config:kdc-discovery}]{\sphinxcrossref{\DUrole{std,std-ref}{KDC discovery}}}} is used to locate a proxy server, an active
7129*7f2fe78bSCy Schubertattacker may be able to use DNS spoofing to cause the client to use
7130*7f2fe78bSCy Schuberta different HTTPS server or to not use HTTPS.
7131*7f2fe78bSCy Schubert
7132*7f2fe78bSCy Schubert\item {}
7133*7f2fe78bSCy Schubert\sphinxAtStartPar
7134*7f2fe78bSCy SchubertUsing FAST as described above.
7135*7f2fe78bSCy Schubert
7136*7f2fe78bSCy Schubert\end{itemize}
7137*7f2fe78bSCy Schubert
7138*7f2fe78bSCy Schubert\sphinxAtStartPar
7139*7f2fe78bSCy SchubertIf {\hyperref[\detokenize{admin/pkinit:pkinit}]{\sphinxcrossref{\DUrole{std,std-ref}{PKINIT}}}} or {\hyperref[\detokenize{admin/otp:otp-preauth}]{\sphinxcrossref{\DUrole{std,std-ref}{OTP}}}} are used for
7140*7f2fe78bSCy Schubertinitial authentication, the principal’s long\sphinxhyphen{}term keys are not used
7141*7f2fe78bSCy Schubertand dictionary attacks are usually not a concern.
7142*7f2fe78bSCy Schubert
7143*7f2fe78bSCy Schubert
7144*7f2fe78bSCy Schubert\chapter{Principal names and DNS}
7145*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:principal-names-and-dns}}\label{\detokenize{admin/princ_dns::doc}}
7146*7f2fe78bSCy Schubert\sphinxAtStartPar
7147*7f2fe78bSCy SchubertKerberos clients can do DNS lookups to canonicalize service principal
7148*7f2fe78bSCy Schubertnames.  This can cause difficulties when setting up Kerberos
7149*7f2fe78bSCy Schubertapplication servers, especially when the client’s name for the service
7150*7f2fe78bSCy Schubertis different from what the service thinks its name is.
7151*7f2fe78bSCy Schubert
7152*7f2fe78bSCy Schubert
7153*7f2fe78bSCy Schubert\section{Service principal names}
7154*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:service-principal-names}}
7155*7f2fe78bSCy Schubert\sphinxAtStartPar
7156*7f2fe78bSCy SchubertA frequently used kind of principal name is the host\sphinxhyphen{}based service
7157*7f2fe78bSCy Schubertprincipal name.  This kind of principal name has two components: a
7158*7f2fe78bSCy Schubertservice name and a hostname.  For example, \sphinxcode{\sphinxupquote{imap/imap.example.com}}
7159*7f2fe78bSCy Schubertis the principal name of the “imap” service on the host
7160*7f2fe78bSCy Schubertimap.example.com”.  Other possible service names for the first
7161*7f2fe78bSCy Schubertcomponent include “host” (remote login services such as ssh), “HTTP”,
7162*7f2fe78bSCy Schubertand “nfs” (Network File System).
7163*7f2fe78bSCy Schubert
7164*7f2fe78bSCy Schubert\sphinxAtStartPar
7165*7f2fe78bSCy SchubertService administrators often publish well\sphinxhyphen{}known hostname aliases that
7166*7f2fe78bSCy Schubertthey would prefer users to use instead of the canonical name of the
7167*7f2fe78bSCy Schubertservice host.  This gives service administrators more flexibility in
7168*7f2fe78bSCy Schubertdeploying services.  For example, a shell login server might be named
7169*7f2fe78bSCy Schubert“long\sphinxhyphen{}vanity\sphinxhyphen{}hostname.example.com”, but users will naturally prefer to
7170*7f2fe78bSCy Schuberttype something like “login.example.com”.  Hostname aliases also allow
7171*7f2fe78bSCy Schubertfor administrators to set up load balancing for some sorts of services
7172*7f2fe78bSCy Schubertbased on rotating \sphinxcode{\sphinxupquote{CNAME}} records in DNS.
7173*7f2fe78bSCy Schubert
7174*7f2fe78bSCy Schubert
7175*7f2fe78bSCy Schubert\section{Service principal canonicalization}
7176*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:service-principal-canonicalization}}
7177*7f2fe78bSCy Schubert\sphinxAtStartPar
7178*7f2fe78bSCy SchubertIn the MIT krb5 client library, canonicalization of host\sphinxhyphen{}based service
7179*7f2fe78bSCy Schubertprincipals is controlled by the \sphinxstylestrong{dns\_canonicalize\_hostname},
7180*7f2fe78bSCy Schubert\sphinxstylestrong{rnds}, and \sphinxstylestrong{qualify\_shortname} variables in {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}.
7181*7f2fe78bSCy Schubert
7182*7f2fe78bSCy Schubert\sphinxAtStartPar
7183*7f2fe78bSCy SchubertIf \sphinxstylestrong{dns\_canonicalize\_hostname} is set to \sphinxcode{\sphinxupquote{true}} (the default
7184*7f2fe78bSCy Schubertvalue), the client performs forward resolution by looking up the IPv4
7185*7f2fe78bSCy Schubertand/or IPv6 addresses of the hostname using \sphinxcode{\sphinxupquote{getaddrinfo()}}.  This
7186*7f2fe78bSCy Schubertprocess will typically add a domain suffix to the hostname if needed,
7187*7f2fe78bSCy Schubertand follow CNAME records in the DNS.  If \sphinxstylestrong{rdns} is also set to
7188*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{true}} (the default), the client will then perform a reverse lookup
7189*7f2fe78bSCy Schubertof the first returned Internet address using \sphinxcode{\sphinxupquote{getnameinfo()}},
7190*7f2fe78bSCy Schubertfinding the name associated with the PTR record.
7191*7f2fe78bSCy Schubert
7192*7f2fe78bSCy Schubert\sphinxAtStartPar
7193*7f2fe78bSCy SchubertIf \sphinxstylestrong{dns\_canonicalize\_hostname} is set to \sphinxcode{\sphinxupquote{false}}, the hostname is
7194*7f2fe78bSCy Schubertnot canonicalized using DNS.  If the hostname has only one component
7195*7f2fe78bSCy Schubert(i.e. it contains no “.” characters), the host’s primary DNS search
7196*7f2fe78bSCy Schubertdomain will be appended, if there is one.  The \sphinxstylestrong{qualify\_shortname}
7197*7f2fe78bSCy Schubertvariable can be used to override or disable this suffix.
7198*7f2fe78bSCy Schubert
7199*7f2fe78bSCy Schubert\sphinxAtStartPar
7200*7f2fe78bSCy SchubertIf \sphinxstylestrong{dns\_canonicalize\_hostname} is set to \sphinxcode{\sphinxupquote{fallback}} (added in
7201*7f2fe78bSCy Schubertrelease 1.18), the hostname is initially treated according to the
7202*7f2fe78bSCy Schubertrules for \sphinxcode{\sphinxupquote{dns\_canonicalize\_hostname=false}}.  If a ticket request
7203*7f2fe78bSCy Schubertfails because the service principal is unknown, the hostname will be
7204*7f2fe78bSCy Schubertcanonicalized according to the rules for
7205*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{dns\_canonicalize\_hostname=true}} and the request will be retried.
7206*7f2fe78bSCy Schubert
7207*7f2fe78bSCy Schubert\sphinxAtStartPar
7208*7f2fe78bSCy SchubertIn all cases, the hostname is converted to lowercase, and any trailing
7209*7f2fe78bSCy Schubertdot is removed.
7210*7f2fe78bSCy Schubert
7211*7f2fe78bSCy Schubert
7212*7f2fe78bSCy Schubert\section{Reverse DNS mismatches}
7213*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:reverse-dns-mismatches}}
7214*7f2fe78bSCy Schubert\sphinxAtStartPar
7215*7f2fe78bSCy SchubertSometimes, an enterprise will have control over its forward DNS but
7216*7f2fe78bSCy Schubertnot its reverse DNS.  The reverse DNS is sometimes under the control
7217*7f2fe78bSCy Schubertof the Internet service provider of the enterprise, and the enterprise
7218*7f2fe78bSCy Schubertmay not have much influence in setting up reverse DNS records for its
7219*7f2fe78bSCy Schubertaddress space.  If there are difficulties with getting forward and
7220*7f2fe78bSCy Schubertreverse DNS to match, it is best to set \sphinxcode{\sphinxupquote{rdns = false}} on client
7221*7f2fe78bSCy Schubertmachines.
7222*7f2fe78bSCy Schubert
7223*7f2fe78bSCy Schubert
7224*7f2fe78bSCy Schubert\section{Overriding application behavior}
7225*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:overriding-application-behavior}}
7226*7f2fe78bSCy Schubert\sphinxAtStartPar
7227*7f2fe78bSCy SchubertApplications can choose to use a default hostname component in their
7228*7f2fe78bSCy Schubertservice principal name when accepting authentication, which avoids
7229*7f2fe78bSCy Schubertsome sorts of hostname mismatches.  Because not all relevant
7230*7f2fe78bSCy Schubertapplications do this yet, using the {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} setting:
7231*7f2fe78bSCy Schubert
7232*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7233*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{libdefaults}\PYG{p}{]}
7234*7f2fe78bSCy Schubert    \PYG{n}{ignore\PYGZus{}acceptor\PYGZus{}hostname} \PYG{o}{=} \PYG{n}{true}
7235*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7236*7f2fe78bSCy Schubert
7237*7f2fe78bSCy Schubert\sphinxAtStartPar
7238*7f2fe78bSCy Schubertwill allow the Kerberos library to override the application’s choice
7239*7f2fe78bSCy Schubertof service principal hostname and will allow a server program to
7240*7f2fe78bSCy Schubertaccept incoming authentications using any key in its keytab that
7241*7f2fe78bSCy Schubertmatches the service name and realm name (if given).  This setting
7242*7f2fe78bSCy Schubertdefaults to “false” and is available in releases krb5\sphinxhyphen{}1.10 and later.
7243*7f2fe78bSCy Schubert
7244*7f2fe78bSCy Schubert
7245*7f2fe78bSCy Schubert\section{Provisioning keytabs}
7246*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:provisioning-keytabs}}
7247*7f2fe78bSCy Schubert\sphinxAtStartPar
7248*7f2fe78bSCy SchubertOne service principal entry that should be in the keytab is a
7249*7f2fe78bSCy Schubertprincipal whose hostname component is the canonical hostname that
7250*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{getaddrinfo()}} reports for all known aliases for the host.  If the
7251*7f2fe78bSCy Schubertreverse DNS information does not match this canonical hostname, an
7252*7f2fe78bSCy Schubertadditional service principal entry should be in the keytab for this
7253*7f2fe78bSCy Schubertdifferent hostname.
7254*7f2fe78bSCy Schubert
7255*7f2fe78bSCy Schubert
7256*7f2fe78bSCy Schubert\section{Specific application advice}
7257*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:specific-application-advice}}
7258*7f2fe78bSCy Schubert
7259*7f2fe78bSCy Schubert\subsection{Secure shell (ssh)}
7260*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:secure-shell-ssh}}
7261*7f2fe78bSCy Schubert\sphinxAtStartPar
7262*7f2fe78bSCy SchubertSetting \sphinxcode{\sphinxupquote{GSSAPIStrictAcceptorCheck = no}} in the configuration file
7263*7f2fe78bSCy Schubertof modern versions of the openssh daemon will allow the daemon to try
7264*7f2fe78bSCy Schubertany key in its keytab when accepting a connection, rather than looking
7265*7f2fe78bSCy Schubertfor the keytab entry that matches the host’s own idea of its name
7266*7f2fe78bSCy Schubert(typically the name that \sphinxcode{\sphinxupquote{gethostname()}} returns).  This requires
7267*7f2fe78bSCy Schubertkrb5\sphinxhyphen{}1.10 or later.
7268*7f2fe78bSCy Schubert
7269*7f2fe78bSCy Schubert
7270*7f2fe78bSCy Schubert\subsection{OpenLDAP (ldapsearch, etc.)}
7271*7f2fe78bSCy Schubert\label{\detokenize{admin/princ_dns:openldap-ldapsearch-etc}}
7272*7f2fe78bSCy Schubert\sphinxAtStartPar
7273*7f2fe78bSCy SchubertOpenLDAP’s SASL implementation performs reverse DNS lookup in order to
7274*7f2fe78bSCy Schubertcanonicalize service principal names, even if \sphinxstylestrong{rdns} is set to
7275*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{false}} in the Kerberos configuration.  To disable this behavior,
7276*7f2fe78bSCy Schubertadd \sphinxcode{\sphinxupquote{SASL\_NOCANON on}} to \sphinxcode{\sphinxupquote{ldap.conf}}, or set the
7277*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{LDAPSASL\_NOCANON}} environment variable.
7278*7f2fe78bSCy Schubert
7279*7f2fe78bSCy Schubert
7280*7f2fe78bSCy Schubert\chapter{Encryption types}
7281*7f2fe78bSCy Schubert\label{\detokenize{admin/enctypes:encryption-types}}\label{\detokenize{admin/enctypes:enctypes}}\label{\detokenize{admin/enctypes::doc}}
7282*7f2fe78bSCy Schubert\sphinxAtStartPar
7283*7f2fe78bSCy SchubertKerberos can use a variety of cipher algorithms to protect data.  A
7284*7f2fe78bSCy SchubertKerberos \sphinxstylestrong{encryption type} (also known as an \sphinxstylestrong{enctype}) is a
7285*7f2fe78bSCy Schubertspecific combination of a cipher algorithm with an integrity algorithm
7286*7f2fe78bSCy Schubertto provide both confidentiality and integrity to data.
7287*7f2fe78bSCy Schubert
7288*7f2fe78bSCy Schubert
7289*7f2fe78bSCy Schubert\section{Enctypes in requests}
7290*7f2fe78bSCy Schubert\label{\detokenize{admin/enctypes:enctypes-in-requests}}
7291*7f2fe78bSCy Schubert\sphinxAtStartPar
7292*7f2fe78bSCy SchubertClients make two types of requests (KDC\sphinxhyphen{}REQ) to the KDC: AS\sphinxhyphen{}REQs and
7293*7f2fe78bSCy SchubertTGS\sphinxhyphen{}REQs.  The client uses the AS\sphinxhyphen{}REQ to obtain initial tickets
7294*7f2fe78bSCy Schubert(typically a Ticket\sphinxhyphen{}Granting Ticket (TGT)), and uses the TGS\sphinxhyphen{}REQ to
7295*7f2fe78bSCy Schubertobtain service tickets.
7296*7f2fe78bSCy Schubert
7297*7f2fe78bSCy Schubert\sphinxAtStartPar
7298*7f2fe78bSCy SchubertThe KDC uses three different keys when issuing a ticket to a client:
7299*7f2fe78bSCy Schubert\begin{itemize}
7300*7f2fe78bSCy Schubert\item {}
7301*7f2fe78bSCy Schubert\sphinxAtStartPar
7302*7f2fe78bSCy SchubertThe long\sphinxhyphen{}term key of the service: the KDC uses this to encrypt the
7303*7f2fe78bSCy Schubertactual service ticket.  The KDC only uses the first long\sphinxhyphen{}term key in
7304*7f2fe78bSCy Schubertthe most recent kvno for this purpose.
7305*7f2fe78bSCy Schubert
7306*7f2fe78bSCy Schubert\item {}
7307*7f2fe78bSCy Schubert\sphinxAtStartPar
7308*7f2fe78bSCy SchubertThe session key: the KDC randomly chooses this key and places one
7309*7f2fe78bSCy Schubertcopy inside the ticket and the other copy inside the encrypted part
7310*7f2fe78bSCy Schubertof the reply.
7311*7f2fe78bSCy Schubert
7312*7f2fe78bSCy Schubert\item {}
7313*7f2fe78bSCy Schubert\sphinxAtStartPar
7314*7f2fe78bSCy SchubertThe reply\sphinxhyphen{}encrypting key: the KDC uses this to encrypt the reply it
7315*7f2fe78bSCy Schubertsends to the client.  For AS replies, this is a long\sphinxhyphen{}term key of the
7316*7f2fe78bSCy Schubertclient principal.  For TGS replies, this is either the session key of the
7317*7f2fe78bSCy Schubertauthenticating ticket, or a subsession key.
7318*7f2fe78bSCy Schubert
7319*7f2fe78bSCy Schubert\end{itemize}
7320*7f2fe78bSCy Schubert
7321*7f2fe78bSCy Schubert\sphinxAtStartPar
7322*7f2fe78bSCy SchubertEach of these keys is of a specific enctype.
7323*7f2fe78bSCy Schubert
7324*7f2fe78bSCy Schubert\sphinxAtStartPar
7325*7f2fe78bSCy SchubertEach request type allows the client to submit a list of enctypes that
7326*7f2fe78bSCy Schubertit is willing to accept.  For the AS\sphinxhyphen{}REQ, this list affects both the
7327*7f2fe78bSCy Schubertsession key selection and the reply\sphinxhyphen{}encrypting key selection.  For the
7328*7f2fe78bSCy SchubertTGS\sphinxhyphen{}REQ, this list only affects the session key selection.
7329*7f2fe78bSCy Schubert
7330*7f2fe78bSCy Schubert
7331*7f2fe78bSCy Schubert\section{Session key selection}
7332*7f2fe78bSCy Schubert\label{\detokenize{admin/enctypes:session-key-selection}}\label{\detokenize{admin/enctypes:id1}}
7333*7f2fe78bSCy Schubert\sphinxAtStartPar
7334*7f2fe78bSCy SchubertThe KDC chooses the session key enctype by taking the intersection of
7335*7f2fe78bSCy Schubertits \sphinxstylestrong{permitted\_enctypes} list, the list of long\sphinxhyphen{}term keys for the
7336*7f2fe78bSCy Schubertmost recent kvno of the service, and the client’s requested list of
7337*7f2fe78bSCy Schubertenctypes.  Starting in krb5\sphinxhyphen{}1.21, all services are assumed to support
7338*7f2fe78bSCy Schubertaes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96; also, des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 and arcfour\sphinxhyphen{}hmac session
7339*7f2fe78bSCy Schubertkeys will not be issued by default.
7340*7f2fe78bSCy Schubert
7341*7f2fe78bSCy Schubert\sphinxAtStartPar
7342*7f2fe78bSCy SchubertStarting in krb5\sphinxhyphen{}1.11, it is possible to set a string attribute on a
7343*7f2fe78bSCy Schubertservice principal to control what session key enctypes the KDC may
7344*7f2fe78bSCy Schubertissue for service tickets for that principal, overriding the service’s
7345*7f2fe78bSCy Schubertlong\sphinxhyphen{}term keys and the assumption of aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 support.
7346*7f2fe78bSCy SchubertSee {\hyperref[\detokenize{admin/admin_commands/kadmin_local:set-string}]{\sphinxcrossref{\DUrole{std,std-ref}{set\_string}}}} in {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} for details.
7347*7f2fe78bSCy Schubert
7348*7f2fe78bSCy Schubert
7349*7f2fe78bSCy Schubert\section{Choosing enctypes for a service}
7350*7f2fe78bSCy Schubert\label{\detokenize{admin/enctypes:choosing-enctypes-for-a-service}}
7351*7f2fe78bSCy Schubert\sphinxAtStartPar
7352*7f2fe78bSCy SchubertGenerally, a service should have a key of the strongest
7353*7f2fe78bSCy Schubertenctype that both it and the KDC support.  If the KDC is running a
7354*7f2fe78bSCy Schubertrelease earlier than krb5\sphinxhyphen{}1.11, it is also useful to generate an
7355*7f2fe78bSCy Schubertadditional key for each enctype that the service can support.  The KDC
7356*7f2fe78bSCy Schubertwill only use the first key in the list of long\sphinxhyphen{}term keys for encrypting
7357*7f2fe78bSCy Schubertthe service ticket, but the additional long\sphinxhyphen{}term keys indicate the
7358*7f2fe78bSCy Schubertother enctypes that the service supports.
7359*7f2fe78bSCy Schubert
7360*7f2fe78bSCy Schubert\sphinxAtStartPar
7361*7f2fe78bSCy SchubertAs noted above, starting with release krb5\sphinxhyphen{}1.11, there are additional
7362*7f2fe78bSCy Schubertconfiguration settings that control session key enctype selection
7363*7f2fe78bSCy Schubertindependently of the set of long\sphinxhyphen{}term keys that the KDC has stored for
7364*7f2fe78bSCy Schuberta service principal.
7365*7f2fe78bSCy Schubert
7366*7f2fe78bSCy Schubert
7367*7f2fe78bSCy Schubert\section{Configuration variables}
7368*7f2fe78bSCy Schubert\label{\detokenize{admin/enctypes:configuration-variables}}
7369*7f2fe78bSCy Schubert\sphinxAtStartPar
7370*7f2fe78bSCy SchubertThe following \sphinxcode{\sphinxupquote{{[}libdefaults{]}}} settings in {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} will
7371*7f2fe78bSCy Schubertaffect how enctypes are chosen.
7372*7f2fe78bSCy Schubert\begin{description}
7373*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{allow\_weak\_crypto}}] \leavevmode
7374*7f2fe78bSCy Schubert\sphinxAtStartPar
7375*7f2fe78bSCy Schubertdefaults to \sphinxstyleemphasis{false} starting with krb5\sphinxhyphen{}1.8.  When \sphinxstyleemphasis{false}, removes
7376*7f2fe78bSCy Schubertweak enctypes from \sphinxstylestrong{permitted\_enctypes},
7377*7f2fe78bSCy Schubert\sphinxstylestrong{default\_tkt\_enctypes}, and \sphinxstylestrong{default\_tgs\_enctypes}.  Do not
7378*7f2fe78bSCy Schubertset this to \sphinxstyleemphasis{true} unless the use of weak enctypes is an
7379*7f2fe78bSCy Schubertacceptable risk for your environment and the weak enctypes are
7380*7f2fe78bSCy Schubertrequired for backward compatibility.
7381*7f2fe78bSCy Schubert
7382*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{allow\_des3}}] \leavevmode
7383*7f2fe78bSCy Schubert\sphinxAtStartPar
7384*7f2fe78bSCy Schubertwas added in release 1.21 and defaults to \sphinxstyleemphasis{false}.  Unless this
7385*7f2fe78bSCy Schubertflag is set to \sphinxstyleemphasis{true}, the KDC will not issue tickets with
7386*7f2fe78bSCy Schubertdes3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 session keys.  In a future release, this flag will
7387*7f2fe78bSCy Schubertcontrol whether des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 is permitted in similar fashion to
7388*7f2fe78bSCy Schubertweak enctypes.
7389*7f2fe78bSCy Schubert
7390*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{allow\_rc4}}] \leavevmode
7391*7f2fe78bSCy Schubert\sphinxAtStartPar
7392*7f2fe78bSCy Schubertwas added in release 1.21 and defaults to \sphinxstyleemphasis{false}.  Unless this
7393*7f2fe78bSCy Schubertflag is set to \sphinxstyleemphasis{true}, the KDC will not issue tickets with
7394*7f2fe78bSCy Schubertarcfour\sphinxhyphen{}hmac session keys.  In a future release, this flag will
7395*7f2fe78bSCy Schubertcontrol whether arcfour\sphinxhyphen{}hmac is permitted in similar fashion to
7396*7f2fe78bSCy Schubertweak enctypes.
7397*7f2fe78bSCy Schubert
7398*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{permitted\_enctypes}}] \leavevmode
7399*7f2fe78bSCy Schubert\sphinxAtStartPar
7400*7f2fe78bSCy Schubertcontrols the set of enctypes that a service will permit for
7401*7f2fe78bSCy Schubertsession keys and for ticket and authenticator encryption.  The KDC
7402*7f2fe78bSCy Schubertand other programs that access the Kerberos database will ignore
7403*7f2fe78bSCy Schubertkeys of non\sphinxhyphen{}permitted enctypes.  Starting in release 1.18, this
7404*7f2fe78bSCy Schubertsetting also acts as the default for \sphinxstylestrong{default\_tkt\_enctypes} and
7405*7f2fe78bSCy Schubert\sphinxstylestrong{default\_tgs\_enctypes}.
7406*7f2fe78bSCy Schubert
7407*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_tkt\_enctypes}}] \leavevmode
7408*7f2fe78bSCy Schubert\sphinxAtStartPar
7409*7f2fe78bSCy Schubertcontrols the default set of enctypes that the Kerberos client
7410*7f2fe78bSCy Schubertlibrary requests when making an AS\sphinxhyphen{}REQ.  Do not set this unless
7411*7f2fe78bSCy Schubertrequired for specific backward compatibility purposes; stale
7412*7f2fe78bSCy Schubertvalues of this setting can prevent clients from taking advantage
7413*7f2fe78bSCy Schubertof new stronger enctypes when the libraries are upgraded.
7414*7f2fe78bSCy Schubert
7415*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{default\_tgs\_enctypes}}] \leavevmode
7416*7f2fe78bSCy Schubert\sphinxAtStartPar
7417*7f2fe78bSCy Schubertcontrols the default set of enctypes that the Kerberos client
7418*7f2fe78bSCy Schubertlibrary requests when making a TGS\sphinxhyphen{}REQ.  Do not set this unless
7419*7f2fe78bSCy Schubertrequired for specific backward compatibility purposes; stale
7420*7f2fe78bSCy Schubertvalues of this setting can prevent clients from taking advantage
7421*7f2fe78bSCy Schubertof new stronger enctypes when the libraries are upgraded.
7422*7f2fe78bSCy Schubert
7423*7f2fe78bSCy Schubert\end{description}
7424*7f2fe78bSCy Schubert
7425*7f2fe78bSCy Schubert\sphinxAtStartPar
7426*7f2fe78bSCy SchubertThe following per\sphinxhyphen{}realm setting in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} affects the
7427*7f2fe78bSCy Schubertgeneration of long\sphinxhyphen{}term keys.
7428*7f2fe78bSCy Schubert\begin{description}
7429*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{supported\_enctypes}}] \leavevmode
7430*7f2fe78bSCy Schubert\sphinxAtStartPar
7431*7f2fe78bSCy Schubertcontrols the default set of enctype\sphinxhyphen{}salttype pairs that {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}}
7432*7f2fe78bSCy Schubertwill use for generating long\sphinxhyphen{}term keys, either randomly or from
7433*7f2fe78bSCy Schubertpasswords
7434*7f2fe78bSCy Schubert
7435*7f2fe78bSCy Schubert\end{description}
7436*7f2fe78bSCy Schubert
7437*7f2fe78bSCy Schubert
7438*7f2fe78bSCy Schubert\section{Enctype compatibility}
7439*7f2fe78bSCy Schubert\label{\detokenize{admin/enctypes:enctype-compatibility}}
7440*7f2fe78bSCy Schubert\sphinxAtStartPar
7441*7f2fe78bSCy SchubertSee {\hyperref[\detokenize{admin/conf_files/kdc_conf:encryption-types}]{\sphinxcrossref{\DUrole{std,std-ref}{Encryption types}}}} for additional information about enctypes.
7442*7f2fe78bSCy Schubert
7443*7f2fe78bSCy Schubert
7444*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
7445*7f2fe78bSCy Schubert\centering
7446*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|T|T|}
7447*7f2fe78bSCy Schubert\hline
7448*7f2fe78bSCy Schubert\sphinxstyletheadfamily
7449*7f2fe78bSCy Schubert\sphinxAtStartPar
7450*7f2fe78bSCy Schubertenctype
7451*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
7452*7f2fe78bSCy Schubert\sphinxAtStartPar
7453*7f2fe78bSCy Schubertweak?
7454*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
7455*7f2fe78bSCy Schubert\sphinxAtStartPar
7456*7f2fe78bSCy Schubertkrb5
7457*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
7458*7f2fe78bSCy Schubert\sphinxAtStartPar
7459*7f2fe78bSCy SchubertWindows
7460*7f2fe78bSCy Schubert\\
7461*7f2fe78bSCy Schubert\hline
7462*7f2fe78bSCy Schubert\sphinxAtStartPar
7463*7f2fe78bSCy Schubertdes\sphinxhyphen{}cbc\sphinxhyphen{}crc
7464*7f2fe78bSCy Schubert&
7465*7f2fe78bSCy Schubert\sphinxAtStartPar
7466*7f2fe78bSCy Schubertweak
7467*7f2fe78bSCy Schubert&
7468*7f2fe78bSCy Schubert\sphinxAtStartPar
7469*7f2fe78bSCy Schubert\textless{}1.18
7470*7f2fe78bSCy Schubert&
7471*7f2fe78bSCy Schubert\sphinxAtStartPar
7472*7f2fe78bSCy Schubert\textgreater{}=2000
7473*7f2fe78bSCy Schubert\\
7474*7f2fe78bSCy Schubert\hline
7475*7f2fe78bSCy Schubert\sphinxAtStartPar
7476*7f2fe78bSCy Schubertdes\sphinxhyphen{}cbc\sphinxhyphen{}md4
7477*7f2fe78bSCy Schubert&
7478*7f2fe78bSCy Schubert\sphinxAtStartPar
7479*7f2fe78bSCy Schubertweak
7480*7f2fe78bSCy Schubert&
7481*7f2fe78bSCy Schubert\sphinxAtStartPar
7482*7f2fe78bSCy Schubert\textless{}1.18
7483*7f2fe78bSCy Schubert&
7484*7f2fe78bSCy Schubert\sphinxAtStartPar
7485*7f2fe78bSCy Schubert?
7486*7f2fe78bSCy Schubert\\
7487*7f2fe78bSCy Schubert\hline
7488*7f2fe78bSCy Schubert\sphinxAtStartPar
7489*7f2fe78bSCy Schubertdes\sphinxhyphen{}cbc\sphinxhyphen{}md5
7490*7f2fe78bSCy Schubert&
7491*7f2fe78bSCy Schubert\sphinxAtStartPar
7492*7f2fe78bSCy Schubertweak
7493*7f2fe78bSCy Schubert&
7494*7f2fe78bSCy Schubert\sphinxAtStartPar
7495*7f2fe78bSCy Schubert\textless{}1.18
7496*7f2fe78bSCy Schubert&
7497*7f2fe78bSCy Schubert\sphinxAtStartPar
7498*7f2fe78bSCy Schubert\textgreater{}=2000
7499*7f2fe78bSCy Schubert\\
7500*7f2fe78bSCy Schubert\hline
7501*7f2fe78bSCy Schubert\sphinxAtStartPar
7502*7f2fe78bSCy Schubertdes3\sphinxhyphen{}cbc\sphinxhyphen{}sha1
7503*7f2fe78bSCy Schubert&
7504*7f2fe78bSCy Schubert\sphinxAtStartPar
7505*7f2fe78bSCy Schubertdeprecated
7506*7f2fe78bSCy Schubert&
7507*7f2fe78bSCy Schubert\sphinxAtStartPar
7508*7f2fe78bSCy Schubert\textgreater{}=1.1
7509*7f2fe78bSCy Schubert&
7510*7f2fe78bSCy Schubert\sphinxAtStartPar
7511*7f2fe78bSCy Schubertnone
7512*7f2fe78bSCy Schubert\\
7513*7f2fe78bSCy Schubert\hline
7514*7f2fe78bSCy Schubert\sphinxAtStartPar
7515*7f2fe78bSCy Schubertarcfour\sphinxhyphen{}hmac
7516*7f2fe78bSCy Schubert&
7517*7f2fe78bSCy Schubert\sphinxAtStartPar
7518*7f2fe78bSCy Schubertdeprecated
7519*7f2fe78bSCy Schubert&
7520*7f2fe78bSCy Schubert\sphinxAtStartPar
7521*7f2fe78bSCy Schubert\textgreater{}=1.3
7522*7f2fe78bSCy Schubert&
7523*7f2fe78bSCy Schubert\sphinxAtStartPar
7524*7f2fe78bSCy Schubert\textgreater{}=2000
7525*7f2fe78bSCy Schubert\\
7526*7f2fe78bSCy Schubert\hline
7527*7f2fe78bSCy Schubert\sphinxAtStartPar
7528*7f2fe78bSCy Schubertarcfour\sphinxhyphen{}hmac\sphinxhyphen{}exp
7529*7f2fe78bSCy Schubert&
7530*7f2fe78bSCy Schubert\sphinxAtStartPar
7531*7f2fe78bSCy Schubertweak
7532*7f2fe78bSCy Schubert&
7533*7f2fe78bSCy Schubert\sphinxAtStartPar
7534*7f2fe78bSCy Schubert\textgreater{}=1.3
7535*7f2fe78bSCy Schubert&
7536*7f2fe78bSCy Schubert\sphinxAtStartPar
7537*7f2fe78bSCy Schubert\textgreater{}=2000
7538*7f2fe78bSCy Schubert\\
7539*7f2fe78bSCy Schubert\hline
7540*7f2fe78bSCy Schubert\sphinxAtStartPar
7541*7f2fe78bSCy Schubertaes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96
7542*7f2fe78bSCy Schubert&&
7543*7f2fe78bSCy Schubert\sphinxAtStartPar
7544*7f2fe78bSCy Schubert\textgreater{}=1.3
7545*7f2fe78bSCy Schubert&
7546*7f2fe78bSCy Schubert\sphinxAtStartPar
7547*7f2fe78bSCy Schubert\textgreater{}=Vista
7548*7f2fe78bSCy Schubert\\
7549*7f2fe78bSCy Schubert\hline
7550*7f2fe78bSCy Schubert\sphinxAtStartPar
7551*7f2fe78bSCy Schubertaes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96
7552*7f2fe78bSCy Schubert&&
7553*7f2fe78bSCy Schubert\sphinxAtStartPar
7554*7f2fe78bSCy Schubert\textgreater{}=1.3
7555*7f2fe78bSCy Schubert&
7556*7f2fe78bSCy Schubert\sphinxAtStartPar
7557*7f2fe78bSCy Schubert\textgreater{}=Vista
7558*7f2fe78bSCy Schubert\\
7559*7f2fe78bSCy Schubert\hline
7560*7f2fe78bSCy Schubert\sphinxAtStartPar
7561*7f2fe78bSCy Schubertaes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha256\sphinxhyphen{}128
7562*7f2fe78bSCy Schubert&&
7563*7f2fe78bSCy Schubert\sphinxAtStartPar
7564*7f2fe78bSCy Schubert\textgreater{}=1.15
7565*7f2fe78bSCy Schubert&
7566*7f2fe78bSCy Schubert\sphinxAtStartPar
7567*7f2fe78bSCy Schubertnone
7568*7f2fe78bSCy Schubert\\
7569*7f2fe78bSCy Schubert\hline
7570*7f2fe78bSCy Schubert\sphinxAtStartPar
7571*7f2fe78bSCy Schubertaes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha384\sphinxhyphen{}192
7572*7f2fe78bSCy Schubert&&
7573*7f2fe78bSCy Schubert\sphinxAtStartPar
7574*7f2fe78bSCy Schubert\textgreater{}=1.15
7575*7f2fe78bSCy Schubert&
7576*7f2fe78bSCy Schubert\sphinxAtStartPar
7577*7f2fe78bSCy Schubertnone
7578*7f2fe78bSCy Schubert\\
7579*7f2fe78bSCy Schubert\hline
7580*7f2fe78bSCy Schubert\sphinxAtStartPar
7581*7f2fe78bSCy Schubertcamellia128\sphinxhyphen{}cts\sphinxhyphen{}cmac
7582*7f2fe78bSCy Schubert&&
7583*7f2fe78bSCy Schubert\sphinxAtStartPar
7584*7f2fe78bSCy Schubert\textgreater{}=1.9
7585*7f2fe78bSCy Schubert&
7586*7f2fe78bSCy Schubert\sphinxAtStartPar
7587*7f2fe78bSCy Schubertnone
7588*7f2fe78bSCy Schubert\\
7589*7f2fe78bSCy Schubert\hline
7590*7f2fe78bSCy Schubert\sphinxAtStartPar
7591*7f2fe78bSCy Schubertcamellia256\sphinxhyphen{}cts\sphinxhyphen{}cmac
7592*7f2fe78bSCy Schubert&&
7593*7f2fe78bSCy Schubert\sphinxAtStartPar
7594*7f2fe78bSCy Schubert\textgreater{}=1.9
7595*7f2fe78bSCy Schubert&
7596*7f2fe78bSCy Schubert\sphinxAtStartPar
7597*7f2fe78bSCy Schubertnone
7598*7f2fe78bSCy Schubert\\
7599*7f2fe78bSCy Schubert\hline
7600*7f2fe78bSCy Schubert\end{tabulary}
7601*7f2fe78bSCy Schubert\par
7602*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
7603*7f2fe78bSCy Schubert
7604*7f2fe78bSCy Schubert\sphinxAtStartPar
7605*7f2fe78bSCy Schubertkrb5 releases 1.18 and later do not support single\sphinxhyphen{}DES.  krb5 releases
7606*7f2fe78bSCy Schubert1.8 and later disable the single\sphinxhyphen{}DES enctypes by default.  Microsoft
7607*7f2fe78bSCy SchubertWindows releases Windows 7 and later disable single\sphinxhyphen{}DES enctypes by
7608*7f2fe78bSCy Schubertdefault.
7609*7f2fe78bSCy Schubert
7610*7f2fe78bSCy Schubert\sphinxAtStartPar
7611*7f2fe78bSCy Schubertkrb5 releases 1.17 and later flag deprecated encryption types
7612*7f2fe78bSCy Schubert(including \sphinxcode{\sphinxupquote{des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1}} and \sphinxcode{\sphinxupquote{arcfour\sphinxhyphen{}hmac}}) in KDC logs and
7613*7f2fe78bSCy Schubertkadmin output.  krb5 release 1.19 issues a warning during initial
7614*7f2fe78bSCy Schubertauthentication if \sphinxcode{\sphinxupquote{des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1}} is used.  Future releases will
7615*7f2fe78bSCy Schubertdisable \sphinxcode{\sphinxupquote{des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1}} by default and eventually remove support for
7616*7f2fe78bSCy Schubertit.
7617*7f2fe78bSCy Schubert
7618*7f2fe78bSCy Schubert
7619*7f2fe78bSCy Schubert\section{Migrating away from older encryption types}
7620*7f2fe78bSCy Schubert\label{\detokenize{admin/enctypes:migrating-away-from-older-encryption-types}}
7621*7f2fe78bSCy Schubert\sphinxAtStartPar
7622*7f2fe78bSCy SchubertAdministrator intervention may be required to migrate a realm away
7623*7f2fe78bSCy Schubertfrom legacy encryption types, especially if the realm was created
7624*7f2fe78bSCy Schubertusing krb5 release 1.2 or earlier.  This migration should be performed
7625*7f2fe78bSCy Schubertbefore upgrading to krb5 versions which disable or remove support for
7626*7f2fe78bSCy Schubertlegacy encryption types.
7627*7f2fe78bSCy Schubert
7628*7f2fe78bSCy Schubert\sphinxAtStartPar
7629*7f2fe78bSCy SchubertIf there is a \sphinxstylestrong{supported\_enctypes} setting in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} on
7630*7f2fe78bSCy Schubertthe KDC, make sure that it does not include weak or deprecated
7631*7f2fe78bSCy Schubertencryption types.  This will ensure that newly created keys do not use
7632*7f2fe78bSCy Schubertthose encryption types by default.
7633*7f2fe78bSCy Schubert
7634*7f2fe78bSCy Schubert\sphinxAtStartPar
7635*7f2fe78bSCy SchubertCheck the \sphinxcode{\sphinxupquote{krbtgt/REALM}} principal using the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}
7636*7f2fe78bSCy Schubert\sphinxstylestrong{getprinc} command.  If it lists a weak or deprecated encryption
7637*7f2fe78bSCy Schuberttype as the first key, it must be migrated using the procedure in
7638*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/database:changing-krbtgt-key}]{\sphinxcrossref{\DUrole{std,std-ref}{Changing the krbtgt key}}}}.
7639*7f2fe78bSCy Schubert
7640*7f2fe78bSCy Schubert\sphinxAtStartPar
7641*7f2fe78bSCy SchubertCheck the \sphinxcode{\sphinxupquote{kadmin/history}} principal, which should have only one key
7642*7f2fe78bSCy Schubertentry.  If it uses a weak or deprecated encryption type, it should be
7643*7f2fe78bSCy Schubertupgraded following the notes in {\hyperref[\detokenize{admin/database:updating-history-key}]{\sphinxcrossref{\DUrole{std,std-ref}{Updating the history key}}}}.
7644*7f2fe78bSCy Schubert
7645*7f2fe78bSCy Schubert\sphinxAtStartPar
7646*7f2fe78bSCy SchubertCheck the other kadmin principals: kadmin/changepw, kadmin/admin, and
7647*7f2fe78bSCy Schubertany kadmin/hostname principals that may exist.  These principals can
7648*7f2fe78bSCy Schubertbe upgraded with \sphinxstylestrong{change\_password \sphinxhyphen{}randkey} in kadmin.
7649*7f2fe78bSCy Schubert
7650*7f2fe78bSCy Schubert\sphinxAtStartPar
7651*7f2fe78bSCy SchubertCheck the \sphinxcode{\sphinxupquote{K/M}} entry.  If it uses a weak or deprecated encryption
7652*7f2fe78bSCy Schuberttype, it should be upgraded following the procedure in
7653*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/database:updating-master-key}]{\sphinxcrossref{\DUrole{std,std-ref}{Updating the master key}}}}.
7654*7f2fe78bSCy Schubert
7655*7f2fe78bSCy Schubert\sphinxAtStartPar
7656*7f2fe78bSCy SchubertUser and service principals using legacy encryption types can be
7657*7f2fe78bSCy Schubertenumerated with the {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} \sphinxstylestrong{tabdump keyinfo} command.
7658*7f2fe78bSCy Schubert
7659*7f2fe78bSCy Schubert\sphinxAtStartPar
7660*7f2fe78bSCy SchubertService principals can be migrated with a keytab rotation on the
7661*7f2fe78bSCy Schubertservice host, which can be accomplished using the {\hyperref[\detokenize{admin/admin_commands/k5srvutil:k5srvutil-1}]{\sphinxcrossref{\DUrole{std,std-ref}{k5srvutil}}}}
7662*7f2fe78bSCy Schubert\sphinxstylestrong{change} and \sphinxstylestrong{delold} commands.  Allow enough time for existing
7663*7f2fe78bSCy Schuberttickets to expire between the change and delold operations.
7664*7f2fe78bSCy Schubert
7665*7f2fe78bSCy Schubert\sphinxAtStartPar
7666*7f2fe78bSCy SchubertUser principals with password\sphinxhyphen{}based keys can be migrated with a
7667*7f2fe78bSCy Schubertpassword change.  The realm administrator can set a password
7668*7f2fe78bSCy Schubertexpiration date using the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} \sphinxstylestrong{modify\_principal
7669*7f2fe78bSCy Schubert\sphinxhyphen{}pwexpire} command to force a password change.
7670*7f2fe78bSCy Schubert
7671*7f2fe78bSCy Schubert\sphinxAtStartPar
7672*7f2fe78bSCy SchubertIf a legacy encryption type has not yet been disabled by default in
7673*7f2fe78bSCy Schubertthe version of krb5 running on the KDC, it can be disabled
7674*7f2fe78bSCy Schubertadministratively with the \sphinxstylestrong{permitted\_enctypes} variable.  For
7675*7f2fe78bSCy Schubertexample, setting \sphinxstylestrong{permitted\_enctypes} to \sphinxcode{\sphinxupquote{DEFAULT \sphinxhyphen{}des3 \sphinxhyphen{}rc4}} will
7676*7f2fe78bSCy Schubertcause any database keys of the triple\sphinxhyphen{}DES and RC4 encryption types to
7677*7f2fe78bSCy Schubertbe ignored.
7678*7f2fe78bSCy Schubert
7679*7f2fe78bSCy Schubert
7680*7f2fe78bSCy Schubert\chapter{HTTPS proxy configuration}
7681*7f2fe78bSCy Schubert\label{\detokenize{admin/https:https-proxy-configuration}}\label{\detokenize{admin/https:https}}\label{\detokenize{admin/https::doc}}
7682*7f2fe78bSCy Schubert\sphinxAtStartPar
7683*7f2fe78bSCy SchubertIn addition to being able to use UDP or TCP to communicate directly
7684*7f2fe78bSCy Schubertwith a KDC as is outlined in RFC4120, and with kpasswd services in a
7685*7f2fe78bSCy Schubertsimilar fashion, the client libraries can attempt to use an HTTPS
7686*7f2fe78bSCy Schubertproxy server to communicate with a KDC or kpasswd service, using the
7687*7f2fe78bSCy Schubertprotocol outlined in {[}MS\sphinxhyphen{}KKDCP{]}.
7688*7f2fe78bSCy Schubert
7689*7f2fe78bSCy Schubert\sphinxAtStartPar
7690*7f2fe78bSCy SchubertCommunicating with a KDC through an HTTPS proxy allows clients to
7691*7f2fe78bSCy Schubertcontact servers when network firewalls might otherwise prevent them
7692*7f2fe78bSCy Schubertfrom doing so.  The use of TLS also encrypts all traffic between the
7693*7f2fe78bSCy Schubertclients and the KDC, preventing observers from conducting password
7694*7f2fe78bSCy Schubertdictionary attacks or from observing the client and server principals
7695*7f2fe78bSCy Schubertbeing authenticated, at additional computational cost to both clients
7696*7f2fe78bSCy Schubertand servers.
7697*7f2fe78bSCy Schubert
7698*7f2fe78bSCy Schubert\sphinxAtStartPar
7699*7f2fe78bSCy SchubertAn HTTPS proxy server is provided as a feature in some versions of
7700*7f2fe78bSCy SchubertMicrosoft Windows Server, and a WSGI implementation named \sphinxtitleref{kdcproxy}
7701*7f2fe78bSCy Schubertis available in the python package index.
7702*7f2fe78bSCy Schubert
7703*7f2fe78bSCy Schubert
7704*7f2fe78bSCy Schubert\section{Configuring the clients}
7705*7f2fe78bSCy Schubert\label{\detokenize{admin/https:configuring-the-clients}}
7706*7f2fe78bSCy Schubert\sphinxAtStartPar
7707*7f2fe78bSCy SchubertTo use an HTTPS proxy, a client host must trust the CA which issued
7708*7f2fe78bSCy Schubertthat proxy’s SSL certificate.  If that CA’s certificate is not in the
7709*7f2fe78bSCy Schubertsystem\sphinxhyphen{}wide default set of trusted certificates, configure the
7710*7f2fe78bSCy Schubertfollowing relation in the client host’s {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} file in
7711*7f2fe78bSCy Schubertthe appropriate {\hyperref[\detokenize{admin/conf_files/krb5_conf:realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection:
7712*7f2fe78bSCy Schubert
7713*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7714*7f2fe78bSCy Schubert\PYG{n}{http\PYGZus{}anchors} \PYG{o}{=} \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{/}\PYG{n}{cacert}\PYG{o}{.}\PYG{n}{pem}
7715*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7716*7f2fe78bSCy Schubert
7717*7f2fe78bSCy Schubert\sphinxAtStartPar
7718*7f2fe78bSCy SchubertAdjust the pathname to match the path of the file which contains a
7719*7f2fe78bSCy Schubertcopy of the CA’s certificate.  The \sphinxtitleref{http\_anchors} option is documented
7720*7f2fe78bSCy Schubertmore fully in {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.
7721*7f2fe78bSCy Schubert
7722*7f2fe78bSCy Schubert\sphinxAtStartPar
7723*7f2fe78bSCy SchubertConfigure the client to access the KDC and kpasswd service by
7724*7f2fe78bSCy Schubertspecifying their locations in its {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} file in the form
7725*7f2fe78bSCy Schubertof HTTPS URLs for the proxy server:
7726*7f2fe78bSCy Schubert
7727*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7728*7f2fe78bSCy Schubert\PYG{n}{kdc} \PYG{o}{=} \PYG{n}{https}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{server}\PYG{o}{.}\PYG{n}{fqdn}\PYG{o}{/}\PYG{n}{KdcProxy}
7729*7f2fe78bSCy Schubert\PYG{n}{kpasswd\PYGZus{}server} \PYG{o}{=} \PYG{n}{https}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{server}\PYG{o}{.}\PYG{n}{fqdn}\PYG{o}{/}\PYG{n}{KdcProxy}
7730*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7731*7f2fe78bSCy Schubert
7732*7f2fe78bSCy Schubert\sphinxAtStartPar
7733*7f2fe78bSCy SchubertIf the proxy and client are properly configured, client commands such
7734*7f2fe78bSCy Schubertas \sphinxcode{\sphinxupquote{kinit}}, \sphinxcode{\sphinxupquote{kvno}}, and \sphinxcode{\sphinxupquote{kpasswd}} should all function normally.
7735*7f2fe78bSCy Schubert
7736*7f2fe78bSCy Schubert
7737*7f2fe78bSCy Schubert\chapter{Authentication indicators}
7738*7f2fe78bSCy Schubert\label{\detokenize{admin/auth_indicator:authentication-indicators}}\label{\detokenize{admin/auth_indicator:auth-indicator}}\label{\detokenize{admin/auth_indicator::doc}}
7739*7f2fe78bSCy Schubert\sphinxAtStartPar
7740*7f2fe78bSCy SchubertAs of release 1.14, the KDC can be configured to annotate tickets if
7741*7f2fe78bSCy Schubertthe client authenticated using a stronger preauthentication mechanism
7742*7f2fe78bSCy Schubertsuch as {\hyperref[\detokenize{admin/pkinit:pkinit}]{\sphinxcrossref{\DUrole{std,std-ref}{PKINIT}}}} or {\hyperref[\detokenize{admin/otp:otp-preauth}]{\sphinxcrossref{\DUrole{std,std-ref}{OTP}}}}.  These
7743*7f2fe78bSCy Schubertannotations are called “authentication indicators.”  Service
7744*7f2fe78bSCy Schubertprincipals can be configured to require particular authentication
7745*7f2fe78bSCy Schubertindicators in order to authenticate to that service.  An
7746*7f2fe78bSCy Schubertauthentication indicator value can be any string chosen by the KDC
7747*7f2fe78bSCy Schubertadministrator; there are no pre\sphinxhyphen{}set values.
7748*7f2fe78bSCy Schubert
7749*7f2fe78bSCy Schubert\sphinxAtStartPar
7750*7f2fe78bSCy SchubertTo use authentication indicators with PKINIT or OTP, first configure
7751*7f2fe78bSCy Schubertthe KDC to include an indicator when that preauthentication mechanism
7752*7f2fe78bSCy Schubertis used.  For PKINIT, use the \sphinxstylestrong{pkinit\_indicator} variable in
7753*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.  For OTP, use the \sphinxstylestrong{indicator} variable in the
7754*7f2fe78bSCy Schuberttoken type definition, or specify the indicators in the \sphinxstylestrong{otp} user
7755*7f2fe78bSCy Schubertstring as described in {\hyperref[\detokenize{admin/otp:otp-preauth}]{\sphinxcrossref{\DUrole{std,std-ref}{OTP Preauthentication}}}}.
7756*7f2fe78bSCy Schubert
7757*7f2fe78bSCy Schubert\sphinxAtStartPar
7758*7f2fe78bSCy SchubertTo require an indicator to be present in order to authenticate to a
7759*7f2fe78bSCy Schubertservice principal, set the \sphinxstylestrong{require\_auth} string attribute on the
7760*7f2fe78bSCy Schubertprincipal to the indicator value to be required.  If you wish to allow
7761*7f2fe78bSCy Schubertone of several indicators to be accepted, you can specify multiple
7762*7f2fe78bSCy Schubertindicator values separated by spaces.
7763*7f2fe78bSCy Schubert
7764*7f2fe78bSCy Schubert\sphinxAtStartPar
7765*7f2fe78bSCy SchubertFor example, a realm could be configured to set the authentication
7766*7f2fe78bSCy Schubertindicator value “strong” when PKINIT is used to authenticate, using a
7767*7f2fe78bSCy Schubertsetting in the {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-realms}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}realms{]}}}}} subsection:
7768*7f2fe78bSCy Schubert
7769*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7770*7f2fe78bSCy Schubert\PYG{n}{pkinit\PYGZus{}indicator} \PYG{o}{=} \PYG{n}{strong}
7771*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7772*7f2fe78bSCy Schubert
7773*7f2fe78bSCy Schubert\sphinxAtStartPar
7774*7f2fe78bSCy SchubertA service principal could be configured to require the “strong”
7775*7f2fe78bSCy Schubertauthentication indicator value:
7776*7f2fe78bSCy Schubert
7777*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7778*7f2fe78bSCy Schubert\PYGZdl{} kadmin setstr host/high.value.server require\PYGZus{}auth strong
7779*7f2fe78bSCy SchubertPassword for user/admin@KRBTEST.COM:
7780*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7781*7f2fe78bSCy Schubert
7782*7f2fe78bSCy Schubert\sphinxAtStartPar
7783*7f2fe78bSCy SchubertA user who authenticates with PKINIT would be able to obtain a ticket
7784*7f2fe78bSCy Schubertfor the service principal:
7785*7f2fe78bSCy Schubert
7786*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7787*7f2fe78bSCy Schubert\PYGZdl{} kinit \PYGZhy{}X X509\PYGZus{}user\PYGZus{}identity=FILE:/my/cert.pem,/my/key.pem user
7788*7f2fe78bSCy Schubert\PYGZdl{} kvno host/high.value.server
7789*7f2fe78bSCy Schuberthost/high.value.server@KRBTEST.COM: kvno = 1
7790*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7791*7f2fe78bSCy Schubert
7792*7f2fe78bSCy Schubert\sphinxAtStartPar
7793*7f2fe78bSCy Schubertbut a user who authenticates with a password would not:
7794*7f2fe78bSCy Schubert
7795*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
7796*7f2fe78bSCy Schubert\PYGZdl{} kinit user
7797*7f2fe78bSCy SchubertPassword for user@KRBTEST.COM:
7798*7f2fe78bSCy Schubert\PYGZdl{} kvno host/high.value.server
7799*7f2fe78bSCy Schubertkvno: KDC policy rejects request while getting credentials for
7800*7f2fe78bSCy Schubert  host/high.value.server@KRBTEST.COM
7801*7f2fe78bSCy Schubert\end{sphinxVerbatim}
7802*7f2fe78bSCy Schubert
7803*7f2fe78bSCy Schubert\sphinxAtStartPar
7804*7f2fe78bSCy SchubertGSSAPI server applications can inspect authentication indicators
7805*7f2fe78bSCy Schubertthrough the \DUrole{xref,std,std-ref}{auth\sphinxhyphen{}indicators} name
7806*7f2fe78bSCy Schubertattribute.
7807*7f2fe78bSCy Schubert
7808*7f2fe78bSCy Schubert
7809*7f2fe78bSCy Schubert\chapter{Administration  programs}
7810*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/index:administration-programs}}\label{\detokenize{admin/admin_commands/index::doc}}
7811*7f2fe78bSCy Schubert
7812*7f2fe78bSCy Schubert\section{kadmin}
7813*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:kadmin}}\label{\detokenize{admin/admin_commands/kadmin_local:kadmin-1}}\label{\detokenize{admin/admin_commands/kadmin_local::doc}}
7814*7f2fe78bSCy Schubert
7815*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
7816*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:synopsis}}\phantomsection\label{\detokenize{admin/admin_commands/kadmin_local:kadmin-synopsis}}
7817*7f2fe78bSCy Schubert\sphinxAtStartPar
7818*7f2fe78bSCy Schubert\sphinxstylestrong{kadmin}
7819*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}O}|\sphinxstylestrong{\sphinxhyphen{}N}{]}
7820*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}{]}
7821*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{principal}{]}
7822*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}q} \sphinxstyleemphasis{query}{]}
7823*7f2fe78bSCy Schubert{[}{[}\sphinxstylestrong{\sphinxhyphen{}c} \sphinxstyleemphasis{cache\_name}{]}|{[}\sphinxstylestrong{\sphinxhyphen{}k} {[}\sphinxstylestrong{\sphinxhyphen{}t} \sphinxstyleemphasis{keytab}{]}{]}|\sphinxstylestrong{\sphinxhyphen{}n}{]}
7824*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}w} \sphinxstyleemphasis{password}{]}
7825*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}s} \sphinxstyleemphasis{admin\_server}{[}:\sphinxstyleemphasis{port}{]}{]}
7826*7f2fe78bSCy Schubert{[}command args…{]}
7827*7f2fe78bSCy Schubert
7828*7f2fe78bSCy Schubert\sphinxAtStartPar
7829*7f2fe78bSCy Schubert\sphinxstylestrong{kadmin.local}
7830*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}{]}
7831*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{principal}{]}
7832*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}q} \sphinxstyleemphasis{query}{]}
7833*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}d} \sphinxstyleemphasis{dbname}{]}
7834*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{enc}:\sphinxstyleemphasis{salt} …{]}
7835*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}m}{]}
7836*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args}{]}
7837*7f2fe78bSCy Schubert{[}command args…{]}
7838*7f2fe78bSCy Schubert
7839*7f2fe78bSCy Schubert
7840*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
7841*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:description}}
7842*7f2fe78bSCy Schubert\sphinxAtStartPar
7843*7f2fe78bSCy Schubertkadmin and kadmin.local are command\sphinxhyphen{}line interfaces to the Kerberos V5
7844*7f2fe78bSCy Schubertadministration system.  They provide nearly identical functionalities;
7845*7f2fe78bSCy Schubertthe difference is that kadmin.local directly accesses the KDC
7846*7f2fe78bSCy Schubertdatabase, while kadmin performs operations using {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}}.
7847*7f2fe78bSCy SchubertExcept as explicitly noted otherwise, this man page will use “kadmin”
7848*7f2fe78bSCy Schubertto refer to both versions.  kadmin provides for the maintenance of
7849*7f2fe78bSCy SchubertKerberos principals, password policies, and service key tables
7850*7f2fe78bSCy Schubert(keytabs).
7851*7f2fe78bSCy Schubert
7852*7f2fe78bSCy Schubert\sphinxAtStartPar
7853*7f2fe78bSCy SchubertThe remote kadmin client uses Kerberos to authenticate to kadmind
7854*7f2fe78bSCy Schubertusing the service principal \sphinxcode{\sphinxupquote{kadmin/admin}} or \sphinxcode{\sphinxupquote{kadmin/ADMINHOST}}
7855*7f2fe78bSCy Schubert(where \sphinxstyleemphasis{ADMINHOST} is the fully\sphinxhyphen{}qualified hostname of the admin
7856*7f2fe78bSCy Schubertserver).  If the credentials cache contains a ticket for one of these
7857*7f2fe78bSCy Schubertprincipals, and the \sphinxstylestrong{\sphinxhyphen{}c} credentials\_cache option is specified, that
7858*7f2fe78bSCy Schubertticket is used to authenticate to kadmind.  Otherwise, the \sphinxstylestrong{\sphinxhyphen{}p} and
7859*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}k} options are used to specify the client Kerberos principal name
7860*7f2fe78bSCy Schubertused to authenticate.  Once kadmin has determined the principal name,
7861*7f2fe78bSCy Schubertit requests a service ticket from the KDC, and uses that service
7862*7f2fe78bSCy Schubertticket to authenticate to kadmind.
7863*7f2fe78bSCy Schubert
7864*7f2fe78bSCy Schubert\sphinxAtStartPar
7865*7f2fe78bSCy SchubertSince kadmin.local directly accesses the KDC database, it usually must
7866*7f2fe78bSCy Schubertbe run directly on the primary KDC with sufficient permissions to read
7867*7f2fe78bSCy Schubertthe KDC database.  If the KDC database uses the LDAP database module,
7868*7f2fe78bSCy Schubertkadmin.local can be run on any host which can access the LDAP server.
7869*7f2fe78bSCy Schubert
7870*7f2fe78bSCy Schubert
7871*7f2fe78bSCy Schubert\subsection{OPTIONS}
7872*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:options}}\phantomsection\label{\detokenize{admin/admin_commands/kadmin_local:kadmin-options}}\begin{description}
7873*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}}] \leavevmode
7874*7f2fe78bSCy Schubert\sphinxAtStartPar
7875*7f2fe78bSCy SchubertUse \sphinxstyleemphasis{realm} as the default database realm.
7876*7f2fe78bSCy Schubert
7877*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{principal}}] \leavevmode
7878*7f2fe78bSCy Schubert\sphinxAtStartPar
7879*7f2fe78bSCy SchubertUse \sphinxstyleemphasis{principal} to authenticate.  Otherwise, kadmin will append
7880*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/admin}} to the primary principal name of the default ccache,
7881*7f2fe78bSCy Schubertthe value of the \sphinxstylestrong{USER} environment variable, or the username as
7882*7f2fe78bSCy Schubertobtained with getpwuid, in order of preference.
7883*7f2fe78bSCy Schubert
7884*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}k}}] \leavevmode
7885*7f2fe78bSCy Schubert\sphinxAtStartPar
7886*7f2fe78bSCy SchubertUse a keytab to decrypt the KDC response instead of prompting for
7887*7f2fe78bSCy Schuberta password.  In this case, the default principal will be
7888*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{host/hostname}}.  If there is no keytab specified with the
7889*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}t} option, then the default keytab will be used.
7890*7f2fe78bSCy Schubert
7891*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}t} \sphinxstyleemphasis{keytab}}] \leavevmode
7892*7f2fe78bSCy Schubert\sphinxAtStartPar
7893*7f2fe78bSCy SchubertUse \sphinxstyleemphasis{keytab} to decrypt the KDC response.  This can only be used
7894*7f2fe78bSCy Schubertwith the \sphinxstylestrong{\sphinxhyphen{}k} option.
7895*7f2fe78bSCy Schubert
7896*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}n}}] \leavevmode
7897*7f2fe78bSCy Schubert\sphinxAtStartPar
7898*7f2fe78bSCy SchubertRequests anonymous processing.  Two types of anonymous principals
7899*7f2fe78bSCy Schubertare supported.  For fully anonymous Kerberos, configure PKINIT on
7900*7f2fe78bSCy Schubertthe KDC and configure \sphinxstylestrong{pkinit\_anchors} in the client’s
7901*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.  Then use the \sphinxstylestrong{\sphinxhyphen{}n} option with a principal
7902*7f2fe78bSCy Schubertof the form \sphinxcode{\sphinxupquote{@REALM}} (an empty principal name followed by the
7903*7f2fe78bSCy Schubertat\sphinxhyphen{}sign and a realm name).  If permitted by the KDC, an anonymous
7904*7f2fe78bSCy Schubertticket will be returned.  A second form of anonymous tickets is
7905*7f2fe78bSCy Schubertsupported; these realm\sphinxhyphen{}exposed tickets hide the identity of the
7906*7f2fe78bSCy Schubertclient but not the client’s realm.  For this mode, use \sphinxcode{\sphinxupquote{kinit
7907*7f2fe78bSCy Schubert\sphinxhyphen{}n}} with a normal principal name.  If supported by the KDC, the
7908*7f2fe78bSCy Schubertprincipal (but not realm) will be replaced by the anonymous
7909*7f2fe78bSCy Schubertprincipal.  As of release 1.8, the MIT Kerberos KDC only supports
7910*7f2fe78bSCy Schubertfully anonymous operation.
7911*7f2fe78bSCy Schubert
7912*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}c} \sphinxstyleemphasis{credentials\_cache}}] \leavevmode
7913*7f2fe78bSCy Schubert\sphinxAtStartPar
7914*7f2fe78bSCy SchubertUse \sphinxstyleemphasis{credentials\_cache} as the credentials cache.  The cache
7915*7f2fe78bSCy Schubertshould contain a service ticket for the \sphinxcode{\sphinxupquote{kadmin/admin}} or
7916*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{kadmin/ADMINHOST}} (where \sphinxstyleemphasis{ADMINHOST} is the fully\sphinxhyphen{}qualified
7917*7f2fe78bSCy Schuberthostname of the admin server) service; it can be acquired with the
7918*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{kinit(1)} program.  If this option is not specified, kadmin
7919*7f2fe78bSCy Schubertrequests a new service ticket from the KDC, and stores it in its
7920*7f2fe78bSCy Schubertown temporary ccache.
7921*7f2fe78bSCy Schubert
7922*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}w} \sphinxstyleemphasis{password}}] \leavevmode
7923*7f2fe78bSCy Schubert\sphinxAtStartPar
7924*7f2fe78bSCy SchubertUse \sphinxstyleemphasis{password} instead of prompting for one.  Use this option with
7925*7f2fe78bSCy Schubertcare, as it may expose the password to other users on the system
7926*7f2fe78bSCy Schubertvia the process list.
7927*7f2fe78bSCy Schubert
7928*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}q} \sphinxstyleemphasis{query}}] \leavevmode
7929*7f2fe78bSCy Schubert\sphinxAtStartPar
7930*7f2fe78bSCy SchubertPerform the specified query and then exit.
7931*7f2fe78bSCy Schubert
7932*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}d} \sphinxstyleemphasis{dbname}}] \leavevmode
7933*7f2fe78bSCy Schubert\sphinxAtStartPar
7934*7f2fe78bSCy SchubertSpecifies the name of the KDC database.  This option does not
7935*7f2fe78bSCy Schubertapply to the LDAP database module.
7936*7f2fe78bSCy Schubert
7937*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}s} \sphinxstyleemphasis{admin\_server}{[}:\sphinxstyleemphasis{port}{]}}] \leavevmode
7938*7f2fe78bSCy Schubert\sphinxAtStartPar
7939*7f2fe78bSCy SchubertSpecifies the admin server which kadmin should contact.
7940*7f2fe78bSCy Schubert
7941*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}m}}] \leavevmode
7942*7f2fe78bSCy Schubert\sphinxAtStartPar
7943*7f2fe78bSCy SchubertIf using kadmin.local, prompt for the database master password
7944*7f2fe78bSCy Schubertinstead of reading it from a stash file.
7945*7f2fe78bSCy Schubert
7946*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}e} “\sphinxstyleemphasis{enc}:\sphinxstyleemphasis{salt} …”}] \leavevmode
7947*7f2fe78bSCy Schubert\sphinxAtStartPar
7948*7f2fe78bSCy SchubertSets the keysalt list to be used for any new keys created.  See
7949*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:keysalt-lists}]{\sphinxcrossref{\DUrole{std,std-ref}{Keysalt lists}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} for a list of possible
7950*7f2fe78bSCy Schubertvalues.
7951*7f2fe78bSCy Schubert
7952*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}O}}] \leavevmode
7953*7f2fe78bSCy Schubert\sphinxAtStartPar
7954*7f2fe78bSCy SchubertForce use of old AUTH\_GSSAPI authentication flavor.
7955*7f2fe78bSCy Schubert
7956*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}N}}] \leavevmode
7957*7f2fe78bSCy Schubert\sphinxAtStartPar
7958*7f2fe78bSCy SchubertPrevent fallback to AUTH\_GSSAPI authentication flavor.
7959*7f2fe78bSCy Schubert
7960*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args}}] \leavevmode
7961*7f2fe78bSCy Schubert\sphinxAtStartPar
7962*7f2fe78bSCy SchubertSpecifies the database specific arguments.  See the next section
7963*7f2fe78bSCy Schubertfor supported options.
7964*7f2fe78bSCy Schubert
7965*7f2fe78bSCy Schubert\end{description}
7966*7f2fe78bSCy Schubert
7967*7f2fe78bSCy Schubert\sphinxAtStartPar
7968*7f2fe78bSCy SchubertStarting with release 1.14, if any command\sphinxhyphen{}line arguments remain after
7969*7f2fe78bSCy Schubertthe options, they will be treated as a single query to be executed.
7970*7f2fe78bSCy SchubertThis mode of operation is intended for scripts and behaves differently
7971*7f2fe78bSCy Schubertfrom the interactive mode in several respects:
7972*7f2fe78bSCy Schubert\begin{itemize}
7973*7f2fe78bSCy Schubert\item {}
7974*7f2fe78bSCy Schubert\sphinxAtStartPar
7975*7f2fe78bSCy SchubertQuery arguments are split by the shell, not by kadmin.
7976*7f2fe78bSCy Schubert
7977*7f2fe78bSCy Schubert\item {}
7978*7f2fe78bSCy Schubert\sphinxAtStartPar
7979*7f2fe78bSCy SchubertInformational and warning messages are suppressed.  Error messages
7980*7f2fe78bSCy Schubertand query output (e.g. for \sphinxstylestrong{get\_principal}) will still be
7981*7f2fe78bSCy Schubertdisplayed.
7982*7f2fe78bSCy Schubert
7983*7f2fe78bSCy Schubert\item {}
7984*7f2fe78bSCy Schubert\sphinxAtStartPar
7985*7f2fe78bSCy SchubertConfirmation prompts are disabled (as if \sphinxstylestrong{\sphinxhyphen{}force} was given).
7986*7f2fe78bSCy SchubertPassword prompts will still be issued as required.
7987*7f2fe78bSCy Schubert
7988*7f2fe78bSCy Schubert\item {}
7989*7f2fe78bSCy Schubert\sphinxAtStartPar
7990*7f2fe78bSCy SchubertThe exit status will be non\sphinxhyphen{}zero if the query fails.
7991*7f2fe78bSCy Schubert
7992*7f2fe78bSCy Schubert\end{itemize}
7993*7f2fe78bSCy Schubert
7994*7f2fe78bSCy Schubert\sphinxAtStartPar
7995*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}q} option does not carry these behavior differences; the query
7996*7f2fe78bSCy Schubertwill be processed as if it was entered interactively.  The \sphinxstylestrong{\sphinxhyphen{}q}
7997*7f2fe78bSCy Schubertoption cannot be used in combination with a query in the remaining
7998*7f2fe78bSCy Schubertarguments.
7999*7f2fe78bSCy Schubert
8000*7f2fe78bSCy Schubert
8001*7f2fe78bSCy Schubert\subsection{DATABASE OPTIONS}
8002*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:database-options}}\label{\detokenize{admin/admin_commands/kadmin_local:dboptions}}
8003*7f2fe78bSCy Schubert\sphinxAtStartPar
8004*7f2fe78bSCy SchubertDatabase options can be used to override database\sphinxhyphen{}specific defaults.
8005*7f2fe78bSCy SchubertSupported options for the DB2 module are:
8006*7f2fe78bSCy Schubert\begin{quote}
8007*7f2fe78bSCy Schubert\begin{description}
8008*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x dbname=}*filename*}] \leavevmode
8009*7f2fe78bSCy Schubert\sphinxAtStartPar
8010*7f2fe78bSCy SchubertSpecifies the base filename of the DB2 database.
8011*7f2fe78bSCy Schubert
8012*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x lockiter}}] \leavevmode
8013*7f2fe78bSCy Schubert\sphinxAtStartPar
8014*7f2fe78bSCy SchubertMake iteration operations hold the lock for the duration of
8015*7f2fe78bSCy Schubertthe entire operation, rather than temporarily releasing the
8016*7f2fe78bSCy Schubertlock while handling each principal.  This is the default
8017*7f2fe78bSCy Schubertbehavior, but this option exists to allow command line
8018*7f2fe78bSCy Schubertoverride of a {[}dbmodules{]} setting.  First introduced in
8019*7f2fe78bSCy Schubertrelease 1.13.
8020*7f2fe78bSCy Schubert
8021*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x unlockiter}}] \leavevmode
8022*7f2fe78bSCy Schubert\sphinxAtStartPar
8023*7f2fe78bSCy SchubertMake iteration operations unlock the database for each
8024*7f2fe78bSCy Schubertprincipal, instead of holding the lock for the duration of the
8025*7f2fe78bSCy Schubertentire operation.  First introduced in release 1.13.
8026*7f2fe78bSCy Schubert
8027*7f2fe78bSCy Schubert\end{description}
8028*7f2fe78bSCy Schubert\end{quote}
8029*7f2fe78bSCy Schubert
8030*7f2fe78bSCy Schubert\sphinxAtStartPar
8031*7f2fe78bSCy SchubertSupported options for the LDAP module are:
8032*7f2fe78bSCy Schubert\begin{quote}
8033*7f2fe78bSCy Schubert\begin{description}
8034*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x host=}\sphinxstyleemphasis{ldapuri}}] \leavevmode
8035*7f2fe78bSCy Schubert\sphinxAtStartPar
8036*7f2fe78bSCy SchubertSpecifies the LDAP server to connect to by a LDAP URI.
8037*7f2fe78bSCy Schubert
8038*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x binddn=}\sphinxstyleemphasis{bind\_dn}}] \leavevmode
8039*7f2fe78bSCy Schubert\sphinxAtStartPar
8040*7f2fe78bSCy SchubertSpecifies the DN used to bind to the LDAP server.
8041*7f2fe78bSCy Schubert
8042*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x bindpwd=}\sphinxstyleemphasis{password}}] \leavevmode
8043*7f2fe78bSCy Schubert\sphinxAtStartPar
8044*7f2fe78bSCy SchubertSpecifies the password or SASL secret used to bind to the LDAP
8045*7f2fe78bSCy Schubertserver.  Using this option may expose the password to other
8046*7f2fe78bSCy Schubertusers on the system via the process list; to avoid this,
8047*7f2fe78bSCy Schubertinstead stash the password using the \sphinxstylestrong{stashsrvpw} command of
8048*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_ldap\_util}}}}.
8049*7f2fe78bSCy Schubert
8050*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x sasl\_mech=}\sphinxstyleemphasis{mechanism}}] \leavevmode
8051*7f2fe78bSCy Schubert\sphinxAtStartPar
8052*7f2fe78bSCy SchubertSpecifies the SASL mechanism used to bind to the LDAP server.
8053*7f2fe78bSCy SchubertThe bind DN is ignored if a SASL mechanism is used.  New in
8054*7f2fe78bSCy Schubertrelease 1.13.
8055*7f2fe78bSCy Schubert
8056*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x sasl\_authcid=}\sphinxstyleemphasis{name}}] \leavevmode
8057*7f2fe78bSCy Schubert\sphinxAtStartPar
8058*7f2fe78bSCy SchubertSpecifies the authentication name used when binding to the
8059*7f2fe78bSCy SchubertLDAP server with a SASL mechanism, if the mechanism requires
8060*7f2fe78bSCy Schubertone.  New in release 1.13.
8061*7f2fe78bSCy Schubert
8062*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x sasl\_authzid=}\sphinxstyleemphasis{name}}] \leavevmode
8063*7f2fe78bSCy Schubert\sphinxAtStartPar
8064*7f2fe78bSCy SchubertSpecifies the authorization name used when binding to the LDAP
8065*7f2fe78bSCy Schubertserver with a SASL mechanism.  New in release 1.13.
8066*7f2fe78bSCy Schubert
8067*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x sasl\_realm=}\sphinxstyleemphasis{realm}}] \leavevmode
8068*7f2fe78bSCy Schubert\sphinxAtStartPar
8069*7f2fe78bSCy SchubertSpecifies the realm used when binding to the LDAP server with
8070*7f2fe78bSCy Schuberta SASL mechanism, if the mechanism uses one.  New in release
8071*7f2fe78bSCy Schubert1.13.
8072*7f2fe78bSCy Schubert
8073*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x debug=}\sphinxstyleemphasis{level}}] \leavevmode
8074*7f2fe78bSCy Schubert\sphinxAtStartPar
8075*7f2fe78bSCy Schubertsets the OpenLDAP client library debug level.  \sphinxstyleemphasis{level} is an
8076*7f2fe78bSCy Schubertinteger to be interpreted by the library.  Debugging messages
8077*7f2fe78bSCy Schubertare printed to standard error.  New in release 1.12.
8078*7f2fe78bSCy Schubert
8079*7f2fe78bSCy Schubert\end{description}
8080*7f2fe78bSCy Schubert\end{quote}
8081*7f2fe78bSCy Schubert
8082*7f2fe78bSCy Schubert
8083*7f2fe78bSCy Schubert\subsection{COMMANDS}
8084*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:commands}}
8085*7f2fe78bSCy Schubert\sphinxAtStartPar
8086*7f2fe78bSCy SchubertWhen using the remote client, available commands may be restricted
8087*7f2fe78bSCy Schubertaccording to the privileges specified in the {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}} file
8088*7f2fe78bSCy Schuberton the admin server.
8089*7f2fe78bSCy Schubert
8090*7f2fe78bSCy Schubert
8091*7f2fe78bSCy Schubert\subsubsection{add\_principal}
8092*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:add-principal}}\label{\detokenize{admin/admin_commands/kadmin_local:id1}}\begin{quote}
8093*7f2fe78bSCy Schubert
8094*7f2fe78bSCy Schubert\sphinxAtStartPar
8095*7f2fe78bSCy Schubert\sphinxstylestrong{add\_principal} {[}\sphinxstyleemphasis{options}{]} \sphinxstyleemphasis{newprinc}
8096*7f2fe78bSCy Schubert\end{quote}
8097*7f2fe78bSCy Schubert
8098*7f2fe78bSCy Schubert\sphinxAtStartPar
8099*7f2fe78bSCy SchubertCreates the principal \sphinxstyleemphasis{newprinc}, prompting twice for a password.  If
8100*7f2fe78bSCy Schubertno password policy is specified with the \sphinxstylestrong{\sphinxhyphen{}policy} option, and the
8101*7f2fe78bSCy Schubertpolicy named \sphinxcode{\sphinxupquote{default}} is assigned to the principal if it exists.
8102*7f2fe78bSCy SchubertHowever, creating a policy named \sphinxcode{\sphinxupquote{default}} will not automatically
8103*7f2fe78bSCy Schubertassign this policy to previously existing principals.  This policy
8104*7f2fe78bSCy Schubertassignment can be suppressed with the \sphinxstylestrong{\sphinxhyphen{}clearpolicy} option.
8105*7f2fe78bSCy Schubert
8106*7f2fe78bSCy Schubert\sphinxAtStartPar
8107*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{add} privilege.
8108*7f2fe78bSCy Schubert
8109*7f2fe78bSCy Schubert\sphinxAtStartPar
8110*7f2fe78bSCy SchubertAliases: \sphinxstylestrong{addprinc}, \sphinxstylestrong{ank}
8111*7f2fe78bSCy Schubert
8112*7f2fe78bSCy Schubert\sphinxAtStartPar
8113*7f2fe78bSCy SchubertOptions:
8114*7f2fe78bSCy Schubert\begin{description}
8115*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}expire} \sphinxstyleemphasis{expdate}}] \leavevmode
8116*7f2fe78bSCy Schubert\sphinxAtStartPar
8117*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) The expiration date of the principal.
8118*7f2fe78bSCy Schubert
8119*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}pwexpire} \sphinxstyleemphasis{pwexpdate}}] \leavevmode
8120*7f2fe78bSCy Schubert\sphinxAtStartPar
8121*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) The password expiration date.
8122*7f2fe78bSCy Schubert
8123*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxlife} \sphinxstyleemphasis{maxlife}}] \leavevmode
8124*7f2fe78bSCy Schubert\sphinxAtStartPar
8125*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} or \DUrole{xref,std,std-ref}{getdate} string) The maximum ticket life
8126*7f2fe78bSCy Schubertfor the principal.
8127*7f2fe78bSCy Schubert
8128*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxrenewlife} \sphinxstyleemphasis{maxrenewlife}}] \leavevmode
8129*7f2fe78bSCy Schubert\sphinxAtStartPar
8130*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} or \DUrole{xref,std,std-ref}{getdate} string) The maximum renewable
8131*7f2fe78bSCy Schubertlife of tickets for the principal.
8132*7f2fe78bSCy Schubert
8133*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}kvno} \sphinxstyleemphasis{kvno}}] \leavevmode
8134*7f2fe78bSCy Schubert\sphinxAtStartPar
8135*7f2fe78bSCy SchubertThe initial key version number.
8136*7f2fe78bSCy Schubert
8137*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}policy} \sphinxstyleemphasis{policy}}] \leavevmode
8138*7f2fe78bSCy Schubert\sphinxAtStartPar
8139*7f2fe78bSCy SchubertThe password policy used by this principal.  If not specified, the
8140*7f2fe78bSCy Schubertpolicy \sphinxcode{\sphinxupquote{default}} is used if it exists (unless \sphinxstylestrong{\sphinxhyphen{}clearpolicy}
8141*7f2fe78bSCy Schubertis specified).
8142*7f2fe78bSCy Schubert
8143*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}clearpolicy}}] \leavevmode
8144*7f2fe78bSCy Schubert\sphinxAtStartPar
8145*7f2fe78bSCy SchubertPrevents any policy from being assigned when \sphinxstylestrong{\sphinxhyphen{}policy} is not
8146*7f2fe78bSCy Schubertspecified.
8147*7f2fe78bSCy Schubert
8148*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{allow\_postdated}}] \leavevmode
8149*7f2fe78bSCy Schubert\sphinxAtStartPar
8150*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}allow\_postdated} prohibits this principal from obtaining
8151*7f2fe78bSCy Schubertpostdated tickets.  \sphinxstylestrong{+allow\_postdated} clears this flag.
8152*7f2fe78bSCy Schubert
8153*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{allow\_forwardable}}] \leavevmode
8154*7f2fe78bSCy Schubert\sphinxAtStartPar
8155*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}allow\_forwardable} prohibits this principal from obtaining
8156*7f2fe78bSCy Schubertforwardable tickets.  \sphinxstylestrong{+allow\_forwardable} clears this flag.
8157*7f2fe78bSCy Schubert
8158*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{allow\_renewable}}] \leavevmode
8159*7f2fe78bSCy Schubert\sphinxAtStartPar
8160*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}allow\_renewable} prohibits this principal from obtaining
8161*7f2fe78bSCy Schubertrenewable tickets.  \sphinxstylestrong{+allow\_renewable} clears this flag.
8162*7f2fe78bSCy Schubert
8163*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{allow\_proxiable}}] \leavevmode
8164*7f2fe78bSCy Schubert\sphinxAtStartPar
8165*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}allow\_proxiable} prohibits this principal from obtaining
8166*7f2fe78bSCy Schubertproxiable tickets.  \sphinxstylestrong{+allow\_proxiable} clears this flag.
8167*7f2fe78bSCy Schubert
8168*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{allow\_dup\_skey}}] \leavevmode
8169*7f2fe78bSCy Schubert\sphinxAtStartPar
8170*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}allow\_dup\_skey} disables user\sphinxhyphen{}to\sphinxhyphen{}user authentication for this
8171*7f2fe78bSCy Schubertprincipal by prohibiting others from obtaining a service ticket
8172*7f2fe78bSCy Schubertencrypted in this principal’s TGT session key.
8173*7f2fe78bSCy Schubert\sphinxstylestrong{+allow\_dup\_skey} clears this flag.
8174*7f2fe78bSCy Schubert
8175*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{requires\_preauth}}] \leavevmode
8176*7f2fe78bSCy Schubert\sphinxAtStartPar
8177*7f2fe78bSCy Schubert\sphinxstylestrong{+requires\_preauth} requires this principal to preauthenticate
8178*7f2fe78bSCy Schubertbefore being allowed to kinit.  \sphinxstylestrong{\sphinxhyphen{}requires\_preauth} clears this
8179*7f2fe78bSCy Schubertflag.  When \sphinxstylestrong{+requires\_preauth} is set on a service principal,
8180*7f2fe78bSCy Schubertthe KDC will only issue service tickets for that service principal
8181*7f2fe78bSCy Schubertif the client’s initial authentication was performed using
8182*7f2fe78bSCy Schubertpreauthentication.
8183*7f2fe78bSCy Schubert
8184*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{requires\_hwauth}}] \leavevmode
8185*7f2fe78bSCy Schubert\sphinxAtStartPar
8186*7f2fe78bSCy Schubert\sphinxstylestrong{+requires\_hwauth} requires this principal to preauthenticate
8187*7f2fe78bSCy Schubertusing a hardware device before being allowed to kinit.
8188*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}requires\_hwauth} clears this flag.  When \sphinxstylestrong{+requires\_hwauth} is
8189*7f2fe78bSCy Schubertset on a service principal, the KDC will only issue service tickets
8190*7f2fe78bSCy Schubertfor that service principal if the client’s initial authentication was
8191*7f2fe78bSCy Schubertperformed using a hardware device to preauthenticate.
8192*7f2fe78bSCy Schubert
8193*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{ok\_as\_delegate}}] \leavevmode
8194*7f2fe78bSCy Schubert\sphinxAtStartPar
8195*7f2fe78bSCy Schubert\sphinxstylestrong{+ok\_as\_delegate} sets the \sphinxstylestrong{okay as delegate} flag on tickets
8196*7f2fe78bSCy Schubertissued with this principal as the service.  Clients may use this
8197*7f2fe78bSCy Schubertflag as a hint that credentials should be delegated when
8198*7f2fe78bSCy Schubertauthenticating to the service.  \sphinxstylestrong{\sphinxhyphen{}ok\_as\_delegate} clears this
8199*7f2fe78bSCy Schubertflag.
8200*7f2fe78bSCy Schubert
8201*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{allow\_svr}}] \leavevmode
8202*7f2fe78bSCy Schubert\sphinxAtStartPar
8203*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}allow\_svr} prohibits the issuance of service tickets for this
8204*7f2fe78bSCy Schubertprincipal.  In release 1.17 and later, user\sphinxhyphen{}to\sphinxhyphen{}user service
8205*7f2fe78bSCy Schuberttickets are still allowed unless the \sphinxstylestrong{\sphinxhyphen{}allow\_dup\_skey} flag is
8206*7f2fe78bSCy Schubertalso set.  \sphinxstylestrong{+allow\_svr} clears this flag.
8207*7f2fe78bSCy Schubert
8208*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{allow\_tgs\_req}}] \leavevmode
8209*7f2fe78bSCy Schubert\sphinxAtStartPar
8210*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}allow\_tgs\_req} specifies that a Ticket\sphinxhyphen{}Granting Service (TGS)
8211*7f2fe78bSCy Schubertrequest for a service ticket for this principal is not permitted.
8212*7f2fe78bSCy Schubert\sphinxstylestrong{+allow\_tgs\_req} clears this flag.
8213*7f2fe78bSCy Schubert
8214*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{allow\_tix}}] \leavevmode
8215*7f2fe78bSCy Schubert\sphinxAtStartPar
8216*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}allow\_tix} forbids the issuance of any tickets for this
8217*7f2fe78bSCy Schubertprincipal.  \sphinxstylestrong{+allow\_tix} clears this flag.
8218*7f2fe78bSCy Schubert
8219*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{needchange}}] \leavevmode
8220*7f2fe78bSCy Schubert\sphinxAtStartPar
8221*7f2fe78bSCy Schubert\sphinxstylestrong{+needchange} forces a password change on the next initial
8222*7f2fe78bSCy Schubertauthentication to this principal.  \sphinxstylestrong{\sphinxhyphen{}needchange} clears this
8223*7f2fe78bSCy Schubertflag.
8224*7f2fe78bSCy Schubert
8225*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{password\_changing\_service}}] \leavevmode
8226*7f2fe78bSCy Schubert\sphinxAtStartPar
8227*7f2fe78bSCy Schubert\sphinxstylestrong{+password\_changing\_service} marks this principal as a password
8228*7f2fe78bSCy Schubertchange service principal.
8229*7f2fe78bSCy Schubert
8230*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{ok\_to\_auth\_as\_delegate}}] \leavevmode
8231*7f2fe78bSCy Schubert\sphinxAtStartPar
8232*7f2fe78bSCy Schubert\sphinxstylestrong{+ok\_to\_auth\_as\_delegate} allows this principal to acquire
8233*7f2fe78bSCy Schubertforwardable tickets to itself from arbitrary users, for use with
8234*7f2fe78bSCy Schubertconstrained delegation.
8235*7f2fe78bSCy Schubert
8236*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{no\_auth\_data\_required}}] \leavevmode
8237*7f2fe78bSCy Schubert\sphinxAtStartPar
8238*7f2fe78bSCy Schubert\sphinxstylestrong{+no\_auth\_data\_required} prevents PAC or AD\sphinxhyphen{}SIGNEDPATH data from
8239*7f2fe78bSCy Schubertbeing added to service tickets for the principal.
8240*7f2fe78bSCy Schubert
8241*7f2fe78bSCy Schubert\item[{\{\sphinxhyphen{}|+\}\sphinxstylestrong{lockdown\_keys}}] \leavevmode
8242*7f2fe78bSCy Schubert\sphinxAtStartPar
8243*7f2fe78bSCy Schubert\sphinxstylestrong{+lockdown\_keys} prevents keys for this principal from leaving
8244*7f2fe78bSCy Schubertthe KDC via kadmind.  The chpass and extract operations are denied
8245*7f2fe78bSCy Schubertfor a principal with this attribute.  The chrand operation is
8246*7f2fe78bSCy Schubertallowed, but will not return the new keys.  The delete and rename
8247*7f2fe78bSCy Schubertoperations are also denied if this attribute is set, in order to
8248*7f2fe78bSCy Schubertprevent a malicious administrator from replacing principals like
8249*7f2fe78bSCy Schubertkrbtgt/* or kadmin/* with new principals without the attribute.
8250*7f2fe78bSCy SchubertThis attribute can be set via the network protocol, but can only
8251*7f2fe78bSCy Schubertbe removed using kadmin.local.
8252*7f2fe78bSCy Schubert
8253*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}randkey}}] \leavevmode
8254*7f2fe78bSCy Schubert\sphinxAtStartPar
8255*7f2fe78bSCy SchubertSets the key of the principal to a random value.
8256*7f2fe78bSCy Schubert
8257*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}nokey}}] \leavevmode
8258*7f2fe78bSCy Schubert\sphinxAtStartPar
8259*7f2fe78bSCy SchubertCauses the principal to be created with no key.  New in release
8260*7f2fe78bSCy Schubert1.12.
8261*7f2fe78bSCy Schubert
8262*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}pw} \sphinxstyleemphasis{password}}] \leavevmode
8263*7f2fe78bSCy Schubert\sphinxAtStartPar
8264*7f2fe78bSCy SchubertSets the password of the principal to the specified string and
8265*7f2fe78bSCy Schubertdoes not prompt for a password.  Note: using this option in a
8266*7f2fe78bSCy Schubertshell script may expose the password to other users on the system
8267*7f2fe78bSCy Schubertvia the process list.
8268*7f2fe78bSCy Schubert
8269*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{enc}:\sphinxstyleemphasis{salt},…}] \leavevmode
8270*7f2fe78bSCy Schubert\sphinxAtStartPar
8271*7f2fe78bSCy SchubertUses the specified keysalt list for setting the keys of the
8272*7f2fe78bSCy Schubertprincipal.  See {\hyperref[\detokenize{admin/conf_files/kdc_conf:keysalt-lists}]{\sphinxcrossref{\DUrole{std,std-ref}{Keysalt lists}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} for a
8273*7f2fe78bSCy Schubertlist of possible values.
8274*7f2fe78bSCy Schubert
8275*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_princ\_args}}] \leavevmode
8276*7f2fe78bSCy Schubert\sphinxAtStartPar
8277*7f2fe78bSCy SchubertIndicates database\sphinxhyphen{}specific options.  The options for the LDAP
8278*7f2fe78bSCy Schubertdatabase module are:
8279*7f2fe78bSCy Schubert\begin{description}
8280*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x dn=}\sphinxstyleemphasis{dn}}] \leavevmode
8281*7f2fe78bSCy Schubert\sphinxAtStartPar
8282*7f2fe78bSCy SchubertSpecifies the LDAP object that will contain the Kerberos
8283*7f2fe78bSCy Schubertprincipal being created.
8284*7f2fe78bSCy Schubert
8285*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x linkdn=}\sphinxstyleemphasis{dn}}] \leavevmode
8286*7f2fe78bSCy Schubert\sphinxAtStartPar
8287*7f2fe78bSCy SchubertSpecifies the LDAP object to which the newly created Kerberos
8288*7f2fe78bSCy Schubertprincipal object will point.
8289*7f2fe78bSCy Schubert
8290*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x containerdn=}\sphinxstyleemphasis{container\_dn}}] \leavevmode
8291*7f2fe78bSCy Schubert\sphinxAtStartPar
8292*7f2fe78bSCy SchubertSpecifies the container object under which the Kerberos
8293*7f2fe78bSCy Schubertprincipal is to be created.
8294*7f2fe78bSCy Schubert
8295*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x tktpolicy=}\sphinxstyleemphasis{policy}}] \leavevmode
8296*7f2fe78bSCy Schubert\sphinxAtStartPar
8297*7f2fe78bSCy SchubertAssociates a ticket policy to the Kerberos principal.
8298*7f2fe78bSCy Schubert
8299*7f2fe78bSCy Schubert\end{description}
8300*7f2fe78bSCy Schubert
8301*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}\begin{itemize}
8302*7f2fe78bSCy Schubert\item {}
8303*7f2fe78bSCy Schubert\sphinxAtStartPar
8304*7f2fe78bSCy SchubertThe \sphinxstylestrong{containerdn} and \sphinxstylestrong{linkdn} options cannot be
8305*7f2fe78bSCy Schubertspecified with the \sphinxstylestrong{dn} option.
8306*7f2fe78bSCy Schubert
8307*7f2fe78bSCy Schubert\item {}
8308*7f2fe78bSCy Schubert\sphinxAtStartPar
8309*7f2fe78bSCy SchubertIf the \sphinxstyleemphasis{dn} or \sphinxstyleemphasis{containerdn} options are not specified while
8310*7f2fe78bSCy Schubertadding the principal, the principals are created under the
8311*7f2fe78bSCy Schubertprincipal container configured in the realm or the realm
8312*7f2fe78bSCy Schubertcontainer.
8313*7f2fe78bSCy Schubert
8314*7f2fe78bSCy Schubert\item {}
8315*7f2fe78bSCy Schubert\sphinxAtStartPar
8316*7f2fe78bSCy Schubert\sphinxstyleemphasis{dn} and \sphinxstyleemphasis{containerdn} should be within the subtrees or
8317*7f2fe78bSCy Schubertprincipal container configured in the realm.
8318*7f2fe78bSCy Schubert
8319*7f2fe78bSCy Schubert\end{itemize}
8320*7f2fe78bSCy Schubert\end{sphinxadmonition}
8321*7f2fe78bSCy Schubert
8322*7f2fe78bSCy Schubert\end{description}
8323*7f2fe78bSCy Schubert
8324*7f2fe78bSCy Schubert\sphinxAtStartPar
8325*7f2fe78bSCy SchubertExample:
8326*7f2fe78bSCy Schubert
8327*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8328*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{addprinc} \PYG{n}{jennifer}
8329*7f2fe78bSCy Schubert\PYG{n}{No} \PYG{n}{policy} \PYG{n}{specified} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{jennifer@ATHENA.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{;}
8330*7f2fe78bSCy Schubert\PYG{n}{defaulting} \PYG{n}{to} \PYG{n}{no} \PYG{n}{policy}\PYG{o}{.}
8331*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{jennifer}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{p}{:}
8332*7f2fe78bSCy Schubert\PYG{n}{Re}\PYG{o}{\PYGZhy{}}\PYG{n}{enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{jennifer}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{p}{:}
8333*7f2fe78bSCy Schubert\PYG{n}{Principal} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{jennifer@ATHENA.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{created}\PYG{o}{.}
8334*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8335*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8336*7f2fe78bSCy Schubert
8337*7f2fe78bSCy Schubert
8338*7f2fe78bSCy Schubert\subsubsection{modify\_principal}
8339*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:modify-principal}}\label{\detokenize{admin/admin_commands/kadmin_local:id2}}\begin{quote}
8340*7f2fe78bSCy Schubert
8341*7f2fe78bSCy Schubert\sphinxAtStartPar
8342*7f2fe78bSCy Schubert\sphinxstylestrong{modify\_principal} {[}\sphinxstyleemphasis{options}{]} \sphinxstyleemphasis{principal}
8343*7f2fe78bSCy Schubert\end{quote}
8344*7f2fe78bSCy Schubert
8345*7f2fe78bSCy Schubert\sphinxAtStartPar
8346*7f2fe78bSCy SchubertModifies the specified principal, changing the fields as specified.
8347*7f2fe78bSCy SchubertThe options to \sphinxstylestrong{add\_principal} also apply to this command, except
8348*7f2fe78bSCy Schubertfor the \sphinxstylestrong{\sphinxhyphen{}randkey}, \sphinxstylestrong{\sphinxhyphen{}pw}, and \sphinxstylestrong{\sphinxhyphen{}e} options.  In addition, the
8349*7f2fe78bSCy Schubertoption \sphinxstylestrong{\sphinxhyphen{}clearpolicy} will clear the current policy of a principal.
8350*7f2fe78bSCy Schubert
8351*7f2fe78bSCy Schubert\sphinxAtStartPar
8352*7f2fe78bSCy SchubertThis command requires the \sphinxstyleemphasis{modify} privilege.
8353*7f2fe78bSCy Schubert
8354*7f2fe78bSCy Schubert\sphinxAtStartPar
8355*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{modprinc}
8356*7f2fe78bSCy Schubert
8357*7f2fe78bSCy Schubert\sphinxAtStartPar
8358*7f2fe78bSCy SchubertOptions (in addition to the \sphinxstylestrong{addprinc} options):
8359*7f2fe78bSCy Schubert\begin{description}
8360*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}unlock}}] \leavevmode
8361*7f2fe78bSCy Schubert\sphinxAtStartPar
8362*7f2fe78bSCy SchubertUnlocks a locked principal (one which has received too many failed
8363*7f2fe78bSCy Schubertauthentication attempts without enough time between them according
8364*7f2fe78bSCy Schubertto its password policy) so that it can successfully authenticate.
8365*7f2fe78bSCy Schubert
8366*7f2fe78bSCy Schubert\end{description}
8367*7f2fe78bSCy Schubert
8368*7f2fe78bSCy Schubert
8369*7f2fe78bSCy Schubert\subsubsection{rename\_principal}
8370*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:rename-principal}}\label{\detokenize{admin/admin_commands/kadmin_local:id3}}\begin{quote}
8371*7f2fe78bSCy Schubert
8372*7f2fe78bSCy Schubert\sphinxAtStartPar
8373*7f2fe78bSCy Schubert\sphinxstylestrong{rename\_principal} {[}\sphinxstylestrong{\sphinxhyphen{}force}{]} \sphinxstyleemphasis{old\_principal} \sphinxstyleemphasis{new\_principal}
8374*7f2fe78bSCy Schubert\end{quote}
8375*7f2fe78bSCy Schubert
8376*7f2fe78bSCy Schubert\sphinxAtStartPar
8377*7f2fe78bSCy SchubertRenames the specified \sphinxstyleemphasis{old\_principal} to \sphinxstyleemphasis{new\_principal}.  This
8378*7f2fe78bSCy Schubertcommand prompts for confirmation, unless the \sphinxstylestrong{\sphinxhyphen{}force} option is
8379*7f2fe78bSCy Schubertgiven.
8380*7f2fe78bSCy Schubert
8381*7f2fe78bSCy Schubert\sphinxAtStartPar
8382*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{add} and \sphinxstylestrong{delete} privileges.
8383*7f2fe78bSCy Schubert
8384*7f2fe78bSCy Schubert\sphinxAtStartPar
8385*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{renprinc}
8386*7f2fe78bSCy Schubert
8387*7f2fe78bSCy Schubert
8388*7f2fe78bSCy Schubert\subsubsection{delete\_principal}
8389*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:delete-principal}}\label{\detokenize{admin/admin_commands/kadmin_local:id4}}\begin{quote}
8390*7f2fe78bSCy Schubert
8391*7f2fe78bSCy Schubert\sphinxAtStartPar
8392*7f2fe78bSCy Schubert\sphinxstylestrong{delete\_principal} {[}\sphinxstylestrong{\sphinxhyphen{}force}{]} \sphinxstyleemphasis{principal}
8393*7f2fe78bSCy Schubert\end{quote}
8394*7f2fe78bSCy Schubert
8395*7f2fe78bSCy Schubert\sphinxAtStartPar
8396*7f2fe78bSCy SchubertDeletes the specified \sphinxstyleemphasis{principal} from the database.  This command
8397*7f2fe78bSCy Schubertprompts for deletion, unless the \sphinxstylestrong{\sphinxhyphen{}force} option is given.
8398*7f2fe78bSCy Schubert
8399*7f2fe78bSCy Schubert\sphinxAtStartPar
8400*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{delete} privilege.
8401*7f2fe78bSCy Schubert
8402*7f2fe78bSCy Schubert\sphinxAtStartPar
8403*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{delprinc}
8404*7f2fe78bSCy Schubert
8405*7f2fe78bSCy Schubert
8406*7f2fe78bSCy Schubert\subsubsection{change\_password}
8407*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:change-password}}\label{\detokenize{admin/admin_commands/kadmin_local:id5}}\begin{quote}
8408*7f2fe78bSCy Schubert
8409*7f2fe78bSCy Schubert\sphinxAtStartPar
8410*7f2fe78bSCy Schubert\sphinxstylestrong{change\_password} {[}\sphinxstyleemphasis{options}{]} \sphinxstyleemphasis{principal}
8411*7f2fe78bSCy Schubert\end{quote}
8412*7f2fe78bSCy Schubert
8413*7f2fe78bSCy Schubert\sphinxAtStartPar
8414*7f2fe78bSCy SchubertChanges the password of \sphinxstyleemphasis{principal}.  Prompts for a new password if
8415*7f2fe78bSCy Schubertneither \sphinxstylestrong{\sphinxhyphen{}randkey} or \sphinxstylestrong{\sphinxhyphen{}pw} is specified.
8416*7f2fe78bSCy Schubert
8417*7f2fe78bSCy Schubert\sphinxAtStartPar
8418*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{changepw} privilege, or that the
8419*7f2fe78bSCy Schubertprincipal running the program is the same as the principal being
8420*7f2fe78bSCy Schubertchanged.
8421*7f2fe78bSCy Schubert
8422*7f2fe78bSCy Schubert\sphinxAtStartPar
8423*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{cpw}
8424*7f2fe78bSCy Schubert
8425*7f2fe78bSCy Schubert\sphinxAtStartPar
8426*7f2fe78bSCy SchubertThe following options are available:
8427*7f2fe78bSCy Schubert\begin{description}
8428*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}randkey}}] \leavevmode
8429*7f2fe78bSCy Schubert\sphinxAtStartPar
8430*7f2fe78bSCy SchubertSets the key of the principal to a random value.
8431*7f2fe78bSCy Schubert
8432*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}pw} \sphinxstyleemphasis{password}}] \leavevmode
8433*7f2fe78bSCy Schubert\sphinxAtStartPar
8434*7f2fe78bSCy SchubertSet the password to the specified string.  Using this option in a
8435*7f2fe78bSCy Schubertscript may expose the password to other users on the system via
8436*7f2fe78bSCy Schubertthe process list.
8437*7f2fe78bSCy Schubert
8438*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{enc}:\sphinxstyleemphasis{salt},…}] \leavevmode
8439*7f2fe78bSCy Schubert\sphinxAtStartPar
8440*7f2fe78bSCy SchubertUses the specified keysalt list for setting the keys of the
8441*7f2fe78bSCy Schubertprincipal.  See {\hyperref[\detokenize{admin/conf_files/kdc_conf:keysalt-lists}]{\sphinxcrossref{\DUrole{std,std-ref}{Keysalt lists}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} for a
8442*7f2fe78bSCy Schubertlist of possible values.
8443*7f2fe78bSCy Schubert
8444*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}keepold}}] \leavevmode
8445*7f2fe78bSCy Schubert\sphinxAtStartPar
8446*7f2fe78bSCy SchubertKeeps the existing keys in the database.  This flag is usually not
8447*7f2fe78bSCy Schubertnecessary except perhaps for \sphinxcode{\sphinxupquote{krbtgt}} principals.
8448*7f2fe78bSCy Schubert
8449*7f2fe78bSCy Schubert\end{description}
8450*7f2fe78bSCy Schubert
8451*7f2fe78bSCy Schubert\sphinxAtStartPar
8452*7f2fe78bSCy SchubertExample:
8453*7f2fe78bSCy Schubert
8454*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8455*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{cpw} \PYG{n}{systest}
8456*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{systest}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM}\PYG{p}{:}
8457*7f2fe78bSCy Schubert\PYG{n}{Re}\PYG{o}{\PYGZhy{}}\PYG{n}{enter} \PYG{n}{password} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{systest}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM}\PYG{p}{:}
8458*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{n}{systest}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM} \PYG{n}{changed}\PYG{o}{.}
8459*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8460*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8461*7f2fe78bSCy Schubert
8462*7f2fe78bSCy Schubert
8463*7f2fe78bSCy Schubert\subsubsection{purgekeys}
8464*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:purgekeys}}\label{\detokenize{admin/admin_commands/kadmin_local:id6}}\begin{quote}
8465*7f2fe78bSCy Schubert
8466*7f2fe78bSCy Schubert\sphinxAtStartPar
8467*7f2fe78bSCy Schubert\sphinxstylestrong{purgekeys} {[}\sphinxstylestrong{\sphinxhyphen{}all}|\sphinxstylestrong{\sphinxhyphen{}keepkvno} \sphinxstyleemphasis{oldest\_kvno\_to\_keep}{]} \sphinxstyleemphasis{principal}
8468*7f2fe78bSCy Schubert\end{quote}
8469*7f2fe78bSCy Schubert
8470*7f2fe78bSCy Schubert\sphinxAtStartPar
8471*7f2fe78bSCy SchubertPurges previously retained old keys (e.g., from \sphinxstylestrong{change\_password
8472*7f2fe78bSCy Schubert\sphinxhyphen{}keepold}) from \sphinxstyleemphasis{principal}.  If \sphinxstylestrong{\sphinxhyphen{}keepkvno} is specified, then
8473*7f2fe78bSCy Schubertonly purges keys with kvnos lower than \sphinxstyleemphasis{oldest\_kvno\_to\_keep}.  If
8474*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}all} is specified, then all keys are purged.  The \sphinxstylestrong{\sphinxhyphen{}all} option
8475*7f2fe78bSCy Schubertis new in release 1.12.
8476*7f2fe78bSCy Schubert
8477*7f2fe78bSCy Schubert\sphinxAtStartPar
8478*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{modify} privilege.
8479*7f2fe78bSCy Schubert
8480*7f2fe78bSCy Schubert
8481*7f2fe78bSCy Schubert\subsubsection{get\_principal}
8482*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:get-principal}}\label{\detokenize{admin/admin_commands/kadmin_local:id7}}\begin{quote}
8483*7f2fe78bSCy Schubert
8484*7f2fe78bSCy Schubert\sphinxAtStartPar
8485*7f2fe78bSCy Schubert\sphinxstylestrong{get\_principal} {[}\sphinxstylestrong{\sphinxhyphen{}terse}{]} \sphinxstyleemphasis{principal}
8486*7f2fe78bSCy Schubert\end{quote}
8487*7f2fe78bSCy Schubert
8488*7f2fe78bSCy Schubert\sphinxAtStartPar
8489*7f2fe78bSCy SchubertGets the attributes of principal.  With the \sphinxstylestrong{\sphinxhyphen{}terse} option, outputs
8490*7f2fe78bSCy Schubertfields as quoted tab\sphinxhyphen{}separated strings.
8491*7f2fe78bSCy Schubert
8492*7f2fe78bSCy Schubert\sphinxAtStartPar
8493*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{inquire} privilege, or that the principal
8494*7f2fe78bSCy Schubertrunning the the program to be the same as the one being listed.
8495*7f2fe78bSCy Schubert
8496*7f2fe78bSCy Schubert\sphinxAtStartPar
8497*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{getprinc}
8498*7f2fe78bSCy Schubert
8499*7f2fe78bSCy Schubert\sphinxAtStartPar
8500*7f2fe78bSCy SchubertExamples:
8501*7f2fe78bSCy Schubert
8502*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8503*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{getprinc} \PYG{n}{tlyu}\PYG{o}{/}\PYG{n}{admin}
8504*7f2fe78bSCy Schubert\PYG{n}{Principal}\PYG{p}{:} \PYG{n}{tlyu}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM}
8505*7f2fe78bSCy Schubert\PYG{n}{Expiration} \PYG{n}{date}\PYG{p}{:} \PYG{p}{[}\PYG{n}{never}\PYG{p}{]}
8506*7f2fe78bSCy Schubert\PYG{n}{Last} \PYG{n}{password} \PYG{n}{change}\PYG{p}{:} \PYG{n}{Mon} \PYG{n}{Aug} \PYG{l+m+mi}{12} \PYG{l+m+mi}{14}\PYG{p}{:}\PYG{l+m+mi}{16}\PYG{p}{:}\PYG{l+m+mi}{47} \PYG{n}{EDT} \PYG{l+m+mi}{1996}
8507*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{n}{expiration} \PYG{n}{date}\PYG{p}{:} \PYG{p}{[}\PYG{n}{never}\PYG{p}{]}
8508*7f2fe78bSCy Schubert\PYG{n}{Maximum} \PYG{n}{ticket} \PYG{n}{life}\PYG{p}{:} \PYG{l+m+mi}{0} \PYG{n}{days} \PYG{l+m+mi}{10}\PYG{p}{:}\PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}
8509*7f2fe78bSCy Schubert\PYG{n}{Maximum} \PYG{n}{renewable} \PYG{n}{life}\PYG{p}{:} \PYG{l+m+mi}{7} \PYG{n}{days} \PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}
8510*7f2fe78bSCy Schubert\PYG{n}{Last} \PYG{n}{modified}\PYG{p}{:} \PYG{n}{Mon} \PYG{n}{Aug} \PYG{l+m+mi}{12} \PYG{l+m+mi}{14}\PYG{p}{:}\PYG{l+m+mi}{16}\PYG{p}{:}\PYG{l+m+mi}{47} \PYG{n}{EDT} \PYG{l+m+mi}{1996} \PYG{p}{(}\PYG{n}{bjaspan}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM}\PYG{p}{)}
8511*7f2fe78bSCy Schubert\PYG{n}{Last} \PYG{n}{successful} \PYG{n}{authentication}\PYG{p}{:} \PYG{p}{[}\PYG{n}{never}\PYG{p}{]}
8512*7f2fe78bSCy Schubert\PYG{n}{Last} \PYG{n}{failed} \PYG{n}{authentication}\PYG{p}{:} \PYG{p}{[}\PYG{n}{never}\PYG{p}{]}
8513*7f2fe78bSCy Schubert\PYG{n}{Failed} \PYG{n}{password} \PYG{n}{attempts}\PYG{p}{:} \PYG{l+m+mi}{0}
8514*7f2fe78bSCy Schubert\PYG{n}{Number} \PYG{n}{of} \PYG{n}{keys}\PYG{p}{:} \PYG{l+m+mi}{1}
8515*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha384}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{192}
8516*7f2fe78bSCy Schubert\PYG{n}{MKey}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{1}
8517*7f2fe78bSCy Schubert\PYG{n}{Attributes}\PYG{p}{:}
8518*7f2fe78bSCy Schubert\PYG{n}{Policy}\PYG{p}{:} \PYG{p}{[}\PYG{n}{none}\PYG{p}{]}
8519*7f2fe78bSCy Schubert
8520*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{getprinc} \PYG{o}{\PYGZhy{}}\PYG{n}{terse} \PYG{n}{systest}
8521*7f2fe78bSCy Schubert\PYG{n}{systest}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM}   \PYG{l+m+mi}{3}    \PYG{l+m+mi}{86400}     \PYG{l+m+mi}{604800}    \PYG{l+m+mi}{1}
8522*7f2fe78bSCy Schubert\PYG{l+m+mi}{785926535} \PYG{l+m+mi}{753241234} \PYG{l+m+mi}{785900000}
8523*7f2fe78bSCy Schubert\PYG{n}{tlyu}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM}     \PYG{l+m+mi}{786100034} \PYG{l+m+mi}{0}    \PYG{l+m+mi}{0}
8524*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8525*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8526*7f2fe78bSCy Schubert
8527*7f2fe78bSCy Schubert
8528*7f2fe78bSCy Schubert\subsubsection{list\_principals}
8529*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:list-principals}}\label{\detokenize{admin/admin_commands/kadmin_local:id8}}\begin{quote}
8530*7f2fe78bSCy Schubert
8531*7f2fe78bSCy Schubert\sphinxAtStartPar
8532*7f2fe78bSCy Schubert\sphinxstylestrong{list\_principals} {[}\sphinxstyleemphasis{expression}{]}
8533*7f2fe78bSCy Schubert\end{quote}
8534*7f2fe78bSCy Schubert
8535*7f2fe78bSCy Schubert\sphinxAtStartPar
8536*7f2fe78bSCy SchubertRetrieves all or some principal names.  \sphinxstyleemphasis{expression} is a shell\sphinxhyphen{}style
8537*7f2fe78bSCy Schubertglob expression that can contain the wild\sphinxhyphen{}card characters \sphinxcode{\sphinxupquote{?}},
8538*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{*}}, and \sphinxcode{\sphinxupquote{{[}{]}}}.  All principal names matching the expression are
8539*7f2fe78bSCy Schubertprinted.  If no expression is provided, all principal names are
8540*7f2fe78bSCy Schubertprinted.  If the expression does not contain an \sphinxcode{\sphinxupquote{@}} character, an
8541*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{@}} character followed by the local realm is appended to the
8542*7f2fe78bSCy Schubertexpression.
8543*7f2fe78bSCy Schubert
8544*7f2fe78bSCy Schubert\sphinxAtStartPar
8545*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{list} privilege.
8546*7f2fe78bSCy Schubert
8547*7f2fe78bSCy Schubert\sphinxAtStartPar
8548*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{listprincs}, \sphinxstylestrong{get\_principals}, \sphinxstylestrong{getprincs}
8549*7f2fe78bSCy Schubert
8550*7f2fe78bSCy Schubert\sphinxAtStartPar
8551*7f2fe78bSCy SchubertExample:
8552*7f2fe78bSCy Schubert
8553*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8554*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}  \PYG{n}{listprincs} \PYG{n}{test}\PYG{o}{*}
8555*7f2fe78bSCy Schubert\PYG{n}{test3}\PYG{n+nd}{@SECURE}\PYG{o}{\PYGZhy{}}\PYG{n}{TEST}\PYG{o}{.}\PYG{n}{OV}\PYG{o}{.}\PYG{n}{COM}
8556*7f2fe78bSCy Schubert\PYG{n}{test2}\PYG{n+nd}{@SECURE}\PYG{o}{\PYGZhy{}}\PYG{n}{TEST}\PYG{o}{.}\PYG{n}{OV}\PYG{o}{.}\PYG{n}{COM}
8557*7f2fe78bSCy Schubert\PYG{n}{test1}\PYG{n+nd}{@SECURE}\PYG{o}{\PYGZhy{}}\PYG{n}{TEST}\PYG{o}{.}\PYG{n}{OV}\PYG{o}{.}\PYG{n}{COM}
8558*7f2fe78bSCy Schubert\PYG{n}{testuser}\PYG{n+nd}{@SECURE}\PYG{o}{\PYGZhy{}}\PYG{n}{TEST}\PYG{o}{.}\PYG{n}{OV}\PYG{o}{.}\PYG{n}{COM}
8559*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8560*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8561*7f2fe78bSCy Schubert
8562*7f2fe78bSCy Schubert
8563*7f2fe78bSCy Schubert\subsubsection{get\_strings}
8564*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:get-strings}}\label{\detokenize{admin/admin_commands/kadmin_local:id9}}\begin{quote}
8565*7f2fe78bSCy Schubert
8566*7f2fe78bSCy Schubert\sphinxAtStartPar
8567*7f2fe78bSCy Schubert\sphinxstylestrong{get\_strings} \sphinxstyleemphasis{principal}
8568*7f2fe78bSCy Schubert\end{quote}
8569*7f2fe78bSCy Schubert
8570*7f2fe78bSCy Schubert\sphinxAtStartPar
8571*7f2fe78bSCy SchubertDisplays string attributes on \sphinxstyleemphasis{principal}.
8572*7f2fe78bSCy Schubert
8573*7f2fe78bSCy Schubert\sphinxAtStartPar
8574*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{inquire} privilege.
8575*7f2fe78bSCy Schubert
8576*7f2fe78bSCy Schubert\sphinxAtStartPar
8577*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{getstrs}
8578*7f2fe78bSCy Schubert
8579*7f2fe78bSCy Schubert
8580*7f2fe78bSCy Schubert\subsubsection{set\_string}
8581*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:set-string}}\label{\detokenize{admin/admin_commands/kadmin_local:id10}}\begin{quote}
8582*7f2fe78bSCy Schubert
8583*7f2fe78bSCy Schubert\sphinxAtStartPar
8584*7f2fe78bSCy Schubert\sphinxstylestrong{set\_string} \sphinxstyleemphasis{principal} \sphinxstyleemphasis{name} \sphinxstyleemphasis{value}
8585*7f2fe78bSCy Schubert\end{quote}
8586*7f2fe78bSCy Schubert
8587*7f2fe78bSCy Schubert\sphinxAtStartPar
8588*7f2fe78bSCy SchubertSets a string attribute on \sphinxstyleemphasis{principal}.  String attributes are used to
8589*7f2fe78bSCy Schubertsupply per\sphinxhyphen{}principal configuration to the KDC and some KDC plugin
8590*7f2fe78bSCy Schubertmodules.  The following string attribute names are recognized by the
8591*7f2fe78bSCy SchubertKDC:
8592*7f2fe78bSCy Schubert\begin{description}
8593*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{require\_auth}}] \leavevmode
8594*7f2fe78bSCy Schubert\sphinxAtStartPar
8595*7f2fe78bSCy SchubertSpecifies an authentication indicator which is required to
8596*7f2fe78bSCy Schubertauthenticate to the principal as a service.  Multiple indicators
8597*7f2fe78bSCy Schubertcan be specified, separated by spaces; in this case any of the
8598*7f2fe78bSCy Schubertspecified indicators will be accepted.  (New in release 1.14.)
8599*7f2fe78bSCy Schubert
8600*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{session\_enctypes}}] \leavevmode
8601*7f2fe78bSCy Schubert\sphinxAtStartPar
8602*7f2fe78bSCy SchubertSpecifies the encryption types supported for session keys when the
8603*7f2fe78bSCy Schubertprincipal is authenticated to as a server.  See
8604*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:encryption-types}]{\sphinxcrossref{\DUrole{std,std-ref}{Encryption types}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} for a list of the
8605*7f2fe78bSCy Schubertaccepted values.
8606*7f2fe78bSCy Schubert
8607*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{otp}}] \leavevmode
8608*7f2fe78bSCy Schubert\sphinxAtStartPar
8609*7f2fe78bSCy SchubertEnables One Time Passwords (OTP) preauthentication for a client
8610*7f2fe78bSCy Schubert\sphinxstyleemphasis{principal}.  The \sphinxstyleemphasis{value} is a JSON string representing an array
8611*7f2fe78bSCy Schubertof objects, each having optional \sphinxcode{\sphinxupquote{type}} and \sphinxcode{\sphinxupquote{username}} fields.
8612*7f2fe78bSCy Schubert
8613*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pkinit\_cert\_match}}] \leavevmode
8614*7f2fe78bSCy Schubert\sphinxAtStartPar
8615*7f2fe78bSCy SchubertSpecifies a matching expression that defines the certificate
8616*7f2fe78bSCy Schubertattributes required for the client certificate used by the
8617*7f2fe78bSCy Schubertprincipal during PKINIT authentication.  The matching expression
8618*7f2fe78bSCy Schubertis in the same format as those used by the \sphinxstylestrong{pkinit\_cert\_match}
8619*7f2fe78bSCy Schubertoption in {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.  (New in release 1.16.)
8620*7f2fe78bSCy Schubert
8621*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pac\_privsvr\_enctype}}] \leavevmode
8622*7f2fe78bSCy Schubert\sphinxAtStartPar
8623*7f2fe78bSCy SchubertForces the encryption type of the PAC KDC checksum buffers to the
8624*7f2fe78bSCy Schubertspecified encryption type for tickets issued to this server, by
8625*7f2fe78bSCy Schubertderiving a key from the local krbtgt key if it is of a different
8626*7f2fe78bSCy Schubertencryption type.  It may be necessary to set this value to
8627*7f2fe78bSCy Schubert“aes256\sphinxhyphen{}sha1” on the cross\sphinxhyphen{}realm krbtgt entry for an Active
8628*7f2fe78bSCy SchubertDirectory realm when using aes\sphinxhyphen{}sha2 keys on the local krbtgt
8629*7f2fe78bSCy Schubertentry.
8630*7f2fe78bSCy Schubert
8631*7f2fe78bSCy Schubert\end{description}
8632*7f2fe78bSCy Schubert
8633*7f2fe78bSCy Schubert\sphinxAtStartPar
8634*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{modify} privilege.
8635*7f2fe78bSCy Schubert
8636*7f2fe78bSCy Schubert\sphinxAtStartPar
8637*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{setstr}
8638*7f2fe78bSCy Schubert
8639*7f2fe78bSCy Schubert\sphinxAtStartPar
8640*7f2fe78bSCy SchubertExample:
8641*7f2fe78bSCy Schubert
8642*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8643*7f2fe78bSCy Schubert\PYG{n}{set\PYGZus{}string} \PYG{n}{host}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{n}{session\PYGZus{}enctypes} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}
8644*7f2fe78bSCy Schubert\PYG{n}{set\PYGZus{}string} \PYG{n}{user}\PYG{n+nd}{@FOO}\PYG{o}{.}\PYG{n}{COM} \PYG{n}{otp} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{[}\PYG{l+s+s2}{\PYGZob{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{type}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{:}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{hotp}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{,}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{username}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{:}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{al}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZcb{}]}\PYG{l+s+s2}{\PYGZdq{}}
8645*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8646*7f2fe78bSCy Schubert
8647*7f2fe78bSCy Schubert
8648*7f2fe78bSCy Schubert\subsubsection{del\_string}
8649*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:del-string}}\label{\detokenize{admin/admin_commands/kadmin_local:id11}}\begin{quote}
8650*7f2fe78bSCy Schubert
8651*7f2fe78bSCy Schubert\sphinxAtStartPar
8652*7f2fe78bSCy Schubert\sphinxstylestrong{del\_string} \sphinxstyleemphasis{principal} \sphinxstyleemphasis{key}
8653*7f2fe78bSCy Schubert\end{quote}
8654*7f2fe78bSCy Schubert
8655*7f2fe78bSCy Schubert\sphinxAtStartPar
8656*7f2fe78bSCy SchubertDeletes a string attribute from \sphinxstyleemphasis{principal}.
8657*7f2fe78bSCy Schubert
8658*7f2fe78bSCy Schubert\sphinxAtStartPar
8659*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{delete} privilege.
8660*7f2fe78bSCy Schubert
8661*7f2fe78bSCy Schubert\sphinxAtStartPar
8662*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{delstr}
8663*7f2fe78bSCy Schubert
8664*7f2fe78bSCy Schubert
8665*7f2fe78bSCy Schubert\subsubsection{add\_policy}
8666*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:add-policy}}\label{\detokenize{admin/admin_commands/kadmin_local:id12}}\begin{quote}
8667*7f2fe78bSCy Schubert
8668*7f2fe78bSCy Schubert\sphinxAtStartPar
8669*7f2fe78bSCy Schubert\sphinxstylestrong{add\_policy} {[}\sphinxstyleemphasis{options}{]} \sphinxstyleemphasis{policy}
8670*7f2fe78bSCy Schubert\end{quote}
8671*7f2fe78bSCy Schubert
8672*7f2fe78bSCy Schubert\sphinxAtStartPar
8673*7f2fe78bSCy SchubertAdds a password policy named \sphinxstyleemphasis{policy} to the database.
8674*7f2fe78bSCy Schubert
8675*7f2fe78bSCy Schubert\sphinxAtStartPar
8676*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{add} privilege.
8677*7f2fe78bSCy Schubert
8678*7f2fe78bSCy Schubert\sphinxAtStartPar
8679*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{addpol}
8680*7f2fe78bSCy Schubert
8681*7f2fe78bSCy Schubert\sphinxAtStartPar
8682*7f2fe78bSCy SchubertThe following options are available:
8683*7f2fe78bSCy Schubert\begin{description}
8684*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxlife} \sphinxstyleemphasis{time}}] \leavevmode
8685*7f2fe78bSCy Schubert\sphinxAtStartPar
8686*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} or \DUrole{xref,std,std-ref}{getdate} string) Sets the maximum
8687*7f2fe78bSCy Schubertlifetime of a password.
8688*7f2fe78bSCy Schubert
8689*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}minlife} \sphinxstyleemphasis{time}}] \leavevmode
8690*7f2fe78bSCy Schubert\sphinxAtStartPar
8691*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} or \DUrole{xref,std,std-ref}{getdate} string) Sets the minimum
8692*7f2fe78bSCy Schubertlifetime of a password.
8693*7f2fe78bSCy Schubert
8694*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}minlength} \sphinxstyleemphasis{length}}] \leavevmode
8695*7f2fe78bSCy Schubert\sphinxAtStartPar
8696*7f2fe78bSCy SchubertSets the minimum length of a password.
8697*7f2fe78bSCy Schubert
8698*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}minclasses} \sphinxstyleemphasis{number}}] \leavevmode
8699*7f2fe78bSCy Schubert\sphinxAtStartPar
8700*7f2fe78bSCy SchubertSets the minimum number of character classes required in a
8701*7f2fe78bSCy Schubertpassword.  The five character classes are lower case, upper case,
8702*7f2fe78bSCy Schubertnumbers, punctuation, and whitespace/unprintable characters.
8703*7f2fe78bSCy Schubert
8704*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}history} \sphinxstyleemphasis{number}}] \leavevmode
8705*7f2fe78bSCy Schubert\sphinxAtStartPar
8706*7f2fe78bSCy SchubertSets the number of past keys kept for a principal.  This option is
8707*7f2fe78bSCy Schubertnot supported with the LDAP KDC database module.
8708*7f2fe78bSCy Schubert
8709*7f2fe78bSCy Schubert\end{description}
8710*7f2fe78bSCy Schubert\phantomsection\label{\detokenize{admin/admin_commands/kadmin_local:policy-maxfailure}}\begin{description}
8711*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxfailure} \sphinxstyleemphasis{maxnumber}}] \leavevmode
8712*7f2fe78bSCy Schubert\sphinxAtStartPar
8713*7f2fe78bSCy SchubertSets the number of authentication failures before the principal is
8714*7f2fe78bSCy Schubertlocked.  Authentication failures are only tracked for principals
8715*7f2fe78bSCy Schubertwhich require preauthentication.  The counter of failed attempts
8716*7f2fe78bSCy Schubertresets to 0 after a successful attempt to authenticate.  A
8717*7f2fe78bSCy Schubert\sphinxstyleemphasis{maxnumber} value of 0 (the default) disables lockout.
8718*7f2fe78bSCy Schubert
8719*7f2fe78bSCy Schubert\end{description}
8720*7f2fe78bSCy Schubert\phantomsection\label{\detokenize{admin/admin_commands/kadmin_local:policy-failurecountinterval}}\begin{description}
8721*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}failurecountinterval} \sphinxstyleemphasis{failuretime}}] \leavevmode
8722*7f2fe78bSCy Schubert\sphinxAtStartPar
8723*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} or \DUrole{xref,std,std-ref}{getdate} string) Sets the allowable time
8724*7f2fe78bSCy Schubertbetween authentication failures.  If an authentication failure
8725*7f2fe78bSCy Schuberthappens after \sphinxstyleemphasis{failuretime} has elapsed since the previous
8726*7f2fe78bSCy Schubertfailure, the number of authentication failures is reset to 1.  A
8727*7f2fe78bSCy Schubert\sphinxstyleemphasis{failuretime} value of 0 (the default) means forever.
8728*7f2fe78bSCy Schubert
8729*7f2fe78bSCy Schubert\end{description}
8730*7f2fe78bSCy Schubert\phantomsection\label{\detokenize{admin/admin_commands/kadmin_local:policy-lockoutduration}}\begin{description}
8731*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}lockoutduration} \sphinxstyleemphasis{lockouttime}}] \leavevmode
8732*7f2fe78bSCy Schubert\sphinxAtStartPar
8733*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{duration} or \DUrole{xref,std,std-ref}{getdate} string) Sets the duration for
8734*7f2fe78bSCy Schubertwhich the principal is locked from authenticating if too many
8735*7f2fe78bSCy Schubertauthentication failures occur without the specified failure count
8736*7f2fe78bSCy Schubertinterval elapsing.  A duration of 0 (the default) means the
8737*7f2fe78bSCy Schubertprincipal remains locked out until it is administratively unlocked
8738*7f2fe78bSCy Schubertwith \sphinxcode{\sphinxupquote{modprinc \sphinxhyphen{}unlock}}.
8739*7f2fe78bSCy Schubert
8740*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}allowedkeysalts}}] \leavevmode
8741*7f2fe78bSCy Schubert\sphinxAtStartPar
8742*7f2fe78bSCy SchubertSpecifies the key/salt tuples supported for long\sphinxhyphen{}term keys when
8743*7f2fe78bSCy Schubertsetting or changing a principal’s password/keys.  See
8744*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:keysalt-lists}]{\sphinxcrossref{\DUrole{std,std-ref}{Keysalt lists}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} for a list of the
8745*7f2fe78bSCy Schubertaccepted values, but note that key/salt tuples must be separated
8746*7f2fe78bSCy Schubertwith commas (‘,’) only.  To clear the allowed key/salt policy use
8747*7f2fe78bSCy Schuberta value of ‘\sphinxhyphen{}‘.
8748*7f2fe78bSCy Schubert
8749*7f2fe78bSCy Schubert\end{description}
8750*7f2fe78bSCy Schubert
8751*7f2fe78bSCy Schubert\sphinxAtStartPar
8752*7f2fe78bSCy SchubertExample:
8753*7f2fe78bSCy Schubert
8754*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8755*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{add\PYGZus{}policy} \PYG{o}{\PYGZhy{}}\PYG{n}{maxlife} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{2 days}\PYG{l+s+s2}{\PYGZdq{}} \PYG{o}{\PYGZhy{}}\PYG{n}{minlength} \PYG{l+m+mi}{5} \PYG{n}{guests}
8756*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8757*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8758*7f2fe78bSCy Schubert
8759*7f2fe78bSCy Schubert
8760*7f2fe78bSCy Schubert\subsubsection{modify\_policy}
8761*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:modify-policy}}\label{\detokenize{admin/admin_commands/kadmin_local:id13}}\begin{quote}
8762*7f2fe78bSCy Schubert
8763*7f2fe78bSCy Schubert\sphinxAtStartPar
8764*7f2fe78bSCy Schubert\sphinxstylestrong{modify\_policy} {[}\sphinxstyleemphasis{options}{]} \sphinxstyleemphasis{policy}
8765*7f2fe78bSCy Schubert\end{quote}
8766*7f2fe78bSCy Schubert
8767*7f2fe78bSCy Schubert\sphinxAtStartPar
8768*7f2fe78bSCy SchubertModifies the password policy named \sphinxstyleemphasis{policy}.  Options are as described
8769*7f2fe78bSCy Schubertfor \sphinxstylestrong{add\_policy}.
8770*7f2fe78bSCy Schubert
8771*7f2fe78bSCy Schubert\sphinxAtStartPar
8772*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{modify} privilege.
8773*7f2fe78bSCy Schubert
8774*7f2fe78bSCy Schubert\sphinxAtStartPar
8775*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{modpol}
8776*7f2fe78bSCy Schubert
8777*7f2fe78bSCy Schubert
8778*7f2fe78bSCy Schubert\subsubsection{delete\_policy}
8779*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:delete-policy}}\label{\detokenize{admin/admin_commands/kadmin_local:id14}}\begin{quote}
8780*7f2fe78bSCy Schubert
8781*7f2fe78bSCy Schubert\sphinxAtStartPar
8782*7f2fe78bSCy Schubert\sphinxstylestrong{delete\_policy} {[}\sphinxstylestrong{\sphinxhyphen{}force}{]} \sphinxstyleemphasis{policy}
8783*7f2fe78bSCy Schubert\end{quote}
8784*7f2fe78bSCy Schubert
8785*7f2fe78bSCy Schubert\sphinxAtStartPar
8786*7f2fe78bSCy SchubertDeletes the password policy named \sphinxstyleemphasis{policy}.  Prompts for confirmation
8787*7f2fe78bSCy Schubertbefore deletion.  The command will fail if the policy is in use by any
8788*7f2fe78bSCy Schubertprincipals.
8789*7f2fe78bSCy Schubert
8790*7f2fe78bSCy Schubert\sphinxAtStartPar
8791*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{delete} privilege.
8792*7f2fe78bSCy Schubert
8793*7f2fe78bSCy Schubert\sphinxAtStartPar
8794*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{delpol}
8795*7f2fe78bSCy Schubert
8796*7f2fe78bSCy Schubert\sphinxAtStartPar
8797*7f2fe78bSCy SchubertExample:
8798*7f2fe78bSCy Schubert
8799*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8800*7f2fe78bSCy Schubertkadmin: del\PYGZus{}policy guests
8801*7f2fe78bSCy SchubertAre you sure you want to delete the policy \PYGZdq{}guests\PYGZdq{}?
8802*7f2fe78bSCy Schubert(yes/no): yes
8803*7f2fe78bSCy Schubertkadmin:
8804*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8805*7f2fe78bSCy Schubert
8806*7f2fe78bSCy Schubert
8807*7f2fe78bSCy Schubert\subsubsection{get\_policy}
8808*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:get-policy}}\label{\detokenize{admin/admin_commands/kadmin_local:id15}}\begin{quote}
8809*7f2fe78bSCy Schubert
8810*7f2fe78bSCy Schubert\sphinxAtStartPar
8811*7f2fe78bSCy Schubert\sphinxstylestrong{get\_policy} {[} \sphinxstylestrong{\sphinxhyphen{}terse} {]} \sphinxstyleemphasis{policy}
8812*7f2fe78bSCy Schubert\end{quote}
8813*7f2fe78bSCy Schubert
8814*7f2fe78bSCy Schubert\sphinxAtStartPar
8815*7f2fe78bSCy SchubertDisplays the values of the password policy named \sphinxstyleemphasis{policy}.  With the
8816*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}terse} flag, outputs the fields as quoted strings separated by
8817*7f2fe78bSCy Schuberttabs.
8818*7f2fe78bSCy Schubert
8819*7f2fe78bSCy Schubert\sphinxAtStartPar
8820*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{inquire} privilege.
8821*7f2fe78bSCy Schubert
8822*7f2fe78bSCy Schubert\sphinxAtStartPar
8823*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{getpol}
8824*7f2fe78bSCy Schubert
8825*7f2fe78bSCy Schubert\sphinxAtStartPar
8826*7f2fe78bSCy SchubertExamples:
8827*7f2fe78bSCy Schubert
8828*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8829*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{get\PYGZus{}policy} \PYG{n}{admin}
8830*7f2fe78bSCy Schubert\PYG{n}{Policy}\PYG{p}{:} \PYG{n}{admin}
8831*7f2fe78bSCy Schubert\PYG{n}{Maximum} \PYG{n}{password} \PYG{n}{life}\PYG{p}{:} \PYG{l+m+mi}{180} \PYG{n}{days} \PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}
8832*7f2fe78bSCy Schubert\PYG{n}{Minimum} \PYG{n}{password} \PYG{n}{life}\PYG{p}{:} \PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}
8833*7f2fe78bSCy Schubert\PYG{n}{Minimum} \PYG{n}{password} \PYG{n}{length}\PYG{p}{:} \PYG{l+m+mi}{6}
8834*7f2fe78bSCy Schubert\PYG{n}{Minimum} \PYG{n}{number} \PYG{n}{of} \PYG{n}{password} \PYG{n}{character} \PYG{n}{classes}\PYG{p}{:} \PYG{l+m+mi}{2}
8835*7f2fe78bSCy Schubert\PYG{n}{Number} \PYG{n}{of} \PYG{n}{old} \PYG{n}{keys} \PYG{n}{kept}\PYG{p}{:} \PYG{l+m+mi}{5}
8836*7f2fe78bSCy Schubert\PYG{n}{Reference} \PYG{n}{count}\PYG{p}{:} \PYG{l+m+mi}{17}
8837*7f2fe78bSCy Schubert
8838*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{get\PYGZus{}policy} \PYG{o}{\PYGZhy{}}\PYG{n}{terse} \PYG{n}{admin}
8839*7f2fe78bSCy Schubert\PYG{n}{admin}     \PYG{l+m+mi}{15552000}  \PYG{l+m+mi}{0}    \PYG{l+m+mi}{6}    \PYG{l+m+mi}{2}    \PYG{l+m+mi}{5}    \PYG{l+m+mi}{17}
8840*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8841*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8842*7f2fe78bSCy Schubert
8843*7f2fe78bSCy Schubert\sphinxAtStartPar
8844*7f2fe78bSCy SchubertThe “Reference count” is the number of principals using that policy.
8845*7f2fe78bSCy SchubertWith the LDAP KDC database module, the reference count field is not
8846*7f2fe78bSCy Schubertmeaningful.
8847*7f2fe78bSCy Schubert
8848*7f2fe78bSCy Schubert
8849*7f2fe78bSCy Schubert\subsubsection{list\_policies}
8850*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:list-policies}}\label{\detokenize{admin/admin_commands/kadmin_local:id16}}\begin{quote}
8851*7f2fe78bSCy Schubert
8852*7f2fe78bSCy Schubert\sphinxAtStartPar
8853*7f2fe78bSCy Schubert\sphinxstylestrong{list\_policies} {[}\sphinxstyleemphasis{expression}{]}
8854*7f2fe78bSCy Schubert\end{quote}
8855*7f2fe78bSCy Schubert
8856*7f2fe78bSCy Schubert\sphinxAtStartPar
8857*7f2fe78bSCy SchubertRetrieves all or some policy names.  \sphinxstyleemphasis{expression} is a shell\sphinxhyphen{}style
8858*7f2fe78bSCy Schubertglob expression that can contain the wild\sphinxhyphen{}card characters \sphinxcode{\sphinxupquote{?}},
8859*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{*}}, and \sphinxcode{\sphinxupquote{{[}{]}}}.  All policy names matching the expression are
8860*7f2fe78bSCy Schubertprinted.  If no expression is provided, all existing policy names are
8861*7f2fe78bSCy Schubertprinted.
8862*7f2fe78bSCy Schubert
8863*7f2fe78bSCy Schubert\sphinxAtStartPar
8864*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{list} privilege.
8865*7f2fe78bSCy Schubert
8866*7f2fe78bSCy Schubert\sphinxAtStartPar
8867*7f2fe78bSCy SchubertAliases: \sphinxstylestrong{listpols}, \sphinxstylestrong{get\_policies}, \sphinxstylestrong{getpols}.
8868*7f2fe78bSCy Schubert
8869*7f2fe78bSCy Schubert\sphinxAtStartPar
8870*7f2fe78bSCy SchubertExamples:
8871*7f2fe78bSCy Schubert
8872*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8873*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}  \PYG{n}{listpols}
8874*7f2fe78bSCy Schubert\PYG{n}{test}\PYG{o}{\PYGZhy{}}\PYG{n}{pol}
8875*7f2fe78bSCy Schubert\PYG{n+nb}{dict}\PYG{o}{\PYGZhy{}}\PYG{n}{only}
8876*7f2fe78bSCy Schubert\PYG{n}{once}\PYG{o}{\PYGZhy{}}\PYG{n}{a}\PYG{o}{\PYGZhy{}}\PYG{n+nb}{min}
8877*7f2fe78bSCy Schubert\PYG{n}{test}\PYG{o}{\PYGZhy{}}\PYG{n}{pol}\PYG{o}{\PYGZhy{}}\PYG{n}{nopw}
8878*7f2fe78bSCy Schubert
8879*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}  \PYG{n}{listpols} \PYG{n}{t}\PYG{o}{*}
8880*7f2fe78bSCy Schubert\PYG{n}{test}\PYG{o}{\PYGZhy{}}\PYG{n}{pol}
8881*7f2fe78bSCy Schubert\PYG{n}{test}\PYG{o}{\PYGZhy{}}\PYG{n}{pol}\PYG{o}{\PYGZhy{}}\PYG{n}{nopw}
8882*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8883*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8884*7f2fe78bSCy Schubert
8885*7f2fe78bSCy Schubert
8886*7f2fe78bSCy Schubert\subsubsection{ktadd}
8887*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:ktadd}}\label{\detokenize{admin/admin_commands/kadmin_local:id17}}\begin{quote}
8888*7f2fe78bSCy Schubert
8889*7f2fe78bSCy Schubert\begin{DUlineblock}{0em}
8890*7f2fe78bSCy Schubert\item[] \sphinxstylestrong{ktadd} {[}options{]} \sphinxstyleemphasis{principal}
8891*7f2fe78bSCy Schubert\item[] \sphinxstylestrong{ktadd} {[}options{]} \sphinxstylestrong{\sphinxhyphen{}glob} \sphinxstyleemphasis{princ\sphinxhyphen{}exp}
8892*7f2fe78bSCy Schubert\end{DUlineblock}
8893*7f2fe78bSCy Schubert\end{quote}
8894*7f2fe78bSCy Schubert
8895*7f2fe78bSCy Schubert\sphinxAtStartPar
8896*7f2fe78bSCy SchubertAdds a \sphinxstyleemphasis{principal}, or all principals matching \sphinxstyleemphasis{princ\sphinxhyphen{}exp}, to a
8897*7f2fe78bSCy Schubertkeytab file.  Each principal’s keys are randomized in the process.
8898*7f2fe78bSCy SchubertThe rules for \sphinxstyleemphasis{princ\sphinxhyphen{}exp} are described in the \sphinxstylestrong{list\_principals}
8899*7f2fe78bSCy Schubertcommand.
8900*7f2fe78bSCy Schubert
8901*7f2fe78bSCy Schubert\sphinxAtStartPar
8902*7f2fe78bSCy SchubertThis command requires the \sphinxstylestrong{inquire} and \sphinxstylestrong{changepw} privileges.
8903*7f2fe78bSCy SchubertWith the \sphinxstylestrong{\sphinxhyphen{}glob} form, it also requires the \sphinxstylestrong{list} privilege.
8904*7f2fe78bSCy Schubert
8905*7f2fe78bSCy Schubert\sphinxAtStartPar
8906*7f2fe78bSCy SchubertThe options are:
8907*7f2fe78bSCy Schubert\begin{description}
8908*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}k{[}eytab{]}} \sphinxstyleemphasis{keytab}}] \leavevmode
8909*7f2fe78bSCy Schubert\sphinxAtStartPar
8910*7f2fe78bSCy SchubertUse \sphinxstyleemphasis{keytab} as the keytab file.  Otherwise, the default keytab is
8911*7f2fe78bSCy Schubertused.
8912*7f2fe78bSCy Schubert
8913*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{enc}:\sphinxstyleemphasis{salt},…}] \leavevmode
8914*7f2fe78bSCy Schubert\sphinxAtStartPar
8915*7f2fe78bSCy SchubertUses the specified keysalt list for setting the new keys of the
8916*7f2fe78bSCy Schubertprincipal.  See {\hyperref[\detokenize{admin/conf_files/kdc_conf:keysalt-lists}]{\sphinxcrossref{\DUrole{std,std-ref}{Keysalt lists}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} for a
8917*7f2fe78bSCy Schubertlist of possible values.
8918*7f2fe78bSCy Schubert
8919*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}q}}] \leavevmode
8920*7f2fe78bSCy Schubert\sphinxAtStartPar
8921*7f2fe78bSCy SchubertDisplay less verbose information.
8922*7f2fe78bSCy Schubert
8923*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}norandkey}}] \leavevmode
8924*7f2fe78bSCy Schubert\sphinxAtStartPar
8925*7f2fe78bSCy SchubertDo not randomize the keys. The keys and their version numbers stay
8926*7f2fe78bSCy Schubertunchanged.  This option cannot be specified in combination with the
8927*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}e} option.
8928*7f2fe78bSCy Schubert
8929*7f2fe78bSCy Schubert\end{description}
8930*7f2fe78bSCy Schubert
8931*7f2fe78bSCy Schubert\sphinxAtStartPar
8932*7f2fe78bSCy SchubertAn entry for each of the principal’s unique encryption types is added,
8933*7f2fe78bSCy Schubertignoring multiple keys with the same encryption type but different
8934*7f2fe78bSCy Schubertsalt types.
8935*7f2fe78bSCy Schubert
8936*7f2fe78bSCy Schubert\sphinxAtStartPar
8937*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{xst}
8938*7f2fe78bSCy Schubert
8939*7f2fe78bSCy Schubert\sphinxAtStartPar
8940*7f2fe78bSCy SchubertExample:
8941*7f2fe78bSCy Schubert
8942*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8943*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{ktadd} \PYG{o}{\PYGZhy{}}\PYG{n}{k} \PYG{o}{/}\PYG{n}{tmp}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{\PYGZhy{}}\PYG{n}{new}\PYG{o}{\PYGZhy{}}\PYG{n}{keytab} \PYG{n}{host}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
8944*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3}\PYG{p}{,}
8945*7f2fe78bSCy Schubert     \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab}
8946*7f2fe78bSCy Schubert     \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{tmp}\PYG{o}{/}\PYG{n}{foo}\PYG{o}{\PYGZhy{}}\PYG{n}{new}\PYG{o}{\PYGZhy{}}\PYG{n}{keytab}
8947*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8948*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8949*7f2fe78bSCy Schubert
8950*7f2fe78bSCy Schubert
8951*7f2fe78bSCy Schubert\subsubsection{ktremove}
8952*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:ktremove}}\label{\detokenize{admin/admin_commands/kadmin_local:id18}}\begin{quote}
8953*7f2fe78bSCy Schubert
8954*7f2fe78bSCy Schubert\sphinxAtStartPar
8955*7f2fe78bSCy Schubert\sphinxstylestrong{ktremove} {[}options{]} \sphinxstyleemphasis{principal} {[}\sphinxstyleemphasis{kvno} | \sphinxstyleemphasis{all} | \sphinxstyleemphasis{old}{]}
8956*7f2fe78bSCy Schubert\end{quote}
8957*7f2fe78bSCy Schubert
8958*7f2fe78bSCy Schubert\sphinxAtStartPar
8959*7f2fe78bSCy SchubertRemoves entries for the specified \sphinxstyleemphasis{principal} from a keytab.  Requires
8960*7f2fe78bSCy Schubertno permissions, since this does not require database access.
8961*7f2fe78bSCy Schubert
8962*7f2fe78bSCy Schubert\sphinxAtStartPar
8963*7f2fe78bSCy SchubertIf the string “all” is specified, all entries for that principal are
8964*7f2fe78bSCy Schubertremoved; if the string “old” is specified, all entries for that
8965*7f2fe78bSCy Schubertprincipal except those with the highest kvno are removed.  Otherwise,
8966*7f2fe78bSCy Schubertthe value specified is parsed as an integer, and all entries whose
8967*7f2fe78bSCy Schubertkvno match that integer are removed.
8968*7f2fe78bSCy Schubert
8969*7f2fe78bSCy Schubert\sphinxAtStartPar
8970*7f2fe78bSCy SchubertThe options are:
8971*7f2fe78bSCy Schubert\begin{description}
8972*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}k{[}eytab{]}} \sphinxstyleemphasis{keytab}}] \leavevmode
8973*7f2fe78bSCy Schubert\sphinxAtStartPar
8974*7f2fe78bSCy SchubertUse \sphinxstyleemphasis{keytab} as the keytab file.  Otherwise, the default keytab is
8975*7f2fe78bSCy Schubertused.
8976*7f2fe78bSCy Schubert
8977*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}q}}] \leavevmode
8978*7f2fe78bSCy Schubert\sphinxAtStartPar
8979*7f2fe78bSCy SchubertDisplay less verbose information.
8980*7f2fe78bSCy Schubert
8981*7f2fe78bSCy Schubert\end{description}
8982*7f2fe78bSCy Schubert
8983*7f2fe78bSCy Schubert\sphinxAtStartPar
8984*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{ktrem}
8985*7f2fe78bSCy Schubert
8986*7f2fe78bSCy Schubert\sphinxAtStartPar
8987*7f2fe78bSCy SchubertExample:
8988*7f2fe78bSCy Schubert
8989*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
8990*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:} \PYG{n}{ktremove} \PYG{n}{kadmin}\PYG{o}{/}\PYG{n}{admin} \PYG{n+nb}{all}
8991*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{kadmin}\PYG{o}{/}\PYG{n}{admin} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3} \PYG{n}{removed} \PYG{k+kn}{from} \PYG{n+nn}{keytab}
8992*7f2fe78bSCy Schubert     \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}
8993*7f2fe78bSCy Schubert\PYG{n}{kadmin}\PYG{p}{:}
8994*7f2fe78bSCy Schubert\end{sphinxVerbatim}
8995*7f2fe78bSCy Schubert
8996*7f2fe78bSCy Schubert
8997*7f2fe78bSCy Schubert\subsubsection{lock}
8998*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:lock}}
8999*7f2fe78bSCy Schubert\sphinxAtStartPar
9000*7f2fe78bSCy SchubertLock database exclusively.  Use with extreme caution!  This command
9001*7f2fe78bSCy Schubertonly works with the DB2 KDC database module.
9002*7f2fe78bSCy Schubert
9003*7f2fe78bSCy Schubert
9004*7f2fe78bSCy Schubert\subsubsection{unlock}
9005*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:unlock}}
9006*7f2fe78bSCy Schubert\sphinxAtStartPar
9007*7f2fe78bSCy SchubertRelease the exclusive database lock.
9008*7f2fe78bSCy Schubert
9009*7f2fe78bSCy Schubert
9010*7f2fe78bSCy Schubert\subsubsection{list\_requests}
9011*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:list-requests}}
9012*7f2fe78bSCy Schubert\sphinxAtStartPar
9013*7f2fe78bSCy SchubertLists available for kadmin requests.
9014*7f2fe78bSCy Schubert
9015*7f2fe78bSCy Schubert\sphinxAtStartPar
9016*7f2fe78bSCy SchubertAliases: \sphinxstylestrong{lr}, \sphinxstylestrong{?}
9017*7f2fe78bSCy Schubert
9018*7f2fe78bSCy Schubert
9019*7f2fe78bSCy Schubert\subsubsection{quit}
9020*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:quit}}
9021*7f2fe78bSCy Schubert\sphinxAtStartPar
9022*7f2fe78bSCy SchubertExit program.  If the database was locked, the lock is released.
9023*7f2fe78bSCy Schubert
9024*7f2fe78bSCy Schubert\sphinxAtStartPar
9025*7f2fe78bSCy SchubertAliases: \sphinxstylestrong{exit}, \sphinxstylestrong{q}
9026*7f2fe78bSCy Schubert
9027*7f2fe78bSCy Schubert
9028*7f2fe78bSCy Schubert\subsection{HISTORY}
9029*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:history}}
9030*7f2fe78bSCy Schubert\sphinxAtStartPar
9031*7f2fe78bSCy SchubertThe kadmin program was originally written by Tom Yu at MIT, as an
9032*7f2fe78bSCy Schubertinterface to the OpenVision Kerberos administration program.
9033*7f2fe78bSCy Schubert
9034*7f2fe78bSCy Schubert
9035*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
9036*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:environment}}
9037*7f2fe78bSCy Schubert\sphinxAtStartPar
9038*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
9039*7f2fe78bSCy Schubertvariables.
9040*7f2fe78bSCy Schubert
9041*7f2fe78bSCy Schubert
9042*7f2fe78bSCy Schubert\subsection{SEE ALSO}
9043*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmin_local:see-also}}
9044*7f2fe78bSCy Schubert\sphinxAtStartPar
9045*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{kpasswd(1)}, {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}}, \DUrole{xref,std,std-ref}{kerberos(7)}
9046*7f2fe78bSCy Schubert
9047*7f2fe78bSCy Schubert
9048*7f2fe78bSCy Schubert\section{kadmind}
9049*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmind:kadmind}}\label{\detokenize{admin/admin_commands/kadmind:kadmind-8}}\label{\detokenize{admin/admin_commands/kadmind::doc}}
9050*7f2fe78bSCy Schubert
9051*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
9052*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmind:synopsis}}
9053*7f2fe78bSCy Schubert\sphinxAtStartPar
9054*7f2fe78bSCy Schubert\sphinxstylestrong{kadmind}
9055*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args}{]}
9056*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}{]}
9057*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}m}{]}
9058*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}nofork}{]}
9059*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}proponly}{]}
9060*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}port} \sphinxstyleemphasis{port\sphinxhyphen{}number}{]}
9061*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{pid\_file}{]}
9062*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{kdb5\_util\_path}{]}
9063*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}K} \sphinxstyleemphasis{kprop\_path}{]}
9064*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{kprop\_port}{]}
9065*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}F} \sphinxstyleemphasis{dump\_file}{]}
9066*7f2fe78bSCy Schubert
9067*7f2fe78bSCy Schubert
9068*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
9069*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmind:description}}
9070*7f2fe78bSCy Schubert\sphinxAtStartPar
9071*7f2fe78bSCy Schubertkadmind starts the Kerberos administration server.  kadmind typically
9072*7f2fe78bSCy Schubertruns on the primary Kerberos server, which stores the KDC database.
9073*7f2fe78bSCy SchubertIf the KDC database uses the LDAP module, the administration server
9074*7f2fe78bSCy Schubertand the KDC server need not run on the same machine.  kadmind accepts
9075*7f2fe78bSCy Schubertremote requests from programs such as {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} and
9076*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{kpasswd(1)} to administer the information in these database.
9077*7f2fe78bSCy Schubert
9078*7f2fe78bSCy Schubert\sphinxAtStartPar
9079*7f2fe78bSCy Schubertkadmind requires a number of configuration files to be set up in order
9080*7f2fe78bSCy Schubertfor it to work:
9081*7f2fe78bSCy Schubert\begin{description}
9082*7f2fe78bSCy Schubert\item[{{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}}] \leavevmode
9083*7f2fe78bSCy Schubert\sphinxAtStartPar
9084*7f2fe78bSCy SchubertThe KDC configuration file contains configuration information for
9085*7f2fe78bSCy Schubertthe KDC and admin servers.  kadmind uses settings in this file to
9086*7f2fe78bSCy Schubertlocate the Kerberos database, and is also affected by the
9087*7f2fe78bSCy Schubert\sphinxstylestrong{acl\_file}, \sphinxstylestrong{dict\_file}, \sphinxstylestrong{kadmind\_port}, and iprop\sphinxhyphen{}related
9088*7f2fe78bSCy Schubertsettings.
9089*7f2fe78bSCy Schubert
9090*7f2fe78bSCy Schubert\item[{{\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}}] \leavevmode
9091*7f2fe78bSCy Schubert\sphinxAtStartPar
9092*7f2fe78bSCy Schubertkadmind’s ACL (access control list) tells it which principals are
9093*7f2fe78bSCy Schubertallowed to perform administration actions.  The pathname to the
9094*7f2fe78bSCy SchubertACL file can be specified with the \sphinxstylestrong{acl\_file} {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}
9095*7f2fe78bSCy Schubertvariable; by default, it is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kadm5.acl}}.
9096*7f2fe78bSCy Schubert
9097*7f2fe78bSCy Schubert\end{description}
9098*7f2fe78bSCy Schubert
9099*7f2fe78bSCy Schubert\sphinxAtStartPar
9100*7f2fe78bSCy SchubertAfter the server begins running, it puts itself in the background and
9101*7f2fe78bSCy Schubertdisassociates itself from its controlling terminal.
9102*7f2fe78bSCy Schubert
9103*7f2fe78bSCy Schubert\sphinxAtStartPar
9104*7f2fe78bSCy Schubertkadmind can be configured for incremental database propagation.
9105*7f2fe78bSCy SchubertIncremental propagation allows replica KDC servers to receive
9106*7f2fe78bSCy Schubertprincipal and policy updates incrementally instead of receiving full
9107*7f2fe78bSCy Schubertdumps of the database.  This facility can be enabled in the
9108*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} file with the \sphinxstylestrong{iprop\_enable} option.  Incremental
9109*7f2fe78bSCy Schubertpropagation requires the principal \sphinxcode{\sphinxupquote{kiprop/PRIMARY\textbackslash{}@REALM}} (where
9110*7f2fe78bSCy SchubertPRIMARY is the primary KDC’s canonical host name, and REALM the realm
9111*7f2fe78bSCy Schubertname).  In release 1.13, this principal is automatically created and
9112*7f2fe78bSCy Schubertregistered into the datebase.
9113*7f2fe78bSCy Schubert
9114*7f2fe78bSCy Schubert
9115*7f2fe78bSCy Schubert\subsection{OPTIONS}
9116*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmind:options}}\begin{description}
9117*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}}] \leavevmode
9118*7f2fe78bSCy Schubert\sphinxAtStartPar
9119*7f2fe78bSCy Schubertspecifies the realm that kadmind will serve; if it is not
9120*7f2fe78bSCy Schubertspecified, the default realm of the host is used.
9121*7f2fe78bSCy Schubert
9122*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}m}}] \leavevmode
9123*7f2fe78bSCy Schubert\sphinxAtStartPar
9124*7f2fe78bSCy Schubertcauses the master database password to be fetched from the
9125*7f2fe78bSCy Schubertkeyboard (before the server puts itself in the background, if not
9126*7f2fe78bSCy Schubertinvoked with the \sphinxstylestrong{\sphinxhyphen{}nofork} option) rather than from a file on
9127*7f2fe78bSCy Schubertdisk.
9128*7f2fe78bSCy Schubert
9129*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}nofork}}] \leavevmode
9130*7f2fe78bSCy Schubert\sphinxAtStartPar
9131*7f2fe78bSCy Schubertcauses the server to remain in the foreground and remain
9132*7f2fe78bSCy Schubertassociated to the terminal.
9133*7f2fe78bSCy Schubert
9134*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}proponly}}] \leavevmode
9135*7f2fe78bSCy Schubert\sphinxAtStartPar
9136*7f2fe78bSCy Schubertcauses the server to only listen and respond to Kerberos replica
9137*7f2fe78bSCy Schubertincremental propagation polling requests.  This option can be used
9138*7f2fe78bSCy Schubertto set up a hierarchical propagation topology where a replica KDC
9139*7f2fe78bSCy Schubertprovides incremental updates to other Kerberos replicas.
9140*7f2fe78bSCy Schubert
9141*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}port} \sphinxstyleemphasis{port\sphinxhyphen{}number}}] \leavevmode
9142*7f2fe78bSCy Schubert\sphinxAtStartPar
9143*7f2fe78bSCy Schubertspecifies the port on which the administration server listens for
9144*7f2fe78bSCy Schubertconnections.  The default port is determined by the
9145*7f2fe78bSCy Schubert\sphinxstylestrong{kadmind\_port} configuration variable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
9146*7f2fe78bSCy Schubert
9147*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{pid\_file}}] \leavevmode
9148*7f2fe78bSCy Schubert\sphinxAtStartPar
9149*7f2fe78bSCy Schubertspecifies the file to which the PID of kadmind process should be
9150*7f2fe78bSCy Schubertwritten after it starts up.  This file can be used to identify
9151*7f2fe78bSCy Schubertwhether kadmind is still running and to allow init scripts to stop
9152*7f2fe78bSCy Schubertthe correct process.
9153*7f2fe78bSCy Schubert
9154*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{kdb5\_util\_path}}] \leavevmode
9155*7f2fe78bSCy Schubert\sphinxAtStartPar
9156*7f2fe78bSCy Schubertspecifies the path to the kdb5\_util command to use when dumping the
9157*7f2fe78bSCy SchubertKDB in response to full resync requests when iprop is enabled.
9158*7f2fe78bSCy Schubert
9159*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}K} \sphinxstyleemphasis{kprop\_path}}] \leavevmode
9160*7f2fe78bSCy Schubert\sphinxAtStartPar
9161*7f2fe78bSCy Schubertspecifies the path to the kprop command to use to send full dumps
9162*7f2fe78bSCy Schubertto replicas in response to full resync requests.
9163*7f2fe78bSCy Schubert
9164*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{kprop\_port}}] \leavevmode
9165*7f2fe78bSCy Schubert\sphinxAtStartPar
9166*7f2fe78bSCy Schubertspecifies the port by which the kprop process that is spawned by
9167*7f2fe78bSCy Schubertkadmind connects to the replica kpropd, in order to transfer the
9168*7f2fe78bSCy Schubertdump file during an iprop full resync request.
9169*7f2fe78bSCy Schubert
9170*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}F} \sphinxstyleemphasis{dump\_file}}] \leavevmode
9171*7f2fe78bSCy Schubert\sphinxAtStartPar
9172*7f2fe78bSCy Schubertspecifies the file path to be used for dumping the KDB in response
9173*7f2fe78bSCy Schubertto full resync requests when iprop is enabled.
9174*7f2fe78bSCy Schubert
9175*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args}}] \leavevmode
9176*7f2fe78bSCy Schubert\sphinxAtStartPar
9177*7f2fe78bSCy Schubertspecifies database\sphinxhyphen{}specific arguments.  See {\hyperref[\detokenize{admin/admin_commands/kadmin_local:dboptions}]{\sphinxcrossref{\DUrole{std,std-ref}{Database Options}}}} in {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} for supported arguments.
9178*7f2fe78bSCy Schubert
9179*7f2fe78bSCy Schubert\end{description}
9180*7f2fe78bSCy Schubert
9181*7f2fe78bSCy Schubert
9182*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
9183*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmind:environment}}
9184*7f2fe78bSCy Schubert\sphinxAtStartPar
9185*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
9186*7f2fe78bSCy Schubertvariables.
9187*7f2fe78bSCy Schubert
9188*7f2fe78bSCy Schubert
9189*7f2fe78bSCy Schubert\subsection{SEE ALSO}
9190*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kadmind:see-also}}
9191*7f2fe78bSCy Schubert\sphinxAtStartPar
9192*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{kpasswd(1)}, {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}, {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}},
9193*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_ldap\_util}}}}, {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}, \DUrole{xref,std,std-ref}{kerberos(7)}
9194*7f2fe78bSCy Schubert
9195*7f2fe78bSCy Schubert
9196*7f2fe78bSCy Schubert\section{kdb5\_util}
9197*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util}}\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}}\label{\detokenize{admin/admin_commands/kdb5_util::doc}}
9198*7f2fe78bSCy Schubert
9199*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
9200*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:synopsis}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-synopsis}}
9201*7f2fe78bSCy Schubert\sphinxAtStartPar
9202*7f2fe78bSCy Schubert\sphinxstylestrong{kdb5\_util}
9203*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}{]}
9204*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}d} \sphinxstyleemphasis{dbname}{]}
9205*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{mkeytype}{]}
9206*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}kv} \sphinxstyleemphasis{mkeyVNO}{]}
9207*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}M} \sphinxstyleemphasis{mkeyname}{]}
9208*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}m}{]}
9209*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}sf} \sphinxstyleemphasis{stashfilename}{]}
9210*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{password}{]}
9211*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args}{]}
9212*7f2fe78bSCy Schubert\sphinxstyleemphasis{command} {[}\sphinxstyleemphasis{command\_options}{]}
9213*7f2fe78bSCy Schubert
9214*7f2fe78bSCy Schubert
9215*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
9216*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:description}}\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-synopsis-end}}
9217*7f2fe78bSCy Schubert\sphinxAtStartPar
9218*7f2fe78bSCy Schubertkdb5\_util allows an administrator to perform maintenance procedures on
9219*7f2fe78bSCy Schubertthe KDC database.  Databases can be created, destroyed, and dumped to
9220*7f2fe78bSCy Schubertor loaded from ASCII files.  kdb5\_util can create a Kerberos master
9221*7f2fe78bSCy Schubertkey stash file or perform live rollover of the master key.
9222*7f2fe78bSCy Schubert
9223*7f2fe78bSCy Schubert\sphinxAtStartPar
9224*7f2fe78bSCy SchubertWhen kdb5\_util is run, it attempts to acquire the master key and open
9225*7f2fe78bSCy Schubertthe database.  However, execution continues regardless of whether or
9226*7f2fe78bSCy Schubertnot kdb5\_util successfully opens the database, because the database
9227*7f2fe78bSCy Schubertmay not exist yet or the stash file may be corrupt.
9228*7f2fe78bSCy Schubert
9229*7f2fe78bSCy Schubert\sphinxAtStartPar
9230*7f2fe78bSCy SchubertNote that some KDC database modules may not support all kdb5\_util
9231*7f2fe78bSCy Schubertcommands.
9232*7f2fe78bSCy Schubert
9233*7f2fe78bSCy Schubert
9234*7f2fe78bSCy Schubert\subsection{COMMAND\sphinxhyphen{}LINE OPTIONS}
9235*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:command-line-options}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-options}}\begin{description}
9236*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}}] \leavevmode
9237*7f2fe78bSCy Schubert\sphinxAtStartPar
9238*7f2fe78bSCy Schubertspecifies the Kerberos realm of the database.
9239*7f2fe78bSCy Schubert
9240*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}d} \sphinxstyleemphasis{dbname}}] \leavevmode
9241*7f2fe78bSCy Schubert\sphinxAtStartPar
9242*7f2fe78bSCy Schubertspecifies the name under which the principal database is stored;
9243*7f2fe78bSCy Schubertby default the database is that listed in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.  The
9244*7f2fe78bSCy Schubertpassword policy database and lock files are also derived from this
9245*7f2fe78bSCy Schubertvalue.
9246*7f2fe78bSCy Schubert
9247*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{mkeytype}}] \leavevmode
9248*7f2fe78bSCy Schubert\sphinxAtStartPar
9249*7f2fe78bSCy Schubertspecifies the key type of the master key in the database.  The
9250*7f2fe78bSCy Schubertdefault is given by the \sphinxstylestrong{master\_key\_type} variable in
9251*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
9252*7f2fe78bSCy Schubert
9253*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}kv} \sphinxstyleemphasis{mkeyVNO}}] \leavevmode
9254*7f2fe78bSCy Schubert\sphinxAtStartPar
9255*7f2fe78bSCy SchubertSpecifies the version number of the master key in the database;
9256*7f2fe78bSCy Schubertthe default is 1.  Note that 0 is not allowed.
9257*7f2fe78bSCy Schubert
9258*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}M} \sphinxstyleemphasis{mkeyname}}] \leavevmode
9259*7f2fe78bSCy Schubert\sphinxAtStartPar
9260*7f2fe78bSCy Schubertprincipal name for the master key in the database.  If not
9261*7f2fe78bSCy Schubertspecified, the name is determined by the \sphinxstylestrong{master\_key\_name}
9262*7f2fe78bSCy Schubertvariable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
9263*7f2fe78bSCy Schubert
9264*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}m}}] \leavevmode
9265*7f2fe78bSCy Schubert\sphinxAtStartPar
9266*7f2fe78bSCy Schubertspecifies that the master database password should be read from
9267*7f2fe78bSCy Schubertthe keyboard rather than fetched from a file on disk.
9268*7f2fe78bSCy Schubert
9269*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}sf} \sphinxstyleemphasis{stash\_file}}] \leavevmode
9270*7f2fe78bSCy Schubert\sphinxAtStartPar
9271*7f2fe78bSCy Schubertspecifies the stash filename of the master database password.  If
9272*7f2fe78bSCy Schubertnot specified, the filename is determined by the
9273*7f2fe78bSCy Schubert\sphinxstylestrong{key\_stash\_file} variable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
9274*7f2fe78bSCy Schubert
9275*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{password}}] \leavevmode
9276*7f2fe78bSCy Schubert\sphinxAtStartPar
9277*7f2fe78bSCy Schubertspecifies the master database password.  Using this option may
9278*7f2fe78bSCy Schubertexpose the password to other users on the system via the process
9279*7f2fe78bSCy Schubertlist.
9280*7f2fe78bSCy Schubert
9281*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args}}] \leavevmode
9282*7f2fe78bSCy Schubert\sphinxAtStartPar
9283*7f2fe78bSCy Schubertspecifies database\sphinxhyphen{}specific options.  See {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} for
9284*7f2fe78bSCy Schubertsupported options.
9285*7f2fe78bSCy Schubert
9286*7f2fe78bSCy Schubert\end{description}
9287*7f2fe78bSCy Schubert
9288*7f2fe78bSCy Schubert
9289*7f2fe78bSCy Schubert\subsection{COMMANDS}
9290*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:commands}}\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-options-end}}
9291*7f2fe78bSCy Schubert
9292*7f2fe78bSCy Schubert\subsubsection{create}
9293*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:create}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-create}}\begin{quote}
9294*7f2fe78bSCy Schubert
9295*7f2fe78bSCy Schubert\sphinxAtStartPar
9296*7f2fe78bSCy Schubert\sphinxstylestrong{create} {[}\sphinxstylestrong{\sphinxhyphen{}s}{]}
9297*7f2fe78bSCy Schubert\end{quote}
9298*7f2fe78bSCy Schubert
9299*7f2fe78bSCy Schubert\sphinxAtStartPar
9300*7f2fe78bSCy SchubertCreates a new database.  If the \sphinxstylestrong{\sphinxhyphen{}s} option is specified, the stash
9301*7f2fe78bSCy Schubertfile is also created.  This command fails if the database already
9302*7f2fe78bSCy Schubertexists.  If the command is successful, the database is opened just as
9303*7f2fe78bSCy Schubertif it had already existed when the program was first run.
9304*7f2fe78bSCy Schubert
9305*7f2fe78bSCy Schubert
9306*7f2fe78bSCy Schubert\subsubsection{destroy}
9307*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:destroy}}\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-create-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-destroy}}\begin{quote}
9308*7f2fe78bSCy Schubert
9309*7f2fe78bSCy Schubert\sphinxAtStartPar
9310*7f2fe78bSCy Schubert\sphinxstylestrong{destroy} {[}\sphinxstylestrong{\sphinxhyphen{}f}{]}
9311*7f2fe78bSCy Schubert\end{quote}
9312*7f2fe78bSCy Schubert
9313*7f2fe78bSCy Schubert\sphinxAtStartPar
9314*7f2fe78bSCy SchubertDestroys the database, first overwriting the disk sectors and then
9315*7f2fe78bSCy Schubertunlinking the files, after prompting the user for confirmation.  With
9316*7f2fe78bSCy Schubertthe \sphinxstylestrong{\sphinxhyphen{}f} argument, does not prompt the user.
9317*7f2fe78bSCy Schubert
9318*7f2fe78bSCy Schubert
9319*7f2fe78bSCy Schubert\subsubsection{stash}
9320*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:stash}}\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-destroy-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-stash}}\begin{quote}
9321*7f2fe78bSCy Schubert
9322*7f2fe78bSCy Schubert\sphinxAtStartPar
9323*7f2fe78bSCy Schubert\sphinxstylestrong{stash} {[}\sphinxstylestrong{\sphinxhyphen{}f} \sphinxstyleemphasis{keyfile}{]}
9324*7f2fe78bSCy Schubert\end{quote}
9325*7f2fe78bSCy Schubert
9326*7f2fe78bSCy Schubert\sphinxAtStartPar
9327*7f2fe78bSCy SchubertStores the master principal’s keys in a stash file.  The \sphinxstylestrong{\sphinxhyphen{}f}
9328*7f2fe78bSCy Schubertargument can be used to override the \sphinxstyleemphasis{keyfile} specified in
9329*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
9330*7f2fe78bSCy Schubert
9331*7f2fe78bSCy Schubert
9332*7f2fe78bSCy Schubert\subsubsection{dump}
9333*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:dump}}\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-stash-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-dump}}\begin{quote}
9334*7f2fe78bSCy Schubert
9335*7f2fe78bSCy Schubert\sphinxAtStartPar
9336*7f2fe78bSCy Schubert\sphinxstylestrong{dump} {[}\sphinxstylestrong{\sphinxhyphen{}b7}|\sphinxstylestrong{\sphinxhyphen{}r13}|\sphinxstylestrong{\sphinxhyphen{}r18}{]}
9337*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}verbose}{]} {[}\sphinxstylestrong{\sphinxhyphen{}mkey\_convert}{]} {[}\sphinxstylestrong{\sphinxhyphen{}new\_mkey\_file}
9338*7f2fe78bSCy Schubert\sphinxstyleemphasis{mkey\_file}{]} {[}\sphinxstylestrong{\sphinxhyphen{}rev}{]} {[}\sphinxstylestrong{\sphinxhyphen{}recurse}{]} {[}\sphinxstyleemphasis{filename}
9339*7f2fe78bSCy Schubert{[}\sphinxstyleemphasis{principals}…{]}{]}
9340*7f2fe78bSCy Schubert\end{quote}
9341*7f2fe78bSCy Schubert
9342*7f2fe78bSCy Schubert\sphinxAtStartPar
9343*7f2fe78bSCy SchubertDumps the current Kerberos and KADM5 database into an ASCII file.  By
9344*7f2fe78bSCy Schubertdefault, the database is dumped in current format, “kdb5\_util
9345*7f2fe78bSCy Schubertload\_dump version 7”.  If filename is not specified, or is the string
9346*7f2fe78bSCy Schubert“\sphinxhyphen{}”, the dump is sent to standard output.  Options:
9347*7f2fe78bSCy Schubert\begin{description}
9348*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}b7}}] \leavevmode
9349*7f2fe78bSCy Schubert\sphinxAtStartPar
9350*7f2fe78bSCy Schubertcauses the dump to be in the Kerberos 5 Beta 7 format (“kdb5\_util
9351*7f2fe78bSCy Schubertload\_dump version 4”).  This was the dump format produced on
9352*7f2fe78bSCy Schubertreleases prior to 1.2.2.
9353*7f2fe78bSCy Schubert
9354*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r13}}] \leavevmode
9355*7f2fe78bSCy Schubert\sphinxAtStartPar
9356*7f2fe78bSCy Schubertcauses the dump to be in the Kerberos 5 1.3 format (“kdb5\_util
9357*7f2fe78bSCy Schubertload\_dump version 5”).  This was the dump format produced on
9358*7f2fe78bSCy Schubertreleases prior to 1.8.
9359*7f2fe78bSCy Schubert
9360*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r18}}] \leavevmode
9361*7f2fe78bSCy Schubert\sphinxAtStartPar
9362*7f2fe78bSCy Schubertcauses the dump to be in the Kerberos 5 1.8 format (“kdb5\_util
9363*7f2fe78bSCy Schubertload\_dump version 6”).  This was the dump format produced on
9364*7f2fe78bSCy Schubertreleases prior to 1.11.
9365*7f2fe78bSCy Schubert
9366*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}verbose}}] \leavevmode
9367*7f2fe78bSCy Schubert\sphinxAtStartPar
9368*7f2fe78bSCy Schubertcauses the name of each principal and policy to be printed as it
9369*7f2fe78bSCy Schubertis dumped.
9370*7f2fe78bSCy Schubert
9371*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}mkey\_convert}}] \leavevmode
9372*7f2fe78bSCy Schubert\sphinxAtStartPar
9373*7f2fe78bSCy Schubertprompts for a new master key.  This new master key will be used to
9374*7f2fe78bSCy Schubertre\sphinxhyphen{}encrypt principal key data in the dumpfile.  The principal keys
9375*7f2fe78bSCy Schubertthemselves will not be changed.
9376*7f2fe78bSCy Schubert
9377*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}new\_mkey\_file} \sphinxstyleemphasis{mkey\_file}}] \leavevmode
9378*7f2fe78bSCy Schubert\sphinxAtStartPar
9379*7f2fe78bSCy Schubertthe filename of a stash file.  The master key in this stash file
9380*7f2fe78bSCy Schubertwill be used to re\sphinxhyphen{}encrypt the key data in the dumpfile.  The key
9381*7f2fe78bSCy Schubertdata in the database will not be changed.
9382*7f2fe78bSCy Schubert
9383*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}rev}}] \leavevmode
9384*7f2fe78bSCy Schubert\sphinxAtStartPar
9385*7f2fe78bSCy Schubertdumps in reverse order.  This may recover principals that do not
9386*7f2fe78bSCy Schubertdump normally, in cases where database corruption has occurred.
9387*7f2fe78bSCy Schubert
9388*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}recurse}}] \leavevmode
9389*7f2fe78bSCy Schubert\sphinxAtStartPar
9390*7f2fe78bSCy Schubertcauses the dump to walk the database recursively (btree only).
9391*7f2fe78bSCy SchubertThis may recover principals that do not dump normally, in cases
9392*7f2fe78bSCy Schubertwhere database corruption has occurred.  In cases of such
9393*7f2fe78bSCy Schubertcorruption, this option will probably retrieve more principals
9394*7f2fe78bSCy Schubertthan the \sphinxstylestrong{\sphinxhyphen{}rev} option will.
9395*7f2fe78bSCy Schubert
9396*7f2fe78bSCy Schubert\sphinxAtStartPar
9397*7f2fe78bSCy Schubert\DUrole{versionmodified,changed}{Changed in version 1.15: }Release 1.15 restored the functionality of the \sphinxstylestrong{\sphinxhyphen{}recurse}
9398*7f2fe78bSCy Schubertoption.
9399*7f2fe78bSCy Schubert
9400*7f2fe78bSCy Schubert\sphinxAtStartPar
9401*7f2fe78bSCy Schubert\DUrole{versionmodified,changed}{Changed in version 1.5: }The \sphinxstylestrong{\sphinxhyphen{}recurse} option ceased working until release 1.15,
9402*7f2fe78bSCy Schubertdoing a normal dump instead of a recursive traversal.
9403*7f2fe78bSCy Schubert
9404*7f2fe78bSCy Schubert\end{description}
9405*7f2fe78bSCy Schubert
9406*7f2fe78bSCy Schubert
9407*7f2fe78bSCy Schubert\subsubsection{load}
9408*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:load}}\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-dump-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-load}}\begin{quote}
9409*7f2fe78bSCy Schubert
9410*7f2fe78bSCy Schubert\sphinxAtStartPar
9411*7f2fe78bSCy Schubert\sphinxstylestrong{load} {[}\sphinxstylestrong{\sphinxhyphen{}b7}|\sphinxstylestrong{\sphinxhyphen{}r13}|\sphinxstylestrong{\sphinxhyphen{}r18}{]} {[}\sphinxstylestrong{\sphinxhyphen{}hash}{]}
9412*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}verbose}{]} {[}\sphinxstylestrong{\sphinxhyphen{}update}{]} \sphinxstyleemphasis{filename}
9413*7f2fe78bSCy Schubert\end{quote}
9414*7f2fe78bSCy Schubert
9415*7f2fe78bSCy Schubert\sphinxAtStartPar
9416*7f2fe78bSCy SchubertLoads a database dump from the named file into the named database.  If
9417*7f2fe78bSCy Schubertno option is given to determine the format of the dump file, the
9418*7f2fe78bSCy Schubertformat is detected automatically and handled as appropriate.  Unless
9419*7f2fe78bSCy Schubertthe \sphinxstylestrong{\sphinxhyphen{}update} option is given, \sphinxstylestrong{load} creates a new database
9420*7f2fe78bSCy Schubertcontaining only the data in the dump file, overwriting the contents of
9421*7f2fe78bSCy Schubertany previously existing database.  Note that when using the LDAP KDC
9422*7f2fe78bSCy Schubertdatabase module, the \sphinxstylestrong{\sphinxhyphen{}update} flag is required.
9423*7f2fe78bSCy Schubert
9424*7f2fe78bSCy Schubert\sphinxAtStartPar
9425*7f2fe78bSCy SchubertOptions:
9426*7f2fe78bSCy Schubert\begin{description}
9427*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}b7}}] \leavevmode
9428*7f2fe78bSCy Schubert\sphinxAtStartPar
9429*7f2fe78bSCy Schubertrequires the database to be in the Kerberos 5 Beta 7 format
9430*7f2fe78bSCy Schubert(“kdb5\_util load\_dump version 4”).  This was the dump format
9431*7f2fe78bSCy Schubertproduced on releases prior to 1.2.2.
9432*7f2fe78bSCy Schubert
9433*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r13}}] \leavevmode
9434*7f2fe78bSCy Schubert\sphinxAtStartPar
9435*7f2fe78bSCy Schubertrequires the database to be in Kerberos 5 1.3 format (“kdb5\_util
9436*7f2fe78bSCy Schubertload\_dump version 5”).  This was the dump format produced on
9437*7f2fe78bSCy Schubertreleases prior to 1.8.
9438*7f2fe78bSCy Schubert
9439*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r18}}] \leavevmode
9440*7f2fe78bSCy Schubert\sphinxAtStartPar
9441*7f2fe78bSCy Schubertrequires the database to be in Kerberos 5 1.8 format (“kdb5\_util
9442*7f2fe78bSCy Schubertload\_dump version 6”).  This was the dump format produced on
9443*7f2fe78bSCy Schubertreleases prior to 1.11.
9444*7f2fe78bSCy Schubert
9445*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}hash}}] \leavevmode
9446*7f2fe78bSCy Schubert\sphinxAtStartPar
9447*7f2fe78bSCy Schubertstores the database in hash format, if using the DB2 database
9448*7f2fe78bSCy Schuberttype.  If this option is not specified, the database will be
9449*7f2fe78bSCy Schubertstored in btree format.  This option is not recommended, as
9450*7f2fe78bSCy Schubertdatabases stored in hash format are known to corrupt data and lose
9451*7f2fe78bSCy Schubertprincipals.
9452*7f2fe78bSCy Schubert
9453*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}verbose}}] \leavevmode
9454*7f2fe78bSCy Schubert\sphinxAtStartPar
9455*7f2fe78bSCy Schubertcauses the name of each principal and policy to be printed as it
9456*7f2fe78bSCy Schubertis dumped.
9457*7f2fe78bSCy Schubert
9458*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}update}}] \leavevmode
9459*7f2fe78bSCy Schubert\sphinxAtStartPar
9460*7f2fe78bSCy Schubertrecords from the dump file are added to or updated in the existing
9461*7f2fe78bSCy Schubertdatabase.  Otherwise, a new database is created containing only
9462*7f2fe78bSCy Schubertwhat is in the dump file and the old one destroyed upon successful
9463*7f2fe78bSCy Schubertcompletion.
9464*7f2fe78bSCy Schubert
9465*7f2fe78bSCy Schubert\end{description}
9466*7f2fe78bSCy Schubert
9467*7f2fe78bSCy Schubert
9468*7f2fe78bSCy Schubert\subsubsection{ark}
9469*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:ark}}\label{\detokenize{admin/admin_commands/kdb5_util:kdb5-util-load-end}}\begin{quote}
9470*7f2fe78bSCy Schubert
9471*7f2fe78bSCy Schubert\sphinxAtStartPar
9472*7f2fe78bSCy Schubert\sphinxstylestrong{ark} {[}\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{enc}:\sphinxstyleemphasis{salt},…{]} \sphinxstyleemphasis{principal}
9473*7f2fe78bSCy Schubert\end{quote}
9474*7f2fe78bSCy Schubert
9475*7f2fe78bSCy Schubert\sphinxAtStartPar
9476*7f2fe78bSCy SchubertAdds new random keys to \sphinxstyleemphasis{principal} at the next available key version
9477*7f2fe78bSCy Schubertnumber.  Keys for the current highest key version number will be
9478*7f2fe78bSCy Schubertpreserved.  The \sphinxstylestrong{\sphinxhyphen{}e} option specifies the list of encryption and
9479*7f2fe78bSCy Schubertsalt types to be used for the new keys.
9480*7f2fe78bSCy Schubert
9481*7f2fe78bSCy Schubert
9482*7f2fe78bSCy Schubert\subsubsection{add\_mkey}
9483*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:add-mkey}}\begin{quote}
9484*7f2fe78bSCy Schubert
9485*7f2fe78bSCy Schubert\sphinxAtStartPar
9486*7f2fe78bSCy Schubert\sphinxstylestrong{add\_mkey} {[}\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{etype}{]} {[}\sphinxstylestrong{\sphinxhyphen{}s}{]}
9487*7f2fe78bSCy Schubert\end{quote}
9488*7f2fe78bSCy Schubert
9489*7f2fe78bSCy Schubert\sphinxAtStartPar
9490*7f2fe78bSCy SchubertAdds a new master key to the master key principal, but does not mark
9491*7f2fe78bSCy Schubertit as active.  Existing master keys will remain.  The \sphinxstylestrong{\sphinxhyphen{}e} option
9492*7f2fe78bSCy Schubertspecifies the encryption type of the new master key; see
9493*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:encryption-types}]{\sphinxcrossref{\DUrole{std,std-ref}{Encryption types}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} for a list of possible
9494*7f2fe78bSCy Schubertvalues.  The \sphinxstylestrong{\sphinxhyphen{}s} option stashes the new master key in the stash
9495*7f2fe78bSCy Schubertfile, which will be created if it doesn’t already exist.
9496*7f2fe78bSCy Schubert
9497*7f2fe78bSCy Schubert\sphinxAtStartPar
9498*7f2fe78bSCy SchubertAfter a new master key is added, it should be propagated to replica
9499*7f2fe78bSCy Schubertservers via a manual or periodic invocation of {\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}}.  Then,
9500*7f2fe78bSCy Schubertthe stash files on the replica servers should be updated with the
9501*7f2fe78bSCy Schubertkdb5\_util \sphinxstylestrong{stash} command.  Once those steps are complete, the key
9502*7f2fe78bSCy Schubertis ready to be marked active with the kdb5\_util \sphinxstylestrong{use\_mkey} command.
9503*7f2fe78bSCy Schubert
9504*7f2fe78bSCy Schubert
9505*7f2fe78bSCy Schubert\subsubsection{use\_mkey}
9506*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:use-mkey}}\begin{quote}
9507*7f2fe78bSCy Schubert
9508*7f2fe78bSCy Schubert\sphinxAtStartPar
9509*7f2fe78bSCy Schubert\sphinxstylestrong{use\_mkey} \sphinxstyleemphasis{mkeyVNO} {[}\sphinxstyleemphasis{time}{]}
9510*7f2fe78bSCy Schubert\end{quote}
9511*7f2fe78bSCy Schubert
9512*7f2fe78bSCy Schubert\sphinxAtStartPar
9513*7f2fe78bSCy SchubertSets the activation time of the master key specified by \sphinxstyleemphasis{mkeyVNO}.
9514*7f2fe78bSCy SchubertOnce a master key becomes active, it will be used to encrypt newly
9515*7f2fe78bSCy Schubertcreated principal keys.  If no \sphinxstyleemphasis{time} argument is given, the current
9516*7f2fe78bSCy Schuberttime is used, causing the specified master key version to become
9517*7f2fe78bSCy Schubertactive immediately.  The format for \sphinxstyleemphasis{time} is \DUrole{xref,std,std-ref}{getdate} string.
9518*7f2fe78bSCy Schubert
9519*7f2fe78bSCy Schubert\sphinxAtStartPar
9520*7f2fe78bSCy SchubertAfter a new master key becomes active, the kdb5\_util
9521*7f2fe78bSCy Schubert\sphinxstylestrong{update\_princ\_encryption} command can be used to update all
9522*7f2fe78bSCy Schubertprincipal keys to be encrypted in the new master key.
9523*7f2fe78bSCy Schubert
9524*7f2fe78bSCy Schubert
9525*7f2fe78bSCy Schubert\subsubsection{list\_mkeys}
9526*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:list-mkeys}}\begin{quote}
9527*7f2fe78bSCy Schubert
9528*7f2fe78bSCy Schubert\sphinxAtStartPar
9529*7f2fe78bSCy Schubert\sphinxstylestrong{list\_mkeys}
9530*7f2fe78bSCy Schubert\end{quote}
9531*7f2fe78bSCy Schubert
9532*7f2fe78bSCy Schubert\sphinxAtStartPar
9533*7f2fe78bSCy SchubertList all master keys, from most recent to earliest, in the master key
9534*7f2fe78bSCy Schubertprincipal.  The output will show the kvno, enctype, and salt type for
9535*7f2fe78bSCy Schuberteach mkey, similar to the output of {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} \sphinxstylestrong{getprinc}.  A
9536*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{*}} following an mkey denotes the currently active master key.
9537*7f2fe78bSCy Schubert
9538*7f2fe78bSCy Schubert
9539*7f2fe78bSCy Schubert\subsubsection{purge\_mkeys}
9540*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:purge-mkeys}}\begin{quote}
9541*7f2fe78bSCy Schubert
9542*7f2fe78bSCy Schubert\sphinxAtStartPar
9543*7f2fe78bSCy Schubert\sphinxstylestrong{purge\_mkeys} {[}\sphinxstylestrong{\sphinxhyphen{}f}{]} {[}\sphinxstylestrong{\sphinxhyphen{}n}{]} {[}\sphinxstylestrong{\sphinxhyphen{}v}{]}
9544*7f2fe78bSCy Schubert\end{quote}
9545*7f2fe78bSCy Schubert
9546*7f2fe78bSCy Schubert\sphinxAtStartPar
9547*7f2fe78bSCy SchubertDelete master keys from the master key principal that are not used to
9548*7f2fe78bSCy Schubertprotect any principals.  This command can be used to remove old master
9549*7f2fe78bSCy Schubertkeys all principal keys are protected by a newer master key.
9550*7f2fe78bSCy Schubert\begin{description}
9551*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}f}}] \leavevmode
9552*7f2fe78bSCy Schubert\sphinxAtStartPar
9553*7f2fe78bSCy Schubertdoes not prompt for confirmation.
9554*7f2fe78bSCy Schubert
9555*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}n}}] \leavevmode
9556*7f2fe78bSCy Schubert\sphinxAtStartPar
9557*7f2fe78bSCy Schubertperforms a dry run, showing master keys that would be purged, but
9558*7f2fe78bSCy Schubertnot actually purging any keys.
9559*7f2fe78bSCy Schubert
9560*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}v}}] \leavevmode
9561*7f2fe78bSCy Schubert\sphinxAtStartPar
9562*7f2fe78bSCy Schubertgives more verbose output.
9563*7f2fe78bSCy Schubert
9564*7f2fe78bSCy Schubert\end{description}
9565*7f2fe78bSCy Schubert
9566*7f2fe78bSCy Schubert
9567*7f2fe78bSCy Schubert\subsubsection{update\_princ\_encryption}
9568*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:update-princ-encryption}}\begin{quote}
9569*7f2fe78bSCy Schubert
9570*7f2fe78bSCy Schubert\sphinxAtStartPar
9571*7f2fe78bSCy Schubert\sphinxstylestrong{update\_princ\_encryption} {[}\sphinxstylestrong{\sphinxhyphen{}f}{]} {[}\sphinxstylestrong{\sphinxhyphen{}n}{]} {[}\sphinxstylestrong{\sphinxhyphen{}v}{]}
9572*7f2fe78bSCy Schubert{[}\sphinxstyleemphasis{princ\sphinxhyphen{}pattern}{]}
9573*7f2fe78bSCy Schubert\end{quote}
9574*7f2fe78bSCy Schubert
9575*7f2fe78bSCy Schubert\sphinxAtStartPar
9576*7f2fe78bSCy SchubertUpdate all principal records (or only those matching the
9577*7f2fe78bSCy Schubert\sphinxstyleemphasis{princ\sphinxhyphen{}pattern} glob pattern) to re\sphinxhyphen{}encrypt the key data using the
9578*7f2fe78bSCy Schubertactive database master key, if they are encrypted using a different
9579*7f2fe78bSCy Schubertversion, and give a count at the end of the number of principals
9580*7f2fe78bSCy Schubertupdated.  If the \sphinxstylestrong{\sphinxhyphen{}f} option is not given, ask for confirmation
9581*7f2fe78bSCy Schubertbefore starting to make changes.  The \sphinxstylestrong{\sphinxhyphen{}v} option causes each
9582*7f2fe78bSCy Schubertprincipal processed to be listed, with an indication as to whether it
9583*7f2fe78bSCy Schubertneeded updating or not.  The \sphinxstylestrong{\sphinxhyphen{}n} option performs a dry run, only
9584*7f2fe78bSCy Schubertshowing the actions which would have been taken.
9585*7f2fe78bSCy Schubert
9586*7f2fe78bSCy Schubert
9587*7f2fe78bSCy Schubert\subsubsection{tabdump}
9588*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:tabdump}}\begin{quote}
9589*7f2fe78bSCy Schubert
9590*7f2fe78bSCy Schubert\sphinxAtStartPar
9591*7f2fe78bSCy Schubert\sphinxstylestrong{tabdump} {[}\sphinxstylestrong{\sphinxhyphen{}H}{]} {[}\sphinxstylestrong{\sphinxhyphen{}c}{]} {[}\sphinxstylestrong{\sphinxhyphen{}e}{]} {[}\sphinxstylestrong{\sphinxhyphen{}n}{]} {[}\sphinxstylestrong{\sphinxhyphen{}o} \sphinxstyleemphasis{outfile}{]}
9592*7f2fe78bSCy Schubert\sphinxstyleemphasis{dumptype}
9593*7f2fe78bSCy Schubert\end{quote}
9594*7f2fe78bSCy Schubert
9595*7f2fe78bSCy Schubert\sphinxAtStartPar
9596*7f2fe78bSCy SchubertDump selected fields of the database in a tabular format suitable for
9597*7f2fe78bSCy Schubertreporting (e.g., using traditional Unix text processing tools) or
9598*7f2fe78bSCy Schubertimporting into relational databases.  The data format is tab\sphinxhyphen{}separated
9599*7f2fe78bSCy Schubert(default), or optionally comma\sphinxhyphen{}separated (CSV), with a fixed number of
9600*7f2fe78bSCy Schubertcolumns.  The output begins with a header line containing field names,
9601*7f2fe78bSCy Schubertunless suppression is requested using the \sphinxstylestrong{\sphinxhyphen{}H} option.
9602*7f2fe78bSCy Schubert
9603*7f2fe78bSCy Schubert\sphinxAtStartPar
9604*7f2fe78bSCy SchubertThe \sphinxstyleemphasis{dumptype} parameter specifies the name of an output table (see
9605*7f2fe78bSCy Schubertbelow).
9606*7f2fe78bSCy Schubert
9607*7f2fe78bSCy Schubert\sphinxAtStartPar
9608*7f2fe78bSCy SchubertOptions:
9609*7f2fe78bSCy Schubert\begin{description}
9610*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}H}}] \leavevmode
9611*7f2fe78bSCy Schubert\sphinxAtStartPar
9612*7f2fe78bSCy Schubertsuppress writing the field names in a header line
9613*7f2fe78bSCy Schubert
9614*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}c}}] \leavevmode
9615*7f2fe78bSCy Schubert\sphinxAtStartPar
9616*7f2fe78bSCy Schubertuse comma separated values (CSV) format, with minimal quoting,
9617*7f2fe78bSCy Schubertinstead of the default tab\sphinxhyphen{}separated (unquoted, unescaped) format
9618*7f2fe78bSCy Schubert
9619*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}e}}] \leavevmode
9620*7f2fe78bSCy Schubert\sphinxAtStartPar
9621*7f2fe78bSCy Schubertwrite empty hexadecimal string fields as empty fields instead of
9622*7f2fe78bSCy Schubertas “\sphinxhyphen{}1”.
9623*7f2fe78bSCy Schubert
9624*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}n}}] \leavevmode
9625*7f2fe78bSCy Schubert\sphinxAtStartPar
9626*7f2fe78bSCy Schubertproduce numeric output for fields that normally have symbolic
9627*7f2fe78bSCy Schubertoutput, such as enctypes and flag names.  Also requests output of
9628*7f2fe78bSCy Schuberttime stamps as decimal POSIX time\_t values.
9629*7f2fe78bSCy Schubert
9630*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}o} \sphinxstyleemphasis{outfile}}] \leavevmode
9631*7f2fe78bSCy Schubert\sphinxAtStartPar
9632*7f2fe78bSCy Schubertwrite the dump to the specified output file instead of to standard
9633*7f2fe78bSCy Schubertoutput
9634*7f2fe78bSCy Schubert
9635*7f2fe78bSCy Schubert\end{description}
9636*7f2fe78bSCy Schubert
9637*7f2fe78bSCy Schubert\sphinxAtStartPar
9638*7f2fe78bSCy SchubertDump types:
9639*7f2fe78bSCy Schubert\begin{description}
9640*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{keydata}}] \leavevmode
9641*7f2fe78bSCy Schubert\sphinxAtStartPar
9642*7f2fe78bSCy Schubertprincipal encryption key information, including actual key data
9643*7f2fe78bSCy Schubert(which is still encrypted in the master key)
9644*7f2fe78bSCy Schubert\begin{description}
9645*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{name}}] \leavevmode
9646*7f2fe78bSCy Schubert\sphinxAtStartPar
9647*7f2fe78bSCy Schubertprincipal name
9648*7f2fe78bSCy Schubert
9649*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{keyindex}}] \leavevmode
9650*7f2fe78bSCy Schubert\sphinxAtStartPar
9651*7f2fe78bSCy Schubertindex of this key in the principal’s key list
9652*7f2fe78bSCy Schubert
9653*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{kvno}}] \leavevmode
9654*7f2fe78bSCy Schubert\sphinxAtStartPar
9655*7f2fe78bSCy Schubertkey version number
9656*7f2fe78bSCy Schubert
9657*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{enctype}}] \leavevmode
9658*7f2fe78bSCy Schubert\sphinxAtStartPar
9659*7f2fe78bSCy Schubertencryption type
9660*7f2fe78bSCy Schubert
9661*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{key}}] \leavevmode
9662*7f2fe78bSCy Schubert\sphinxAtStartPar
9663*7f2fe78bSCy Schubertkey data as a hexadecimal string
9664*7f2fe78bSCy Schubert
9665*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{salttype}}] \leavevmode
9666*7f2fe78bSCy Schubert\sphinxAtStartPar
9667*7f2fe78bSCy Schubertsalt type
9668*7f2fe78bSCy Schubert
9669*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{salt}}] \leavevmode
9670*7f2fe78bSCy Schubert\sphinxAtStartPar
9671*7f2fe78bSCy Schubertsalt data as a hexadecimal string
9672*7f2fe78bSCy Schubert
9673*7f2fe78bSCy Schubert\end{description}
9674*7f2fe78bSCy Schubert
9675*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{keyinfo}}] \leavevmode
9676*7f2fe78bSCy Schubert\sphinxAtStartPar
9677*7f2fe78bSCy Schubertprincipal encryption key information (as in \sphinxstylestrong{keydata} above),
9678*7f2fe78bSCy Schubertexcluding actual key data
9679*7f2fe78bSCy Schubert
9680*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{princ\_flags}}] \leavevmode
9681*7f2fe78bSCy Schubert\sphinxAtStartPar
9682*7f2fe78bSCy Schubertprincipal boolean attributes.  Flag names print as hexadecimal
9683*7f2fe78bSCy Schubertnumbers if the \sphinxstylestrong{\sphinxhyphen{}n} option is specified, and all flag positions
9684*7f2fe78bSCy Schubertare printed regardless of whether or not they are set.  If \sphinxstylestrong{\sphinxhyphen{}n}
9685*7f2fe78bSCy Schubertis not specified, print all known flag names for each principal,
9686*7f2fe78bSCy Schubertbut only print hexadecimal flag names if the corresponding flag is
9687*7f2fe78bSCy Schubertset.
9688*7f2fe78bSCy Schubert\begin{description}
9689*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{name}}] \leavevmode
9690*7f2fe78bSCy Schubert\sphinxAtStartPar
9691*7f2fe78bSCy Schubertprincipal name
9692*7f2fe78bSCy Schubert
9693*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{flag}}] \leavevmode
9694*7f2fe78bSCy Schubert\sphinxAtStartPar
9695*7f2fe78bSCy Schubertflag name
9696*7f2fe78bSCy Schubert
9697*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{value}}] \leavevmode
9698*7f2fe78bSCy Schubert\sphinxAtStartPar
9699*7f2fe78bSCy Schubertboolean value (0 for clear, or 1 for set)
9700*7f2fe78bSCy Schubert
9701*7f2fe78bSCy Schubert\end{description}
9702*7f2fe78bSCy Schubert
9703*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{princ\_lockout}}] \leavevmode
9704*7f2fe78bSCy Schubert\sphinxAtStartPar
9705*7f2fe78bSCy Schubertstate information used for tracking repeated password failures
9706*7f2fe78bSCy Schubert\begin{description}
9707*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{name}}] \leavevmode
9708*7f2fe78bSCy Schubert\sphinxAtStartPar
9709*7f2fe78bSCy Schubertprincipal name
9710*7f2fe78bSCy Schubert
9711*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{last\_success}}] \leavevmode
9712*7f2fe78bSCy Schubert\sphinxAtStartPar
9713*7f2fe78bSCy Schuberttime stamp of most recent successful authentication
9714*7f2fe78bSCy Schubert
9715*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{last\_failed}}] \leavevmode
9716*7f2fe78bSCy Schubert\sphinxAtStartPar
9717*7f2fe78bSCy Schuberttime stamp of most recent failed authentication
9718*7f2fe78bSCy Schubert
9719*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{fail\_count}}] \leavevmode
9720*7f2fe78bSCy Schubert\sphinxAtStartPar
9721*7f2fe78bSCy Schubertcount of failed attempts
9722*7f2fe78bSCy Schubert
9723*7f2fe78bSCy Schubert\end{description}
9724*7f2fe78bSCy Schubert
9725*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{princ\_meta}}] \leavevmode
9726*7f2fe78bSCy Schubert\sphinxAtStartPar
9727*7f2fe78bSCy Schubertprincipal metadata
9728*7f2fe78bSCy Schubert\begin{description}
9729*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{name}}] \leavevmode
9730*7f2fe78bSCy Schubert\sphinxAtStartPar
9731*7f2fe78bSCy Schubertprincipal name
9732*7f2fe78bSCy Schubert
9733*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{modby}}] \leavevmode
9734*7f2fe78bSCy Schubert\sphinxAtStartPar
9735*7f2fe78bSCy Schubertname of last principal to modify this principal
9736*7f2fe78bSCy Schubert
9737*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{modtime}}] \leavevmode
9738*7f2fe78bSCy Schubert\sphinxAtStartPar
9739*7f2fe78bSCy Schuberttimestamp of last modification
9740*7f2fe78bSCy Schubert
9741*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{lastpwd}}] \leavevmode
9742*7f2fe78bSCy Schubert\sphinxAtStartPar
9743*7f2fe78bSCy Schuberttimestamp of last password change
9744*7f2fe78bSCy Schubert
9745*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{policy}}] \leavevmode
9746*7f2fe78bSCy Schubert\sphinxAtStartPar
9747*7f2fe78bSCy Schubertpolicy object name
9748*7f2fe78bSCy Schubert
9749*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{mkvno}}] \leavevmode
9750*7f2fe78bSCy Schubert\sphinxAtStartPar
9751*7f2fe78bSCy Schubertkey version number of the master key that encrypts this
9752*7f2fe78bSCy Schubertprincipal’s key data
9753*7f2fe78bSCy Schubert
9754*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{hist\_kvno}}] \leavevmode
9755*7f2fe78bSCy Schubert\sphinxAtStartPar
9756*7f2fe78bSCy Schubertkey version number of the history key that encrypts the key
9757*7f2fe78bSCy Schuberthistory data for this principal
9758*7f2fe78bSCy Schubert
9759*7f2fe78bSCy Schubert\end{description}
9760*7f2fe78bSCy Schubert
9761*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{princ\_stringattrs}}] \leavevmode
9762*7f2fe78bSCy Schubert\sphinxAtStartPar
9763*7f2fe78bSCy Schubertstring attributes (key/value pairs)
9764*7f2fe78bSCy Schubert\begin{description}
9765*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{name}}] \leavevmode
9766*7f2fe78bSCy Schubert\sphinxAtStartPar
9767*7f2fe78bSCy Schubertprincipal name
9768*7f2fe78bSCy Schubert
9769*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{key}}] \leavevmode
9770*7f2fe78bSCy Schubert\sphinxAtStartPar
9771*7f2fe78bSCy Schubertattribute name
9772*7f2fe78bSCy Schubert
9773*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{value}}] \leavevmode
9774*7f2fe78bSCy Schubert\sphinxAtStartPar
9775*7f2fe78bSCy Schubertattribute value
9776*7f2fe78bSCy Schubert
9777*7f2fe78bSCy Schubert\end{description}
9778*7f2fe78bSCy Schubert
9779*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{princ\_tktpolicy}}] \leavevmode
9780*7f2fe78bSCy Schubert\sphinxAtStartPar
9781*7f2fe78bSCy Schubertper\sphinxhyphen{}principal ticket policy data, including maximum ticket
9782*7f2fe78bSCy Schubertlifetimes
9783*7f2fe78bSCy Schubert\begin{description}
9784*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{name}}] \leavevmode
9785*7f2fe78bSCy Schubert\sphinxAtStartPar
9786*7f2fe78bSCy Schubertprincipal name
9787*7f2fe78bSCy Schubert
9788*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{expiration}}] \leavevmode
9789*7f2fe78bSCy Schubert\sphinxAtStartPar
9790*7f2fe78bSCy Schubertprincipal expiration date
9791*7f2fe78bSCy Schubert
9792*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{pw\_expiration}}] \leavevmode
9793*7f2fe78bSCy Schubert\sphinxAtStartPar
9794*7f2fe78bSCy Schubertpassword expiration date
9795*7f2fe78bSCy Schubert
9796*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{max\_life}}] \leavevmode
9797*7f2fe78bSCy Schubert\sphinxAtStartPar
9798*7f2fe78bSCy Schubertmaximum ticket lifetime
9799*7f2fe78bSCy Schubert
9800*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{max\_renew\_life}}] \leavevmode
9801*7f2fe78bSCy Schubert\sphinxAtStartPar
9802*7f2fe78bSCy Schubertmaximum renewable ticket lifetime
9803*7f2fe78bSCy Schubert
9804*7f2fe78bSCy Schubert\end{description}
9805*7f2fe78bSCy Schubert
9806*7f2fe78bSCy Schubert\end{description}
9807*7f2fe78bSCy Schubert
9808*7f2fe78bSCy Schubert\sphinxAtStartPar
9809*7f2fe78bSCy SchubertExamples:
9810*7f2fe78bSCy Schubert
9811*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
9812*7f2fe78bSCy Schubert\PYGZdl{} kdb5\PYGZus{}util tabdump \PYGZhy{}o keyinfo.txt keyinfo
9813*7f2fe78bSCy Schubert\PYGZdl{} cat keyinfo.txt
9814*7f2fe78bSCy Schubertname        keyindex        kvno    enctype salttype        salt
9815*7f2fe78bSCy SchubertK/M@EXAMPLE.COM     0       1       aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha384\PYGZhy{}192      normal  \PYGZhy{}1
9816*7f2fe78bSCy Schubertfoo@EXAMPLE.COM     0       1       aes128\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96 normal  \PYGZhy{}1
9817*7f2fe78bSCy Schubertbar@EXAMPLE.COM     0       1       aes128\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96 normal  \PYGZhy{}1
9818*7f2fe78bSCy Schubert\PYGZdl{} sqlite3
9819*7f2fe78bSCy Schubertsqlite\PYGZgt{} .mode tabs
9820*7f2fe78bSCy Schubertsqlite\PYGZgt{} .import keyinfo.txt keyinfo
9821*7f2fe78bSCy Schubertsqlite\PYGZgt{} select * from keyinfo where enctype like \PYGZsq{}aes256\PYGZhy{}\PYGZpc{}\PYGZsq{};
9822*7f2fe78bSCy SchubertK/M@EXAMPLE.COM     1       1       aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha384\PYGZhy{}192      normal  \PYGZhy{}1
9823*7f2fe78bSCy Schubertsqlite\PYGZgt{} .quit
9824*7f2fe78bSCy Schubert\PYGZdl{} awk \PYGZhy{}F\PYGZsq{}\PYGZbs{}t\PYGZsq{} \PYGZsq{}\PYGZdl{}4 \PYGZti{} /aes256\PYGZhy{}/ \PYGZob{} print \PYGZcb{}\PYGZsq{} keyinfo.txt
9825*7f2fe78bSCy SchubertK/M@EXAMPLE.COM     1       1       aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha384\PYGZhy{}192      normal  \PYGZhy{}1
9826*7f2fe78bSCy Schubert\end{sphinxVerbatim}
9827*7f2fe78bSCy Schubert
9828*7f2fe78bSCy Schubert
9829*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
9830*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:environment}}
9831*7f2fe78bSCy Schubert\sphinxAtStartPar
9832*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
9833*7f2fe78bSCy Schubertvariables.
9834*7f2fe78bSCy Schubert
9835*7f2fe78bSCy Schubert
9836*7f2fe78bSCy Schubert\subsection{SEE ALSO}
9837*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_util:see-also}}
9838*7f2fe78bSCy Schubert\sphinxAtStartPar
9839*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}, \DUrole{xref,std,std-ref}{kerberos(7)}
9840*7f2fe78bSCy Schubert
9841*7f2fe78bSCy Schubert
9842*7f2fe78bSCy Schubert\section{kdb5\_ldap\_util}
9843*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-8}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util::doc}}
9844*7f2fe78bSCy Schubert
9845*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
9846*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:synopsis}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-synopsis}}
9847*7f2fe78bSCy Schubert\sphinxAtStartPar
9848*7f2fe78bSCy Schubert\sphinxstylestrong{kdb5\_ldap\_util}
9849*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}D} \sphinxstyleemphasis{user\_dn} {[}\sphinxstylestrong{\sphinxhyphen{}w} \sphinxstyleemphasis{passwd}{]}{]}
9850*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}H} \sphinxstyleemphasis{ldapuri}{]}
9851*7f2fe78bSCy Schubert\sphinxstylestrong{command}
9852*7f2fe78bSCy Schubert{[}\sphinxstyleemphasis{command\_options}{]}
9853*7f2fe78bSCy Schubert
9854*7f2fe78bSCy Schubert
9855*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
9856*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:description}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-synopsis-end}}
9857*7f2fe78bSCy Schubert\sphinxAtStartPar
9858*7f2fe78bSCy Schubertkdb5\_ldap\_util allows an administrator to manage realms, Kerberos
9859*7f2fe78bSCy Schubertservices and ticket policies.
9860*7f2fe78bSCy Schubert
9861*7f2fe78bSCy Schubert
9862*7f2fe78bSCy Schubert\subsection{COMMAND\sphinxhyphen{}LINE OPTIONS}
9863*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:command-line-options}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-options}}\begin{description}
9864*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}}] \leavevmode
9865*7f2fe78bSCy Schubert\sphinxAtStartPar
9866*7f2fe78bSCy SchubertSpecifies the realm to be operated on.
9867*7f2fe78bSCy Schubert
9868*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}D} \sphinxstyleemphasis{user\_dn}}] \leavevmode
9869*7f2fe78bSCy Schubert\sphinxAtStartPar
9870*7f2fe78bSCy SchubertSpecifies the Distinguished Name (DN) of the user who has
9871*7f2fe78bSCy Schubertsufficient rights to perform the operation on the LDAP server.
9872*7f2fe78bSCy Schubert
9873*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}w} \sphinxstyleemphasis{passwd}}] \leavevmode
9874*7f2fe78bSCy Schubert\sphinxAtStartPar
9875*7f2fe78bSCy SchubertSpecifies the password of \sphinxstyleemphasis{user\_dn}.  This option is not
9876*7f2fe78bSCy Schubertrecommended.
9877*7f2fe78bSCy Schubert
9878*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}H} \sphinxstyleemphasis{ldapuri}}] \leavevmode
9879*7f2fe78bSCy Schubert\sphinxAtStartPar
9880*7f2fe78bSCy SchubertSpecifies the URI of the LDAP server.
9881*7f2fe78bSCy Schubert
9882*7f2fe78bSCy Schubert\end{description}
9883*7f2fe78bSCy Schubert
9884*7f2fe78bSCy Schubert\sphinxAtStartPar
9885*7f2fe78bSCy SchubertBy default, kdb5\_ldap\_util operates on the default realm (as specified
9886*7f2fe78bSCy Schubertin {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}) and connects and authenticates to the LDAP
9887*7f2fe78bSCy Schubertserver in the same manner as :ref:kadmind(8)\textasciigrave{} would given the
9888*7f2fe78bSCy Schubertparameters in {\hyperref[\detokenize{admin/conf_files/kdc_conf:dbdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}dbdefaults{]}}}}} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
9889*7f2fe78bSCy Schubert
9890*7f2fe78bSCy Schubert
9891*7f2fe78bSCy Schubert\subsection{COMMANDS}
9892*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:commands}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-options-end}}
9893*7f2fe78bSCy Schubert
9894*7f2fe78bSCy Schubert\subsubsection{create}
9895*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:create}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-create}}\begin{quote}
9896*7f2fe78bSCy Schubert
9897*7f2fe78bSCy Schubert\sphinxAtStartPar
9898*7f2fe78bSCy Schubert\sphinxstylestrong{create}
9899*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}subtrees} \sphinxstyleemphasis{subtree\_dn\_list}{]}
9900*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}sscope} \sphinxstyleemphasis{search\_scope}{]}
9901*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}containerref} \sphinxstyleemphasis{container\_reference\_dn}{]}
9902*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{mkeytype}{]}
9903*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}kv} \sphinxstyleemphasis{mkeyVNO}{]}
9904*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}M} \sphinxstyleemphasis{mkeyname}{]}
9905*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}m|\sphinxhyphen{}P} \sphinxstyleemphasis{password}|\sphinxstylestrong{\sphinxhyphen{}sf} \sphinxstyleemphasis{stashfilename}{]}
9906*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}s}{]}
9907*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}maxtktlife} \sphinxstyleemphasis{max\_ticket\_life}{]}
9908*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}maxrenewlife} \sphinxstyleemphasis{max\_renewable\_ticket\_life}{]}
9909*7f2fe78bSCy Schubert{[}\sphinxstyleemphasis{ticket\_flags}{]}
9910*7f2fe78bSCy Schubert\end{quote}
9911*7f2fe78bSCy Schubert
9912*7f2fe78bSCy Schubert\sphinxAtStartPar
9913*7f2fe78bSCy SchubertCreates realm in directory. Options:
9914*7f2fe78bSCy Schubert\begin{description}
9915*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}subtrees} \sphinxstyleemphasis{subtree\_dn\_list}}] \leavevmode
9916*7f2fe78bSCy Schubert\sphinxAtStartPar
9917*7f2fe78bSCy SchubertSpecifies the list of subtrees containing the principals of a
9918*7f2fe78bSCy Schubertrealm.  The list contains the DNs of the subtree objects separated
9919*7f2fe78bSCy Schubertby colon (\sphinxcode{\sphinxupquote{:}}).
9920*7f2fe78bSCy Schubert
9921*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}sscope} \sphinxstyleemphasis{search\_scope}}] \leavevmode
9922*7f2fe78bSCy Schubert\sphinxAtStartPar
9923*7f2fe78bSCy SchubertSpecifies the scope for searching the principals under the
9924*7f2fe78bSCy Schubertsubtree.  The possible values are 1 or one (one level), 2 or sub
9925*7f2fe78bSCy Schubert(subtrees).
9926*7f2fe78bSCy Schubert
9927*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}containerref} \sphinxstyleemphasis{container\_reference\_dn}}] \leavevmode
9928*7f2fe78bSCy Schubert\sphinxAtStartPar
9929*7f2fe78bSCy SchubertSpecifies the DN of the container object in which the principals
9930*7f2fe78bSCy Schubertof a realm will be created.  If the container reference is not
9931*7f2fe78bSCy Schubertconfigured for a realm, the principals will be created in the
9932*7f2fe78bSCy Schubertrealm container.
9933*7f2fe78bSCy Schubert
9934*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{mkeytype}}] \leavevmode
9935*7f2fe78bSCy Schubert\sphinxAtStartPar
9936*7f2fe78bSCy SchubertSpecifies the key type of the master key in the database.  The
9937*7f2fe78bSCy Schubertdefault is given by the \sphinxstylestrong{master\_key\_type} variable in
9938*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
9939*7f2fe78bSCy Schubert
9940*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}kv} \sphinxstyleemphasis{mkeyVNO}}] \leavevmode
9941*7f2fe78bSCy Schubert\sphinxAtStartPar
9942*7f2fe78bSCy SchubertSpecifies the version number of the master key in the database;
9943*7f2fe78bSCy Schubertthe default is 1.  Note that 0 is not allowed.
9944*7f2fe78bSCy Schubert
9945*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}M} \sphinxstyleemphasis{mkeyname}}] \leavevmode
9946*7f2fe78bSCy Schubert\sphinxAtStartPar
9947*7f2fe78bSCy SchubertSpecifies the principal name for the master key in the database.
9948*7f2fe78bSCy SchubertIf not specified, the name is determined by the
9949*7f2fe78bSCy Schubert\sphinxstylestrong{master\_key\_name} variable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.
9950*7f2fe78bSCy Schubert
9951*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}m}}] \leavevmode
9952*7f2fe78bSCy Schubert\sphinxAtStartPar
9953*7f2fe78bSCy SchubertSpecifies that the master database password should be read from
9954*7f2fe78bSCy Schubertthe TTY rather than fetched from a file on the disk.
9955*7f2fe78bSCy Schubert
9956*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{password}}] \leavevmode
9957*7f2fe78bSCy Schubert\sphinxAtStartPar
9958*7f2fe78bSCy SchubertSpecifies the master database password. This option is not
9959*7f2fe78bSCy Schubertrecommended.
9960*7f2fe78bSCy Schubert
9961*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}sf} \sphinxstyleemphasis{stashfilename}}] \leavevmode
9962*7f2fe78bSCy Schubert\sphinxAtStartPar
9963*7f2fe78bSCy SchubertSpecifies the stash file of the master database password.
9964*7f2fe78bSCy Schubert
9965*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}s}}] \leavevmode
9966*7f2fe78bSCy Schubert\sphinxAtStartPar
9967*7f2fe78bSCy SchubertSpecifies that the stash file is to be created.
9968*7f2fe78bSCy Schubert
9969*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxtktlife} \sphinxstyleemphasis{max\_ticket\_life}}] \leavevmode
9970*7f2fe78bSCy Schubert\sphinxAtStartPar
9971*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) Specifies maximum ticket life for
9972*7f2fe78bSCy Schubertprincipals in this realm.
9973*7f2fe78bSCy Schubert
9974*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxrenewlife} \sphinxstyleemphasis{max\_renewable\_ticket\_life}}] \leavevmode
9975*7f2fe78bSCy Schubert\sphinxAtStartPar
9976*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) Specifies maximum renewable life of
9977*7f2fe78bSCy Schuberttickets for principals in this realm.
9978*7f2fe78bSCy Schubert
9979*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{ticket\_flags}}] \leavevmode
9980*7f2fe78bSCy Schubert\sphinxAtStartPar
9981*7f2fe78bSCy SchubertSpecifies global ticket flags for the realm.  Allowable flags are
9982*7f2fe78bSCy Schubertdocumented in the description of the \sphinxstylestrong{add\_principal} command in
9983*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}.
9984*7f2fe78bSCy Schubert
9985*7f2fe78bSCy Schubert\end{description}
9986*7f2fe78bSCy Schubert
9987*7f2fe78bSCy Schubert\sphinxAtStartPar
9988*7f2fe78bSCy SchubertExample:
9989*7f2fe78bSCy Schubert
9990*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
9991*7f2fe78bSCy Schubert\PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{o}{\PYGZhy{}}\PYG{n}{D} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{admin}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{H} \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{ldap}\PYG{o}{\PYGZhy{}}\PYG{n}{server1}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
9992*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{n}{create} \PYG{o}{\PYGZhy{}}\PYG{n}{subtrees} \PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{sscope} \PYG{n}{SUB}
9993*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=admin,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
9994*7f2fe78bSCy Schubert\PYG{n}{Initializing} \PYG{n}{database} \PYG{k}{for} \PYG{n}{realm} \PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{ATHENA.MIT.EDU}\PYG{l+s+s1}{\PYGZsq{}}
9995*7f2fe78bSCy Schubert\PYG{n}{You} \PYG{n}{will} \PYG{n}{be} \PYG{n}{prompted} \PYG{k}{for} \PYG{n}{the} \PYG{n}{database} \PYG{n}{Master} \PYG{n}{Password}\PYG{o}{.}
9996*7f2fe78bSCy Schubert\PYG{n}{It} \PYG{o+ow}{is} \PYG{n}{important} \PYG{n}{that} \PYG{n}{you} \PYG{n}{NOT} \PYG{n}{FORGET} \PYG{n}{this} \PYG{n}{password}\PYG{o}{.}
9997*7f2fe78bSCy Schubert\PYG{n}{Enter} \PYG{n}{KDC} \PYG{n}{database} \PYG{n}{master} \PYG{n}{key}\PYG{p}{:}
9998*7f2fe78bSCy Schubert\PYG{n}{Re}\PYG{o}{\PYGZhy{}}\PYG{n}{enter} \PYG{n}{KDC} \PYG{n}{database} \PYG{n}{master} \PYG{n}{key} \PYG{n}{to} \PYG{n}{verify}\PYG{p}{:}
9999*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10000*7f2fe78bSCy Schubert
10001*7f2fe78bSCy Schubert
10002*7f2fe78bSCy Schubert\subsubsection{modify}
10003*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:modify}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-create-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-modify}}\begin{quote}
10004*7f2fe78bSCy Schubert
10005*7f2fe78bSCy Schubert\sphinxAtStartPar
10006*7f2fe78bSCy Schubert\sphinxstylestrong{modify}
10007*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}subtrees} \sphinxstyleemphasis{subtree\_dn\_list}{]}
10008*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}sscope} \sphinxstyleemphasis{search\_scope}{]}
10009*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}containerref} \sphinxstyleemphasis{container\_reference\_dn}{]}
10010*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}maxtktlife} \sphinxstyleemphasis{max\_ticket\_life}{]}
10011*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}maxrenewlife} \sphinxstyleemphasis{max\_renewable\_ticket\_life}{]}
10012*7f2fe78bSCy Schubert{[}\sphinxstyleemphasis{ticket\_flags}{]}
10013*7f2fe78bSCy Schubert\end{quote}
10014*7f2fe78bSCy Schubert
10015*7f2fe78bSCy Schubert\sphinxAtStartPar
10016*7f2fe78bSCy SchubertModifies the attributes of a realm.  Options:
10017*7f2fe78bSCy Schubert\begin{description}
10018*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}subtrees} \sphinxstyleemphasis{subtree\_dn\_list}}] \leavevmode
10019*7f2fe78bSCy Schubert\sphinxAtStartPar
10020*7f2fe78bSCy SchubertSpecifies the list of subtrees containing the principals of a
10021*7f2fe78bSCy Schubertrealm.  The list contains the DNs of the subtree objects separated
10022*7f2fe78bSCy Schubertby colon (\sphinxcode{\sphinxupquote{:}}).  This list replaces the existing list.
10023*7f2fe78bSCy Schubert
10024*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}sscope} \sphinxstyleemphasis{search\_scope}}] \leavevmode
10025*7f2fe78bSCy Schubert\sphinxAtStartPar
10026*7f2fe78bSCy SchubertSpecifies the scope for searching the principals under the
10027*7f2fe78bSCy Schubertsubtrees.  The possible values are 1 or one (one level), 2 or sub
10028*7f2fe78bSCy Schubert(subtrees).
10029*7f2fe78bSCy Schubert
10030*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}containerref} \sphinxstyleemphasis{container\_reference\_dn} Specifies the DN of the}] \leavevmode
10031*7f2fe78bSCy Schubert\sphinxAtStartPar
10032*7f2fe78bSCy Schubertcontainer object in which the principals of a realm will be
10033*7f2fe78bSCy Schubertcreated.
10034*7f2fe78bSCy Schubert
10035*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxtktlife} \sphinxstyleemphasis{max\_ticket\_life}}] \leavevmode
10036*7f2fe78bSCy Schubert\sphinxAtStartPar
10037*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) Specifies maximum ticket life for
10038*7f2fe78bSCy Schubertprincipals in this realm.
10039*7f2fe78bSCy Schubert
10040*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxrenewlife} \sphinxstyleemphasis{max\_renewable\_ticket\_life}}] \leavevmode
10041*7f2fe78bSCy Schubert\sphinxAtStartPar
10042*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) Specifies maximum renewable life of
10043*7f2fe78bSCy Schuberttickets for principals in this realm.
10044*7f2fe78bSCy Schubert
10045*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{ticket\_flags}}] \leavevmode
10046*7f2fe78bSCy Schubert\sphinxAtStartPar
10047*7f2fe78bSCy SchubertSpecifies global ticket flags for the realm.  Allowable flags are
10048*7f2fe78bSCy Schubertdocumented in the description of the \sphinxstylestrong{add\_principal} command in
10049*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}.
10050*7f2fe78bSCy Schubert
10051*7f2fe78bSCy Schubert\end{description}
10052*7f2fe78bSCy Schubert
10053*7f2fe78bSCy Schubert\sphinxAtStartPar
10054*7f2fe78bSCy SchubertExample:
10055*7f2fe78bSCy Schubert
10056*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10057*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{\PYGZhy{}}\PYG{n}{D} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{admin}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{H}
10058*7f2fe78bSCy Schubert    \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{ldap}\PYG{o}{\PYGZhy{}}\PYG{n}{server1}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{n}{modify} \PYG{o}{+}\PYG{n}{requires\PYGZus{}preauth}
10059*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=admin,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10060*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}}
10061*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10062*7f2fe78bSCy Schubert
10063*7f2fe78bSCy Schubert
10064*7f2fe78bSCy Schubert\subsubsection{view}
10065*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:view}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-modify-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-view}}\begin{quote}
10066*7f2fe78bSCy Schubert
10067*7f2fe78bSCy Schubert\sphinxAtStartPar
10068*7f2fe78bSCy Schubert\sphinxstylestrong{view}
10069*7f2fe78bSCy Schubert\end{quote}
10070*7f2fe78bSCy Schubert
10071*7f2fe78bSCy Schubert\sphinxAtStartPar
10072*7f2fe78bSCy SchubertDisplays the attributes of a realm.
10073*7f2fe78bSCy Schubert
10074*7f2fe78bSCy Schubert\sphinxAtStartPar
10075*7f2fe78bSCy SchubertExample:
10076*7f2fe78bSCy Schubert
10077*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10078*7f2fe78bSCy Schubert\PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{o}{\PYGZhy{}}\PYG{n}{D} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{admin}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{H} \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{ldap}\PYG{o}{\PYGZhy{}}\PYG{n}{server1}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
10079*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{n}{view}
10080*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=admin,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10081*7f2fe78bSCy Schubert\PYG{n}{Realm} \PYG{n}{Name}\PYG{p}{:} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
10082*7f2fe78bSCy Schubert\PYG{n}{Subtree}\PYG{p}{:} \PYG{n}{ou}\PYG{o}{=}\PYG{n}{users}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org}
10083*7f2fe78bSCy Schubert\PYG{n}{Subtree}\PYG{p}{:} \PYG{n}{ou}\PYG{o}{=}\PYG{n}{servers}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org}
10084*7f2fe78bSCy Schubert\PYG{n}{SearchScope}\PYG{p}{:} \PYG{n}{ONE}
10085*7f2fe78bSCy Schubert\PYG{n}{Maximum} \PYG{n}{ticket} \PYG{n}{life}\PYG{p}{:} \PYG{l+m+mi}{0} \PYG{n}{days} \PYG{l+m+mi}{01}\PYG{p}{:}\PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}
10086*7f2fe78bSCy Schubert\PYG{n}{Maximum} \PYG{n}{renewable} \PYG{n}{life}\PYG{p}{:} \PYG{l+m+mi}{0} \PYG{n}{days} \PYG{l+m+mi}{10}\PYG{p}{:}\PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}
10087*7f2fe78bSCy Schubert\PYG{n}{Ticket} \PYG{n}{flags}\PYG{p}{:} \PYG{n}{DISALLOW\PYGZus{}FORWARDABLE} \PYG{n}{REQUIRES\PYGZus{}PWCHANGE}
10088*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10089*7f2fe78bSCy Schubert
10090*7f2fe78bSCy Schubert
10091*7f2fe78bSCy Schubert\subsubsection{destroy}
10092*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:destroy}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-view-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-destroy}}\begin{quote}
10093*7f2fe78bSCy Schubert
10094*7f2fe78bSCy Schubert\sphinxAtStartPar
10095*7f2fe78bSCy Schubert\sphinxstylestrong{destroy} {[}\sphinxstylestrong{\sphinxhyphen{}f}{]}
10096*7f2fe78bSCy Schubert\end{quote}
10097*7f2fe78bSCy Schubert
10098*7f2fe78bSCy Schubert\sphinxAtStartPar
10099*7f2fe78bSCy SchubertDestroys an existing realm. Options:
10100*7f2fe78bSCy Schubert\begin{description}
10101*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}f}}] \leavevmode
10102*7f2fe78bSCy Schubert\sphinxAtStartPar
10103*7f2fe78bSCy SchubertIf specified, will not prompt the user for confirmation.
10104*7f2fe78bSCy Schubert
10105*7f2fe78bSCy Schubert\end{description}
10106*7f2fe78bSCy Schubert
10107*7f2fe78bSCy Schubert\sphinxAtStartPar
10108*7f2fe78bSCy SchubertExample:
10109*7f2fe78bSCy Schubert
10110*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10111*7f2fe78bSCy Schubertshell\PYGZpc{} kdb5\PYGZus{}ldap\PYGZus{}util \PYGZhy{}r ATHENA.MIT.EDU \PYGZhy{}D cn=admin,o=org \PYGZhy{}H
10112*7f2fe78bSCy Schubert    ldaps://ldap\PYGZhy{}server1.mit.edu destroy
10113*7f2fe78bSCy SchubertPassword for \PYGZdq{}cn=admin,o=org\PYGZdq{}:
10114*7f2fe78bSCy SchubertDeleting KDC database of \PYGZsq{}ATHENA.MIT.EDU\PYGZsq{}, are you sure?
10115*7f2fe78bSCy Schubert(type \PYGZsq{}yes\PYGZsq{} to confirm)? yes
10116*7f2fe78bSCy SchubertOK, deleting database of \PYGZsq{}ATHENA.MIT.EDU\PYGZsq{}...
10117*7f2fe78bSCy Schubertshell\PYGZpc{}
10118*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10119*7f2fe78bSCy Schubert
10120*7f2fe78bSCy Schubert
10121*7f2fe78bSCy Schubert\subsubsection{list}
10122*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:list}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-destroy-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-list}}\begin{quote}
10123*7f2fe78bSCy Schubert
10124*7f2fe78bSCy Schubert\sphinxAtStartPar
10125*7f2fe78bSCy Schubert\sphinxstylestrong{list}
10126*7f2fe78bSCy Schubert\end{quote}
10127*7f2fe78bSCy Schubert
10128*7f2fe78bSCy Schubert\sphinxAtStartPar
10129*7f2fe78bSCy SchubertLists the names of realms under the container.
10130*7f2fe78bSCy Schubert
10131*7f2fe78bSCy Schubert\sphinxAtStartPar
10132*7f2fe78bSCy SchubertExample:
10133*7f2fe78bSCy Schubert
10134*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10135*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{o}{\PYGZhy{}}\PYG{n}{D} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{admin}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{H}
10136*7f2fe78bSCy Schubert    \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{ldap}\PYG{o}{\PYGZhy{}}\PYG{n}{server1}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{n+nb}{list}
10137*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=admin,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10138*7f2fe78bSCy Schubert\PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
10139*7f2fe78bSCy Schubert\PYG{n}{OPENLDAP}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
10140*7f2fe78bSCy Schubert\PYG{n}{MEDIA}\PYG{o}{\PYGZhy{}}\PYG{n}{LAB}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
10141*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}}
10142*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10143*7f2fe78bSCy Schubert
10144*7f2fe78bSCy Schubert
10145*7f2fe78bSCy Schubert\subsubsection{stashsrvpw}
10146*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:stashsrvpw}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-list-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-stashsrvpw}}\begin{quote}
10147*7f2fe78bSCy Schubert
10148*7f2fe78bSCy Schubert\sphinxAtStartPar
10149*7f2fe78bSCy Schubert\sphinxstylestrong{stashsrvpw}
10150*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}f} \sphinxstyleemphasis{filename}{]}
10151*7f2fe78bSCy Schubert\sphinxstyleemphasis{name}
10152*7f2fe78bSCy Schubert\end{quote}
10153*7f2fe78bSCy Schubert
10154*7f2fe78bSCy Schubert\sphinxAtStartPar
10155*7f2fe78bSCy SchubertAllows an administrator to store the password for service object in a
10156*7f2fe78bSCy Schubertfile so that KDC and Administration server can use it to authenticate
10157*7f2fe78bSCy Schubertto the LDAP server.  Options:
10158*7f2fe78bSCy Schubert\begin{description}
10159*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}f} \sphinxstyleemphasis{filename}}] \leavevmode
10160*7f2fe78bSCy Schubert\sphinxAtStartPar
10161*7f2fe78bSCy SchubertSpecifies the complete path of the service password file. By
10162*7f2fe78bSCy Schubertdefault, \sphinxcode{\sphinxupquote{/usr/local/var/service\_passwd}} is used.
10163*7f2fe78bSCy Schubert
10164*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{name}}] \leavevmode
10165*7f2fe78bSCy Schubert\sphinxAtStartPar
10166*7f2fe78bSCy SchubertSpecifies the name of the object whose password is to be stored.
10167*7f2fe78bSCy SchubertIf {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}} or {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} are configured for
10168*7f2fe78bSCy Schubertsimple binding, this should be the distinguished name it will
10169*7f2fe78bSCy Schubertuse as given by the \sphinxstylestrong{ldap\_kdc\_dn} or \sphinxstylestrong{ldap\_kadmind\_dn}
10170*7f2fe78bSCy Schubertvariable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.  If the KDC or kadmind is
10171*7f2fe78bSCy Schubertconfigured for SASL binding, this should be the authentication
10172*7f2fe78bSCy Schubertname it will use as given by the \sphinxstylestrong{ldap\_kdc\_sasl\_authcid} or
10173*7f2fe78bSCy Schubert\sphinxstylestrong{ldap\_kadmind\_sasl\_authcid} variable.
10174*7f2fe78bSCy Schubert
10175*7f2fe78bSCy Schubert\end{description}
10176*7f2fe78bSCy Schubert
10177*7f2fe78bSCy Schubert\sphinxAtStartPar
10178*7f2fe78bSCy SchubertExample:
10179*7f2fe78bSCy Schubert
10180*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10181*7f2fe78bSCy Schubert\PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{n}{stashsrvpw} \PYG{o}{\PYGZhy{}}\PYG{n}{f} \PYG{o}{/}\PYG{n}{home}\PYG{o}{/}\PYG{n}{andrew}\PYG{o}{/}\PYG{n}{conf\PYGZus{}keyfile}
10182*7f2fe78bSCy Schubert    \PYG{n}{cn}\PYG{o}{=}\PYG{n}{service}\PYG{o}{\PYGZhy{}}\PYG{n}{kdc}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org}
10183*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=service\PYGZhy{}kdc,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10184*7f2fe78bSCy Schubert\PYG{n}{Re}\PYG{o}{\PYGZhy{}}\PYG{n}{enter} \PYG{n}{password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=service\PYGZhy{}kdc,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10185*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10186*7f2fe78bSCy Schubert
10187*7f2fe78bSCy Schubert
10188*7f2fe78bSCy Schubert\subsubsection{create\_policy}
10189*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:create-policy}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-stashsrvpw-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-create-policy}}\begin{quote}
10190*7f2fe78bSCy Schubert
10191*7f2fe78bSCy Schubert\sphinxAtStartPar
10192*7f2fe78bSCy Schubert\sphinxstylestrong{create\_policy}
10193*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}maxtktlife} \sphinxstyleemphasis{max\_ticket\_life}{]}
10194*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}maxrenewlife} \sphinxstyleemphasis{max\_renewable\_ticket\_life}{]}
10195*7f2fe78bSCy Schubert{[}\sphinxstyleemphasis{ticket\_flags}{]}
10196*7f2fe78bSCy Schubert\sphinxstyleemphasis{policy\_name}
10197*7f2fe78bSCy Schubert\end{quote}
10198*7f2fe78bSCy Schubert
10199*7f2fe78bSCy Schubert\sphinxAtStartPar
10200*7f2fe78bSCy SchubertCreates a ticket policy in the directory.  Options:
10201*7f2fe78bSCy Schubert\begin{description}
10202*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxtktlife} \sphinxstyleemphasis{max\_ticket\_life}}] \leavevmode
10203*7f2fe78bSCy Schubert\sphinxAtStartPar
10204*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) Specifies maximum ticket life for
10205*7f2fe78bSCy Schubertprincipals.
10206*7f2fe78bSCy Schubert
10207*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}maxrenewlife} \sphinxstyleemphasis{max\_renewable\_ticket\_life}}] \leavevmode
10208*7f2fe78bSCy Schubert\sphinxAtStartPar
10209*7f2fe78bSCy Schubert(\DUrole{xref,std,std-ref}{getdate} string) Specifies maximum renewable life of
10210*7f2fe78bSCy Schuberttickets for principals.
10211*7f2fe78bSCy Schubert
10212*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{ticket\_flags}}] \leavevmode
10213*7f2fe78bSCy Schubert\sphinxAtStartPar
10214*7f2fe78bSCy SchubertSpecifies the ticket flags.  If this option is not specified, by
10215*7f2fe78bSCy Schubertdefault, no restriction will be set by the policy.  Allowable
10216*7f2fe78bSCy Schubertflags are documented in the description of the \sphinxstylestrong{add\_principal}
10217*7f2fe78bSCy Schubertcommand in {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}.
10218*7f2fe78bSCy Schubert
10219*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{policy\_name}}] \leavevmode
10220*7f2fe78bSCy Schubert\sphinxAtStartPar
10221*7f2fe78bSCy SchubertSpecifies the name of the ticket policy.
10222*7f2fe78bSCy Schubert
10223*7f2fe78bSCy Schubert\end{description}
10224*7f2fe78bSCy Schubert
10225*7f2fe78bSCy Schubert\sphinxAtStartPar
10226*7f2fe78bSCy SchubertExample:
10227*7f2fe78bSCy Schubert
10228*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10229*7f2fe78bSCy Schubert\PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{o}{\PYGZhy{}}\PYG{n}{D} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{admin}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{H} \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{ldap}\PYG{o}{\PYGZhy{}}\PYG{n}{server1}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
10230*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{n}{create\PYGZus{}policy} \PYG{o}{\PYGZhy{}}\PYG{n}{maxtktlife} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{1 day}\PYG{l+s+s2}{\PYGZdq{}}
10231*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{maxrenewlife} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{1 week}\PYG{l+s+s2}{\PYGZdq{}} \PYG{o}{\PYGZhy{}}\PYG{n}{allow\PYGZus{}postdated} \PYG{o}{+}\PYG{n}{needchange}
10232*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{allow\PYGZus{}forwardable} \PYG{n}{tktpolicy}
10233*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=admin,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10234*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10235*7f2fe78bSCy Schubert
10236*7f2fe78bSCy Schubert
10237*7f2fe78bSCy Schubert\subsubsection{modify\_policy}
10238*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:modify-policy}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-create-policy-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-modify-policy}}\begin{quote}
10239*7f2fe78bSCy Schubert
10240*7f2fe78bSCy Schubert\sphinxAtStartPar
10241*7f2fe78bSCy Schubert\sphinxstylestrong{modify\_policy}
10242*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}maxtktlife} \sphinxstyleemphasis{max\_ticket\_life}{]}
10243*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}maxrenewlife} \sphinxstyleemphasis{max\_renewable\_ticket\_life}{]}
10244*7f2fe78bSCy Schubert{[}\sphinxstyleemphasis{ticket\_flags}{]}
10245*7f2fe78bSCy Schubert\sphinxstyleemphasis{policy\_name}
10246*7f2fe78bSCy Schubert\end{quote}
10247*7f2fe78bSCy Schubert
10248*7f2fe78bSCy Schubert\sphinxAtStartPar
10249*7f2fe78bSCy SchubertModifies the attributes of a ticket policy.  Options are same as for
10250*7f2fe78bSCy Schubert\sphinxstylestrong{create\_policy}.
10251*7f2fe78bSCy Schubert
10252*7f2fe78bSCy Schubert\sphinxAtStartPar
10253*7f2fe78bSCy SchubertExample:
10254*7f2fe78bSCy Schubert
10255*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10256*7f2fe78bSCy Schubert\PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{o}{\PYGZhy{}}\PYG{n}{D} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{admin}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{H}
10257*7f2fe78bSCy Schubert    \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{ldap}\PYG{o}{\PYGZhy{}}\PYG{n}{server1}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu} \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{n}{modify\PYGZus{}policy}
10258*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{maxtktlife} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{60 minutes}\PYG{l+s+s2}{\PYGZdq{}} \PYG{o}{\PYGZhy{}}\PYG{n}{maxrenewlife} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{10 hours}\PYG{l+s+s2}{\PYGZdq{}}
10259*7f2fe78bSCy Schubert    \PYG{o}{+}\PYG{n}{allow\PYGZus{}postdated} \PYG{o}{\PYGZhy{}}\PYG{n}{requires\PYGZus{}preauth} \PYG{n}{tktpolicy}
10260*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=admin,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10261*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10262*7f2fe78bSCy Schubert
10263*7f2fe78bSCy Schubert
10264*7f2fe78bSCy Schubert\subsubsection{view\_policy}
10265*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:view-policy}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-modify-policy-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-view-policy}}\begin{quote}
10266*7f2fe78bSCy Schubert
10267*7f2fe78bSCy Schubert\sphinxAtStartPar
10268*7f2fe78bSCy Schubert\sphinxstylestrong{view\_policy}
10269*7f2fe78bSCy Schubert\sphinxstyleemphasis{policy\_name}
10270*7f2fe78bSCy Schubert\end{quote}
10271*7f2fe78bSCy Schubert
10272*7f2fe78bSCy Schubert\sphinxAtStartPar
10273*7f2fe78bSCy SchubertDisplays the attributes of the named ticket policy.
10274*7f2fe78bSCy Schubert
10275*7f2fe78bSCy Schubert\sphinxAtStartPar
10276*7f2fe78bSCy SchubertExample:
10277*7f2fe78bSCy Schubert
10278*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10279*7f2fe78bSCy Schubert\PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{o}{\PYGZhy{}}\PYG{n}{D} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{admin}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{H} \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{ldap}\PYG{o}{\PYGZhy{}}\PYG{n}{server1}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
10280*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{n}{view\PYGZus{}policy} \PYG{n}{tktpolicy}
10281*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=admin,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10282*7f2fe78bSCy Schubert\PYG{n}{Ticket} \PYG{n}{policy}\PYG{p}{:} \PYG{n}{tktpolicy}
10283*7f2fe78bSCy Schubert\PYG{n}{Maximum} \PYG{n}{ticket} \PYG{n}{life}\PYG{p}{:} \PYG{l+m+mi}{0} \PYG{n}{days} \PYG{l+m+mi}{01}\PYG{p}{:}\PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}
10284*7f2fe78bSCy Schubert\PYG{n}{Maximum} \PYG{n}{renewable} \PYG{n}{life}\PYG{p}{:} \PYG{l+m+mi}{0} \PYG{n}{days} \PYG{l+m+mi}{10}\PYG{p}{:}\PYG{l+m+mi}{00}\PYG{p}{:}\PYG{l+m+mi}{00}
10285*7f2fe78bSCy Schubert\PYG{n}{Ticket} \PYG{n}{flags}\PYG{p}{:} \PYG{n}{DISALLOW\PYGZus{}FORWARDABLE} \PYG{n}{REQUIRES\PYGZus{}PWCHANGE}
10286*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10287*7f2fe78bSCy Schubert
10288*7f2fe78bSCy Schubert
10289*7f2fe78bSCy Schubert\subsubsection{destroy\_policy}
10290*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:destroy-policy}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-view-policy-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-destroy-policy}}\begin{quote}
10291*7f2fe78bSCy Schubert
10292*7f2fe78bSCy Schubert\sphinxAtStartPar
10293*7f2fe78bSCy Schubert\sphinxstylestrong{destroy\_policy}
10294*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}force}{]}
10295*7f2fe78bSCy Schubert\sphinxstyleemphasis{policy\_name}
10296*7f2fe78bSCy Schubert\end{quote}
10297*7f2fe78bSCy Schubert
10298*7f2fe78bSCy Schubert\sphinxAtStartPar
10299*7f2fe78bSCy SchubertDestroys an existing ticket policy.  Options:
10300*7f2fe78bSCy Schubert\begin{description}
10301*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}force}}] \leavevmode
10302*7f2fe78bSCy Schubert\sphinxAtStartPar
10303*7f2fe78bSCy SchubertForces the deletion of the policy object.  If not specified, the
10304*7f2fe78bSCy Schubertuser will be prompted for confirmation before deleting the policy.
10305*7f2fe78bSCy Schubert
10306*7f2fe78bSCy Schubert\item[{\sphinxstyleemphasis{policy\_name}}] \leavevmode
10307*7f2fe78bSCy Schubert\sphinxAtStartPar
10308*7f2fe78bSCy SchubertSpecifies the name of the ticket policy.
10309*7f2fe78bSCy Schubert
10310*7f2fe78bSCy Schubert\end{description}
10311*7f2fe78bSCy Schubert
10312*7f2fe78bSCy Schubert\sphinxAtStartPar
10313*7f2fe78bSCy SchubertExample:
10314*7f2fe78bSCy Schubert
10315*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10316*7f2fe78bSCy Schubertkdb5\PYGZus{}ldap\PYGZus{}util \PYGZhy{}D cn=admin,o=org \PYGZhy{}H ldaps://ldap\PYGZhy{}server1.mit.edu
10317*7f2fe78bSCy Schubert    \PYGZhy{}r ATHENA.MIT.EDU destroy\PYGZus{}policy tktpolicy
10318*7f2fe78bSCy SchubertPassword for \PYGZdq{}cn=admin,o=org\PYGZdq{}:
10319*7f2fe78bSCy SchubertThis will delete the policy object \PYGZsq{}tktpolicy\PYGZsq{}, are you sure?
10320*7f2fe78bSCy Schubert(type \PYGZsq{}yes\PYGZsq{} to confirm)? yes
10321*7f2fe78bSCy Schubert** policy object \PYGZsq{}tktpolicy\PYGZsq{} deleted.
10322*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10323*7f2fe78bSCy Schubert
10324*7f2fe78bSCy Schubert
10325*7f2fe78bSCy Schubert\subsubsection{list\_policy}
10326*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:list-policy}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-destroy-policy-end}}\phantomsection\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-list-policy}}\begin{quote}
10327*7f2fe78bSCy Schubert
10328*7f2fe78bSCy Schubert\sphinxAtStartPar
10329*7f2fe78bSCy Schubert\sphinxstylestrong{list\_policy}
10330*7f2fe78bSCy Schubert\end{quote}
10331*7f2fe78bSCy Schubert
10332*7f2fe78bSCy Schubert\sphinxAtStartPar
10333*7f2fe78bSCy SchubertLists ticket policies.
10334*7f2fe78bSCy Schubert
10335*7f2fe78bSCy Schubert\sphinxAtStartPar
10336*7f2fe78bSCy SchubertExample:
10337*7f2fe78bSCy Schubert
10338*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10339*7f2fe78bSCy Schubert\PYG{n}{kdb5\PYGZus{}ldap\PYGZus{}util} \PYG{o}{\PYGZhy{}}\PYG{n}{D} \PYG{n}{cn}\PYG{o}{=}\PYG{n}{admin}\PYG{p}{,}\PYG{n}{o}\PYG{o}{=}\PYG{n}{org} \PYG{o}{\PYGZhy{}}\PYG{n}{H} \PYG{n}{ldaps}\PYG{p}{:}\PYG{o}{/}\PYG{o}{/}\PYG{n}{ldap}\PYG{o}{\PYGZhy{}}\PYG{n}{server1}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}
10340*7f2fe78bSCy Schubert    \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{n}{list\PYGZus{}policy}
10341*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cn=admin,o=org}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:}
10342*7f2fe78bSCy Schubert\PYG{n}{tktpolicy}
10343*7f2fe78bSCy Schubert\PYG{n}{tmppolicy}
10344*7f2fe78bSCy Schubert\PYG{n}{userpolicy}
10345*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10346*7f2fe78bSCy Schubert
10347*7f2fe78bSCy Schubert
10348*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
10349*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:environment}}\label{\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-list-policy-end}}
10350*7f2fe78bSCy Schubert\sphinxAtStartPar
10351*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
10352*7f2fe78bSCy Schubertvariables.
10353*7f2fe78bSCy Schubert
10354*7f2fe78bSCy Schubert
10355*7f2fe78bSCy Schubert\subsection{SEE ALSO}
10356*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kdb5_ldap_util:see-also}}
10357*7f2fe78bSCy Schubert\sphinxAtStartPar
10358*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}, \DUrole{xref,std,std-ref}{kerberos(7)}
10359*7f2fe78bSCy Schubert
10360*7f2fe78bSCy Schubert
10361*7f2fe78bSCy Schubert\section{krb5kdc}
10362*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/krb5kdc:krb5kdc}}\label{\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}}\label{\detokenize{admin/admin_commands/krb5kdc::doc}}
10363*7f2fe78bSCy Schubert
10364*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
10365*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/krb5kdc:synopsis}}
10366*7f2fe78bSCy Schubert\sphinxAtStartPar
10367*7f2fe78bSCy Schubert\sphinxstylestrong{krb5kdc}
10368*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args}{]}
10369*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}d} \sphinxstyleemphasis{dbname}{]}
10370*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{keytype}{]}
10371*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}M} \sphinxstyleemphasis{mkeyname}{]}
10372*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{portnum}{]}
10373*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}m}{]}
10374*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}{]}
10375*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}n}{]}
10376*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}w} \sphinxstyleemphasis{numworkers}{]}
10377*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{pid\_file}{]}
10378*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}T} \sphinxstyleemphasis{time\_offset}{]}
10379*7f2fe78bSCy Schubert
10380*7f2fe78bSCy Schubert
10381*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
10382*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/krb5kdc:description}}
10383*7f2fe78bSCy Schubert\sphinxAtStartPar
10384*7f2fe78bSCy Schubertkrb5kdc is the Kerberos version 5 Authentication Service and Key
10385*7f2fe78bSCy SchubertDistribution Center (AS/KDC).
10386*7f2fe78bSCy Schubert
10387*7f2fe78bSCy Schubert
10388*7f2fe78bSCy Schubert\subsection{OPTIONS}
10389*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/krb5kdc:options}}
10390*7f2fe78bSCy Schubert\sphinxAtStartPar
10391*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm} option specifies the realm for which the server
10392*7f2fe78bSCy Schubertshould provide service.  This option may be specified multiple times
10393*7f2fe78bSCy Schubertto serve multiple realms.  If no \sphinxstylestrong{\sphinxhyphen{}r} option is given, the default
10394*7f2fe78bSCy Schubertrealm (as specified in {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}) will be served.
10395*7f2fe78bSCy Schubert
10396*7f2fe78bSCy Schubert\sphinxAtStartPar
10397*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}d} \sphinxstyleemphasis{dbname} option specifies the name under which the
10398*7f2fe78bSCy Schubertprincipal database can be found.  This option does not apply to the
10399*7f2fe78bSCy SchubertLDAP database.
10400*7f2fe78bSCy Schubert
10401*7f2fe78bSCy Schubert\sphinxAtStartPar
10402*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{keytype} option specifies the key type of the master key
10403*7f2fe78bSCy Schubertto be entered manually as a password when \sphinxstylestrong{\sphinxhyphen{}m} is given; the default
10404*7f2fe78bSCy Schubertis \sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96}}.
10405*7f2fe78bSCy Schubert
10406*7f2fe78bSCy Schubert\sphinxAtStartPar
10407*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}M} \sphinxstyleemphasis{mkeyname} option specifies the principal name for the
10408*7f2fe78bSCy Schubertmaster key in the database (usually \sphinxcode{\sphinxupquote{K/M}} in the KDC’s realm).
10409*7f2fe78bSCy Schubert
10410*7f2fe78bSCy Schubert\sphinxAtStartPar
10411*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}m} option specifies that the master database password should
10412*7f2fe78bSCy Schubertbe fetched from the keyboard rather than from a stash file.
10413*7f2fe78bSCy Schubert
10414*7f2fe78bSCy Schubert\sphinxAtStartPar
10415*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}n} option specifies that the KDC does not put itself in the
10416*7f2fe78bSCy Schubertbackground and does not disassociate itself from the terminal.
10417*7f2fe78bSCy Schubert
10418*7f2fe78bSCy Schubert\sphinxAtStartPar
10419*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{pid\_file} option tells the KDC to write its PID into
10420*7f2fe78bSCy Schubert\sphinxstyleemphasis{pid\_file} after it starts up.  This can be used to identify whether
10421*7f2fe78bSCy Schubertthe KDC is still running and to allow init scripts to stop the correct
10422*7f2fe78bSCy Schubertprocess.
10423*7f2fe78bSCy Schubert
10424*7f2fe78bSCy Schubert\sphinxAtStartPar
10425*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{portnum} option specifies the default UDP and TCP port
10426*7f2fe78bSCy Schubertnumbers which the KDC should listen on for Kerberos version 5
10427*7f2fe78bSCy Schubertrequests, as a comma\sphinxhyphen{}separated list.  This value overrides the port
10428*7f2fe78bSCy Schubertnumbers specified in the {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdcdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}kdcdefaults{]}}}}} section of
10429*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}, but may be overridden by realm\sphinxhyphen{}specific values.
10430*7f2fe78bSCy SchubertIf no value is given from any source, the default port is 88.
10431*7f2fe78bSCy Schubert
10432*7f2fe78bSCy Schubert\sphinxAtStartPar
10433*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}w} \sphinxstyleemphasis{numworkers} option tells the KDC to fork \sphinxstyleemphasis{numworkers}
10434*7f2fe78bSCy Schubertprocesses to listen to the KDC ports and process requests in parallel.
10435*7f2fe78bSCy SchubertThe top level KDC process (whose pid is recorded in the pid file if
10436*7f2fe78bSCy Schubertthe \sphinxstylestrong{\sphinxhyphen{}P} option is also given) acts as a supervisor.  The supervisor
10437*7f2fe78bSCy Schubertwill relay SIGHUP signals to the worker subprocesses, and will
10438*7f2fe78bSCy Schubertterminate the worker subprocess if the it is itself terminated or if
10439*7f2fe78bSCy Schubertany other worker process exits.
10440*7f2fe78bSCy Schubert
10441*7f2fe78bSCy Schubert\sphinxAtStartPar
10442*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args} option specifies database\sphinxhyphen{}specific arguments.
10443*7f2fe78bSCy SchubertSee {\hyperref[\detokenize{admin/admin_commands/kadmin_local:dboptions}]{\sphinxcrossref{\DUrole{std,std-ref}{Database Options}}}} in {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} for
10444*7f2fe78bSCy Schubertsupported arguments.
10445*7f2fe78bSCy Schubert
10446*7f2fe78bSCy Schubert\sphinxAtStartPar
10447*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}T} \sphinxstyleemphasis{offset} option specifies a time offset, in seconds, which
10448*7f2fe78bSCy Schubertthe KDC will operate under.  It is intended only for testing purposes.
10449*7f2fe78bSCy Schubert
10450*7f2fe78bSCy Schubert
10451*7f2fe78bSCy Schubert\subsection{EXAMPLE}
10452*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/krb5kdc:example}}
10453*7f2fe78bSCy Schubert\sphinxAtStartPar
10454*7f2fe78bSCy SchubertThe KDC may service requests for multiple realms (maximum 32 realms).
10455*7f2fe78bSCy SchubertThe realms are listed on the command line.  Per\sphinxhyphen{}realm options that can
10456*7f2fe78bSCy Schubertbe specified on the command line pertain for each realm that follows
10457*7f2fe78bSCy Schubertit and are superseded by subsequent definitions of the same option.
10458*7f2fe78bSCy Schubert
10459*7f2fe78bSCy Schubert\sphinxAtStartPar
10460*7f2fe78bSCy SchubertFor example:
10461*7f2fe78bSCy Schubert
10462*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10463*7f2fe78bSCy Schubert\PYG{n}{krb5kdc} \PYG{o}{\PYGZhy{}}\PYG{n}{p} \PYG{l+m+mi}{2001} \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{REALM1} \PYG{o}{\PYGZhy{}}\PYG{n}{p} \PYG{l+m+mi}{2002} \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{REALM2} \PYG{o}{\PYGZhy{}}\PYG{n}{r} \PYG{n}{REALM3}
10464*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10465*7f2fe78bSCy Schubert
10466*7f2fe78bSCy Schubert\sphinxAtStartPar
10467*7f2fe78bSCy Schubertspecifies that the KDC listen on port 2001 for REALM1 and on port 2002
10468*7f2fe78bSCy Schubertfor REALM2 and REALM3.  Additionally, per\sphinxhyphen{}realm parameters may be
10469*7f2fe78bSCy Schubertspecified in the {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} file.  The location of this file
10470*7f2fe78bSCy Schubertmay be specified by the \sphinxstylestrong{KRB5\_KDC\_PROFILE} environment variable.
10471*7f2fe78bSCy SchubertPer\sphinxhyphen{}realm parameters specified in this file take precedence over
10472*7f2fe78bSCy Schubertoptions specified on the command line.  See the {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}
10473*7f2fe78bSCy Schubertdescription for further details.
10474*7f2fe78bSCy Schubert
10475*7f2fe78bSCy Schubert
10476*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
10477*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/krb5kdc:environment}}
10478*7f2fe78bSCy Schubert\sphinxAtStartPar
10479*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
10480*7f2fe78bSCy Schubertvariables.
10481*7f2fe78bSCy Schubert
10482*7f2fe78bSCy Schubert
10483*7f2fe78bSCy Schubert\subsection{SEE ALSO}
10484*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/krb5kdc:see-also}}
10485*7f2fe78bSCy Schubert\sphinxAtStartPar
10486*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}, {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}, {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}},
10487*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_ldap_util:kdb5-ldap-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_ldap\_util}}}}, \DUrole{xref,std,std-ref}{kerberos(7)}
10488*7f2fe78bSCy Schubert
10489*7f2fe78bSCy Schubert
10490*7f2fe78bSCy Schubert\section{kprop}
10491*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kprop:kprop}}\label{\detokenize{admin/admin_commands/kprop:kprop-8}}\label{\detokenize{admin/admin_commands/kprop::doc}}
10492*7f2fe78bSCy Schubert
10493*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
10494*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kprop:synopsis}}
10495*7f2fe78bSCy Schubert\sphinxAtStartPar
10496*7f2fe78bSCy Schubert\sphinxstylestrong{kprop}
10497*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}{]}
10498*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}f} \sphinxstyleemphasis{file}{]}
10499*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}d}{]}
10500*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{port}{]}
10501*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}s} \sphinxstyleemphasis{keytab}{]}
10502*7f2fe78bSCy Schubert\sphinxstyleemphasis{replica\_host}
10503*7f2fe78bSCy Schubert
10504*7f2fe78bSCy Schubert
10505*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
10506*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kprop:description}}
10507*7f2fe78bSCy Schubert\sphinxAtStartPar
10508*7f2fe78bSCy Schubertkprop is used to securely propagate a Kerberos V5 database dump file
10509*7f2fe78bSCy Schubertfrom the primary Kerberos server to a replica Kerberos server, which is
10510*7f2fe78bSCy Schubertspecified by \sphinxstyleemphasis{replica\_host}.  The dump file must be created by
10511*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}.
10512*7f2fe78bSCy Schubert
10513*7f2fe78bSCy Schubert
10514*7f2fe78bSCy Schubert\subsection{OPTIONS}
10515*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kprop:options}}\begin{description}
10516*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}}] \leavevmode
10517*7f2fe78bSCy Schubert\sphinxAtStartPar
10518*7f2fe78bSCy SchubertSpecifies the realm of the primary server.
10519*7f2fe78bSCy Schubert
10520*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}f} \sphinxstyleemphasis{file}}] \leavevmode
10521*7f2fe78bSCy Schubert\sphinxAtStartPar
10522*7f2fe78bSCy SchubertSpecifies the filename where the dumped principal database file is
10523*7f2fe78bSCy Schubertto be found; by default the dumped database file is normally
10524*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/replica\_datatrans}}.
10525*7f2fe78bSCy Schubert
10526*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{port}}] \leavevmode
10527*7f2fe78bSCy Schubert\sphinxAtStartPar
10528*7f2fe78bSCy SchubertSpecifies the port to use to contact the {\hyperref[\detokenize{admin/admin_commands/kpropd:kpropd-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kpropd}}}} server
10529*7f2fe78bSCy Schuberton the remote host.
10530*7f2fe78bSCy Schubert
10531*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}d}}] \leavevmode
10532*7f2fe78bSCy Schubert\sphinxAtStartPar
10533*7f2fe78bSCy SchubertPrints debugging information.
10534*7f2fe78bSCy Schubert
10535*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}s} \sphinxstyleemphasis{keytab}}] \leavevmode
10536*7f2fe78bSCy Schubert\sphinxAtStartPar
10537*7f2fe78bSCy SchubertSpecifies the location of the keytab file.
10538*7f2fe78bSCy Schubert
10539*7f2fe78bSCy Schubert\end{description}
10540*7f2fe78bSCy Schubert
10541*7f2fe78bSCy Schubert
10542*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
10543*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kprop:environment}}
10544*7f2fe78bSCy Schubert\sphinxAtStartPar
10545*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
10546*7f2fe78bSCy Schubertvariables.
10547*7f2fe78bSCy Schubert
10548*7f2fe78bSCy Schubert
10549*7f2fe78bSCy Schubert\subsection{SEE ALSO}
10550*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kprop:see-also}}
10551*7f2fe78bSCy Schubert\sphinxAtStartPar
10552*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kpropd:kpropd-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kpropd}}}}, {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}, {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}},
10553*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{kerberos(7)}
10554*7f2fe78bSCy Schubert
10555*7f2fe78bSCy Schubert
10556*7f2fe78bSCy Schubert\section{kpropd}
10557*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kpropd:kpropd}}\label{\detokenize{admin/admin_commands/kpropd:kpropd-8}}\label{\detokenize{admin/admin_commands/kpropd::doc}}
10558*7f2fe78bSCy Schubert
10559*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
10560*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kpropd:synopsis}}
10561*7f2fe78bSCy Schubert\sphinxAtStartPar
10562*7f2fe78bSCy Schubert\sphinxstylestrong{kpropd}
10563*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}{]}
10564*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}A} \sphinxstyleemphasis{admin\_server}{]}
10565*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}a} \sphinxstyleemphasis{acl\_file}{]}
10566*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}f} \sphinxstyleemphasis{replica\_dumpfile}{]}
10567*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}F} \sphinxstyleemphasis{principal\_database}{]}
10568*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{kdb5\_util\_prog}{]}
10569*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}P} \sphinxstyleemphasis{port}{]}
10570*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\textendash{}pid\sphinxhyphen{}file}=\sphinxstyleemphasis{pid\_file}{]}
10571*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}D}{]}
10572*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}d}{]}
10573*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}s} \sphinxstyleemphasis{keytab\_file}{]}
10574*7f2fe78bSCy Schubert
10575*7f2fe78bSCy Schubert
10576*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
10577*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kpropd:description}}
10578*7f2fe78bSCy Schubert\sphinxAtStartPar
10579*7f2fe78bSCy SchubertThe \sphinxstyleemphasis{kpropd} command runs on the replica KDC server.  It listens for
10580*7f2fe78bSCy Schubertupdate requests made by the {\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}} program.  If incremental
10581*7f2fe78bSCy Schubertpropagation is enabled, it periodically requests incremental updates
10582*7f2fe78bSCy Schubertfrom the primary KDC.
10583*7f2fe78bSCy Schubert
10584*7f2fe78bSCy Schubert\sphinxAtStartPar
10585*7f2fe78bSCy SchubertWhen the replica receives a kprop request from the primary, kpropd
10586*7f2fe78bSCy Schubertaccepts the dumped KDC database and places it in a file, and then runs
10587*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}} to load the dumped database into the active
10588*7f2fe78bSCy Schubertdatabase which is used by {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}}.  This allows the primary
10589*7f2fe78bSCy SchubertKerberos server to use {\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}} to propagate its database to
10590*7f2fe78bSCy Schubertthe replica servers.  Upon a successful download of the KDC database
10591*7f2fe78bSCy Schubertfile, the replica Kerberos server will have an up\sphinxhyphen{}to\sphinxhyphen{}date KDC
10592*7f2fe78bSCy Schubertdatabase.
10593*7f2fe78bSCy Schubert
10594*7f2fe78bSCy Schubert\sphinxAtStartPar
10595*7f2fe78bSCy SchubertWhere incremental propagation is not used, kpropd is commonly invoked
10596*7f2fe78bSCy Schubertout of inetd(8) as a nowait service.  This is done by adding a line to
10597*7f2fe78bSCy Schubertthe \sphinxcode{\sphinxupquote{/etc/inetd.conf}} file which looks like this:
10598*7f2fe78bSCy Schubert
10599*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10600*7f2fe78bSCy Schubert\PYG{n}{kprop}  \PYG{n}{stream}  \PYG{n}{tcp}  \PYG{n}{nowait}  \PYG{n}{root}  \PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{sbin}\PYG{o}{/}\PYG{n}{kpropd}  \PYG{n}{kpropd}
10601*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10602*7f2fe78bSCy Schubert
10603*7f2fe78bSCy Schubert\sphinxAtStartPar
10604*7f2fe78bSCy Schubertkpropd can also run as a standalone daemon, backgrounding itself and
10605*7f2fe78bSCy Schubertwaiting for connections on port 754 (or the port specified with the
10606*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}P} option if given).  Standalone mode is required for incremental
10607*7f2fe78bSCy Schubertpropagation.  Starting in release 1.11, kpropd automatically detects
10608*7f2fe78bSCy Schubertwhether it was run from inetd and runs in standalone mode if it is
10609*7f2fe78bSCy Schubertnot.  Prior to release 1.11, the \sphinxstylestrong{\sphinxhyphen{}S} option is required to run
10610*7f2fe78bSCy Schubertkpropd in standalone mode; this option is now accepted for backward
10611*7f2fe78bSCy Schubertcompatibility but does nothing.
10612*7f2fe78bSCy Schubert
10613*7f2fe78bSCy Schubert\sphinxAtStartPar
10614*7f2fe78bSCy SchubertIncremental propagation may be enabled with the \sphinxstylestrong{iprop\_enable}
10615*7f2fe78bSCy Schubertvariable in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}.  If incremental propagation is
10616*7f2fe78bSCy Schubertenabled, the replica periodically polls the primary KDC for updates, at
10617*7f2fe78bSCy Schubertan interval determined by the \sphinxstylestrong{iprop\_replica\_poll} variable.  If the
10618*7f2fe78bSCy Schubertreplica receives updates, kpropd updates its log file with any updates
10619*7f2fe78bSCy Schubertfrom the primary.  {\hyperref[\detokenize{admin/admin_commands/kproplog:kproplog-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kproplog}}}} can be used to view a summary of
10620*7f2fe78bSCy Schubertthe update entry log on the replica KDC.  If incremental propagation
10621*7f2fe78bSCy Schubertis enabled, the principal \sphinxcode{\sphinxupquote{kiprop/replicahostname@REALM}} (where
10622*7f2fe78bSCy Schubert\sphinxstyleemphasis{replicahostname} is the name of the replica KDC host, and \sphinxstyleemphasis{REALM} is
10623*7f2fe78bSCy Schubertthe name of the Kerberos realm) must be present in the replica’s
10624*7f2fe78bSCy Schubertkeytab file.
10625*7f2fe78bSCy Schubert
10626*7f2fe78bSCy Schubert\sphinxAtStartPar
10627*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kproplog:kproplog-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kproplog}}}} can be used to force full replication when iprop is
10628*7f2fe78bSCy Schubertenabled.
10629*7f2fe78bSCy Schubert
10630*7f2fe78bSCy Schubert
10631*7f2fe78bSCy Schubert\subsection{OPTIONS}
10632*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kpropd:options}}\begin{description}
10633*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}r} \sphinxstyleemphasis{realm}}] \leavevmode
10634*7f2fe78bSCy Schubert\sphinxAtStartPar
10635*7f2fe78bSCy SchubertSpecifies the realm of the primary server.
10636*7f2fe78bSCy Schubert
10637*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}A} \sphinxstyleemphasis{admin\_server}}] \leavevmode
10638*7f2fe78bSCy Schubert\sphinxAtStartPar
10639*7f2fe78bSCy SchubertSpecifies the server to be contacted for incremental updates; by
10640*7f2fe78bSCy Schubertdefault, the primary admin server is contacted.
10641*7f2fe78bSCy Schubert
10642*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}f} \sphinxstyleemphasis{file}}] \leavevmode
10643*7f2fe78bSCy Schubert\sphinxAtStartPar
10644*7f2fe78bSCy SchubertSpecifies the filename where the dumped principal database file is
10645*7f2fe78bSCy Schubertto be stored; by default the dumped database file is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/from\_master}}.
10646*7f2fe78bSCy Schubert
10647*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}F} \sphinxstyleemphasis{kerberos\_db}}] \leavevmode
10648*7f2fe78bSCy Schubert\sphinxAtStartPar
10649*7f2fe78bSCy SchubertPath to the Kerberos database file, if not the default.
10650*7f2fe78bSCy Schubert
10651*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}p}}] \leavevmode
10652*7f2fe78bSCy Schubert\sphinxAtStartPar
10653*7f2fe78bSCy SchubertAllows the user to specify the pathname to the {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}
10654*7f2fe78bSCy Schubertprogram; by default the pathname used is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{SBINDIR}}}}\sphinxcode{\sphinxupquote{/kdb5\_util}}.
10655*7f2fe78bSCy Schubert
10656*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}D}}] \leavevmode
10657*7f2fe78bSCy Schubert\sphinxAtStartPar
10658*7f2fe78bSCy SchubertIn this mode, kpropd will not detach itself from the current job
10659*7f2fe78bSCy Schubertand run in the background.  Instead, it will run in the
10660*7f2fe78bSCy Schubertforeground.
10661*7f2fe78bSCy Schubert
10662*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}d}}] \leavevmode
10663*7f2fe78bSCy Schubert\sphinxAtStartPar
10664*7f2fe78bSCy SchubertTurn on debug mode.  kpropd will print out debugging messages
10665*7f2fe78bSCy Schubertduring the database propogation and will run in the foreground
10666*7f2fe78bSCy Schubert(implies \sphinxstylestrong{\sphinxhyphen{}D}).
10667*7f2fe78bSCy Schubert
10668*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}P}}] \leavevmode
10669*7f2fe78bSCy Schubert\sphinxAtStartPar
10670*7f2fe78bSCy SchubertAllow for an alternate port number for kpropd to listen on.  This
10671*7f2fe78bSCy Schubertis only useful in combination with the \sphinxstylestrong{\sphinxhyphen{}S} option.
10672*7f2fe78bSCy Schubert
10673*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}a} \sphinxstyleemphasis{acl\_file}}] \leavevmode
10674*7f2fe78bSCy Schubert\sphinxAtStartPar
10675*7f2fe78bSCy SchubertAllows the user to specify the path to the kpropd.acl file; by
10676*7f2fe78bSCy Schubertdefault the path used is {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kpropd.acl}}.
10677*7f2fe78bSCy Schubert
10678*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\textendash{}pid\sphinxhyphen{}file}=\sphinxstyleemphasis{pid\_file}}] \leavevmode
10679*7f2fe78bSCy Schubert\sphinxAtStartPar
10680*7f2fe78bSCy SchubertIn standalone mode, write the process ID of the daemon into
10681*7f2fe78bSCy Schubert\sphinxstyleemphasis{pid\_file}.
10682*7f2fe78bSCy Schubert
10683*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}s} \sphinxstyleemphasis{keytab\_file}}] \leavevmode
10684*7f2fe78bSCy Schubert\sphinxAtStartPar
10685*7f2fe78bSCy SchubertPath to a keytab to use for acquiring acceptor credentials.
10686*7f2fe78bSCy Schubert
10687*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}x} \sphinxstyleemphasis{db\_args}}] \leavevmode
10688*7f2fe78bSCy Schubert\sphinxAtStartPar
10689*7f2fe78bSCy SchubertDatabase\sphinxhyphen{}specific arguments.  See {\hyperref[\detokenize{admin/admin_commands/kadmin_local:dboptions}]{\sphinxcrossref{\DUrole{std,std-ref}{Database Options}}}} in {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} for supported arguments.
10690*7f2fe78bSCy Schubert
10691*7f2fe78bSCy Schubert\end{description}
10692*7f2fe78bSCy Schubert
10693*7f2fe78bSCy Schubert
10694*7f2fe78bSCy Schubert\subsection{FILES}
10695*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kpropd:files}}\begin{description}
10696*7f2fe78bSCy Schubert\item[{kpropd.acl}] \leavevmode
10697*7f2fe78bSCy Schubert\sphinxAtStartPar
10698*7f2fe78bSCy SchubertAccess file for kpropd; the default location is
10699*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/local/var/krb5kdc/kpropd.acl}}.  Each entry is a line
10700*7f2fe78bSCy Schubertcontaining the principal of a host from which the local machine
10701*7f2fe78bSCy Schubertwill allow Kerberos database propagation via {\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}}.
10702*7f2fe78bSCy Schubert
10703*7f2fe78bSCy Schubert\end{description}
10704*7f2fe78bSCy Schubert
10705*7f2fe78bSCy Schubert
10706*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
10707*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kpropd:environment}}
10708*7f2fe78bSCy Schubert\sphinxAtStartPar
10709*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
10710*7f2fe78bSCy Schubertvariables.
10711*7f2fe78bSCy Schubert
10712*7f2fe78bSCy Schubert
10713*7f2fe78bSCy Schubert\subsection{SEE ALSO}
10714*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kpropd:see-also}}
10715*7f2fe78bSCy Schubert\sphinxAtStartPar
10716*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}}, {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}, {\hyperref[\detokenize{admin/admin_commands/krb5kdc:krb5kdc-8}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5kdc}}}},
10717*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{kerberos(7)}, inetd(8)
10718*7f2fe78bSCy Schubert
10719*7f2fe78bSCy Schubert
10720*7f2fe78bSCy Schubert\section{kproplog}
10721*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kproplog:kproplog}}\label{\detokenize{admin/admin_commands/kproplog:kproplog-8}}\label{\detokenize{admin/admin_commands/kproplog::doc}}
10722*7f2fe78bSCy Schubert
10723*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
10724*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kproplog:synopsis}}
10725*7f2fe78bSCy Schubert\sphinxAtStartPar
10726*7f2fe78bSCy Schubert\sphinxstylestrong{kproplog} {[}\sphinxstylestrong{\sphinxhyphen{}h}{]} {[}\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{num}{]} {[}\sphinxhyphen{}v{]}
10727*7f2fe78bSCy Schubert\sphinxstylestrong{kproplog} {[}\sphinxhyphen{}R{]}
10728*7f2fe78bSCy Schubert
10729*7f2fe78bSCy Schubert
10730*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
10731*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kproplog:description}}
10732*7f2fe78bSCy Schubert\sphinxAtStartPar
10733*7f2fe78bSCy SchubertThe kproplog command displays the contents of the KDC database update
10734*7f2fe78bSCy Schubertlog to standard output.  It can be used to keep track of incremental
10735*7f2fe78bSCy Schubertupdates to the principal database.  The update log file contains the
10736*7f2fe78bSCy Schubertupdate log maintained by the {\hyperref[\detokenize{admin/admin_commands/kadmind:kadmind-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmind}}}} process on the primary
10737*7f2fe78bSCy SchubertKDC server and the {\hyperref[\detokenize{admin/admin_commands/kpropd:kpropd-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kpropd}}}} process on the replica KDC
10738*7f2fe78bSCy Schubertservers.  When updates occur, they are logged to this file.
10739*7f2fe78bSCy SchubertSubsequently any KDC replica configured for incremental updates will
10740*7f2fe78bSCy Schubertrequest the current data from the primary KDC and update their log
10741*7f2fe78bSCy Schubertfile with any updates returned.
10742*7f2fe78bSCy Schubert
10743*7f2fe78bSCy Schubert\sphinxAtStartPar
10744*7f2fe78bSCy SchubertThe kproplog command requires read access to the update log file.  It
10745*7f2fe78bSCy Schubertwill display update entries only for the KDC it runs on.
10746*7f2fe78bSCy Schubert
10747*7f2fe78bSCy Schubert\sphinxAtStartPar
10748*7f2fe78bSCy SchubertIf no options are specified, kproplog displays a summary of the update
10749*7f2fe78bSCy Schubertlog.  If invoked on the primary, kproplog also displays all of the
10750*7f2fe78bSCy Schubertupdate entries.  If invoked on a replica KDC server, kproplog displays
10751*7f2fe78bSCy Schubertonly a summary of the updates, which includes the serial number of the
10752*7f2fe78bSCy Schubertlast update received and the associated time stamp of the last update.
10753*7f2fe78bSCy Schubert
10754*7f2fe78bSCy Schubert
10755*7f2fe78bSCy Schubert\subsection{OPTIONS}
10756*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kproplog:options}}\begin{description}
10757*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}R}}] \leavevmode
10758*7f2fe78bSCy Schubert\sphinxAtStartPar
10759*7f2fe78bSCy SchubertReset the update log.  This forces full resynchronization.  If
10760*7f2fe78bSCy Schubertused on a replica then that replica will request a full resync.
10761*7f2fe78bSCy SchubertIf used on the primary then all replicas will request full
10762*7f2fe78bSCy Schubertresyncs.
10763*7f2fe78bSCy Schubert
10764*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}h}}] \leavevmode
10765*7f2fe78bSCy Schubert\sphinxAtStartPar
10766*7f2fe78bSCy SchubertDisplay a summary of the update log.  This information includes
10767*7f2fe78bSCy Schubertthe database version number, state of the database, the number of
10768*7f2fe78bSCy Schubertupdates in the log, the time stamp of the first and last update,
10769*7f2fe78bSCy Schubertand the version number of the first and last update entry.
10770*7f2fe78bSCy Schubert
10771*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{num}}] \leavevmode
10772*7f2fe78bSCy Schubert\sphinxAtStartPar
10773*7f2fe78bSCy SchubertDisplay the last \sphinxstyleemphasis{num} update entries in the log.  This is useful
10774*7f2fe78bSCy Schubertwhen debugging synchronization between KDC servers.
10775*7f2fe78bSCy Schubert
10776*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{\sphinxhyphen{}v}}] \leavevmode
10777*7f2fe78bSCy Schubert\sphinxAtStartPar
10778*7f2fe78bSCy SchubertDisplay individual attributes per update.  An example of the
10779*7f2fe78bSCy Schubertoutput generated for one entry:
10780*7f2fe78bSCy Schubert
10781*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10782*7f2fe78bSCy Schubert\PYG{n}{Update} \PYG{n}{Entry}
10783*7f2fe78bSCy Schubert   \PYG{n}{Update} \PYG{n}{serial} \PYG{c+c1}{\PYGZsh{} : 4}
10784*7f2fe78bSCy Schubert   \PYG{n}{Update} \PYG{n}{operation} \PYG{p}{:} \PYG{n}{Add}
10785*7f2fe78bSCy Schubert   \PYG{n}{Update} \PYG{n}{principal} \PYG{p}{:} \PYG{n}{test}\PYG{n+nd}{@EXAMPLE}\PYG{o}{.}\PYG{n}{COM}
10786*7f2fe78bSCy Schubert   \PYG{n}{Update} \PYG{n}{size} \PYG{p}{:} \PYG{l+m+mi}{424}
10787*7f2fe78bSCy Schubert   \PYG{n}{Update} \PYG{n}{committed} \PYG{p}{:} \PYG{k+kc}{True}
10788*7f2fe78bSCy Schubert   \PYG{n}{Update} \PYG{n}{time} \PYG{n}{stamp} \PYG{p}{:} \PYG{n}{Fri} \PYG{n}{Feb} \PYG{l+m+mi}{20} \PYG{l+m+mi}{23}\PYG{p}{:}\PYG{l+m+mi}{37}\PYG{p}{:}\PYG{l+m+mi}{42} \PYG{l+m+mi}{2004}
10789*7f2fe78bSCy Schubert   \PYG{n}{Attributes} \PYG{n}{changed} \PYG{p}{:} \PYG{l+m+mi}{6}
10790*7f2fe78bSCy Schubert         \PYG{n}{Principal}
10791*7f2fe78bSCy Schubert         \PYG{n}{Key} \PYG{n}{data}
10792*7f2fe78bSCy Schubert         \PYG{n}{Password} \PYG{n}{last} \PYG{n}{changed}
10793*7f2fe78bSCy Schubert         \PYG{n}{Modifying} \PYG{n}{principal}
10794*7f2fe78bSCy Schubert         \PYG{n}{Modification} \PYG{n}{time}
10795*7f2fe78bSCy Schubert         \PYG{n}{TL} \PYG{n}{data}
10796*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10797*7f2fe78bSCy Schubert
10798*7f2fe78bSCy Schubert\end{description}
10799*7f2fe78bSCy Schubert
10800*7f2fe78bSCy Schubert
10801*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
10802*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kproplog:environment}}
10803*7f2fe78bSCy Schubert\sphinxAtStartPar
10804*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
10805*7f2fe78bSCy Schubertvariables.
10806*7f2fe78bSCy Schubert
10807*7f2fe78bSCy Schubert
10808*7f2fe78bSCy Schubert\subsection{SEE ALSO}
10809*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/kproplog:see-also}}
10810*7f2fe78bSCy Schubert\sphinxAtStartPar
10811*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kpropd:kpropd-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kpropd}}}}, \DUrole{xref,std,std-ref}{kerberos(7)}
10812*7f2fe78bSCy Schubert
10813*7f2fe78bSCy Schubert
10814*7f2fe78bSCy Schubert\section{ktutil}
10815*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:ktutil}}\label{\detokenize{admin/admin_commands/ktutil:ktutil-1}}\label{\detokenize{admin/admin_commands/ktutil::doc}}
10816*7f2fe78bSCy Schubert
10817*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
10818*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:synopsis}}
10819*7f2fe78bSCy Schubert\sphinxAtStartPar
10820*7f2fe78bSCy Schubert\sphinxstylestrong{ktutil}
10821*7f2fe78bSCy Schubert
10822*7f2fe78bSCy Schubert
10823*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
10824*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:description}}
10825*7f2fe78bSCy Schubert\sphinxAtStartPar
10826*7f2fe78bSCy SchubertThe ktutil command invokes a command interface from which an
10827*7f2fe78bSCy Schubertadministrator can read, write, or edit entries in a keytab.  (Kerberos
10828*7f2fe78bSCy SchubertV4 srvtab files are no longer supported.)
10829*7f2fe78bSCy Schubert
10830*7f2fe78bSCy Schubert
10831*7f2fe78bSCy Schubert\subsection{COMMANDS}
10832*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:commands}}
10833*7f2fe78bSCy Schubert
10834*7f2fe78bSCy Schubert\subsubsection{list}
10835*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:list}}\begin{quote}
10836*7f2fe78bSCy Schubert
10837*7f2fe78bSCy Schubert\sphinxAtStartPar
10838*7f2fe78bSCy Schubert\sphinxstylestrong{list} {[}\sphinxstylestrong{\sphinxhyphen{}t}{]} {[}\sphinxstylestrong{\sphinxhyphen{}k}{]} {[}\sphinxstylestrong{\sphinxhyphen{}e}{]}
10839*7f2fe78bSCy Schubert\end{quote}
10840*7f2fe78bSCy Schubert
10841*7f2fe78bSCy Schubert\sphinxAtStartPar
10842*7f2fe78bSCy SchubertDisplays the current keylist.  If \sphinxstylestrong{\sphinxhyphen{}t}, \sphinxstylestrong{\sphinxhyphen{}k}, and/or \sphinxstylestrong{\sphinxhyphen{}e} are
10843*7f2fe78bSCy Schubertspecified, also display the timestamp, key contents, or enctype
10844*7f2fe78bSCy Schubert(respectively).
10845*7f2fe78bSCy Schubert
10846*7f2fe78bSCy Schubert\sphinxAtStartPar
10847*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{l}
10848*7f2fe78bSCy Schubert
10849*7f2fe78bSCy Schubert
10850*7f2fe78bSCy Schubert\subsubsection{read\_kt}
10851*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:read-kt}}\begin{quote}
10852*7f2fe78bSCy Schubert
10853*7f2fe78bSCy Schubert\sphinxAtStartPar
10854*7f2fe78bSCy Schubert\sphinxstylestrong{read\_kt} \sphinxstyleemphasis{keytab}
10855*7f2fe78bSCy Schubert\end{quote}
10856*7f2fe78bSCy Schubert
10857*7f2fe78bSCy Schubert\sphinxAtStartPar
10858*7f2fe78bSCy SchubertRead the Kerberos V5 keytab file \sphinxstyleemphasis{keytab} into the current keylist.
10859*7f2fe78bSCy Schubert
10860*7f2fe78bSCy Schubert\sphinxAtStartPar
10861*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{rkt}
10862*7f2fe78bSCy Schubert
10863*7f2fe78bSCy Schubert
10864*7f2fe78bSCy Schubert\subsubsection{write\_kt}
10865*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:write-kt}}\begin{quote}
10866*7f2fe78bSCy Schubert
10867*7f2fe78bSCy Schubert\sphinxAtStartPar
10868*7f2fe78bSCy Schubert\sphinxstylestrong{write\_kt} \sphinxstyleemphasis{keytab}
10869*7f2fe78bSCy Schubert\end{quote}
10870*7f2fe78bSCy Schubert
10871*7f2fe78bSCy Schubert\sphinxAtStartPar
10872*7f2fe78bSCy SchubertWrite the current keylist into the Kerberos V5 keytab file \sphinxstyleemphasis{keytab}.
10873*7f2fe78bSCy Schubert
10874*7f2fe78bSCy Schubert\sphinxAtStartPar
10875*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{wkt}
10876*7f2fe78bSCy Schubert
10877*7f2fe78bSCy Schubert
10878*7f2fe78bSCy Schubert\subsubsection{clear\_list}
10879*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:clear-list}}\begin{quote}
10880*7f2fe78bSCy Schubert
10881*7f2fe78bSCy Schubert\sphinxAtStartPar
10882*7f2fe78bSCy Schubert\sphinxstylestrong{clear\_list}
10883*7f2fe78bSCy Schubert\end{quote}
10884*7f2fe78bSCy Schubert
10885*7f2fe78bSCy Schubert\sphinxAtStartPar
10886*7f2fe78bSCy SchubertClear the current keylist.
10887*7f2fe78bSCy Schubert
10888*7f2fe78bSCy Schubert\sphinxAtStartPar
10889*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{clear}
10890*7f2fe78bSCy Schubert
10891*7f2fe78bSCy Schubert
10892*7f2fe78bSCy Schubert\subsubsection{delete\_entry}
10893*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:delete-entry}}\begin{quote}
10894*7f2fe78bSCy Schubert
10895*7f2fe78bSCy Schubert\sphinxAtStartPar
10896*7f2fe78bSCy Schubert\sphinxstylestrong{delete\_entry} \sphinxstyleemphasis{slot}
10897*7f2fe78bSCy Schubert\end{quote}
10898*7f2fe78bSCy Schubert
10899*7f2fe78bSCy Schubert\sphinxAtStartPar
10900*7f2fe78bSCy SchubertDelete the entry in slot number \sphinxstyleemphasis{slot} from the current keylist.
10901*7f2fe78bSCy Schubert
10902*7f2fe78bSCy Schubert\sphinxAtStartPar
10903*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{delent}
10904*7f2fe78bSCy Schubert
10905*7f2fe78bSCy Schubert
10906*7f2fe78bSCy Schubert\subsubsection{add\_entry}
10907*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:add-entry}}\begin{quote}
10908*7f2fe78bSCy Schubert
10909*7f2fe78bSCy Schubert\sphinxAtStartPar
10910*7f2fe78bSCy Schubert\sphinxstylestrong{add\_entry} \{\sphinxstylestrong{\sphinxhyphen{}key}|\sphinxstylestrong{\sphinxhyphen{}password}\} \sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{principal}
10911*7f2fe78bSCy Schubert\sphinxstylestrong{\sphinxhyphen{}k} \sphinxstyleemphasis{kvno} {[}\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{enctype}{]} {[}\sphinxstylestrong{\sphinxhyphen{}f}|\sphinxstylestrong{\sphinxhyphen{}s} \sphinxstyleemphasis{salt}{]}
10912*7f2fe78bSCy Schubert\end{quote}
10913*7f2fe78bSCy Schubert
10914*7f2fe78bSCy Schubert\sphinxAtStartPar
10915*7f2fe78bSCy SchubertAdd \sphinxstyleemphasis{principal} to keylist using key or password.  If the \sphinxstylestrong{\sphinxhyphen{}f} flag
10916*7f2fe78bSCy Schubertis specified, salt information will be fetched from the KDC; in this
10917*7f2fe78bSCy Schubertcase the \sphinxstylestrong{\sphinxhyphen{}e} flag may be omitted, or it may be supplied to force a
10918*7f2fe78bSCy Schubertparticular enctype.  If the \sphinxstylestrong{\sphinxhyphen{}f} flag is not specified, the \sphinxstylestrong{\sphinxhyphen{}e}
10919*7f2fe78bSCy Schubertflag must be specified, and the default salt will be used unless
10920*7f2fe78bSCy Schubertoverridden with the \sphinxstylestrong{\sphinxhyphen{}s} option.
10921*7f2fe78bSCy Schubert
10922*7f2fe78bSCy Schubert\sphinxAtStartPar
10923*7f2fe78bSCy SchubertAlias: \sphinxstylestrong{addent}
10924*7f2fe78bSCy Schubert
10925*7f2fe78bSCy Schubert
10926*7f2fe78bSCy Schubert\subsubsection{list\_requests}
10927*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:list-requests}}\begin{quote}
10928*7f2fe78bSCy Schubert
10929*7f2fe78bSCy Schubert\sphinxAtStartPar
10930*7f2fe78bSCy Schubert\sphinxstylestrong{list\_requests}
10931*7f2fe78bSCy Schubert\end{quote}
10932*7f2fe78bSCy Schubert
10933*7f2fe78bSCy Schubert\sphinxAtStartPar
10934*7f2fe78bSCy SchubertDisplays a listing of available commands.
10935*7f2fe78bSCy Schubert
10936*7f2fe78bSCy Schubert\sphinxAtStartPar
10937*7f2fe78bSCy SchubertAliases: \sphinxstylestrong{lr}, \sphinxstylestrong{?}
10938*7f2fe78bSCy Schubert
10939*7f2fe78bSCy Schubert
10940*7f2fe78bSCy Schubert\subsubsection{quit}
10941*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:quit}}\begin{quote}
10942*7f2fe78bSCy Schubert
10943*7f2fe78bSCy Schubert\sphinxAtStartPar
10944*7f2fe78bSCy Schubert\sphinxstylestrong{quit}
10945*7f2fe78bSCy Schubert\end{quote}
10946*7f2fe78bSCy Schubert
10947*7f2fe78bSCy Schubert\sphinxAtStartPar
10948*7f2fe78bSCy SchubertQuits ktutil.
10949*7f2fe78bSCy Schubert
10950*7f2fe78bSCy Schubert\sphinxAtStartPar
10951*7f2fe78bSCy SchubertAliases: \sphinxstylestrong{exit}, \sphinxstylestrong{q}
10952*7f2fe78bSCy Schubert
10953*7f2fe78bSCy Schubert
10954*7f2fe78bSCy Schubert\subsection{EXAMPLE}
10955*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:example}}\begin{quote}
10956*7f2fe78bSCy Schubert
10957*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
10958*7f2fe78bSCy Schubert\PYG{n}{ktutil}\PYG{p}{:}  \PYG{n}{add\PYGZus{}entry} \PYG{o}{\PYGZhy{}}\PYG{n}{password} \PYG{o}{\PYGZhy{}}\PYG{n}{p} \PYG{n}{alice}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{\PYGZhy{}}\PYG{n}{k} \PYG{l+m+mi}{1} \PYG{o}{\PYGZhy{}}\PYG{n}{e}
10959*7f2fe78bSCy Schubert    \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}
10960*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{n}{alice}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM}\PYG{p}{:}
10961*7f2fe78bSCy Schubert\PYG{n}{ktutil}\PYG{p}{:}  \PYG{n}{add\PYGZus{}entry} \PYG{o}{\PYGZhy{}}\PYG{n}{password} \PYG{o}{\PYGZhy{}}\PYG{n}{p} \PYG{n}{alice}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{\PYGZhy{}}\PYG{n}{k} \PYG{l+m+mi}{1} \PYG{o}{\PYGZhy{}}\PYG{n}{e}
10962*7f2fe78bSCy Schubert    \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}
10963*7f2fe78bSCy Schubert\PYG{n}{Password} \PYG{k}{for} \PYG{n}{alice}\PYG{n+nd}{@BLEEP}\PYG{o}{.}\PYG{n}{COM}\PYG{p}{:}
10964*7f2fe78bSCy Schubert\PYG{n}{ktutil}\PYG{p}{:}  \PYG{n}{write\PYGZus{}kt} \PYG{n}{alice}\PYG{o}{.}\PYG{n}{keytab}
10965*7f2fe78bSCy Schubert\PYG{n}{ktutil}\PYG{p}{:}
10966*7f2fe78bSCy Schubert\end{sphinxVerbatim}
10967*7f2fe78bSCy Schubert\end{quote}
10968*7f2fe78bSCy Schubert
10969*7f2fe78bSCy Schubert
10970*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
10971*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:environment}}
10972*7f2fe78bSCy Schubert\sphinxAtStartPar
10973*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
10974*7f2fe78bSCy Schubertvariables.
10975*7f2fe78bSCy Schubert
10976*7f2fe78bSCy Schubert
10977*7f2fe78bSCy Schubert\subsection{SEE ALSO}
10978*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/ktutil:see-also}}
10979*7f2fe78bSCy Schubert\sphinxAtStartPar
10980*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}, {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}, \DUrole{xref,std,std-ref}{kerberos(7)}
10981*7f2fe78bSCy Schubert
10982*7f2fe78bSCy Schubert
10983*7f2fe78bSCy Schubert\section{k5srvutil}
10984*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/k5srvutil:k5srvutil}}\label{\detokenize{admin/admin_commands/k5srvutil:k5srvutil-1}}\label{\detokenize{admin/admin_commands/k5srvutil::doc}}
10985*7f2fe78bSCy Schubert
10986*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
10987*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/k5srvutil:synopsis}}
10988*7f2fe78bSCy Schubert\sphinxAtStartPar
10989*7f2fe78bSCy Schubert\sphinxstylestrong{k5srvutil} \sphinxstyleemphasis{operation}
10990*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}i}{]}
10991*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}f} \sphinxstyleemphasis{filename}{]}
10992*7f2fe78bSCy Schubert{[}\sphinxstylestrong{\sphinxhyphen{}e} \sphinxstyleemphasis{keysalts}{]}
10993*7f2fe78bSCy Schubert
10994*7f2fe78bSCy Schubert
10995*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
10996*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/k5srvutil:description}}
10997*7f2fe78bSCy Schubert\sphinxAtStartPar
10998*7f2fe78bSCy Schubertk5srvutil allows an administrator to list keys currently in
10999*7f2fe78bSCy Schuberta keytab, to obtain new keys for a principal currently in a keytab,
11000*7f2fe78bSCy Schubertor to delete non\sphinxhyphen{}current keys from a keytab.
11001*7f2fe78bSCy Schubert
11002*7f2fe78bSCy Schubert\sphinxAtStartPar
11003*7f2fe78bSCy Schubert\sphinxstyleemphasis{operation} must be one of the following:
11004*7f2fe78bSCy Schubert\begin{description}
11005*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{list}}] \leavevmode
11006*7f2fe78bSCy Schubert\sphinxAtStartPar
11007*7f2fe78bSCy SchubertLists the keys in a keytab, showing version number and principal
11008*7f2fe78bSCy Schubertname.
11009*7f2fe78bSCy Schubert
11010*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{change}}] \leavevmode
11011*7f2fe78bSCy Schubert\sphinxAtStartPar
11012*7f2fe78bSCy SchubertUses the kadmin protocol to update the keys in the Kerberos
11013*7f2fe78bSCy Schubertdatabase to new randomly\sphinxhyphen{}generated keys, and updates the keys in
11014*7f2fe78bSCy Schubertthe keytab to match.  If a key’s version number doesn’t match the
11015*7f2fe78bSCy Schubertversion number stored in the Kerberos server’s database, then the
11016*7f2fe78bSCy Schubertoperation will fail.  If the \sphinxstylestrong{\sphinxhyphen{}i} flag is given, k5srvutil will
11017*7f2fe78bSCy Schubertprompt for confirmation before changing each key.  If the \sphinxstylestrong{\sphinxhyphen{}k}
11018*7f2fe78bSCy Schubertoption is given, the old and new keys will be displayed.
11019*7f2fe78bSCy SchubertOrdinarily, keys will be generated with the default encryption
11020*7f2fe78bSCy Schuberttypes and key salts.  This can be overridden with the \sphinxstylestrong{\sphinxhyphen{}e}
11021*7f2fe78bSCy Schubertoption.  Old keys are retained in the keytab so that existing
11022*7f2fe78bSCy Schuberttickets continue to work, but \sphinxstylestrong{delold} should be used after
11023*7f2fe78bSCy Schubertsuch tickets expire, to prevent attacks against the old keys.
11024*7f2fe78bSCy Schubert
11025*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{delold}}] \leavevmode
11026*7f2fe78bSCy Schubert\sphinxAtStartPar
11027*7f2fe78bSCy SchubertDeletes keys that are not the most recent version from the keytab.
11028*7f2fe78bSCy SchubertThis operation should be used some time after a change operation
11029*7f2fe78bSCy Schubertto remove old keys, after existing tickets issued for the service
11030*7f2fe78bSCy Schuberthave expired.  If the \sphinxstylestrong{\sphinxhyphen{}i} flag is given, then k5srvutil will
11031*7f2fe78bSCy Schubertprompt for confirmation for each principal.
11032*7f2fe78bSCy Schubert
11033*7f2fe78bSCy Schubert\item[{\sphinxstylestrong{delete}}] \leavevmode
11034*7f2fe78bSCy Schubert\sphinxAtStartPar
11035*7f2fe78bSCy SchubertDeletes particular keys in the keytab, interactively prompting for
11036*7f2fe78bSCy Schuberteach key.
11037*7f2fe78bSCy Schubert
11038*7f2fe78bSCy Schubert\end{description}
11039*7f2fe78bSCy Schubert
11040*7f2fe78bSCy Schubert\sphinxAtStartPar
11041*7f2fe78bSCy SchubertIn all cases, the default keytab is used unless this is overridden by
11042*7f2fe78bSCy Schubertthe \sphinxstylestrong{\sphinxhyphen{}f} option.
11043*7f2fe78bSCy Schubert
11044*7f2fe78bSCy Schubert\sphinxAtStartPar
11045*7f2fe78bSCy Schubertk5srvutil uses the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} program to edit the keytab in
11046*7f2fe78bSCy Schubertplace.
11047*7f2fe78bSCy Schubert
11048*7f2fe78bSCy Schubert
11049*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
11050*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/k5srvutil:environment}}
11051*7f2fe78bSCy Schubert\sphinxAtStartPar
11052*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
11053*7f2fe78bSCy Schubertvariables.
11054*7f2fe78bSCy Schubert
11055*7f2fe78bSCy Schubert
11056*7f2fe78bSCy Schubert\subsection{SEE ALSO}
11057*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/k5srvutil:see-also}}
11058*7f2fe78bSCy Schubert\sphinxAtStartPar
11059*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}, {\hyperref[\detokenize{admin/admin_commands/ktutil:ktutil-1}]{\sphinxcrossref{\DUrole{std,std-ref}{ktutil}}}}, \DUrole{xref,std,std-ref}{kerberos(7)}
11060*7f2fe78bSCy Schubert
11061*7f2fe78bSCy Schubert
11062*7f2fe78bSCy Schubert\section{sserver}
11063*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/sserver:sserver}}\label{\detokenize{admin/admin_commands/sserver:sserver-8}}\label{\detokenize{admin/admin_commands/sserver::doc}}
11064*7f2fe78bSCy Schubert
11065*7f2fe78bSCy Schubert\subsection{SYNOPSIS}
11066*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/sserver:synopsis}}
11067*7f2fe78bSCy Schubert\sphinxAtStartPar
11068*7f2fe78bSCy Schubert\sphinxstylestrong{sserver}
11069*7f2fe78bSCy Schubert{[} \sphinxstylestrong{\sphinxhyphen{}p} \sphinxstyleemphasis{port} {]}
11070*7f2fe78bSCy Schubert{[} \sphinxstylestrong{\sphinxhyphen{}S} \sphinxstyleemphasis{keytab} {]}
11071*7f2fe78bSCy Schubert{[} \sphinxstyleemphasis{server\_port} {]}
11072*7f2fe78bSCy Schubert
11073*7f2fe78bSCy Schubert
11074*7f2fe78bSCy Schubert\subsection{DESCRIPTION}
11075*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/sserver:description}}
11076*7f2fe78bSCy Schubert\sphinxAtStartPar
11077*7f2fe78bSCy Schubertsserver and \DUrole{xref,std,std-ref}{sclient(1)} are a simple demonstration client/server
11078*7f2fe78bSCy Schubertapplication.  When sclient connects to sserver, it performs a Kerberos
11079*7f2fe78bSCy Schubertauthentication, and then sserver returns to sclient the Kerberos
11080*7f2fe78bSCy Schubertprincipal which was used for the Kerberos authentication.  It makes a
11081*7f2fe78bSCy Schubertgood test that Kerberos has been successfully installed on a machine.
11082*7f2fe78bSCy Schubert
11083*7f2fe78bSCy Schubert\sphinxAtStartPar
11084*7f2fe78bSCy SchubertThe service name used by sserver and sclient is sample.  Hence,
11085*7f2fe78bSCy Schubertsserver will require that there be a keytab entry for the service
11086*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{sample/hostname.domain.name@REALM.NAME}}.  This keytab is generated
11087*7f2fe78bSCy Schubertusing the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} program.  The keytab file is usually
11088*7f2fe78bSCy Schubertinstalled as {\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFKTNAME}}}}.
11089*7f2fe78bSCy Schubert
11090*7f2fe78bSCy Schubert\sphinxAtStartPar
11091*7f2fe78bSCy SchubertThe \sphinxstylestrong{\sphinxhyphen{}S} option allows for a different keytab than the default.
11092*7f2fe78bSCy Schubert
11093*7f2fe78bSCy Schubert\sphinxAtStartPar
11094*7f2fe78bSCy Schubertsserver is normally invoked out of inetd(8), using a line in
11095*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/etc/inetd.conf}} that looks like this:
11096*7f2fe78bSCy Schubert
11097*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11098*7f2fe78bSCy Schubert\PYG{n}{sample} \PYG{n}{stream} \PYG{n}{tcp} \PYG{n}{nowait} \PYG{n}{root} \PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n}{local}\PYG{o}{/}\PYG{n}{sbin}\PYG{o}{/}\PYG{n}{sserver} \PYG{n}{sserver}
11099*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11100*7f2fe78bSCy Schubert
11101*7f2fe78bSCy Schubert\sphinxAtStartPar
11102*7f2fe78bSCy SchubertSince \sphinxcode{\sphinxupquote{sample}} is normally not a port defined in \sphinxcode{\sphinxupquote{/etc/services}},
11103*7f2fe78bSCy Schubertyou will usually have to add a line to \sphinxcode{\sphinxupquote{/etc/services}} which looks
11104*7f2fe78bSCy Schubertlike this:
11105*7f2fe78bSCy Schubert
11106*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11107*7f2fe78bSCy Schubert\PYG{n}{sample}          \PYG{l+m+mi}{13135}\PYG{o}{/}\PYG{n}{tcp}
11108*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11109*7f2fe78bSCy Schubert
11110*7f2fe78bSCy Schubert\sphinxAtStartPar
11111*7f2fe78bSCy SchubertWhen using sclient, you will first have to have an entry in the
11112*7f2fe78bSCy SchubertKerberos database, by using {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}, and then you have to get
11113*7f2fe78bSCy SchubertKerberos tickets, by using \DUrole{xref,std,std-ref}{kinit(1)}.  Also, if you are running
11114*7f2fe78bSCy Schubertthe sclient program on a different host than the sserver it will be
11115*7f2fe78bSCy Schubertconnecting to, be sure that both hosts have an entry in /etc/services
11116*7f2fe78bSCy Schubertfor the sample tcp port, and that the same port number is in both
11117*7f2fe78bSCy Schubertfiles.
11118*7f2fe78bSCy Schubert
11119*7f2fe78bSCy Schubert\sphinxAtStartPar
11120*7f2fe78bSCy SchubertWhen you run sclient you should see something like this:
11121*7f2fe78bSCy Schubert
11122*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11123*7f2fe78bSCy Schubert\PYG{n}{sendauth} \PYG{n}{succeeded}\PYG{p}{,} \PYG{n}{reply} \PYG{o+ow}{is}\PYG{p}{:}
11124*7f2fe78bSCy Schubert\PYG{n}{reply} \PYG{n+nb}{len} \PYG{l+m+mi}{32}\PYG{p}{,} \PYG{n}{contents}\PYG{p}{:}
11125*7f2fe78bSCy Schubert\PYG{n}{You} \PYG{n}{are} \PYG{n}{nlgilman}\PYG{n+nd}{@JIMI}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}
11126*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11127*7f2fe78bSCy Schubert
11128*7f2fe78bSCy Schubert
11129*7f2fe78bSCy Schubert\subsection{COMMON ERROR MESSAGES}
11130*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/sserver:common-error-messages}}\begin{enumerate}
11131*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{)}%
11132*7f2fe78bSCy Schubert\item {}
11133*7f2fe78bSCy Schubert\sphinxAtStartPar
11134*7f2fe78bSCy Schubertkinit returns the error:
11135*7f2fe78bSCy Schubert
11136*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11137*7f2fe78bSCy Schubert\PYG{n}{kinit}\PYG{p}{:} \PYG{n}{Client} \PYG{o+ow}{not} \PYG{n}{found} \PYG{o+ow}{in} \PYG{n}{Kerberos} \PYG{n}{database} \PYG{k}{while} \PYG{n}{getting}
11138*7f2fe78bSCy Schubert       \PYG{n}{initial} \PYG{n}{credentials}
11139*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11140*7f2fe78bSCy Schubert
11141*7f2fe78bSCy Schubert\sphinxAtStartPar
11142*7f2fe78bSCy SchubertThis means that you didn’t create an entry for your username in the
11143*7f2fe78bSCy SchubertKerberos database.
11144*7f2fe78bSCy Schubert
11145*7f2fe78bSCy Schubert\item {}
11146*7f2fe78bSCy Schubert\sphinxAtStartPar
11147*7f2fe78bSCy Schubertsclient returns the error:
11148*7f2fe78bSCy Schubert
11149*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11150*7f2fe78bSCy Schubert\PYG{n}{unknown} \PYG{n}{service} \PYG{n}{sample}\PYG{o}{/}\PYG{n}{tcp}\PYG{p}{;} \PYG{n}{check} \PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{services}
11151*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11152*7f2fe78bSCy Schubert
11153*7f2fe78bSCy Schubert\sphinxAtStartPar
11154*7f2fe78bSCy SchubertThis means that you don’t have an entry in /etc/services for the
11155*7f2fe78bSCy Schubertsample tcp port.
11156*7f2fe78bSCy Schubert
11157*7f2fe78bSCy Schubert\item {}
11158*7f2fe78bSCy Schubert\sphinxAtStartPar
11159*7f2fe78bSCy Schubertsclient returns the error:
11160*7f2fe78bSCy Schubert
11161*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11162*7f2fe78bSCy Schubert\PYG{n}{connect}\PYG{p}{:} \PYG{n}{Connection} \PYG{n}{refused}
11163*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11164*7f2fe78bSCy Schubert
11165*7f2fe78bSCy Schubert\sphinxAtStartPar
11166*7f2fe78bSCy SchubertThis probably means you didn’t edit /etc/inetd.conf correctly, or
11167*7f2fe78bSCy Schubertyou didn’t restart inetd after editing inetd.conf.
11168*7f2fe78bSCy Schubert
11169*7f2fe78bSCy Schubert\item {}
11170*7f2fe78bSCy Schubert\sphinxAtStartPar
11171*7f2fe78bSCy Schubertsclient returns the error:
11172*7f2fe78bSCy Schubert
11173*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11174*7f2fe78bSCy Schubert\PYG{n}{sclient}\PYG{p}{:} \PYG{n}{Server} \PYG{o+ow}{not} \PYG{n}{found} \PYG{o+ow}{in} \PYG{n}{Kerberos} \PYG{n}{database} \PYG{k}{while} \PYG{n}{using}
11175*7f2fe78bSCy Schubert         \PYG{n}{sendauth}
11176*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11177*7f2fe78bSCy Schubert
11178*7f2fe78bSCy Schubert\sphinxAtStartPar
11179*7f2fe78bSCy SchubertThis means that the \sphinxcode{\sphinxupquote{sample/hostname@LOCAL.REALM}} service was not
11180*7f2fe78bSCy Schubertdefined in the Kerberos database; it should be created using
11181*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}, and a keytab file needs to be generated to make
11182*7f2fe78bSCy Schubertthe key for that service principal available for sclient.
11183*7f2fe78bSCy Schubert
11184*7f2fe78bSCy Schubert\item {}
11185*7f2fe78bSCy Schubert\sphinxAtStartPar
11186*7f2fe78bSCy Schubertsclient returns the error:
11187*7f2fe78bSCy Schubert
11188*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11189*7f2fe78bSCy Schubert\PYG{n}{sendauth} \PYG{n}{rejected}\PYG{p}{,} \PYG{n}{error} \PYG{n}{reply} \PYG{o+ow}{is}\PYG{p}{:}
11190*7f2fe78bSCy Schubert    \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{No such file or directory}\PYG{l+s+s2}{\PYGZdq{}}
11191*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11192*7f2fe78bSCy Schubert
11193*7f2fe78bSCy Schubert\sphinxAtStartPar
11194*7f2fe78bSCy SchubertThis probably means sserver couldn’t find the keytab file.  It was
11195*7f2fe78bSCy Schubertprobably not installed in the proper directory.
11196*7f2fe78bSCy Schubert
11197*7f2fe78bSCy Schubert\end{enumerate}
11198*7f2fe78bSCy Schubert
11199*7f2fe78bSCy Schubert
11200*7f2fe78bSCy Schubert\subsection{ENVIRONMENT}
11201*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/sserver:environment}}
11202*7f2fe78bSCy Schubert\sphinxAtStartPar
11203*7f2fe78bSCy SchubertSee \DUrole{xref,std,std-ref}{kerberos(7)} for a description of Kerberos environment
11204*7f2fe78bSCy Schubertvariables.
11205*7f2fe78bSCy Schubert
11206*7f2fe78bSCy Schubert
11207*7f2fe78bSCy Schubert\subsection{SEE ALSO}
11208*7f2fe78bSCy Schubert\label{\detokenize{admin/admin_commands/sserver:see-also}}
11209*7f2fe78bSCy Schubert\sphinxAtStartPar
11210*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{sclient(1)}, \DUrole{xref,std,std-ref}{kerberos(7)}, services(5), inetd(8)
11211*7f2fe78bSCy Schubert
11212*7f2fe78bSCy Schubert
11213*7f2fe78bSCy Schubert\chapter{MIT Kerberos defaults}
11214*7f2fe78bSCy Schubert\label{\detokenize{mitK5defaults:mit-kerberos-defaults}}\label{\detokenize{mitK5defaults:mitk5defaults}}\label{\detokenize{mitK5defaults::doc}}
11215*7f2fe78bSCy Schubert
11216*7f2fe78bSCy Schubert\section{General defaults}
11217*7f2fe78bSCy Schubert\label{\detokenize{mitK5defaults:general-defaults}}
11218*7f2fe78bSCy Schubert
11219*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
11220*7f2fe78bSCy Schubert\centering
11221*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|T|}
11222*7f2fe78bSCy Schubert\hline
11223*7f2fe78bSCy Schubert\sphinxstyletheadfamily
11224*7f2fe78bSCy Schubert\sphinxAtStartPar
11225*7f2fe78bSCy SchubertDescription
11226*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
11227*7f2fe78bSCy Schubert\sphinxAtStartPar
11228*7f2fe78bSCy SchubertDefault
11229*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
11230*7f2fe78bSCy Schubert\sphinxAtStartPar
11231*7f2fe78bSCy SchubertEnvironment
11232*7f2fe78bSCy Schubert\\
11233*7f2fe78bSCy Schubert\hline
11234*7f2fe78bSCy Schubert\sphinxAtStartPar
11235*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{keytab\_definition} file
11236*7f2fe78bSCy Schubert&
11237*7f2fe78bSCy Schubert\sphinxAtStartPar
11238*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFKTNAME}}}}
11239*7f2fe78bSCy Schubert&
11240*7f2fe78bSCy Schubert\sphinxAtStartPar
11241*7f2fe78bSCy Schubert\sphinxstylestrong{KRB5\_KTNAME}
11242*7f2fe78bSCy Schubert\\
11243*7f2fe78bSCy Schubert\hline
11244*7f2fe78bSCy Schubert\sphinxAtStartPar
11245*7f2fe78bSCy SchubertClient \DUrole{xref,std,std-ref}{keytab\_definition} file
11246*7f2fe78bSCy Schubert&
11247*7f2fe78bSCy Schubert\sphinxAtStartPar
11248*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{DEFCKTNAME}}}}
11249*7f2fe78bSCy Schubert&
11250*7f2fe78bSCy Schubert\sphinxAtStartPar
11251*7f2fe78bSCy Schubert\sphinxstylestrong{KRB5\_CLIENT\_KTNAME}
11252*7f2fe78bSCy Schubert\\
11253*7f2fe78bSCy Schubert\hline
11254*7f2fe78bSCy Schubert\sphinxAtStartPar
11255*7f2fe78bSCy SchubertKerberos config file {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}
11256*7f2fe78bSCy Schubert&
11257*7f2fe78bSCy Schubert\sphinxAtStartPar
11258*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/etc/krb5.conf}}\sphinxcode{\sphinxupquote{:}}{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{SYSCONFDIR}}}}\sphinxcode{\sphinxupquote{/krb5.conf}}
11259*7f2fe78bSCy Schubert&
11260*7f2fe78bSCy Schubert\sphinxAtStartPar
11261*7f2fe78bSCy Schubert\sphinxstylestrong{KRB5\_CONFIG}
11262*7f2fe78bSCy Schubert\\
11263*7f2fe78bSCy Schubert\hline
11264*7f2fe78bSCy Schubert\sphinxAtStartPar
11265*7f2fe78bSCy SchubertKDC config file {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}}
11266*7f2fe78bSCy Schubert&
11267*7f2fe78bSCy Schubert\sphinxAtStartPar
11268*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kdc.conf}}
11269*7f2fe78bSCy Schubert&
11270*7f2fe78bSCy Schubert\sphinxAtStartPar
11271*7f2fe78bSCy Schubert\sphinxstylestrong{KRB5\_KDC\_PROFILE}
11272*7f2fe78bSCy Schubert\\
11273*7f2fe78bSCy Schubert\hline
11274*7f2fe78bSCy Schubert\sphinxAtStartPar
11275*7f2fe78bSCy SchubertGSS mechanism config file
11276*7f2fe78bSCy Schubert&
11277*7f2fe78bSCy Schubert\sphinxAtStartPar
11278*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{SYSCONFDIR}}}}\sphinxcode{\sphinxupquote{/gss/mech}}
11279*7f2fe78bSCy Schubert&
11280*7f2fe78bSCy Schubert\sphinxAtStartPar
11281*7f2fe78bSCy Schubert\sphinxstylestrong{GSS\_MECH\_CONFIG}
11282*7f2fe78bSCy Schubert\\
11283*7f2fe78bSCy Schubert\hline
11284*7f2fe78bSCy Schubert\sphinxAtStartPar
11285*7f2fe78bSCy SchubertKDC database path (DB2)
11286*7f2fe78bSCy Schubert&
11287*7f2fe78bSCy Schubert\sphinxAtStartPar
11288*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/principal}}
11289*7f2fe78bSCy Schubert&\\
11290*7f2fe78bSCy Schubert\hline
11291*7f2fe78bSCy Schubert\sphinxAtStartPar
11292*7f2fe78bSCy SchubertMaster key \DUrole{xref,std,std-ref}{stash\_definition}
11293*7f2fe78bSCy Schubert&
11294*7f2fe78bSCy Schubert\sphinxAtStartPar
11295*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/.k5.}}\sphinxstyleemphasis{realm}
11296*7f2fe78bSCy Schubert&\\
11297*7f2fe78bSCy Schubert\hline
11298*7f2fe78bSCy Schubert\sphinxAtStartPar
11299*7f2fe78bSCy SchubertAdmin server ACL file {\hyperref[\detokenize{admin/conf_files/kadm5_acl:kadm5-acl-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kadm5.acl}}}}
11300*7f2fe78bSCy Schubert&
11301*7f2fe78bSCy Schubert\sphinxAtStartPar
11302*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kadm5.acl}}
11303*7f2fe78bSCy Schubert&\\
11304*7f2fe78bSCy Schubert\hline
11305*7f2fe78bSCy Schubert\sphinxAtStartPar
11306*7f2fe78bSCy SchubertOTP socket directory
11307*7f2fe78bSCy Schubert&
11308*7f2fe78bSCy Schubert\sphinxAtStartPar
11309*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{RUNSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}
11310*7f2fe78bSCy Schubert&\\
11311*7f2fe78bSCy Schubert\hline
11312*7f2fe78bSCy Schubert\sphinxAtStartPar
11313*7f2fe78bSCy SchubertPlugin base directory
11314*7f2fe78bSCy Schubert&
11315*7f2fe78bSCy Schubert\sphinxAtStartPar
11316*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LIBDIR}}}}\sphinxcode{\sphinxupquote{/krb5/plugins}}
11317*7f2fe78bSCy Schubert&\\
11318*7f2fe78bSCy Schubert\hline
11319*7f2fe78bSCy Schubert\sphinxAtStartPar
11320*7f2fe78bSCy Schubert\DUrole{xref,std,std-ref}{rcache\_definition} directory
11321*7f2fe78bSCy Schubert&
11322*7f2fe78bSCy Schubert\sphinxAtStartPar
11323*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/var/tmp}}
11324*7f2fe78bSCy Schubert&
11325*7f2fe78bSCy Schubert\sphinxAtStartPar
11326*7f2fe78bSCy Schubert\sphinxstylestrong{KRB5RCACHEDIR}
11327*7f2fe78bSCy Schubert\\
11328*7f2fe78bSCy Schubert\hline
11329*7f2fe78bSCy Schubert\sphinxAtStartPar
11330*7f2fe78bSCy SchubertMaster key default enctype
11331*7f2fe78bSCy Schubert&
11332*7f2fe78bSCy Schubert\sphinxAtStartPar
11333*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96}}
11334*7f2fe78bSCy Schubert&\\
11335*7f2fe78bSCy Schubert\hline
11336*7f2fe78bSCy Schubert\sphinxAtStartPar
11337*7f2fe78bSCy SchubertDefault {\hyperref[\detokenize{admin/conf_files/kdc_conf:keysalt-lists}]{\sphinxcrossref{\DUrole{std,std-ref}{keysalt list}}}}
11338*7f2fe78bSCy Schubert&
11339*7f2fe78bSCy Schubert\sphinxAtStartPar
11340*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96:normal aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96:normal}}
11341*7f2fe78bSCy Schubert&\\
11342*7f2fe78bSCy Schubert\hline
11343*7f2fe78bSCy Schubert\sphinxAtStartPar
11344*7f2fe78bSCy SchubertPermitted enctypes
11345*7f2fe78bSCy Schubert&
11346*7f2fe78bSCy Schubert\sphinxAtStartPar
11347*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96 aes256\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha384\sphinxhyphen{}192 aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha256\sphinxhyphen{}128 des3\sphinxhyphen{}cbc\sphinxhyphen{}sha1 arcfour\sphinxhyphen{}hmac\sphinxhyphen{}md5 camellia256\sphinxhyphen{}cts\sphinxhyphen{}cmac camellia128\sphinxhyphen{}cts\sphinxhyphen{}cmac}}
11348*7f2fe78bSCy Schubert&\\
11349*7f2fe78bSCy Schubert\hline
11350*7f2fe78bSCy Schubert\sphinxAtStartPar
11351*7f2fe78bSCy SchubertKDC default port
11352*7f2fe78bSCy Schubert&
11353*7f2fe78bSCy Schubert\sphinxAtStartPar
11354*7f2fe78bSCy Schubert88
11355*7f2fe78bSCy Schubert&\\
11356*7f2fe78bSCy Schubert\hline
11357*7f2fe78bSCy Schubert\sphinxAtStartPar
11358*7f2fe78bSCy SchubertAdmin server port
11359*7f2fe78bSCy Schubert&
11360*7f2fe78bSCy Schubert\sphinxAtStartPar
11361*7f2fe78bSCy Schubert749
11362*7f2fe78bSCy Schubert&\\
11363*7f2fe78bSCy Schubert\hline
11364*7f2fe78bSCy Schubert\sphinxAtStartPar
11365*7f2fe78bSCy SchubertPassword change port
11366*7f2fe78bSCy Schubert&
11367*7f2fe78bSCy Schubert\sphinxAtStartPar
11368*7f2fe78bSCy Schubert464
11369*7f2fe78bSCy Schubert&\\
11370*7f2fe78bSCy Schubert\hline
11371*7f2fe78bSCy Schubert\end{tabulary}
11372*7f2fe78bSCy Schubert\par
11373*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
11374*7f2fe78bSCy Schubert
11375*7f2fe78bSCy Schubert
11376*7f2fe78bSCy Schubert\section{Replica KDC propagation defaults}
11377*7f2fe78bSCy Schubert\label{\detokenize{mitK5defaults:replica-kdc-propagation-defaults}}
11378*7f2fe78bSCy Schubert\sphinxAtStartPar
11379*7f2fe78bSCy SchubertThis table shows defaults used by the {\hyperref[\detokenize{admin/admin_commands/kprop:kprop-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop}}}} and
11380*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kpropd:kpropd-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kpropd}}}} programs.
11381*7f2fe78bSCy Schubert
11382*7f2fe78bSCy Schubert
11383*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
11384*7f2fe78bSCy Schubert\centering
11385*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|T|}
11386*7f2fe78bSCy Schubert\hline
11387*7f2fe78bSCy Schubert\sphinxstyletheadfamily
11388*7f2fe78bSCy Schubert\sphinxAtStartPar
11389*7f2fe78bSCy SchubertDescription
11390*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
11391*7f2fe78bSCy Schubert\sphinxAtStartPar
11392*7f2fe78bSCy SchubertDefault
11393*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
11394*7f2fe78bSCy Schubert\sphinxAtStartPar
11395*7f2fe78bSCy SchubertEnvironment
11396*7f2fe78bSCy Schubert\\
11397*7f2fe78bSCy Schubert\hline
11398*7f2fe78bSCy Schubert\sphinxAtStartPar
11399*7f2fe78bSCy Schubertkprop database dump file
11400*7f2fe78bSCy Schubert&
11401*7f2fe78bSCy Schubert\sphinxAtStartPar
11402*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/replica\_datatrans}}
11403*7f2fe78bSCy Schubert&\\
11404*7f2fe78bSCy Schubert\hline
11405*7f2fe78bSCy Schubert\sphinxAtStartPar
11406*7f2fe78bSCy Schubertkpropd temporary dump file
11407*7f2fe78bSCy Schubert&
11408*7f2fe78bSCy Schubert\sphinxAtStartPar
11409*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/from\_master}}
11410*7f2fe78bSCy Schubert&\\
11411*7f2fe78bSCy Schubert\hline
11412*7f2fe78bSCy Schubert\sphinxAtStartPar
11413*7f2fe78bSCy Schubertkdb5\_util location
11414*7f2fe78bSCy Schubert&
11415*7f2fe78bSCy Schubert\sphinxAtStartPar
11416*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{SBINDIR}}}}\sphinxcode{\sphinxupquote{/kdb5\_util}}
11417*7f2fe78bSCy Schubert&\\
11418*7f2fe78bSCy Schubert\hline
11419*7f2fe78bSCy Schubert\sphinxAtStartPar
11420*7f2fe78bSCy Schubertkprop location
11421*7f2fe78bSCy Schubert&
11422*7f2fe78bSCy Schubert\sphinxAtStartPar
11423*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{SBINDIR}}}}\sphinxcode{\sphinxupquote{/kprop}}
11424*7f2fe78bSCy Schubert&\\
11425*7f2fe78bSCy Schubert\hline
11426*7f2fe78bSCy Schubert\sphinxAtStartPar
11427*7f2fe78bSCy Schubertkpropd ACL file
11428*7f2fe78bSCy Schubert&
11429*7f2fe78bSCy Schubert\sphinxAtStartPar
11430*7f2fe78bSCy Schubert{\hyperref[\detokenize{mitK5defaults:paths}]{\sphinxcrossref{\DUrole{std,std-ref}{LOCALSTATEDIR}}}}\sphinxcode{\sphinxupquote{/krb5kdc}}\sphinxcode{\sphinxupquote{/kpropd.acl}}
11431*7f2fe78bSCy Schubert&\\
11432*7f2fe78bSCy Schubert\hline
11433*7f2fe78bSCy Schubert\sphinxAtStartPar
11434*7f2fe78bSCy Schubertkprop port
11435*7f2fe78bSCy Schubert&
11436*7f2fe78bSCy Schubert\sphinxAtStartPar
11437*7f2fe78bSCy Schubert754
11438*7f2fe78bSCy Schubert&
11439*7f2fe78bSCy Schubert\sphinxAtStartPar
11440*7f2fe78bSCy SchubertKPROP\_PORT
11441*7f2fe78bSCy Schubert\\
11442*7f2fe78bSCy Schubert\hline
11443*7f2fe78bSCy Schubert\end{tabulary}
11444*7f2fe78bSCy Schubert\par
11445*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
11446*7f2fe78bSCy Schubert
11447*7f2fe78bSCy Schubert
11448*7f2fe78bSCy Schubert\section{Default paths for Unix\sphinxhyphen{}like systems}
11449*7f2fe78bSCy Schubert\label{\detokenize{mitK5defaults:default-paths-for-unix-like-systems}}\label{\detokenize{mitK5defaults:paths}}
11450*7f2fe78bSCy Schubert\sphinxAtStartPar
11451*7f2fe78bSCy SchubertOn Unix\sphinxhyphen{}like systems, some paths used by MIT krb5 depend on parameters
11452*7f2fe78bSCy Schubertchosen at build time.  For a custom build, these paths default to
11453*7f2fe78bSCy Schubertsubdirectories of \sphinxcode{\sphinxupquote{/usr/local}}.  When MIT krb5 is integrated into an
11454*7f2fe78bSCy Schubertoperating system, the paths are generally chosen to match the
11455*7f2fe78bSCy Schubertoperating system’s filesystem layout.
11456*7f2fe78bSCy Schubert
11457*7f2fe78bSCy Schubert
11458*7f2fe78bSCy Schubert\begin{savenotes}\sphinxattablestart
11459*7f2fe78bSCy Schubert\centering
11460*7f2fe78bSCy Schubert\begin{tabulary}{\linewidth}[t]{|T|T|T|T|}
11461*7f2fe78bSCy Schubert\hline
11462*7f2fe78bSCy Schubert\sphinxstyletheadfamily
11463*7f2fe78bSCy Schubert\sphinxAtStartPar
11464*7f2fe78bSCy SchubertDescription
11465*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
11466*7f2fe78bSCy Schubert\sphinxAtStartPar
11467*7f2fe78bSCy SchubertSymbolic name
11468*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
11469*7f2fe78bSCy Schubert\sphinxAtStartPar
11470*7f2fe78bSCy SchubertCustom build path
11471*7f2fe78bSCy Schubert&\sphinxstyletheadfamily
11472*7f2fe78bSCy Schubert\sphinxAtStartPar
11473*7f2fe78bSCy SchubertTypical OS path
11474*7f2fe78bSCy Schubert\\
11475*7f2fe78bSCy Schubert\hline
11476*7f2fe78bSCy Schubert\sphinxAtStartPar
11477*7f2fe78bSCy SchubertUser programs
11478*7f2fe78bSCy Schubert&
11479*7f2fe78bSCy Schubert\sphinxAtStartPar
11480*7f2fe78bSCy SchubertBINDIR
11481*7f2fe78bSCy Schubert&
11482*7f2fe78bSCy Schubert\sphinxAtStartPar
11483*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/local/bin}}
11484*7f2fe78bSCy Schubert&
11485*7f2fe78bSCy Schubert\sphinxAtStartPar
11486*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/bin}}
11487*7f2fe78bSCy Schubert\\
11488*7f2fe78bSCy Schubert\hline
11489*7f2fe78bSCy Schubert\sphinxAtStartPar
11490*7f2fe78bSCy SchubertLibraries and plugins
11491*7f2fe78bSCy Schubert&
11492*7f2fe78bSCy Schubert\sphinxAtStartPar
11493*7f2fe78bSCy SchubertLIBDIR
11494*7f2fe78bSCy Schubert&
11495*7f2fe78bSCy Schubert\sphinxAtStartPar
11496*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/local/lib}}
11497*7f2fe78bSCy Schubert&
11498*7f2fe78bSCy Schubert\sphinxAtStartPar
11499*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/lib}}
11500*7f2fe78bSCy Schubert\\
11501*7f2fe78bSCy Schubert\hline
11502*7f2fe78bSCy Schubert\sphinxAtStartPar
11503*7f2fe78bSCy SchubertParent of KDC state dir
11504*7f2fe78bSCy Schubert&
11505*7f2fe78bSCy Schubert\sphinxAtStartPar
11506*7f2fe78bSCy SchubertLOCALSTATEDIR
11507*7f2fe78bSCy Schubert&
11508*7f2fe78bSCy Schubert\sphinxAtStartPar
11509*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/local/var}}
11510*7f2fe78bSCy Schubert&
11511*7f2fe78bSCy Schubert\sphinxAtStartPar
11512*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/var}}
11513*7f2fe78bSCy Schubert\\
11514*7f2fe78bSCy Schubert\hline
11515*7f2fe78bSCy Schubert\sphinxAtStartPar
11516*7f2fe78bSCy SchubertParent of KDC runtime dir
11517*7f2fe78bSCy Schubert&
11518*7f2fe78bSCy Schubert\sphinxAtStartPar
11519*7f2fe78bSCy SchubertRUNSTATEDIR
11520*7f2fe78bSCy Schubert&
11521*7f2fe78bSCy Schubert\sphinxAtStartPar
11522*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/local/var/run}}
11523*7f2fe78bSCy Schubert&
11524*7f2fe78bSCy Schubert\sphinxAtStartPar
11525*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/run}}
11526*7f2fe78bSCy Schubert\\
11527*7f2fe78bSCy Schubert\hline
11528*7f2fe78bSCy Schubert\sphinxAtStartPar
11529*7f2fe78bSCy SchubertAdministrative programs
11530*7f2fe78bSCy Schubert&
11531*7f2fe78bSCy Schubert\sphinxAtStartPar
11532*7f2fe78bSCy SchubertSBINDIR
11533*7f2fe78bSCy Schubert&
11534*7f2fe78bSCy Schubert\sphinxAtStartPar
11535*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/local/sbin}}
11536*7f2fe78bSCy Schubert&
11537*7f2fe78bSCy Schubert\sphinxAtStartPar
11538*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/sbin}}
11539*7f2fe78bSCy Schubert\\
11540*7f2fe78bSCy Schubert\hline
11541*7f2fe78bSCy Schubert\sphinxAtStartPar
11542*7f2fe78bSCy SchubertAlternate krb5.conf dir
11543*7f2fe78bSCy Schubert&
11544*7f2fe78bSCy Schubert\sphinxAtStartPar
11545*7f2fe78bSCy SchubertSYSCONFDIR
11546*7f2fe78bSCy Schubert&
11547*7f2fe78bSCy Schubert\sphinxAtStartPar
11548*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/usr/local/etc}}
11549*7f2fe78bSCy Schubert&
11550*7f2fe78bSCy Schubert\sphinxAtStartPar
11551*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{/etc}}
11552*7f2fe78bSCy Schubert\\
11553*7f2fe78bSCy Schubert\hline
11554*7f2fe78bSCy Schubert\sphinxAtStartPar
11555*7f2fe78bSCy SchubertDefault ccache name
11556*7f2fe78bSCy Schubert&
11557*7f2fe78bSCy Schubert\sphinxAtStartPar
11558*7f2fe78bSCy SchubertDEFCCNAME
11559*7f2fe78bSCy Schubert&
11560*7f2fe78bSCy Schubert\sphinxAtStartPar
11561*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{FILE:/tmp/krb5cc\_\%\{uid\}}}
11562*7f2fe78bSCy Schubert&
11563*7f2fe78bSCy Schubert\sphinxAtStartPar
11564*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{FILE:/tmp/krb5cc\_\%\{uid\}}}
11565*7f2fe78bSCy Schubert\\
11566*7f2fe78bSCy Schubert\hline
11567*7f2fe78bSCy Schubert\sphinxAtStartPar
11568*7f2fe78bSCy SchubertDefault keytab name
11569*7f2fe78bSCy Schubert&
11570*7f2fe78bSCy Schubert\sphinxAtStartPar
11571*7f2fe78bSCy SchubertDEFKTNAME
11572*7f2fe78bSCy Schubert&
11573*7f2fe78bSCy Schubert\sphinxAtStartPar
11574*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{FILE:/etc/krb5.keytab}}
11575*7f2fe78bSCy Schubert&
11576*7f2fe78bSCy Schubert\sphinxAtStartPar
11577*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{FILE:/etc/krb5.keytab}}
11578*7f2fe78bSCy Schubert\\
11579*7f2fe78bSCy Schubert\hline
11580*7f2fe78bSCy Schubert\sphinxAtStartPar
11581*7f2fe78bSCy SchubertDefault PKCS11 module
11582*7f2fe78bSCy Schubert&
11583*7f2fe78bSCy Schubert\sphinxAtStartPar
11584*7f2fe78bSCy SchubertPKCS11\_MODNAME
11585*7f2fe78bSCy Schubert&
11586*7f2fe78bSCy Schubert\sphinxAtStartPar
11587*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{opensc\sphinxhyphen{}pkcs11.so}}
11588*7f2fe78bSCy Schubert&
11589*7f2fe78bSCy Schubert\sphinxAtStartPar
11590*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{opensc\sphinxhyphen{}pkcs11.so}}
11591*7f2fe78bSCy Schubert\\
11592*7f2fe78bSCy Schubert\hline
11593*7f2fe78bSCy Schubert\end{tabulary}
11594*7f2fe78bSCy Schubert\par
11595*7f2fe78bSCy Schubert\sphinxattableend\end{savenotes}
11596*7f2fe78bSCy Schubert
11597*7f2fe78bSCy Schubert\sphinxAtStartPar
11598*7f2fe78bSCy SchubertThe default client keytab name (DEFCKTNAME) typically defaults to
11599*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{FILE:/usr/local/var/krb5/user/\%\{euid\}/client.keytab}} for a custom
11600*7f2fe78bSCy Schubertbuild.  A native build will typically use a path which will vary
11601*7f2fe78bSCy Schubertaccording to the operating system’s layout of \sphinxcode{\sphinxupquote{/var}}.
11602*7f2fe78bSCy Schubert
11603*7f2fe78bSCy Schubert
11604*7f2fe78bSCy Schubert\chapter{Environment variables}
11605*7f2fe78bSCy Schubert\label{\detokenize{admin/env_variables:environment-variables}}\label{\detokenize{admin/env_variables::doc}}
11606*7f2fe78bSCy Schubert\sphinxAtStartPar
11607*7f2fe78bSCy SchubertThis content has moved to \DUrole{xref,std,std-ref}{kerberos(7)}.
11608*7f2fe78bSCy Schubert
11609*7f2fe78bSCy Schubert
11610*7f2fe78bSCy Schubert\chapter{Troubleshooting}
11611*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:troubleshooting}}\label{\detokenize{admin/troubleshoot:troubleshoot}}\label{\detokenize{admin/troubleshoot::doc}}
11612*7f2fe78bSCy Schubert
11613*7f2fe78bSCy Schubert\section{Trace logging}
11614*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:trace-logging}}\label{\detokenize{admin/troubleshoot:id1}}
11615*7f2fe78bSCy Schubert\sphinxAtStartPar
11616*7f2fe78bSCy SchubertMost programs using MIT krb5 1.9 or later can be made to provide
11617*7f2fe78bSCy Schubertinformation about internal krb5 library operations using trace
11618*7f2fe78bSCy Schubertlogging.  To enable this, set the \sphinxstylestrong{KRB5\_TRACE} environment variable
11619*7f2fe78bSCy Schubertto a filename before running the program.  On many operating systems,
11620*7f2fe78bSCy Schubertthe filename \sphinxcode{\sphinxupquote{/dev/stdout}} can be used to send trace logging output
11621*7f2fe78bSCy Schubertto standard output.
11622*7f2fe78bSCy Schubert
11623*7f2fe78bSCy Schubert\sphinxAtStartPar
11624*7f2fe78bSCy SchubertSome programs do not honor \sphinxstylestrong{KRB5\_TRACE}, either because they use
11625*7f2fe78bSCy Schubertsecure library contexts (this generally applies to setuid programs and
11626*7f2fe78bSCy Schubertparts of the login system) or because they take direct control of the
11627*7f2fe78bSCy Schuberttrace logging system using the API.
11628*7f2fe78bSCy Schubert
11629*7f2fe78bSCy Schubert\sphinxAtStartPar
11630*7f2fe78bSCy SchubertHere is a short example showing trace logging output for an invocation
11631*7f2fe78bSCy Schubertof the \DUrole{xref,std,std-ref}{kvno(1)} command:
11632*7f2fe78bSCy Schubert
11633*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11634*7f2fe78bSCy Schubert\PYG{n}{shell}\PYG{o}{\PYGZpc{}} \PYG{n}{env} \PYG{n}{KRB5\PYGZus{}TRACE}\PYG{o}{=}\PYG{o}{/}\PYG{n}{dev}\PYG{o}{/}\PYG{n}{stdout} \PYG{n}{kvno} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{KRBTEST}\PYG{o}{.}\PYG{n}{COM}
11635*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{l+m+mi}{9138}\PYG{p}{]} \PYG{l+m+mf}{1332348778.823276}\PYG{p}{:} \PYG{n}{Getting} \PYG{n}{credentials} \PYG{n}{user}\PYG{n+nd}{@KRBTEST}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZgt{}}
11636*7f2fe78bSCy Schubert    \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{KRBTEST}\PYG{o}{.}\PYG{n}{COM}\PYG{n+nd}{@KRBTEST}\PYG{o}{.}\PYG{n}{COM} \PYG{n}{using} \PYG{n}{ccache}
11637*7f2fe78bSCy Schubert    \PYG{n}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{me}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{/}\PYG{n}{build}\PYG{o}{/}\PYG{n}{testdir}\PYG{o}{/}\PYG{n}{ccache}
11638*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{l+m+mi}{9138}\PYG{p}{]} \PYG{l+m+mf}{1332348778.823381}\PYG{p}{:} \PYG{n}{Retrieving} \PYG{n}{user}\PYG{n+nd}{@KRBTEST}\PYG{o}{.}\PYG{n}{COM} \PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZgt{}}
11639*7f2fe78bSCy Schubert    \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{KRBTEST}\PYG{o}{.}\PYG{n}{COM}\PYG{n+nd}{@KRBTEST}\PYG{o}{.}\PYG{n}{COM} \PYG{k+kn}{from}
11640*7f2fe78bSCy Schubert    \PYG{n+nn}{FILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{me}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{/}\PYG{n}{build}\PYG{o}{/}\PYG{n}{testdir}\PYG{o}{/}\PYG{n}{ccache} \PYG{k}{with} \PYG{n}{result}\PYG{p}{:} \PYG{l+m+mi}{0}\PYG{o}{/}\PYG{n}{Unknown} \PYG{n}{code} \PYG{l+m+mi}{0}
11641*7f2fe78bSCy Schubert\PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{KRBTEST}\PYG{o}{.}\PYG{n}{COM}\PYG{n+nd}{@KRBTEST}\PYG{o}{.}\PYG{n}{COM}\PYG{p}{:} \PYG{n}{kvno} \PYG{o}{=} \PYG{l+m+mi}{1}
11642*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11643*7f2fe78bSCy Schubert
11644*7f2fe78bSCy Schubert
11645*7f2fe78bSCy Schubert\section{List of errors}
11646*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:list-of-errors}}
11647*7f2fe78bSCy Schubert
11648*7f2fe78bSCy Schubert\subsection{Frequently seen errors}
11649*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:frequently-seen-errors}}\begin{enumerate}
11650*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
11651*7f2fe78bSCy Schubert\item {}
11652*7f2fe78bSCy Schubert\sphinxAtStartPar
11653*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:init-creds-etype-nosupp}]{\sphinxcrossref{\DUrole{std,std-ref}{KDC has no support for encryption type while getting initial credentials}}}}
11654*7f2fe78bSCy Schubert
11655*7f2fe78bSCy Schubert\item {}
11656*7f2fe78bSCy Schubert\sphinxAtStartPar
11657*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:cert-chain-etype-nosupp}]{\sphinxcrossref{\DUrole{std,std-ref}{credential verification failed: KDC has no support for encryption type}}}}
11658*7f2fe78bSCy Schubert
11659*7f2fe78bSCy Schubert\item {}
11660*7f2fe78bSCy Schubert\sphinxAtStartPar
11661*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:err-cert-chain-cert-expired}]{\sphinxcrossref{\DUrole{std,std-ref}{Cannot create cert chain: certificate has expired}}}}
11662*7f2fe78bSCy Schubert
11663*7f2fe78bSCy Schubert\end{enumerate}
11664*7f2fe78bSCy Schubert
11665*7f2fe78bSCy Schubert
11666*7f2fe78bSCy Schubert\subsection{Errors seen by admins}
11667*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:errors-seen-by-admins}}\phantomsection\label{\detokenize{admin/troubleshoot:prop-failed-start}}\begin{enumerate}
11668*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
11669*7f2fe78bSCy Schubert\item {}
11670*7f2fe78bSCy Schubert\sphinxAtStartPar
11671*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:kprop-no-route}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop: No route to host while connecting to server}}}}
11672*7f2fe78bSCy Schubert
11673*7f2fe78bSCy Schubert\item {}
11674*7f2fe78bSCy Schubert\sphinxAtStartPar
11675*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:kprop-con-refused}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop: Connection refused while connecting to server}}}}
11676*7f2fe78bSCy Schubert
11677*7f2fe78bSCy Schubert\item {}
11678*7f2fe78bSCy Schubert\sphinxAtStartPar
11679*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/troubleshoot:kprop-sendauth-exchange}]{\sphinxcrossref{\DUrole{std,std-ref}{kprop: Server rejected authentication (during sendauth exchange) while authenticating to server}}}}
11680*7f2fe78bSCy Schubert
11681*7f2fe78bSCy Schubert\end{enumerate}
11682*7f2fe78bSCy Schubert\phantomsection\label{\detokenize{admin/troubleshoot:prop-failed-end}}
11683*7f2fe78bSCy Schubert
11684*7f2fe78bSCy Schubert\bigskip\hrule\bigskip
11685*7f2fe78bSCy Schubert
11686*7f2fe78bSCy Schubert
11687*7f2fe78bSCy Schubert
11688*7f2fe78bSCy Schubert\subsubsection{KDC has no support for encryption type while getting initial credentials}
11689*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:kdc-has-no-support-for-encryption-type-while-getting-initial-credentials}}\label{\detokenize{admin/troubleshoot:init-creds-etype-nosupp}}
11690*7f2fe78bSCy Schubert
11691*7f2fe78bSCy Schubert\subsubsection{credential verification failed: KDC has no support for encryption type}
11692*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:credential-verification-failed-kdc-has-no-support-for-encryption-type}}\label{\detokenize{admin/troubleshoot:cert-chain-etype-nosupp}}
11693*7f2fe78bSCy Schubert\sphinxAtStartPar
11694*7f2fe78bSCy SchubertThis most commonly happens when trying to use a principal with only
11695*7f2fe78bSCy SchubertDES keys, in a release (MIT krb5 1.7 or later) which disables DES by
11696*7f2fe78bSCy Schubertdefault.  DES encryption is considered weak due to its inadequate key
11697*7f2fe78bSCy Schubertsize.  If you cannot migrate away from its use, you can re\sphinxhyphen{}enable DES
11698*7f2fe78bSCy Schubertby adding \sphinxcode{\sphinxupquote{allow\_weak\_crypto = true}} to the {\hyperref[\detokenize{admin/conf_files/krb5_conf:libdefaults}]{\sphinxcrossref{\DUrole{std,std-ref}{{[}libdefaults{]}}}}}
11699*7f2fe78bSCy Schubertsection of {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}}.
11700*7f2fe78bSCy Schubert
11701*7f2fe78bSCy Schubert
11702*7f2fe78bSCy Schubert\subsubsection{Cannot create cert chain: certificate has expired}
11703*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:cannot-create-cert-chain-certificate-has-expired}}\label{\detokenize{admin/troubleshoot:err-cert-chain-cert-expired}}
11704*7f2fe78bSCy Schubert\sphinxAtStartPar
11705*7f2fe78bSCy SchubertThis error message indicates that PKINIT authentication failed because
11706*7f2fe78bSCy Schubertthe client certificate, KDC certificate, or one of the certificates in
11707*7f2fe78bSCy Schubertthe signing chain above them has expired.
11708*7f2fe78bSCy Schubert
11709*7f2fe78bSCy Schubert\sphinxAtStartPar
11710*7f2fe78bSCy SchubertIf the KDC certificate has expired, this message appears in the KDC
11711*7f2fe78bSCy Schubertlog file, and the client will receive a “Preauthentication failed”
11712*7f2fe78bSCy Schuberterror.  (Prior to release 1.11, the KDC log file message erroneously
11713*7f2fe78bSCy Schubertappears as “Out of memory”.  Prior to release 1.12, the client will
11714*7f2fe78bSCy Schubertreceive a “Generic error”.)
11715*7f2fe78bSCy Schubert
11716*7f2fe78bSCy Schubert\sphinxAtStartPar
11717*7f2fe78bSCy SchubertIf the client or a signing certificate has expired, this message may
11718*7f2fe78bSCy Schubertappear in {\hyperref[\detokenize{admin/troubleshoot:trace-logging}]{\sphinxcrossref{trace\_logging}}} output from \DUrole{xref,std,std-ref}{kinit(1)} or, starting in
11719*7f2fe78bSCy Schubertrelease 1.12, as an error message from kinit or another program which
11720*7f2fe78bSCy Schubertgets initial tickets.  The error message is more likely to appear
11721*7f2fe78bSCy Schubertproperly on the client if the principal entry has no long\sphinxhyphen{}term keys.
11722*7f2fe78bSCy Schubert
11723*7f2fe78bSCy Schubert
11724*7f2fe78bSCy Schubert\subsubsection{kprop: No route to host while connecting to server}
11725*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:kprop-no-route-to-host-while-connecting-to-server}}\label{\detokenize{admin/troubleshoot:kprop-no-route}}
11726*7f2fe78bSCy Schubert\sphinxAtStartPar
11727*7f2fe78bSCy SchubertMake sure that the hostname of the replica KDC (as given to kprop) is
11728*7f2fe78bSCy Schubertcorrect, and that any firewalls between the primary and the replica
11729*7f2fe78bSCy Schubertallow a connection on port 754.
11730*7f2fe78bSCy Schubert
11731*7f2fe78bSCy Schubert
11732*7f2fe78bSCy Schubert\subsubsection{kprop: Connection refused while connecting to server}
11733*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:kprop-connection-refused-while-connecting-to-server}}\label{\detokenize{admin/troubleshoot:kprop-con-refused}}
11734*7f2fe78bSCy Schubert\sphinxAtStartPar
11735*7f2fe78bSCy SchubertIf the replica KDC is intended to run kpropd out of inetd, make sure
11736*7f2fe78bSCy Schubertthat inetd is configured to accept krb5\_prop connections.  inetd may
11737*7f2fe78bSCy Schubertneed to be restarted or sent a SIGHUP to recognize the new
11738*7f2fe78bSCy Schubertconfiguration.  If the replica is intended to run kpropd in standalone
11739*7f2fe78bSCy Schubertmode, make sure that it is running.
11740*7f2fe78bSCy Schubert
11741*7f2fe78bSCy Schubert
11742*7f2fe78bSCy Schubert\subsubsection{kprop: Server rejected authentication (during sendauth exchange) while authenticating to server}
11743*7f2fe78bSCy Schubert\label{\detokenize{admin/troubleshoot:kprop-server-rejected-authentication-during-sendauth-exchange-while-authenticating-to-server}}\label{\detokenize{admin/troubleshoot:kprop-sendauth-exchange}}
11744*7f2fe78bSCy Schubert\sphinxAtStartPar
11745*7f2fe78bSCy SchubertMake sure that:
11746*7f2fe78bSCy Schubert\begin{enumerate}
11747*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
11748*7f2fe78bSCy Schubert\item {}
11749*7f2fe78bSCy Schubert\sphinxAtStartPar
11750*7f2fe78bSCy SchubertThe time is synchronized between the primary and replica KDCs.
11751*7f2fe78bSCy Schubert
11752*7f2fe78bSCy Schubert\item {}
11753*7f2fe78bSCy Schubert\sphinxAtStartPar
11754*7f2fe78bSCy SchubertThe master stash file was copied from the primary to the expected
11755*7f2fe78bSCy Schubertlocation on the replica.
11756*7f2fe78bSCy Schubert
11757*7f2fe78bSCy Schubert\item {}
11758*7f2fe78bSCy Schubert\sphinxAtStartPar
11759*7f2fe78bSCy SchubertThe replica has a keytab file in the default location containing a
11760*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{host}} principal for the replica’s hostname.
11761*7f2fe78bSCy Schubert
11762*7f2fe78bSCy Schubert\end{enumerate}
11763*7f2fe78bSCy Schubert
11764*7f2fe78bSCy Schubert
11765*7f2fe78bSCy Schubert\chapter{Advanced topics}
11766*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/index:advanced-topics}}\label{\detokenize{admin/advanced/index::doc}}
11767*7f2fe78bSCy Schubert
11768*7f2fe78bSCy Schubert\section{Retiring DES}
11769*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:retiring-des}}\label{\detokenize{admin/advanced/retiring-des:id1}}\label{\detokenize{admin/advanced/retiring-des::doc}}
11770*7f2fe78bSCy Schubert\sphinxAtStartPar
11771*7f2fe78bSCy SchubertVersion 5 of the Kerberos protocol was originally implemented using
11772*7f2fe78bSCy Schubertthe Data Encryption Standard (DES) as a block cipher for encryption.
11773*7f2fe78bSCy SchubertWhile it was considered secure at the time, advancements in computational
11774*7f2fe78bSCy Schubertability have rendered DES vulnerable to brute force attacks on its 56\sphinxhyphen{}bit
11775*7f2fe78bSCy Schubertkeyspace.  As such, it is now considered insecure and should not be
11776*7f2fe78bSCy Schubertused (\index{RFC@\spxentry{RFC}!RFC 6649@\spxentry{RFC 6649}}\sphinxhref{https://tools.ietf.org/html/rfc6649.html}{\sphinxstylestrong{RFC 6649}}).
11777*7f2fe78bSCy Schubert
11778*7f2fe78bSCy Schubert
11779*7f2fe78bSCy Schubert\subsection{History}
11780*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:history}}
11781*7f2fe78bSCy Schubert\sphinxAtStartPar
11782*7f2fe78bSCy SchubertDES was used in the original Kerberos implementation, and was the
11783*7f2fe78bSCy Schubertonly cryptosystem in krb5 1.0.  Partial support for triple\sphinxhyphen{}DES (3DES) was
11784*7f2fe78bSCy Schubertadded in version 1.1, with full support following in version 1.2.
11785*7f2fe78bSCy SchubertThe Advanced Encryption Standard (AES), which supersedes DES, gained
11786*7f2fe78bSCy Schubertpartial support in version 1.3.0 of krb5 and full support in version 1.3.2.
11787*7f2fe78bSCy SchubertHowever, deployments of krb5 using Kerberos databases created with older
11788*7f2fe78bSCy Schubertversions of krb5 will not necessarily start using strong crypto for
11789*7f2fe78bSCy Schubertordinary operation without administrator intervention.
11790*7f2fe78bSCy Schubert
11791*7f2fe78bSCy Schubert\sphinxAtStartPar
11792*7f2fe78bSCy SchubertMIT krb5 began flagging deprecated encryption types with release 1.17,
11793*7f2fe78bSCy Schubertand removed DES (single\sphinxhyphen{}DES) support in release 1.18.  As a
11794*7f2fe78bSCy Schubertconsequence, a release prior to 1.18 is required to perform these
11795*7f2fe78bSCy Schubertmigrations.
11796*7f2fe78bSCy Schubert
11797*7f2fe78bSCy Schubert
11798*7f2fe78bSCy Schubert\subsection{Types of keys}
11799*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:types-of-keys}}\begin{itemize}
11800*7f2fe78bSCy Schubert\item {}
11801*7f2fe78bSCy Schubert\sphinxAtStartPar
11802*7f2fe78bSCy SchubertThe database master key:  This key is not exposed to user requests,
11803*7f2fe78bSCy Schubertbut is used to encrypt other key material stored in the kerberos
11804*7f2fe78bSCy Schubertdatabase.  The database master key is currently stored as \sphinxcode{\sphinxupquote{K/M}}
11805*7f2fe78bSCy Schubertby default.
11806*7f2fe78bSCy Schubert
11807*7f2fe78bSCy Schubert\item {}
11808*7f2fe78bSCy Schubert\sphinxAtStartPar
11809*7f2fe78bSCy SchubertPassword\sphinxhyphen{}derived keys:  User principals frequently have keys
11810*7f2fe78bSCy Schubertderived from a password.  When a new password is set, the KDC
11811*7f2fe78bSCy Schubertuses various string2key functions to generate keys in the database
11812*7f2fe78bSCy Schubertfor that principal.
11813*7f2fe78bSCy Schubert
11814*7f2fe78bSCy Schubert\item {}
11815*7f2fe78bSCy Schubert\sphinxAtStartPar
11816*7f2fe78bSCy SchubertKeytab keys:  Application server principals generally use random
11817*7f2fe78bSCy Schubertkeys which are not derived from a password.  When the database
11818*7f2fe78bSCy Schubertentry is created, the KDC generates random keys of various enctypes
11819*7f2fe78bSCy Schubertto enter in the database, which are conveyed to the application server
11820*7f2fe78bSCy Schubertand stored in a keytab.
11821*7f2fe78bSCy Schubert
11822*7f2fe78bSCy Schubert\item {}
11823*7f2fe78bSCy Schubert\sphinxAtStartPar
11824*7f2fe78bSCy SchubertSession keys:  These are short\sphinxhyphen{}term keys generated by the KDC while
11825*7f2fe78bSCy Schubertprocessing client requests, with an enctype selected by the KDC.
11826*7f2fe78bSCy Schubert
11827*7f2fe78bSCy Schubert\end{itemize}
11828*7f2fe78bSCy Schubert
11829*7f2fe78bSCy Schubert\sphinxAtStartPar
11830*7f2fe78bSCy SchubertFor details on the various enctypes and how enctypes are selected by the KDC
11831*7f2fe78bSCy Schubertfor session keys and client/server long\sphinxhyphen{}term keys, see {\hyperref[\detokenize{admin/enctypes:enctypes}]{\sphinxcrossref{\DUrole{std,std-ref}{Encryption types}}}}.
11832*7f2fe78bSCy SchubertWhen using the {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} interface to generate new long\sphinxhyphen{}term keys,
11833*7f2fe78bSCy Schubertthe \sphinxstylestrong{\sphinxhyphen{}e} argument can be used to force a particular set of enctypes,
11834*7f2fe78bSCy Schubertoverriding the KDC default values.
11835*7f2fe78bSCy Schubert
11836*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
11837*7f2fe78bSCy Schubert\sphinxAtStartPar
11838*7f2fe78bSCy SchubertWhen the KDC is selecting a session key, it has no knowledge about the
11839*7f2fe78bSCy Schubertkerberos installation on the server which will receive the service ticket,
11840*7f2fe78bSCy Schubertonly what keys are in the database for the service principal.
11841*7f2fe78bSCy SchubertIn order to allow uninterrupted operation to
11842*7f2fe78bSCy Schubertclients while migrating away from DES, care must be taken to ensure that
11843*7f2fe78bSCy Schubertkerberos installations on application server machines are configured to
11844*7f2fe78bSCy Schubertsupport newer encryption types before keys of those new encryption types
11845*7f2fe78bSCy Schubertare created in the Kerberos database for those server principals.
11846*7f2fe78bSCy Schubert\end{sphinxadmonition}
11847*7f2fe78bSCy Schubert
11848*7f2fe78bSCy Schubert
11849*7f2fe78bSCy Schubert\subsection{Upgrade procedure}
11850*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:upgrade-procedure}}
11851*7f2fe78bSCy Schubert\sphinxAtStartPar
11852*7f2fe78bSCy SchubertThis procedure assumes that the KDC software has already been upgraded
11853*7f2fe78bSCy Schubertto a modern version of krb5 that supports non\sphinxhyphen{}DES keys, so that the
11854*7f2fe78bSCy Schubertonly remaining task is to update the actual keys used to service requests.
11855*7f2fe78bSCy SchubertThe realm used for demonstrating this procedure, ZONE.MIT.EDU,
11856*7f2fe78bSCy Schubertis an example of the worst\sphinxhyphen{}case scenario, where all keys in the realm
11857*7f2fe78bSCy Schubertare DES.  The realm was initially created with a very old version of krb5,
11858*7f2fe78bSCy Schubertand \sphinxstylestrong{supported\_enctypes} in {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} was set to a value
11859*7f2fe78bSCy Schubertappropriate when the KDC was installed, but was not updated as the KDC
11860*7f2fe78bSCy Schubertwas upgraded:
11861*7f2fe78bSCy Schubert
11862*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11863*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
11864*7f2fe78bSCy Schubert        \PYG{n}{ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
11865*7f2fe78bSCy Schubert                \PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11866*7f2fe78bSCy Schubert                \PYG{n}{master\PYGZus{}key\PYGZus{}type} \PYG{o}{=} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}
11867*7f2fe78bSCy Schubert                \PYG{n}{supported\PYGZus{}enctypes} \PYG{o}{=} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{des}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{des}\PYG{p}{:}\PYG{n}{v4} \PYG{n}{des}\PYG{p}{:}\PYG{n}{norealm} \PYG{n}{des}\PYG{p}{:}\PYG{n}{onlyrealm} \PYG{n}{des}\PYG{p}{:}\PYG{n}{afs3}
11868*7f2fe78bSCy Schubert        \PYG{p}{\PYGZcb{}}
11869*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11870*7f2fe78bSCy Schubert
11871*7f2fe78bSCy Schubert\sphinxAtStartPar
11872*7f2fe78bSCy SchubertThis resulted in the keys for all principals in the realm being forced
11873*7f2fe78bSCy Schubertto DES\sphinxhyphen{}only, unless specifically requested using {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}}.
11874*7f2fe78bSCy Schubert
11875*7f2fe78bSCy Schubert\sphinxAtStartPar
11876*7f2fe78bSCy SchubertBefore starting the upgrade, all KDCs were running krb5 1.11,
11877*7f2fe78bSCy Schubertand the database entries for some “high\sphinxhyphen{}value” principals were:
11878*7f2fe78bSCy Schubert
11879*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11880*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZsq{}getprinc krbtgt/ZONE.MIT.EDU\PYGZsq{}}
11881*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11882*7f2fe78bSCy Schubert\PYG{n}{Number} \PYG{n}{of} \PYG{n}{keys}\PYG{p}{:} \PYG{l+m+mi}{1}
11883*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}\PYG{p}{:}\PYG{n}{v4}
11884*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11885*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZsq{}getprinc kadmin/admin\PYGZsq{}}
11886*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11887*7f2fe78bSCy Schubert\PYG{n}{Number} \PYG{n}{of} \PYG{n}{keys}\PYG{p}{:} \PYG{l+m+mi}{1}
11888*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{15}\PYG{p}{,} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}
11889*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11890*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZsq{}getprinc kadmin/changepw\PYGZsq{}}
11891*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11892*7f2fe78bSCy Schubert\PYG{n}{Number} \PYG{n}{of} \PYG{n}{keys}\PYG{p}{:} \PYG{l+m+mi}{1}
11893*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{14}\PYG{p}{,} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}
11894*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11895*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11896*7f2fe78bSCy Schubert
11897*7f2fe78bSCy Schubert\sphinxAtStartPar
11898*7f2fe78bSCy SchubertThe \sphinxcode{\sphinxupquote{krbtgt/REALM}} key appears to have never been changed since creation
11899*7f2fe78bSCy Schubert(its kvno is 1), and all three database entries have only a des\sphinxhyphen{}cbc\sphinxhyphen{}crc key.
11900*7f2fe78bSCy Schubert
11901*7f2fe78bSCy Schubert
11902*7f2fe78bSCy Schubert\subsubsection{The krbtgt key and KDC keys}
11903*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:the-krbtgt-key-and-kdc-keys}}
11904*7f2fe78bSCy Schubert\sphinxAtStartPar
11905*7f2fe78bSCy SchubertPerhaps the biggest single\sphinxhyphen{}step improvement in the security of the cell
11906*7f2fe78bSCy Schubertis gained by strengthening the key of the ticket\sphinxhyphen{}granting service principal,
11907*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{krbtgt/REALM}}—if this principal’s key is compromised, so is the
11908*7f2fe78bSCy Schubertentire realm.  Since the server that will handle service tickets
11909*7f2fe78bSCy Schubertfor this principal is the KDC itself, it is easy to guarantee that it
11910*7f2fe78bSCy Schubertwill be configured to support any encryption types which might be
11911*7f2fe78bSCy Schubertselected.  However, the default KDC behavior when creating new keys is to
11912*7f2fe78bSCy Schubertremove the old keys, which would invalidate all existing tickets issued
11913*7f2fe78bSCy Schubertagainst that principal, rendering the TGTs cached by clients useless.
11914*7f2fe78bSCy SchubertInstead, a new key can be created with the old key retained, so that
11915*7f2fe78bSCy Schubertexisting tickets will still function until their scheduled expiry
11916*7f2fe78bSCy Schubert(see {\hyperref[\detokenize{admin/database:changing-krbtgt-key}]{\sphinxcrossref{\DUrole{std,std-ref}{Changing the krbtgt key}}}}).
11917*7f2fe78bSCy Schubert
11918*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11919*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} enctypes=aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96:normal,\PYGZbs{}}
11920*7f2fe78bSCy Schubert\PYG{o}{\PYGZgt{}} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal}\PYG{p}{,}\PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{p}{:}\PYG{n}{normal}\PYG{p}{,}\PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}\PYG{p}{:}\PYG{n}{normal}
11921*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZdq{}cpw \PYGZhy{}e \PYGZdl{}\PYGZob{}enctypes\PYGZcb{} \PYGZhy{}randkey \PYGZbs{}}
11922*7f2fe78bSCy Schubert\PYG{o}{\PYGZgt{}} \PYG{o}{\PYGZhy{}}\PYG{n}{keepold} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{l+s+s2}{\PYGZdq{}}
11923*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{root}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{password}\PYG{o}{.}
11924*7f2fe78bSCy Schubert\PYG{n}{Key} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{krbtgt/ZONE.MIT.EDU@ZONE.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{randomized}\PYG{o}{.}
11925*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11926*7f2fe78bSCy Schubert
11927*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
11928*7f2fe78bSCy Schubert\sphinxAtStartPar
11929*7f2fe78bSCy SchubertThe new \sphinxcode{\sphinxupquote{krbtgt@REALM}} key should be propagated to replica KDCs
11930*7f2fe78bSCy Schubertimmediately so that TGTs issued by the primary KDC can be used to
11931*7f2fe78bSCy Schubertissue service tickets on replica KDCs.  Replica KDCs will refuse
11932*7f2fe78bSCy Schubertrequests using the new TGT kvno until the new krbtgt entry has
11933*7f2fe78bSCy Schubertbeen propagated to them.
11934*7f2fe78bSCy Schubert\end{sphinxadmonition}
11935*7f2fe78bSCy Schubert
11936*7f2fe78bSCy Schubert\sphinxAtStartPar
11937*7f2fe78bSCy SchubertIt is necessary to explicitly specify the enctypes for the new database
11938*7f2fe78bSCy Schubertentry, since \sphinxstylestrong{supported\_enctypes} has not been changed.  Leaving
11939*7f2fe78bSCy Schubert\sphinxstylestrong{supported\_enctypes} unchanged makes a potential rollback operation
11940*7f2fe78bSCy Schuberteasier, since all new keys of new enctypes are the result of explicit
11941*7f2fe78bSCy Schubertadministrator action and can be easily enumerated.
11942*7f2fe78bSCy SchubertUpgrading the krbtgt key should have minimal user\sphinxhyphen{}visible disruption other
11943*7f2fe78bSCy Schubertthan that described in the note above, since only clients which list the
11944*7f2fe78bSCy Schubertnew enctypes as supported will use them, per the procedure
11945*7f2fe78bSCy Schubertin {\hyperref[\detokenize{admin/enctypes:session-key-selection}]{\sphinxcrossref{\DUrole{std,std-ref}{Session key selection}}}}.
11946*7f2fe78bSCy SchubertOnce the krbtgt key is updated, the session and ticket keys for user
11947*7f2fe78bSCy SchubertTGTs will be strong keys, but subsequent requests
11948*7f2fe78bSCy Schubertfor service tickets will still get DES keys until the service principals
11949*7f2fe78bSCy Schuberthave new keys generated.  Application service
11950*7f2fe78bSCy Schubertremains uninterrupted due to the key\sphinxhyphen{}selection procedure on the KDC.
11951*7f2fe78bSCy Schubert
11952*7f2fe78bSCy Schubert\sphinxAtStartPar
11953*7f2fe78bSCy SchubertAfter the change, the database entry is now:
11954*7f2fe78bSCy Schubert
11955*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11956*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZsq{}getprinc krbtgt/ZONE.MIT.EDU\PYGZsq{}}
11957*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11958*7f2fe78bSCy Schubert\PYG{n}{Number} \PYG{n}{of} \PYG{n}{keys}\PYG{p}{:} \PYG{l+m+mi}{5}
11959*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}
11960*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}
11961*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}
11962*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}
11963*7f2fe78bSCy Schubert\PYG{n}{Key}\PYG{p}{:} \PYG{n}{vno} \PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}\PYG{p}{:}\PYG{n}{v4}
11964*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}\PYG{p}{]}
11965*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11966*7f2fe78bSCy Schubert
11967*7f2fe78bSCy Schubert\sphinxAtStartPar
11968*7f2fe78bSCy SchubertSince the expected disruptions from rekeying the krbtgt principal are
11969*7f2fe78bSCy Schubertminor, after a short testing period, it is
11970*7f2fe78bSCy Schubertappropriate to rekey the other high\sphinxhyphen{}value principals, \sphinxcode{\sphinxupquote{kadmin/admin@REALM}}
11971*7f2fe78bSCy Schubertand \sphinxcode{\sphinxupquote{kadmin/changepw@REALM}}. These are the service principals used for
11972*7f2fe78bSCy Schubertchanging user passwords and updating application keytabs.  The kadmin
11973*7f2fe78bSCy Schubertand password\sphinxhyphen{}changing services are regular kerberized services, so the
11974*7f2fe78bSCy Schubertsession\sphinxhyphen{}key\sphinxhyphen{}selection algorithm described in {\hyperref[\detokenize{admin/enctypes:session-key-selection}]{\sphinxcrossref{\DUrole{std,std-ref}{Session key selection}}}}
11975*7f2fe78bSCy Schubertapplies.  It is particularly important to have strong session keys for
11976*7f2fe78bSCy Schubertthese services, since user passwords and new long\sphinxhyphen{}term keys are conveyed
11977*7f2fe78bSCy Schubertover the encrypted channel.
11978*7f2fe78bSCy Schubert
11979*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
11980*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} enctypes=aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96:normal,\PYGZbs{}}
11981*7f2fe78bSCy Schubert\PYG{o}{\PYGZgt{}} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal}\PYG{p}{,}\PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{p}{:}\PYG{n}{normal}
11982*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZdq{}cpw \PYGZhy{}e \PYGZdl{}\PYGZob{}enctypes\PYGZcb{} \PYGZhy{}randkey \PYGZbs{}}
11983*7f2fe78bSCy Schubert\PYG{o}{\PYGZgt{}} \PYG{n}{kadmin}\PYG{o}{/}\PYG{n}{admin}\PYG{l+s+s2}{\PYGZdq{}}
11984*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{root}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{password}\PYG{o}{.}
11985*7f2fe78bSCy Schubert\PYG{n}{Key} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{kadmin/admin@ZONE.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{randomized}\PYG{o}{.}
11986*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZdq{}cpw \PYGZhy{}e \PYGZdl{}\PYGZob{}enctypes\PYGZcb{} \PYGZhy{}randkey \PYGZbs{}}
11987*7f2fe78bSCy Schubert\PYG{o}{\PYGZgt{}} \PYG{n}{kadmin}\PYG{o}{/}\PYG{n}{changepw}\PYG{l+s+s2}{\PYGZdq{}}
11988*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{root}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{password}\PYG{o}{.}
11989*7f2fe78bSCy Schubert\PYG{n}{Key} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{kadmin/changepw@ZONE.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{randomized}\PYG{o}{.}
11990*7f2fe78bSCy Schubert\end{sphinxVerbatim}
11991*7f2fe78bSCy Schubert
11992*7f2fe78bSCy Schubert\sphinxAtStartPar
11993*7f2fe78bSCy SchubertIt is not necessary to retain a single\sphinxhyphen{}DES key for these services, since
11994*7f2fe78bSCy Schubertpassword changes are not part of normal daily workflow, and disruption
11995*7f2fe78bSCy Schubertfrom a client failure is likely to be minimal.  Furthermore, if a kerberos
11996*7f2fe78bSCy Schubertclient experiences failure changing a user password or keytab key,
11997*7f2fe78bSCy Schubertthis indicates that that client will become inoperative once services
11998*7f2fe78bSCy Schubertare rekeyed to non\sphinxhyphen{}DES enctypes.  Such problems can be detected early
11999*7f2fe78bSCy Schubertat this stage, giving more time for corrective action.
12000*7f2fe78bSCy Schubert
12001*7f2fe78bSCy Schubert
12002*7f2fe78bSCy Schubert\subsubsection{Adding strong keys to application servers}
12003*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:adding-strong-keys-to-application-servers}}
12004*7f2fe78bSCy Schubert\sphinxAtStartPar
12005*7f2fe78bSCy SchubertBefore switching the default enctypes for new keys over to strong enctypes,
12006*7f2fe78bSCy Schubertit may be desired to test upgrading a handful of services with the
12007*7f2fe78bSCy Schubertnew configuration before flipping the switch for the defaults.  This
12008*7f2fe78bSCy Schubertstill requires using the \sphinxstylestrong{\sphinxhyphen{}e} argument in {\hyperref[\detokenize{admin/admin_commands/kadmin_local:kadmin-1}]{\sphinxcrossref{\DUrole{std,std-ref}{kadmin}}}} to get non\sphinxhyphen{}default
12009*7f2fe78bSCy Schubertenctypes:
12010*7f2fe78bSCy Schubert
12011*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
12012*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} enctypes=aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96:normal,\PYGZbs{}}
12013*7f2fe78bSCy Schubert\PYG{o}{\PYGZgt{}} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal}\PYG{p}{,}\PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{p}{:}\PYG{n}{normal}\PYG{p}{,}\PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}\PYG{p}{:}\PYG{n}{normal}
12014*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}p zephyr/zephyr@ZONE.MIT.EDU \PYGZhy{}k \PYGZhy{}t \PYGZbs{}}
12015*7f2fe78bSCy Schubert\PYG{o}{\PYGZgt{}} \PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}  \PYG{o}{\PYGZhy{}}\PYG{n}{q} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{ktadd \PYGZhy{}e \PYGZdl{}}\PYG{l+s+si}{\PYGZob{}enctypes\PYGZcb{}}\PYG{l+s+s2}{ }\PYG{l+s+se}{\PYGZbs{}}
12016*7f2fe78bSCy Schubert\PYG{l+s+s2}{\PYGZgt{} \PYGZhy{}k /etc/zephyr/krb5.keytab zephyr/zephyr@ZONE.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}}
12017*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{zephyr}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{keytab} \PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12018*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{zephyr}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{4}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12019*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{zephyr}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{4}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12020*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{zephyr}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{4}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12021*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{zephyr}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{4}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12022*7f2fe78bSCy Schubert\end{sphinxVerbatim}
12023*7f2fe78bSCy Schubert
12024*7f2fe78bSCy Schubert\sphinxAtStartPar
12025*7f2fe78bSCy SchubertBe sure to remove the old keys from the application keytab, per best
12026*7f2fe78bSCy Schubertpractice.
12027*7f2fe78bSCy Schubert
12028*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
12029*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} k5srvutil \PYGZhy{}f /etc/zephyr/krb5.keytab delold}
12030*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{zephyr}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{keytab} \PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12031*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{zephyr}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3} \PYG{n}{removed} \PYG{k+kn}{from} \PYG{n+nn}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{zephyr}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12032*7f2fe78bSCy Schubert\end{sphinxVerbatim}
12033*7f2fe78bSCy Schubert
12034*7f2fe78bSCy Schubert
12035*7f2fe78bSCy Schubert\subsubsection{Adding strong keys by default}
12036*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:adding-strong-keys-by-default}}
12037*7f2fe78bSCy Schubert\sphinxAtStartPar
12038*7f2fe78bSCy SchubertOnce the high\sphinxhyphen{}visibility services have been rekeyed, it is probably
12039*7f2fe78bSCy Schubertappropriate to change {\hyperref[\detokenize{admin/conf_files/kdc_conf:kdc-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{kdc.conf}}}} to generate keys with the new
12040*7f2fe78bSCy Schubertencryption types by default.  This enables server administrators to generate
12041*7f2fe78bSCy Schubertnew enctypes with the \sphinxstylestrong{change} subcommand of {\hyperref[\detokenize{admin/admin_commands/k5srvutil:k5srvutil-1}]{\sphinxcrossref{\DUrole{std,std-ref}{k5srvutil}}}},
12042*7f2fe78bSCy Schubertand causes user password
12043*7f2fe78bSCy Schubertchanges to add new encryption types for their entries.  It will probably
12044*7f2fe78bSCy Schubertbe necessary to implement administrative controls to cause all user
12045*7f2fe78bSCy Schubertprincipal keys to be updated in a reasonable period of time, whether
12046*7f2fe78bSCy Schubertby forcing password changes or a password synchronization service that
12047*7f2fe78bSCy Schuberthas access to the current password and can add the new keys.
12048*7f2fe78bSCy Schubert
12049*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
12050*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
12051*7f2fe78bSCy Schubert        \PYG{n}{ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
12052*7f2fe78bSCy Schubert                \PYG{n}{supported\PYGZus{}enctypes} \PYG{o}{=} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{des}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{crc}\PYG{p}{:}\PYG{n}{normal}
12053*7f2fe78bSCy Schubert\end{sphinxVerbatim}
12054*7f2fe78bSCy Schubert
12055*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
12056*7f2fe78bSCy Schubert\sphinxAtStartPar
12057*7f2fe78bSCy SchubertThe krb5kdc process must be restarted for these changes to take effect.
12058*7f2fe78bSCy Schubert\end{sphinxadmonition}
12059*7f2fe78bSCy Schubert
12060*7f2fe78bSCy Schubert\sphinxAtStartPar
12061*7f2fe78bSCy SchubertAt this point, all service administrators can update their services and the
12062*7f2fe78bSCy Schubertservers behind them to take advantage of strong cryptography.
12063*7f2fe78bSCy SchubertIf necessary, the server’s krb5 installation should be configured and/or
12064*7f2fe78bSCy Schubertupgraded to a version supporting non\sphinxhyphen{}DES keys.  See {\hyperref[\detokenize{admin/enctypes:enctypes}]{\sphinxcrossref{\DUrole{std,std-ref}{Encryption types}}}} for
12065*7f2fe78bSCy Schubertkrb5 version and configuration settings.
12066*7f2fe78bSCy SchubertOnly when the service is configured to accept non\sphinxhyphen{}DES keys should
12067*7f2fe78bSCy Schubertthe key version number be incremented and new keys generated
12068*7f2fe78bSCy Schubert(\sphinxcode{\sphinxupquote{k5srvutil change \&\& k5srvutil delold}}).
12069*7f2fe78bSCy Schubert
12070*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
12071*7f2fe78bSCy Schubert\PYG{n}{root}\PYG{n+nd}{@dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{p}{:}\PYG{o}{\PYGZti{}}\PYG{c+c1}{\PYGZsh{} k5srvutil change}
12072*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{keytab} \PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12073*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{AES}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{256} \PYG{n}{CTS} \PYG{n}{mode} \PYG{k}{with} \PYG{l+m+mi}{96}\PYG{o}{\PYGZhy{}}\PYG{n}{bit} \PYG{n}{SHA}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1} \PYG{n}{HMAC} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12074*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{AES}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{128} \PYG{n}{CTS} \PYG{n}{mode} \PYG{k}{with} \PYG{l+m+mi}{96}\PYG{o}{\PYGZhy{}}\PYG{n}{bit} \PYG{n}{SHA}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1} \PYG{n}{HMAC} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12075*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{Triple} \PYG{n}{DES} \PYG{n}{cbc} \PYG{n}{mode} \PYG{k}{with} \PYG{n}{HMAC}\PYG{o}{/}\PYG{n}{sha1} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12076*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{n}{encryption} \PYG{n+nb}{type} \PYG{n}{DES} \PYG{n}{cbc} \PYG{n}{mode} \PYG{k}{with} \PYG{n}{CRC}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{32} \PYG{n}{added} \PYG{n}{to} \PYG{n}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12077*7f2fe78bSCy Schubert\PYG{n}{root}\PYG{n+nd}{@dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{p}{:}\PYG{o}{\PYGZti{}}\PYG{c+c1}{\PYGZsh{} klist \PYGZhy{}e \PYGZhy{}k \PYGZhy{}t /etc/krb5.keytab}
12078*7f2fe78bSCy Schubert\PYG{n}{Keytab} \PYG{n}{name}\PYG{p}{:} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}
12079*7f2fe78bSCy Schubert\PYG{n}{KVNO} \PYG{n}{Timestamp}         \PYG{n}{Principal}
12080*7f2fe78bSCy Schubert\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}} \PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}} \PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}\PYG{o}{\PYGZhy{}}
12081*7f2fe78bSCy Schubert   \PYG{l+m+mi}{2} \PYG{l+m+mi}{10}\PYG{o}{/}\PYG{l+m+mi}{10}\PYG{o}{/}\PYG{l+m+mi}{12} \PYG{l+m+mi}{17}\PYG{p}{:}\PYG{l+m+mi}{03}\PYG{p}{:}\PYG{l+m+mi}{59} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{p}{(}\PYG{n}{DES} \PYG{n}{cbc} \PYG{n}{mode} \PYG{k}{with} \PYG{n}{CRC}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{32}\PYG{p}{)}
12082*7f2fe78bSCy Schubert   \PYG{l+m+mi}{3} \PYG{l+m+mi}{12}\PYG{o}{/}\PYG{l+m+mi}{12}\PYG{o}{/}\PYG{l+m+mi}{12} \PYG{l+m+mi}{15}\PYG{p}{:}\PYG{l+m+mi}{31}\PYG{p}{:}\PYG{l+m+mi}{19} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{p}{(}\PYG{n}{AES}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{256} \PYG{n}{CTS} \PYG{n}{mode} \PYG{k}{with} \PYG{l+m+mi}{96}\PYG{o}{\PYGZhy{}}\PYG{n}{bit} \PYG{n}{SHA}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1} \PYG{n}{HMAC}\PYG{p}{)}
12083*7f2fe78bSCy Schubert   \PYG{l+m+mi}{3} \PYG{l+m+mi}{12}\PYG{o}{/}\PYG{l+m+mi}{12}\PYG{o}{/}\PYG{l+m+mi}{12} \PYG{l+m+mi}{15}\PYG{p}{:}\PYG{l+m+mi}{31}\PYG{p}{:}\PYG{l+m+mi}{19} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{p}{(}\PYG{n}{AES}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{128} \PYG{n}{CTS} \PYG{n}{mode} \PYG{k}{with} \PYG{l+m+mi}{96}\PYG{o}{\PYGZhy{}}\PYG{n}{bit} \PYG{n}{SHA}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1} \PYG{n}{HMAC}\PYG{p}{)}
12084*7f2fe78bSCy Schubert   \PYG{l+m+mi}{3} \PYG{l+m+mi}{12}\PYG{o}{/}\PYG{l+m+mi}{12}\PYG{o}{/}\PYG{l+m+mi}{12} \PYG{l+m+mi}{15}\PYG{p}{:}\PYG{l+m+mi}{31}\PYG{p}{:}\PYG{l+m+mi}{19} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{p}{(}\PYG{n}{Triple} \PYG{n}{DES} \PYG{n}{cbc} \PYG{n}{mode} \PYG{k}{with} \PYG{n}{HMAC}\PYG{o}{/}\PYG{n}{sha1}\PYG{p}{)}
12085*7f2fe78bSCy Schubert   \PYG{l+m+mi}{3} \PYG{l+m+mi}{12}\PYG{o}{/}\PYG{l+m+mi}{12}\PYG{o}{/}\PYG{l+m+mi}{12} \PYG{l+m+mi}{15}\PYG{p}{:}\PYG{l+m+mi}{31}\PYG{p}{:}\PYG{l+m+mi}{19} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{p}{(}\PYG{n}{DES} \PYG{n}{cbc} \PYG{n}{mode} \PYG{k}{with} \PYG{n}{CRC}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{32}\PYG{p}{)}
12086*7f2fe78bSCy Schubert\PYG{n}{root}\PYG{n+nd}{@dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{p}{:}\PYG{o}{\PYGZti{}}\PYG{c+c1}{\PYGZsh{} k5srvutil delold}
12087*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{keytab} \PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12088*7f2fe78bSCy Schubert\PYG{n}{Entry} \PYG{k}{for} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{dr}\PYG{o}{\PYGZhy{}}\PYG{n}{willy}\PYG{o}{.}\PYG{n}{xvm}\PYG{o}{.}\PYG{n}{mit}\PYG{o}{.}\PYG{n}{edu}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{kvno} \PYG{l+m+mi}{2} \PYG{n}{removed} \PYG{k+kn}{from} \PYG{n+nn}{keytab} \PYG{n}{WRFILE}\PYG{p}{:}\PYG{o}{/}\PYG{n}{etc}\PYG{o}{/}\PYG{n}{krb5}\PYG{o}{.}\PYG{n}{keytab}\PYG{o}{.}
12089*7f2fe78bSCy Schubert\end{sphinxVerbatim}
12090*7f2fe78bSCy Schubert
12091*7f2fe78bSCy Schubert\sphinxAtStartPar
12092*7f2fe78bSCy SchubertWhen a single service principal is shared by multiple backend servers in
12093*7f2fe78bSCy Schuberta load\sphinxhyphen{}balanced environment, it may be necessary to schedule downtime
12094*7f2fe78bSCy Schubertor adjust the population in the load\sphinxhyphen{}balanced pool in order to propagate
12095*7f2fe78bSCy Schubertthe updated keytab to all hosts in the pool with minimal service interruption.
12096*7f2fe78bSCy Schubert
12097*7f2fe78bSCy Schubert
12098*7f2fe78bSCy Schubert\subsubsection{Removing DES keys from usage}
12099*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:removing-des-keys-from-usage}}
12100*7f2fe78bSCy Schubert\sphinxAtStartPar
12101*7f2fe78bSCy SchubertThis situation remains something of a testing or transitory state,
12102*7f2fe78bSCy Schubertas new DES keys are still being generated, and will be used if requested
12103*7f2fe78bSCy Schubertby a client.  To make more progress removing DES from the realm, the KDC
12104*7f2fe78bSCy Schubertshould be configured to not generate such keys by default.
12105*7f2fe78bSCy Schubert
12106*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
12107*7f2fe78bSCy Schubert\sphinxAtStartPar
12108*7f2fe78bSCy SchubertAn attacker posing as a client can implement a brute force attack against
12109*7f2fe78bSCy Schuberta DES key for any principal, if that key is in the current (highest\sphinxhyphen{}kvno)
12110*7f2fe78bSCy Schubertkey list.  This attack is only possible if \sphinxstylestrong{allow\_weak\_crypto = true}
12111*7f2fe78bSCy Schubertis enabled on the KDC.  Setting the \sphinxstylestrong{+requires\_preauth} flag on a
12112*7f2fe78bSCy Schubertprincipal forces this attack to be an online attack, much slower than
12113*7f2fe78bSCy Schubertthe offline attack otherwise available to the attacker.  However, setting
12114*7f2fe78bSCy Schubertthis flag on a service principal is not always advisable; see the entry in
12115*7f2fe78bSCy Schubert{\hyperref[\detokenize{admin/admin_commands/kadmin_local:add-principal}]{\sphinxcrossref{\DUrole{std,std-ref}{add\_principal}}}} for details.
12116*7f2fe78bSCy Schubert\end{sphinxadmonition}
12117*7f2fe78bSCy Schubert
12118*7f2fe78bSCy Schubert\sphinxAtStartPar
12119*7f2fe78bSCy SchubertThe following KDC configuration will not generate DES keys by default:
12120*7f2fe78bSCy Schubert
12121*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
12122*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{realms}\PYG{p}{]}
12123*7f2fe78bSCy Schubert        \PYG{n}{ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{o}{=} \PYG{p}{\PYGZob{}}
12124*7f2fe78bSCy Schubert                \PYG{n}{supported\PYGZus{}enctypes} \PYG{o}{=} \PYG{n}{aes256}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{aes128}\PYG{o}{\PYGZhy{}}\PYG{n}{cts}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{96}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{cbc}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{p}{:}\PYG{n}{normal} \PYG{n}{des3}\PYG{o}{\PYGZhy{}}\PYG{n}{hmac}\PYG{o}{\PYGZhy{}}\PYG{n}{sha1}\PYG{p}{:}\PYG{n}{normal}
12125*7f2fe78bSCy Schubert\end{sphinxVerbatim}
12126*7f2fe78bSCy Schubert
12127*7f2fe78bSCy Schubert\begin{sphinxadmonition}{note}{Note:}
12128*7f2fe78bSCy Schubert\sphinxAtStartPar
12129*7f2fe78bSCy SchubertAs before, the KDC process must be restarted for this change to take
12130*7f2fe78bSCy Schuberteffect.  It is best practice to update kdc.conf on all KDCs, not just the
12131*7f2fe78bSCy Schubertprimary, to avoid unpleasant surprises should the primary fail and a
12132*7f2fe78bSCy Schubertreplica need to be promoted.
12133*7f2fe78bSCy Schubert\end{sphinxadmonition}
12134*7f2fe78bSCy Schubert
12135*7f2fe78bSCy Schubert\sphinxAtStartPar
12136*7f2fe78bSCy SchubertIt is now appropriate to remove the legacy single\sphinxhyphen{}DES key from the
12137*7f2fe78bSCy Schubert\sphinxcode{\sphinxupquote{krbtgt/REALM}} entry:
12138*7f2fe78bSCy Schubert
12139*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
12140*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZdq{}cpw \PYGZhy{}randkey \PYGZhy{}keepold \PYGZbs{}}
12141*7f2fe78bSCy Schubert\PYG{o}{\PYGZgt{}} \PYG{n}{krbtgt}\PYG{o}{/}\PYG{n}{ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU}\PYG{l+s+s2}{\PYGZdq{}}
12142*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{host}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ATHENA}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{password}\PYG{o}{.}
12143*7f2fe78bSCy Schubert\PYG{n}{Key} \PYG{k}{for} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{krbtgt/ZONE.MIT.EDU@ZONE.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{randomized}\PYG{o}{.}
12144*7f2fe78bSCy Schubert\end{sphinxVerbatim}
12145*7f2fe78bSCy Schubert
12146*7f2fe78bSCy Schubert\sphinxAtStartPar
12147*7f2fe78bSCy SchubertAfter the maximum ticket lifetime has passed, the old database entry
12148*7f2fe78bSCy Schubertshould be removed.
12149*7f2fe78bSCy Schubert
12150*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
12151*7f2fe78bSCy Schubert\PYG{p}{[}\PYG{n}{root}\PYG{n+nd}{@casio} \PYG{n}{krb5kdc}\PYG{p}{]}\PYG{c+c1}{\PYGZsh{} kadmin.local \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZsq{}purgekeys krbtgt/ZONE.MIT.EDU\PYGZsq{}}
12152*7f2fe78bSCy Schubert\PYG{n}{Authenticating} \PYG{k}{as} \PYG{n}{principal} \PYG{n}{root}\PYG{o}{/}\PYG{n}{admin}\PYG{n+nd}{@ZONE}\PYG{o}{.}\PYG{n}{MIT}\PYG{o}{.}\PYG{n}{EDU} \PYG{k}{with} \PYG{n}{password}\PYG{o}{.}
12153*7f2fe78bSCy Schubert\PYG{n}{Old} \PYG{n}{keys} \PYG{k}{for} \PYG{n}{principal} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{krbtgt/ZONE.MIT.EDU@ZONE.MIT.EDU}\PYG{l+s+s2}{\PYGZdq{}} \PYG{n}{purged}\PYG{o}{.}
12154*7f2fe78bSCy Schubert\end{sphinxVerbatim}
12155*7f2fe78bSCy Schubert
12156*7f2fe78bSCy Schubert\sphinxAtStartPar
12157*7f2fe78bSCy SchubertAfter the KDC is restarted with the new \sphinxstylestrong{supported\_enctypes},
12158*7f2fe78bSCy Schubertall user password changes and application keytab updates will not
12159*7f2fe78bSCy Schubertgenerate DES keys by default.
12160*7f2fe78bSCy Schubert
12161*7f2fe78bSCy Schubert\begin{sphinxVerbatim}[commandchars=\\\{\}]
12162*7f2fe78bSCy Schubertcontents\PYGZhy{}vnder\PYGZhy{}pressvre:\PYGZti{}\PYGZgt{} kpasswd zonetest@ZONE.MIT.EDU
12163*7f2fe78bSCy SchubertPassword for zonetest@ZONE.MIT.EDU:  [enter old password]
12164*7f2fe78bSCy SchubertEnter new password:                  [enter new password]
12165*7f2fe78bSCy SchubertEnter it again:                      [enter new password]
12166*7f2fe78bSCy SchubertPassword changed.
12167*7f2fe78bSCy Schubertcontents\PYGZhy{}vnder\PYGZhy{}pressvre:\PYGZti{}\PYGZgt{} kadmin \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}q \PYGZsq{}getprinc zonetest\PYGZsq{}
12168*7f2fe78bSCy Schubert[...]
12169*7f2fe78bSCy SchubertNumber of keys: 3
12170*7f2fe78bSCy SchubertKey: vno 9, aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96
12171*7f2fe78bSCy SchubertKey: vno 9, aes128\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96
12172*7f2fe78bSCy SchubertKey: vno 9, des3\PYGZhy{}cbc\PYGZhy{}sha1
12173*7f2fe78bSCy Schubert[...]
12174*7f2fe78bSCy Schubert
12175*7f2fe78bSCy Schubert[kaduk@glossolalia \PYGZti{}]\PYGZdl{} kadmin \PYGZhy{}p kaduk@ZONE.MIT.EDU \PYGZhy{}r ZONE.MIT.EDU \PYGZhy{}k \PYGZbs{}
12176*7f2fe78bSCy Schubert\PYGZgt{} \PYGZhy{}t kaduk\PYGZhy{}zone.keytab \PYGZhy{}q \PYGZsq{}ktadd \PYGZhy{}k kaduk\PYGZhy{}zone.keytab kaduk@ZONE.MIT.EDU\PYGZsq{}
12177*7f2fe78bSCy SchubertAuthenticating as principal kaduk@ZONE.MIT.EDU with keytab kaduk\PYGZhy{}zone.keytab.
12178*7f2fe78bSCy SchubertEntry for principal kaduk@ZONE.MIT.EDU with kvno 3, encryption type aes256\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96 added to keytab WRFILE:kaduk\PYGZhy{}zone.keytab.
12179*7f2fe78bSCy SchubertEntry for principal kaduk@ZONE.MIT.EDU with kvno 3, encryption type aes128\PYGZhy{}cts\PYGZhy{}hmac\PYGZhy{}sha1\PYGZhy{}96 added to keytab WRFILE:kaduk\PYGZhy{}zone.keytab.
12180*7f2fe78bSCy SchubertEntry for principal kaduk@ZONE.MIT.EDU with kvno 3, encryption type des3\PYGZhy{}cbc\PYGZhy{}sha1 added to keytab WRFILE:kaduk\PYGZhy{}zone.keytab.
12181*7f2fe78bSCy Schubert\end{sphinxVerbatim}
12182*7f2fe78bSCy Schubert
12183*7f2fe78bSCy Schubert\sphinxAtStartPar
12184*7f2fe78bSCy SchubertOnce all principals have been re\sphinxhyphen{}keyed, DES support can be disabled on the
12185*7f2fe78bSCy SchubertKDC (\sphinxstylestrong{allow\_weak\_crypto = false}), and client machines can remove
12186*7f2fe78bSCy Schubert\sphinxstylestrong{allow\_weak\_crypto = true} from their {\hyperref[\detokenize{admin/conf_files/krb5_conf:krb5-conf-5}]{\sphinxcrossref{\DUrole{std,std-ref}{krb5.conf}}}} configuration
12187*7f2fe78bSCy Schubertfiles, completing the migration.  \sphinxstylestrong{allow\_weak\_crypto} takes precedence over
12188*7f2fe78bSCy Schubertall places where DES enctypes could be explicitly configured.  DES keys will
12189*7f2fe78bSCy Schubertnot be used, even if they are present, when \sphinxstylestrong{allow\_weak\_crypto = false}.
12190*7f2fe78bSCy Schubert
12191*7f2fe78bSCy Schubert
12192*7f2fe78bSCy Schubert\subsubsection{Support for legacy services}
12193*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:support-for-legacy-services}}
12194*7f2fe78bSCy Schubert\sphinxAtStartPar
12195*7f2fe78bSCy SchubertIf there remain legacy services which do not support non\sphinxhyphen{}DES enctypes
12196*7f2fe78bSCy Schubert(such as older versions of AFS), \sphinxstylestrong{allow\_weak\_crypto} must remain
12197*7f2fe78bSCy Schubertenabled on the KDC.  Client machines need not have this setting,
12198*7f2fe78bSCy Schubertthough—applications which require DES can use API calls to allow
12199*7f2fe78bSCy Schubertweak crypto on a per\sphinxhyphen{}request basis, overriding the system krb5.conf.
12200*7f2fe78bSCy SchubertHowever, having \sphinxstylestrong{allow\_weak\_crypto} set on the KDC means that any
12201*7f2fe78bSCy Schubertprincipals which have a DES key in the database could still use those
12202*7f2fe78bSCy Schubertkeys.  To minimize the use of DES in the realm and restrict it to just
12203*7f2fe78bSCy Schubertlegacy services which require DES, it is necessary to remove all other
12204*7f2fe78bSCy SchubertDES keys.  The realm has been configured such that at password and
12205*7f2fe78bSCy Schubertkeytab change, no DES keys will be generated by default.  The task
12206*7f2fe78bSCy Schubertthen reduces to requiring user password changes and having server
12207*7f2fe78bSCy Schubertadministrators update their service keytabs.  Administrative outreach
12208*7f2fe78bSCy Schubertwill be necessary, and if the desire to eliminate DES is sufficiently
12209*7f2fe78bSCy Schubertstrong, the KDC administrators may choose to randkey any principals
12210*7f2fe78bSCy Schubertwhich have not been rekeyed after some timeout period, forcing the
12211*7f2fe78bSCy Schubertuser to contact the helpdesk for access.
12212*7f2fe78bSCy Schubert
12213*7f2fe78bSCy Schubert
12214*7f2fe78bSCy Schubert\subsection{The Database Master Key}
12215*7f2fe78bSCy Schubert\label{\detokenize{admin/advanced/retiring-des:the-database-master-key}}
12216*7f2fe78bSCy Schubert\sphinxAtStartPar
12217*7f2fe78bSCy SchubertThis procedure does not alter \sphinxcode{\sphinxupquote{K/M@REALM}}, the key used to encrypt key
12218*7f2fe78bSCy Schubertmaterial in the Kerberos database.  (This is the key stored in the stash file
12219*7f2fe78bSCy Schuberton the KDC if stash files are used.)  However, the security risk of
12220*7f2fe78bSCy Schuberta single\sphinxhyphen{}DES key for \sphinxcode{\sphinxupquote{K/M}} is minimal, given that access to material
12221*7f2fe78bSCy Schubertencrypted in \sphinxcode{\sphinxupquote{K/M}} (the Kerberos database) is generally tightly controlled.
12222*7f2fe78bSCy SchubertIf an attacker can gain access to the encrypted database, they likely
12223*7f2fe78bSCy Schuberthave access to the stash file as well, rendering the weak cryptography
12224*7f2fe78bSCy Schubertbroken by non\sphinxhyphen{}cryptographic means.  As such, upgrading \sphinxcode{\sphinxupquote{K/M}} to a stronger
12225*7f2fe78bSCy Schubertencryption type is unlikely to be a high\sphinxhyphen{}priority task.
12226*7f2fe78bSCy Schubert
12227*7f2fe78bSCy Schubert\sphinxAtStartPar
12228*7f2fe78bSCy SchubertIs is possible to upgrade the master key used for the database, if
12229*7f2fe78bSCy Schubertdesired.  Using {\hyperref[\detokenize{admin/admin_commands/kdb5_util:kdb5-util-8}]{\sphinxcrossref{\DUrole{std,std-ref}{kdb5\_util}}}}’s \sphinxstylestrong{add\_mkey}, \sphinxstylestrong{use\_mkey}, and
12230*7f2fe78bSCy Schubert\sphinxstylestrong{update\_princ\_encryption} commands, a new master key can be added
12231*7f2fe78bSCy Schubertand activated for use on new key material, and the existing entries
12232*7f2fe78bSCy Schubertconverted to the new master key.
12233*7f2fe78bSCy Schubert
12234*7f2fe78bSCy Schubert
12235*7f2fe78bSCy Schubert\chapter{Various links}
12236*7f2fe78bSCy Schubert\label{\detokenize{admin/various_envs:various-links}}\label{\detokenize{admin/various_envs::doc}}
12237*7f2fe78bSCy Schubert
12238*7f2fe78bSCy Schubert\section{Whitepapers}
12239*7f2fe78bSCy Schubert\label{\detokenize{admin/various_envs:whitepapers}}\begin{enumerate}
12240*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
12241*7f2fe78bSCy Schubert\item {}
12242*7f2fe78bSCy Schubert\sphinxAtStartPar
12243*7f2fe78bSCy Schubert\sphinxurl{https://kerberos.org/software/whitepapers.html}
12244*7f2fe78bSCy Schubert
12245*7f2fe78bSCy Schubert\end{enumerate}
12246*7f2fe78bSCy Schubert
12247*7f2fe78bSCy Schubert
12248*7f2fe78bSCy Schubert\section{Tutorials}
12249*7f2fe78bSCy Schubert\label{\detokenize{admin/various_envs:tutorials}}\begin{enumerate}
12250*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
12251*7f2fe78bSCy Schubert\item {}
12252*7f2fe78bSCy Schubert\sphinxAtStartPar
12253*7f2fe78bSCy SchubertFulvio Ricciardi  \textless{}\sphinxurl{https://www.kerberos.org/software/tutorial.html}\textgreater{}\_
12254*7f2fe78bSCy Schubert
12255*7f2fe78bSCy Schubert\end{enumerate}
12256*7f2fe78bSCy Schubert
12257*7f2fe78bSCy Schubert
12258*7f2fe78bSCy Schubert\section{Troubleshooting}
12259*7f2fe78bSCy Schubert\label{\detokenize{admin/various_envs:troubleshooting}}\begin{enumerate}
12260*7f2fe78bSCy Schubert\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
12261*7f2fe78bSCy Schubert\item {}
12262*7f2fe78bSCy Schubert\sphinxAtStartPar
12263*7f2fe78bSCy Schubert\sphinxurl{https://wiki.ncsa.illinois.edu/display/ITS/Windows+Kerberos+Troubleshooting}
12264*7f2fe78bSCy Schubert
12265*7f2fe78bSCy Schubert\item {}
12266*7f2fe78bSCy Schubert\sphinxAtStartPar
12267*7f2fe78bSCy Schubert\sphinxurl{https://www.shrubbery.net/solaris9ab/SUNWaadm/SYSADV6/p27.html}
12268*7f2fe78bSCy Schubert
12269*7f2fe78bSCy Schubert\item {}
12270*7f2fe78bSCy Schubert\sphinxAtStartPar
12271*7f2fe78bSCy Schubert\sphinxurl{https://docs.oracle.com/cd/E19253-01/816-4557/trouble-1/index.html}
12272*7f2fe78bSCy Schubert
12273*7f2fe78bSCy Schubert\item {}
12274*7f2fe78bSCy Schubert\sphinxAtStartPar
12275*7f2fe78bSCy Schubert\sphinxurl{https://docs.microsoft.com/en-us/previous-versions/tn-archive/bb463167(v=technet.10})\#EBAA
12276*7f2fe78bSCy Schubert
12277*7f2fe78bSCy Schubert\item {}
12278*7f2fe78bSCy Schubert\sphinxAtStartPar
12279*7f2fe78bSCy Schubert\sphinxurl{https://bugs.launchpad.net/ubuntu/+source/libpam-heimdal/+bug/86528}
12280*7f2fe78bSCy Schubert
12281*7f2fe78bSCy Schubert\end{enumerate}
12282*7f2fe78bSCy Schubert
12283*7f2fe78bSCy Schubert
12284*7f2fe78bSCy Schubert
12285*7f2fe78bSCy Schubert\renewcommand{\indexname}{Index}
12286*7f2fe78bSCy Schubert\printindex
12287*7f2fe78bSCy Schubert\end{document}