增加脱机登录的票证寿命

increase ticket life time for offline login

我正在使用 Mint 发行版 18.1。 我将笔记本电脑配置为加入 Windows 2008R2 服务器上的 AD 域。

这是我的配置:

/etc/krb5.conf

[libdefaults]
    default_realm     =     ACMEAD.COM
    clockskew     =     300
    ticket_lifetime    =    60d
    forwardable     =       true
    proxiable       =       true
    dns_lookup_realm =      true
    dns_lookup_kdc  =       true
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1

  [realms]
   PRIMEURAD.COM = {
    kdc     =     AD.ACME.COM:88
    admin_server = AD.ACME.COM:749
     default_domain = ACMEAD.COM
    ticket_lifetime    =    60d

    }

   [domain_realm]
    .kerberos.server = ACMEAD.COM
.acmead.com = ACMEAD.COM
acmead.com = ACMEAD.COM
acmead    = ACMEAD.COM
ticket_lifetime    =    60d

[appdefaults]
  pam = {
     ticket_lifetime     = 60d
     renew_lifetime         = 60d
     forwardable         = true
     proxiable         = false
     retain_after_close     = false
     minimum_uid         = 0
     debug             = false
 }

 [logging]
    default         = FILE:/var/log/krb5libs.log
    kdc             = FILE:/var/log/kdc.log
    admin_server            = FILE:/var/log/kadmind.log
 [login]
    krb4_convert = true
    krb4_get_tickets = false

/etc/samba/smb.conf

[global]
workgroup = primeurad
realm = primeurad.com
netbios name = lap-pc-1976
security = ADS
dns forwarder = 172.16.0.3
idmap config * : backend = tdb
idmap config *:range = 50000-1000000

template homedir = /home/%D/%U
template shell = /bin/bash

winbind use default domain = true
winbind offline logon = yes
winbind nss info = rfc2307
winbind enum users = yes
winbind enum groups = yes
winbind separator = +
winbind cache time = 300
winbind refresh tickets = yes

vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes
preferred master = no
dns proxy = no
wins server = ad.primeur.com
wins proxy = no
inherit acls = Yes
acl group control = yes

load printers = no
debug level = 3
use sendfile = no

/etc/security/pam_winbind.conf

[global]
  debug = no
  debug_state = no
  try_first_pass = yes
  krb5_auth = yes
  krb5_ccache_type = FILE
  cached_login = yes
  silent = no
# mkhomedir = yes

我可以登录并验证我自己。我毫无问题地将我的 PC 添加到域中。而且我还可以在离线时登录,这是我最想要的。 我正在尝试将票证有效期增加到 60 天,现在如果我输入 klist,这就是我所看到的

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: user1@ACMEAD.COM

Valid starting       Expires              Service principal
07/11/2017 12:25:02  07/11/2017 22:25:02  krbtgt/ACMEAD.COM@ACMEAD.COM
    renew until 07/18/2017 12:24:59

在我看来,默认值是 10 小时而不是 60 天。 我怎样才能增加它?

此处 Active Directory 域默认值优先。

最佳做法是让 Kerberos 服务票证的最长生命周期保持在默认值 10 小时。在各种技术指南和 Active Directory 组策略中,您会看到该值写为 600 分钟,即 10 小时,但显示为 600 分钟。我一直不知道他们为什么这样做。如果要更改该值,则必须打开 Active Directory 域组策略管理控制台工具 (GPMC.msc) 并编辑 "Default Domain Policy" 组策略对象。打开该 GPO 后,导航至以下路径,并将 600 分钟更改为其 60 天的等效值,即 86400。

计算机Configuration\WindowsSettings\SecuritySettings\AccountPolicies\KerberosPolicy\Maximum服务票据生命周期

参考:Maximum lifetime for service ticket

请注意,更改此项会被视为存在安全风险,因为它给潜在的黑客更多的时间来潜在地解密服务票证并为自己所用。只是 google "silver ticket attack"。这就是将 10 小时设置为默认值的原因。它也是所有使用 Kerberos 的主要身份管理实现的默认设置,而不仅仅是 Active Directory。它被认为是安全性和可用性之间的权衡。你还问了"I see I have to increase also the kerberos principal but not sure how to do it"。你这是什么意思?您是说 "service principal name" 吗?还是 Ticket Granting Ticket?还是用户帐号? "increasing it?" 是什么意思 如果您的意思是增加其他 Kerberos 票证的生命周期,例如票证授予票证,AKA "user ticket",那么您也可以在上述 GPO 的同一区域修改它们。在该 GPO 中,票证授予票证 (TGT) 写为 "user ticket"。它具有相同的 10 小时寿命。下面的屏幕截图来自我的实验室,显示了默认值的所有内容:

EDIT/UPDATE: 要在未连接到网络时允许离线登录到已加入 AD 域的 Windows PC,或者在域控制器不可用的情况下,您必须允许所谓的 "cached credentials".这允许 PC 重新使用服务票而不是被提示去获得一个新的。您可以在单台机器上一次性执行此操作,也可以通过 GPO 在域范围内执行此操作。两种方法描述如下:

For a single machine, just edit the Registry

For a domain-wide method, use a GPO

以上注意事项:此设置在加入 AD 的 Linux OS 上将被忽略,因为 Linux 上没有注册表。简而言之,您不能允许 Linux 笔记本电脑缓存(离线)登录到 AD 域 - 这是 Windows OS 独有的功能。