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 Schubert“imap.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}