AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 446768
Accepted
Banjer
Banjer
Asked: 2012-11-09 06:21:50 +0800 CST2012-11-09 06:21:50 +0800 CST 2012-11-09 06:21:50 +0800 CST

读取密钥表文件 krb5.keytab 时出错

  • 772

我在 SLES 11.2 和 CentOS 6.3 上都注意到了这些 kerberos keytab 错误消息:

sshd[31442]: pam_krb5[31442]: error reading keytab 'FILE: / etc/ krb5. keytab'

/etc/krb5.keytab在我们的主机上不存在,根据我对 keytab 文件的了解,我们不需要它。根据这个 kerberos keytab 介绍:

keytab 是一个文件,其中包含成对的 Kerberos 主体和加密密钥(这些密钥源自 Kerberos 密码)。您可以使用此文件登录到 Kerberos 而无需提示输入密码。keytab 文件最常见的个人用途是允许脚本在没有人工交互的情况下向 Kerberos 进行身份验证,或者将密码存储在纯文本文件中。

这听起来像是我们不需要的东西,从安全角度来说,没有它可能更好。

我怎样才能防止这个错误出现在我们的系统日志中?如果有用的话,这是我的 krb5.conf:

banjer@myhost:~> cat /etc/krb5.conf
# This file managed by Puppet
#
[libdefaults]
        default_tkt_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
        default_tgs_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
        preferred_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
        default_realm = FOO.EXAMPLE.COM
        dns_lookup_kdc = true
        clockskew = 300

[logging]
        default = SYSLOG:NOTICE:DAEMON
        kdc = FILE:/var/log/kdc.log
        kadmind = FILE:/var/log/kadmind.log

[appdefaults]
pam = {
        ticket_lifetime = 1d
        renew_lifetime = 1d
        forwardable = true
        proxiable = false
        retain_after_close = false
        minimum_uid = 0
        debug = false
        banner = "Enter your current"
}

如果您需要查看任何其他配置,请告诉我。谢谢。

编辑

/var/log/secure每当非根用户通过 SSH 或控制台登录时,都会显示此消息。它似乎只发生在基于密码的身份验证中。如果我对服务器执行基于密钥的 ssh,我看不到错误。如果我使用 root 登录,则看不到错误。我们的 Linux 服务器根据 Active Directory 进行身份验证,因此它是 PAM、samba、kerberos 和 winbind 的完美组合,用于对用户进行身份验证。

linux
  • 5 5 个回答
  • 66255 Views

5 个回答

  • Voted
  1. Fred the Magic Wonder Dog
    2014-04-23T12:03:13+08:002014-04-23T12:03:13+08:00

    如果您在主机上没有密钥表,那么您确实没有正确使用 Kerberos,并且如果攻击者可以使您的 DNS 缓存中毒,则很容易受到相对简单的攻击。

    Kerberos 是一个共享机密系统,为了有效地工作,任何接受 Kerberos 票证的服务器都需要有一份共享机密的本地副本,Kerberos 密钥分发中心 (KDC) 也有该副本。这就是密钥表,即该服务的共享密钥的本地副本。

    keytab 也可以用作获取 Kerberos 票证授予票证 (TGT) 的缓存,但这是在您希望主机充当 Kerberos 服务器的客户端而不是服务器时使用的。

    pam_krb5使用 keytab 验证输入的密码是 KDC 中的实际密码。如果您没有允许这样做的密钥表,那么您所验证的只是某处的某台机器响应了 Kerberos 协议请求。

    • 4
  2. Abel Martín
    2015-10-26T23:37:32+08:002015-10-26T23:37:32+08:00

    这可能是一个旧的,但我遇到了同样的问题并且想删除该消息。我遵循了 ArchLinux 的这些说明并解决了它。

    https://wiki.archlinux.org/index.php/Active_Directory_Integration#Creating_a_machine_key_tab_file

    只需输入:

    net ads keytab create -U administrator
    

    不过,这可能取决于您的设置。

    • 2
  3. Best Answer
    Banjer
    2013-07-18T05:42:02+08:002013-07-18T05:42:02+08:00

    要禁用 keytab 验证并因此抑制这些日志消息,请将no_validate选项添加到您的 PAM 设置。例如:

    auth        sufficient    pam_krb5.so use_first_pass no_validate
    

    在我的 CentOS 6 服务器上,我pam_krb5.so在这两个文件中看到的任何地方进行了此更改:

    /etc/pam.d/password-auth-ac
    /etc/pam.d/system-auth-ac
    

    我确信 SLES 是相似的,但我们正在逐步淘汰该操作系统,因此我不打算在那里进行测试。

    • 1
  4. Ryan
    2014-04-23T10:40:52+08:002014-04-23T10:40:52+08:00

    您可以禁用验证以避免日志中出现 Banjer 建议的消息,但验证步骤的目的是防止坏人设置他们自己的虚假 KDC 的攻击。换句话说,您需要一个主机主体来验证 KDC 提供的 TGT 是真实的。

    • 1
  5. Elias Mårtenson
    2012-11-22T18:32:48+08:002012-11-22T18:32:48+08:00

    正如@ryan-fisher 在他的回复中提到的,主机需要一个 keytab 文件,以便它能够检索 TGT 以进行预授权。

    看不到 root 消息的原因是因为该用户是本地用户(不需要 Kerberos 进行身份验证)。当使用 SSH 授权密钥时,您还可以绕过 Kerberos,因此那里也不会出现丢失密钥表的错误。

    现在,您需要做的是确保/etc/krb5.keytab包含机器主体的密钥host/domain.name.of.host。假设反向 DNS 设置正确,然后您将能够使用 ssh 登录而无需输入密码,前提是您拥有有效的 TGT。

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve