linux - 增加离线登录的票证有效期

标签 linux authentication active-directory kerberos samba

我正在使用 Mint 发行版 18.1。 我将笔记本电脑配置为加入 Windows 2008R2 Server 上的 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

我能够登录并验证自己的身份。我将我的电脑添加到域中没有任何问题。而且我还可以在离线时登录,这是我最想要的。 我正在尝试将票证有效期延长到 60 天,现在如果我输入 klist 这就是我看到的

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3144425443007170727c7470751f727e7c" rel="noreferrer noopener nofollow">[email protected]</a>

Valid starting       Expires              Service principal
07/11/2017 12:25:02  07/11/2017 22:25:02  krbtgt/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7c3d3f31393d38523f33313c3d3f31393d38523f3331" rel="noreferrer noopener nofollow">[email protected]</a>
    renew until 07/18/2017 12:24:59

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

最佳答案

此处 Active Directory 域默认值优先。

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

计算机配置\Windows 设置\安全设置\帐户策略\Kerberos 策略\服务票证的最长生命周期

引用:Maximum lifetime for service ticket

请注意,更改此设置将被视为安全风险,因为它为潜在的黑客提供了更多时间来解密服务票证并为自己使用。只需谷歌“银票攻击”即可。这就是为什么将 10 小时设置为默认值的原因。它也是使用 Kerberos 的所有主要身份管理实现的默认设置,而不仅仅是 Active Directory。它被认为是安全性和可用性之间的权衡。您还问“我发现我还必须增加 kerberos 主体,但不知道该怎么做”。你这是什么意思?您指的是“服务主体名称”吗?还是票授予票?还是用户帐户?你所说的“增加”是什么意思?如果您打算增加其他 Kerberos 票证的生命周期,例如票证授予票证(又名“用户票证”),那么您还可以在上述 GPO 的同一区域中修改它们。在该 GPO 中,票证授予票证 (TGT) 被写为“用户票证”。它的使用生命周期同样为 10 小时。下面的屏幕截图来 self 的实验室,显示了默认设置下的所有内容:

enter image description here

编辑/更新: 要允许在未连接到网络或域 Controller 不可用时离线登录已加入 AD 域的 Windows PC,您必须允许所谓的“缓存凭据”。这允许 PC 重新使用服务票证,而不会提示去获取新的服务票证。您可以在一台计算机上一次性执行此操作,也可以通过 GPO 在域范围内执行此操作。这两种方法的描述如下:

For a single machine, just edit the Registry

For a domain-wide method, use a GPO

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

关于linux - 增加离线登录的票证有效期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45032458/

相关文章:

session - 如何在 Angular JS 应用程序中处理身份验证

java - 在 Java 或命令行实用程序中是否有一种方法可以使用 native SSPI API 获取服务的 Kerberos 票证?

c# - 如何检测我的程序是否在 Active Directory 环境中运行?

php - jquery mobile登录和访问/拒绝页面

reactjs - 在 ASP.NET Core API 中处理 id_token

php - 单点登录 (SSO) 如何使用 PHP + Apache 针对 Active Directory 进行透明身份验证?

php - 如何使用 php 从 Ubuntu 访问 Windows 驱动器中的远程文件

r - 无法在 RHEL 6.7 上安装 rJava 3.3.0

c++ - 关于对 typedef 的 undefined reference 的 g++ 错误

linux - Laravel - Linux(ubuntu) 实时处理并在网页上显示输出( Blade )