获取 Linux 上自动登录的 Kerberos 票证

获取 Linux 上自动登录的 Kerberos 票证

我尝试使用 kerberos 为用户配置自动登录。我尝试使用 ' mingetty --autologin USERNAME',但得到的会话没有 kerberos 票证(我需要该票证才能访问 nfs4 导出)。当我使用用户名和密码在控制台上进行常规登录时,我会获得 kerberos 票证。

有没有办法通过使用特殊的用户密钥表来自动登录用户?

答案1

我在网上找到了一篇很棒的帖子,我将在下面引用和引用,以防其他人发现它对完成我需要使用 kerberos 并确保生成票证的任何事情有用。

  • 使用 rc.local、su 和 Kerberos 自动登录

    上周,我为网络上的所有机器设置了 Kerberos 身份验证。其中一台机器是我们的媒体计算机,我想让它自动登录并启动 MythTV。过去,我使用su – mythtv -c startx/etc/rc.local 中的调用来自动登录。

    在新系统中,我还使用 Kerberos 身份验证通过 NFS 安装 /home,因此通常我们需要输入 mythtv 的密码才能访问 /home/mythtv 以及它需要访问的所有媒体。因此,我们需要为 mythtv 用户使用 keytab – http://kb.iu.edu/data/aumh.html#create

    接下来,我们需要在尝试挂载 /home 并启动之前将票证放入会话中。这将在尝试挂载 /home 时出错,但它会为 mythtv 获取缓存的票证。su – mythtv -c “kinit [email protected] -k -t /etc/mythtv.keytab”

    此后,您就可以运行su – mythtv -c startx。在我的系统上,我需要在两个语句之间放置一个 sleep 语句,否则挂载将失败。

    自动登录功能会自动提供网络凭证,这有点不安全。在我的设置中,mythtv 用户的权限有限,但在继续之前,您需要考虑这一点。

  • 什么是 keytab?如何使用它?

    介绍

    keytab 是一个包含 Kerberos 主体和加密密钥对的文件(这些密钥来自 Kerberos 密码)。您可以使用此文件登录 Kerberos,而无需输入密码。keytab 文件最常见的个人用途是允许脚本在无需人工交互的情况下对 Kerberos 进行身份验证,或者将密码存储在纯文本文件中。然后,脚本可以使用获取的凭据来访问存储在研究文件系统 (RFS) 或学术数据档案 (SDA) 中的文件。

    警告:任何拥有密钥表读取权限的人都可以使用其中包含的所有密钥,因此您必须限制和监控您创建的任何密钥表文件的权限。

    另外,请考虑以下几点:

    • 当您更改 Kerberos 密码时,您将需要重新创建所有密钥表。

    • 按照此页面上的示例时,请准确输入所显示的命令。


    创建密钥表文件

    您可以在任何具有 Kerberos 的计算机上快速创建密钥表文件。密钥表文件与计算机无关,因此您可以执行一次该过程,然后将文件复制到多台计算机。

    笔记:以下假设您有权访问 Kerberos 客户端(在您自己的工作站上或在 UITS 共享系统上,例如 Quarry)。您可能需要修改路径以包含 ktutil 的位置(例如 /usr/sbin 或 /usr/kerberos/sbin)。

    以下是使用 MIT Kerberos 的 keytab 文件创建过程的示例:

      > ktutil
      ktutil:  addent -password -p [email protected] -k 1 -e rc4-hmac
      Password for [email protected]: [enter your password]
      ktutil:  addent -password -p [email protected] -k 1 -e aes256-cts
      Password for [email protected]: [enter your password]
      ktutil:  wkt username.keytab
      ktutil:  quit 
    

    以下是使用 Heimdal Kerberos 的示例:

      > ktutil -k username.keytab add -p [email protected] -e arcfour-hmac-md5 -V 1
    

    如果 Heimdal 中创建的密钥表不起作用,则可能需要 aes256-cts 条目。在这种情况下,您需要找到一台装有 MIT Kerberos 的计算机,然后使用该方法。


    使用 keytab 验证脚本

    要执行脚本以使其具有有效的 Kerberos 凭据,请使用:

      > kinit [email protected] -k -t mykeytab; myscript
    

    将 username 替换为您的用户名,将 mykeytab 替换为您的 keytab 文件的名称,将 myscript 替换为您的脚本的名称。


    列出密钥表文件中的密钥

    使用 MIT Kerberos,要列出密钥表文件的内容,请使用 klist(将 mykeytab 替换为您的密钥表文件的名称):

      > klist -k mykeytab
    
      version_number [email protected]
      version_number [email protected]
    

    输出包含两列,列出版本号和主体名称。如果主体存在多个密钥,则将使用版本号最高的密钥。

    对于 Heimdal Kerberos,请改用 ktutil:

      > ktutil -k mykeytab list
      mykeytab:
    
      Vno  Type         Prinicpal
      1    des3-cbc-md5 [email protected]
      ...
    

    从密钥表文件中删除密钥

    如果您不再需要密钥表文件,请立即删除它。如果密钥表包含多个密钥,您可以使用 ktutil 命令删除特定密钥。您还可以使用此过程删除密钥的旧版本。以下是使用 MIT Kerberos 的示例:

      > ktutil
      ktutil: read_kt mykeytab
      ktutil: list
    
      ...
    
      slot# version# [email protected]        version#
      ...
    
      ktutil: delent slot#
    

    将 mykeytab 替换为您的 keytab 文件的名称,将 username 替换为您的用户名,将 version# 替换为适当的版本号。

    验证版本已经消失,然后在ktutil中输入:

      quit
    

    要使用 Heimdal Kerberos 执行相同操作,请使用:

      > ktutil -k mykeytab list
    
      ...
      version# type [email protected]
      ...
    
      > ktutil -k mykeytab remove -V version# -e type [email protected]
    

    合并 keytab 文件

    如果您有多个 keytab 文件需要放在一个地方,您可以使用 ktutil 命令合并密钥。

    要使用 MIT Kerberos 合并密钥表文件,请使用:

      > ktutil
      ktutil: read_kt mykeytab-1
      ktutil: read_kt mykeytab-2
      ktutil: read_kt mykeytab-3
      ktutil: write_kt krb5.keytab
      ktutil: quit
    

    将 mykeytab-(number) 替换为每个 keytab 文件的名称。最终合并的 keytab 将是 krb5.keytab 。

    要验证合并,请使用:

      klist -k krb5.keytab
    

    要使用 Heimdal Kerberos 执行相同操作,请使用:

      > ktutil copy mykeytab-1 krb5.keytab
      > ktutil copy mykeytab-2 krb5.keytab
      > ktutil copy mykeytab-3 krb5.keytab
    

    然后,为了验证合并,请使用:

      ktutil -k krb5.keytab list
    

    将 keytab 文件复制到另一台计算机

    keytab 文件独立于创建它的计算机、文件名和文件系统中的位置。创建后,您可以重命名它、将其移动到同一台计算机上的其他位置或将其移动到另一台 Kerberos 计算机,它仍可正常工作。keytab 文件是二进制文件,因此请确保以不会损坏它的方式传输它。

    如果可能,请使用 SCP 或其他安全方法在计算机之间传输密钥表。如果必须使用 FTP,请确保在传输文件之前从 FTP 客户端发出 bin 命令。这会将传输类型设置为二进制,这样密钥表文件就不会损坏。

    来源

由于这些信息,我现在使用以下脚本通过提供的 kerberos keytab 文件进行自动登录,效果非常好!!

DISPLAY= su mythtv -c "HOME=/var/lib/mythtv KRB5CCNAME=FILE:/tmp/krb5cc_mythtv_tty7 /usr/bin/kinit -k -t /var/lib/mythtv/mythtv.keytab mythtv"
export KRB5CCNAME=FILE:/tmp/krb5cc_mythtv_tty7
/sbin/mingetty --delay=2 --autologin=mythtv tty7

相关内容