Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

325 lines
14 KiB

  1. *****************************************************************************
  2. *****************************************************************************
  3. Kerberos Configuration Keys
  4. *****************************************************************************
  5. *****************************************************************************
  6. Registry entries that Kerberos is interested in:
  7. The following are in HKLM\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
  8. At boot, these registry entries are read and stored in globals. They are also
  9. runtime configurable.
  10. =============================================================================
  11. Value "SkewTime" , Type REG_DWORD
  12. Whatever it's set to will be the Skew time in minutes, default is KERB_DEFAULT_SKEWTIME minutes
  13. #define KERB_DEFAULT_SKEWTIME 5
  14. EXTERN TimeStamp KerbGlobalSkewTime;
  15. This is the time difference that's tolerated between one machine and the
  16. machine that you are trying to authenticate (dc/another wksta etc).
  17. Units are in 10 ** 7 seconds. If this is a checked build, default in 2 hours.
  18. =============================================================================
  19. Value "LogLevel", Type REG_DWORD
  20. If it's set to anything non-zero, all Kerberos errors will be logged in the
  21. system event log. Default is KERB_DEFAULT_LOGLEVEL
  22. #define KERB_DEFAULT_LOGLEVEL 0
  23. KerbGlobalLoggingLevel saves this value.
  24. =============================================================================
  25. Value "MaxPacketSize" Type REG_DWORD
  26. Whatever this is set to will be max size that we'll try udp with. If the
  27. packet size is bigger than this value, we'll do tcp. Default is
  28. KERB_MAX_DATAGRAM_SIZE bytes
  29. #define KERB_MAX_DATAGRAM_SIZE 1500
  30. KerbGlobalMaxDatagramSiz saves this value
  31. =============================================================================
  32. Value "StartupTime" Type REG_DWORD
  33. In seconds. Wait for the specified number of seconds for the KDC to start
  34. before giving up. Default is KERB_KDC_WAIT_TIME seconds.
  35. #define KERB_KDC_WAIT_TIME 120
  36. KerbGlobalKdcWaitTime saves this value.
  37. =============================================================================
  38. Value "KdcWaitTime" Type REG_DWORD
  39. In seconds. Value passed to winsock as timeout for selecting a response from
  40. a KDC. Default is KerbGlobalKdcCallTimeout seconds.
  41. #define KERB_KDC_CALL_TIMEOUT 10
  42. KerbGlobalKdcCallTimeout saves this value
  43. =============================================================================
  44. Value "KdcBackoffTime" Type REG_DWORD
  45. In seconds. Value that is added to KerbGlobalKdcCallTimeout each successive
  46. call to a KDC in case of a retry. Default is KERB_KDC_CALL_TIMEOUT_BACKOFF
  47. seconds.
  48. #define KERB_KDC_CALL_TIMEOUT_BACKOFF 10
  49. KerbGlobalKdcCallBackoff saves this value.
  50. =============================================================================
  51. Value "KdcSendRetries" Type REG_DWORD
  52. The number of retry attempts a client will make in order to contact a KDC.
  53. Default is KERB_MAX_RETRIES
  54. #define KERB_MAX_RETRIES 3
  55. KerbGlobalKdcSendRetries saves this value
  56. =============================================================================
  57. Value "DefaultEncryptionType" Type REG_DWORD
  58. The default encryption type for PreAuth. As of beta3, this was
  59. KERB_ETYPE_RC4_HMAC_OLD
  60. #ifndef DONT_SUPPORT_OLD_TYPES
  61. KerbGlobalDefaultPreauthEtype = KERB_ETYPE_RC4_HMAC_OLD;
  62. #else
  63. KerbGlobalDefaultPreauthEtype = KERB_ETYPE_RC4_HMAC_NT;
  64. #endif
  65. KerbGlobalDefaultPreauthEtype saves this value
  66. =============================================================================
  67. Value "FarKdcTimeout" Type REG_DWORD
  68. Time in minutes. This timeout is used to invalidate a dc that is in the dc
  69. cache for the Kerberos clients for dc's that are not in the same site as the
  70. client. Default is KERB_BINDING_FAR_DC_TIMEOUT minutes.
  71. #define KERB_BINDING_FAR_DC_TIMEOUT 10
  72. KerbGlobalFarKdcTimeout saves this value as a TimeStamp ( 10000000 * 60 * number of minutes).
  73. =============================================================================
  74. Value "NearKdcTimeout" Type REG_DWORD
  75. Time in minutes. This timeout is used to invalidate a dc that is in the dc
  76. cache for the Kerberos clients for dcs in the same site as the
  77. client. Default is KERB_BINDING_NEAR_DC_TIMEOUT minutes.
  78. #define KERB_BINDING_NEAR_DC_TIMEOUT 30
  79. KerbGlobalNearKdcTimeout saves this value as a TimeStamp ( 10000000 * 60 * number of minutes).
  80. =============================================================================
  81. Value "StronglyEncryptDatagram" Type REG_BOOL
  82. Flag decides whether we do 128 bit encryption for datagram. Default is
  83. KERB_DEFAULT_USE_STRONG_ENC_DG
  84. #define KERB_DEFAULT_USE_STRONG_ENC_DG FALSE
  85. KerbGlobalUseStrongEncryptionForDatagram saves this value.
  86. =============================================================================
  87. Value "MaxReferralCount" type REG_DWORD
  88. Is count of how many KDC referrals client will follow before giving up.
  89. Default is KERB_MAX_REFERRAL_COUNT = 6
  90. KerbGlobalMaxReferralCount saves this value
  91. =============================================================================
  92. Value "KerbDebugLevel" type REG_DWORD
  93. Debug log levels used in DebugLog() macro. Default is DEB_ERROR for CHK builds
  94. and 0 (no logging) for FRE builds. Possible values include:
  95. #define DEB_ERROR 0x00000001
  96. #define DEB_WARN 0x00000002
  97. #define DEB_TRACE 0x00000004
  98. #define DEB_TRACE_API 0x00000008
  99. #define DEB_TRACE_CRED 0x00000010
  100. #define DEB_TRACE_CTXT 0x00000020
  101. #define DEB_TRACE_LSESS 0x00000040
  102. #define DEB_TRACE_TCACHE 0x00000080
  103. #define DEB_TRACE_LOGON 0x00000100
  104. #define DEB_TRACE_KDC 0x00000200
  105. #define DEB_TRACE_CTXT2 0x00000400
  106. #define DEB_TRACE_TIME 0x00000800
  107. #define DEB_TRACE_USER 0x00001000
  108. #define DEB_TRACE_LEAKS 0x00002000
  109. #define DEB_TRACE_SOCK 0x00004000
  110. #define DEB_TRACE_SPN_CACHE 0x00008000
  111. #define DEB_S4U_ERROR 0x00010000
  112. #define DEB_TRACE_S4U 0x00020000
  113. #define DEB_TRACE_BND_CACHE 0x00040000
  114. #define DEB_TRACE_LOOPBACK 0x00080000
  115. #define DEB_TRACE_TKT_RENEWAL 0x00100000
  116. #define DEB_TRACE_U2U 0x00200000
  117. #define DEB_TRACE_LOCKS 0x01000000
  118. #define DEB_USE_LOG_FILE 0x02000000
  119. These values are stored in KerbInfoLevel and KSuppInfoLevel (for common2 routines).
  120. =============================================================================
  121. Value "MaxTokenSize" type REG_DWORD
  122. This sets the QCA value for maximum token size, and is used to allow QCA to
  123. be modified to return a value large enough for tickets containing large numbers
  124. of groups. It is recommended that this value remain less than 50k.
  125. Default #define KERBEROS_MAX_TOKEN 12000
  126. KerbGlobalMaxTokenSize stores this value.
  127. =============================================================================
  128. Value "SpnCacheTimeout" type REG_DWORD
  129. Time in minutes. This timeout is used to determine the lifetime of the SPN cache
  130. entries. Default is 15 minutes. On domain controllers, the default is to not cache SPNs.
  131. Default is #define KERB_SPN_CACHE_TIMEOUT 15
  132. KerbGlobalSpnCacheTimeout stores value as a TimeStamp ( 10000000 * 60 * number of minutes).
  133. =============================================================================
  134. Value "S4UCacheTimeout" type REG_DWORD
  135. Time in minutes. This timeout is used to determine the lifetime of the S4U negative cache
  136. entries, which are used to restrict how many S4UProxy requests hit the wire from a given
  137. machine.
  138. Default is #define KERB_S4U_CACHE_TIMEOUT 15
  139. KerbGlobalS4UCacheTimeout stores value as a TimeStamp ( 10000000 * 60 * number of minutes).
  140. =============================================================================
  141. Value "S4UTicketLifetime" type REG_DWORD
  142. Time in minutes. This timeout is used to determine the lifetime of tickets obtained by S4U
  143. proxy requests.
  144. Default is #define KERB_S4U_TICKET_LIFETIME 15
  145. KerbGlobalS4UTicketLifetime stores value as a TimeStamp ( 10000000 * 60 * number of minutes).
  146. =============================================================================
  147. Value "RetryPdc" type REG_DWORD
  148. 0 or non-zero (FALSE, or TRUE). Determines if we'll attempt to contact the PDC
  149. for password expired errors for AS_REQ.
  150. Default is FALSE.
  151. KerbGlobalRetryPdcstores value as a BOOLEAN
  152. =============================================================================
  153. Value "RequestOptions" type REG_DWORD
  154. Determines if there are additional options that need to be emitted as KdcOptions
  155. in TGS_REQ. Meant for future modifications of kdc options, and can be any
  156. RFC1510 value.
  157. Default is :
  158. #define KERB_ADDITIONAL_KDC_OPTIONS (KERB_KDC_OPTIONS_name_canonicalize)
  159. KerbGlobalKdcOptions stored as a ULONG.
  160. =============================================================================
  161. Value "ClientIpAddresses" type REG_DWORD
  162. 0 or non-zero (FALSE, or TRUE). Determines if we'll add in IP addresses in
  163. AS_REQ, thus forcing the caddr field to contain IP addresses in all tickets.
  164. Default is FALSE, due to DHCP / NAT issues.
  165. #define KERB_DEFAULT_CLIENT_IP_ADDRESSES 0
  166. KerbGlobalUseClientIpAddresses value as a BOOLEAN
  167. =============================================================================
  168. Value "TgtRenewalTime" type REG_DWORD
  169. Time in seconds. Determines amount of time before a TGT expires when
  170. kerberos will attempt to renew the ticket. Only applies to initial TGTs.
  171. Default is #define KERB_DEFAULT_TGT_RENEWAL_TIME 600
  172. KerbGlobalTgtRenewalTime stores value as a TimeStamp ( 10000000 * 60 * number of minutes).
  173. =============================================================================
  174. Value "AllowTgtSessionKey" type REG_DWORD
  175. 0 or non-zero (FALSE, or TRUE). Determines if we'll allow session keys to
  176. be exported with initial, or cross realm TGTs.
  177. Default is FALSE, due to security concerns.
  178. KerbGlobalAllowTgtSessionKey stores value as a BOOLEAN
  179. =============================================================================
  180. *****************************************************************************
  181. *****************************************************************************
  182. KDC Configuration Keys
  183. *****************************************************************************
  184. *****************************************************************************
  185. The following keys apply to the KDC only, and are located at:
  186. HKLM\System\CurrentControlSet\Services\Kdc. The are runtime configurable.
  187. =============================================================================
  188. Value "KdcUseClientAddresses" type REG_DWORD
  189. 0 or non-zero (FALSE, or TRUE). Determines if we'll add in IP addresses in
  190. TGS_REP.
  191. Default is FALSE, due to DHCP / NAT issues.
  192. KdcUseClientAddresses stores value as a BOOLEAN.
  193. =============================================================================
  194. Value "KdcDontCheckAddresses" type REG_DWORD
  195. 0 or non-zero (FALSE, or TRUE). Determines if we'll check IP addresses for
  196. TGS_REQ vs. what's in the TGT caddr field.
  197. Default is TRUE, meaning we won't check IP addresses, due to DHCP and NAT issues.
  198. KdcDontCheckAddresses stores value as a BOOLEAN.
  199. =============================================================================
  200. Value "NewConnectionTimeout" type REG_DWORD
  201. Time in seconds. Determines how long after an initial TCP endpoint connection
  202. that we'll keep listening for data before disconnecting.
  203. Default is 50 seconds.
  204. KdcExistingConnectionTimeout stores value as a ULONG.
  205. =============================================================================
  206. Value "MaxDatagramReplySize" type REG_DWORD
  207. Size in bytes. Determines the upper threshold of UDP packet size in TGS_REP
  208. and AS_REP, before the KDC will return a KRB_ERR_RESPONSE_TOO_BIG requiring
  209. the client to switch to TCP.
  210. Default is #define KERB_MAX_DATAGRAM_REPLY_SIZE 4000
  211. KdcGlobalMaxDatagramReplySize stores value as a ULONG.
  212. =============================================================================
  213. Value "KdcExtraLogLevel" type REG_DWORD
  214. ULONG flag used to determine extra KDC logging in event logs and audits.
  215. Values are:
  216. #define LOG_SPN_UNKNOWN 0x1 - audit SPN unknown errors
  217. #define LOG_PKI_ERRORS 0x2 - log detailed PKINIT errors
  218. #define LOG_ALL_KLIN 0x4 - log all KDC errors with KLIN information.
  219. Default is #define LOG_DEFAULT LOG_PKI_ERRORS
  220. KdcExtraLogLevel stores value as a ULONG.
  221. =============================================================================
  222. Value "KdcDebugLevel" type REG_DWORD
  223. ULONG flag used to determine level of debug spew in DebugLog() macros. Available
  224. in both FRE and CHK builds.
  225. Values are:
  226. #define DEB_ERROR 0x00000001
  227. #define DEB_WARN 0x00000002
  228. #define DEB_TRACE 0x00000004
  229. #define DEB_TRACE_API 0x00000008
  230. #define DEB_TRACE_CRED 0x00000010
  231. #define DEB_TRACE_CTXT 0x00000020
  232. #define DEB_TRACE_LSESS 0x00000040
  233. #define DEB_TRACE_TCACHE 0x00000080
  234. #define DEB_TRACE_LOGON 0x00000100
  235. #define DEB_TRACE_KDC 0x00000200
  236. #define DEB_TRACE_CTXT2 0x00000400
  237. #define DEB_TRACE_TIME 0x00000800
  238. #define DEB_TRACE_USER 0x00001000
  239. #define DEB_TRACE_LEAKS 0x00002000
  240. #define DEB_TRACE_SOCK 0x00004000
  241. #define DEB_TRACE_SPN_CACHE 0x00008000
  242. #define DEB_S4U_ERROR 0x00010000
  243. #define DEB_TRACE_S4U 0x00020000
  244. #define DEB_TRACE_BND_CACHE 0x00040000
  245. #define DEB_TRACE_LOOPBACK 0x00080000
  246. #define DEB_TRACE_TKT_RENEWAL 0x00100000
  247. #define DEB_TRACE_U2U 0x00200000
  248. #define DEB_TRACE_LOCKS 0x01000000
  249. #define DEB_USE_LOG_FILE 0x02000000
  250. Default is DEB_ERROR for CHK builds, and 0 (no logging) for FRE builds.
  251. Additionally, the value:
  252. #define DEB_USE_EXT_ERRORS 0x10000000
  253. will cause the klin macros and extended information to be returned in the
  254. edata field of KERB_ERRORS as PKERB_EXT_ERROR.
  255. KdcInfoLevel and KSuppinfolevel stores value as a ULONG. KSuppInfolevel
  256. determines logging for common2 library.
  257. =============================================================================