Kerberos密钥表权限

你可以分享一下Kerberos密钥表是否应该只能由root读取 – 在任何情况下 ? 还是有这个规则的例外?

我正在Debian Jessie上设置一个Squid代理,以便与Active Directory进行Kerberos身份validation。 大多数文档build议为包含“HTTP”服务主体条目的Squid创build密钥表。

但是,如果我将我的系统joinActive Directory域,例如使用realmd ,则会创build一个密钥表,即/etc/krb5.keytab 。 我甚至可以确保这个密钥表包含“HTTP”服务主体的必要条目:

 # adcli preset-computer -D mydomain.org --service-name HOST --service-name HTTP proxy.mydomain.org # realm join mydomain.org 

因此,不要为Squid创build第二个密钥表,我可以简单地将读取/etc/krb5.keytab权限给运行Squid的进程(这是Debian上的用户代理)。

我意识到,如果有任何用户,但root用户可以访问系统密钥表/etc/krb5.keytab ,则认为这是一个安全问题。 但是,如果我的服务器没有托pipe服务,但Squid代理专门为Squid创build的密钥表(例如,使用net ads keytab create && net ads keytab add HTTP )将包含或多或less与系统密钥表相同的信息。 (或者不是吗?)

那么当我这样设置时,我会跳入任何安全漏洞吗?

我想我应该改述我的问题,从而回答它:我如何创build一个包含HTTP SPN条目的密钥表?

如果我使用以下命令为Squid创build新的密钥表,如Squid维基中所述

 # export KRB5_KTNAME=FILE:/etc/squid/HTTP.keytab # net ads keytab CREATE # net ads keytab ADD HTTP # unset KRB5_KTNAME 

那么新的密钥表/etc/squid3/HTTP.keytab将包含与系统密钥表相同的SPN的条目以及HTTP SPN的条目:

 # klist -k Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- ----------------------------------------- 2 [email protected] 2 host/[email protected] 2 host/[email protected] # klist -k /etc/squid3/HTTP.keytab Keytab name: FILE:/etc/squid3/HTTP.keytab KVNO Principal ---- ----------------------------------------- 2 [email protected] 2 host/[email protected] 2 host/[email protected] 2 http/[email protected] 2 http/[email protected] 2 HTTP/[email protected] 2 HTTP/[email protected] 

这就是为什么我没有看到否认系统密钥表/etc/krb5.keytab squid读取权限的问题 – 无论如何,它在自己的密钥表中都有相同的SPN。

但是,如果我让HTTP.keytab 包含HTTP条目,那么不同的权限将是有意义的:那么Squid只能使用它实际需要的HTTP SPN,但是没有其他可能包含在系统密钥表中的SPN。 这可以做到如下:

 # net ads keytab add HTTP 

这将HTTP SPN添加到系统密钥表中。 然后,我们根据系统密钥表创build一个新的密钥表,并在这个新的密钥表中删除除了HTTP SPN之外的所有密钥表:

 # ktutil ktutil: rkt /etc/krb5.keytab ktutil: list ktutil: delent <number of non-HTTP entry> 

重复最后一步,直到只剩下以httpHTTP开头的条目。 然后将结果写入新文件并设置权限:

 ktutil: wkt /etc/squid3/HTTP.keytab ktutil: quit # chown root:proxy /etc/squid3/HTTP.keytab # chmod 640 /etc/squid3/HTTP.keytab 

生成的密钥performance在仅包含HTTP SPN:

 # klist -k /etc/squid3/HTTP.keytab Keytab name: FILE:/etc/squid3/HTTP.keytab KVNO Principal ---- ----------------------------------------- 2 http/[email protected] 2 http/[email protected] 2 HTTP/[email protected] 2 HTTP/[email protected] 

为我工作:-)