讀取密鑰表文件 krb5.keytab 時出錯
我在 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 介紹:密鑰表是一個包含 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
每當非 root 使用者通過 SSH 或控制台登錄時,都會顯示此消息。它似乎只發生在基於密碼的身份驗證中。如果我對伺服器執行基於密鑰的 ssh,則看不到錯誤。如果我使用 root 登錄,我看不到錯誤。我們的 Linux 伺服器針對 Active Directory 進行身份驗證,因此它是 PAM、samba、kerberos 和 winbind 的完美組合,用於對使用者進行身份驗證。
如果您在主機上沒有 keytab,那麼您確實沒有正確使用 Kerberos,並且如果攻擊者可以毒害您的 DNS 記憶體,那麼您很容易受到相對簡單的攻擊。
Kerberos 是一個共享密鑰系統,為了有效地工作,任何接受 Kerberos 票證的伺服器都需要擁有 Kerberos 密鑰分發中心 (KDC) 也擁有的共享密鑰的本地副本。這就是密鑰表,即該服務的共享密鑰的本地副本。
keytab 也可以用作獲取 Kerberos Ticket-Granting-Tickets (TGT) 的記憶體,但這是在您希望主機充當 Kerberos 伺服器的客戶端而不是伺服器時使用的。
pam_krb5
使用密鑰表來驗證鍵入的密碼是否是 KDC 中的實際密碼。如果您沒有允許此操作的密鑰表,那麼您要驗證的只是某處的某台機器響應了 Kerberos 協議請求。
這可能是一個舊的,但我有同樣的問題,想擺脫這個消息。我遵循 ArchLinux 的這些說明並解決了它。
https://wiki.archlinux.org/index.php/Active_Directory_Integration#Creating_a_machine_key_tab_file
剛剛輸入了這個:
net ads keytab create -U administrator
不過,這可能取決於您的設置。