[0]关于本文
在为集群配置Kerberos时,很容易被加密算法相关的错误搞得头晕目眩,这里有必要梳理一下有关配置。直接先总结
- Cloudera Manager中的Kerberos 加密类型:影响客户端Cloudera Manager生产Keytab时使用的加密算法
- /etc/krb5.conf中的permitted_enctypes,default_tkt_enctypes,default_tgs_enctypes:
该配置文件用于定义Kerberos客户端的加密设置。这些设置控制了Kerberos客户端请求TGT和服务票据时使用的加密方式。主要的配置项包括:- permitted_enctypes:定义客户端允许使用的加密类型列表。可以配置哪些加密类型是被允许的,如RC4、AES等。
- default_tkt_enctypes:指定TGT(票据授予票证)使用的默认加密类型。
- default_tgs_enctypes:指定TGS(服务票证)使用的默认加密类型。
- Active Directory中的msDS-SupportedEncryptionTypes:这个属性存储了每个账户支持的加密类型,包括用户账户、计算机账户等。它决定了Kerberos身份验证时可以使用哪些加密算法。对于计算机账户,可以通过直接修改
msDS-SupportedEncryptionTypes属性或使用GPO(组策略对象)网络安全: 配置Kerberos允许的加密类型来控制支持的加密类型。这个配置影响服务端单个实体 - Active Directory中的网络安全: 配置 Kerberos 允许的加密类型:在Active Directory中,还可以通过网络安全: 配置Kerberos允许的加密类型这一组策略来限制Kerberos协议中使用的加密算法。这设置了Kerberos协议所允许的加密类型,确保所有域控制器和客户端使用一致的加密标准。这配置影响服务端整体
[1]Cloudera Manager中的Kerberos 加密类型
参数作用
该参数影响的是Cloudera Manager使用脚本/opt/cloudera/cm/bin/gen_credentials_ad.sh来生成Keytab的时候addent -password -p $PRINC -k 1 -e $ENC部分中$ENC变量,该变量就是[Kerberos 加密类型]这个参数传递过来的
【重要提示】由于 ktutil参数是一个离线生产keytab的工具,这里无论填写什么加密算法甚至属于错误的密码都可以产出keytab,但生产的keytab时候可以使用则收受到其他服务的参数限制
# Export password to keytab
IFS=' ' read -a ENC_ARR <<< "$ENC_TYPES"
{
for ENC in "${ENC_ARR[@]}"
do
echo "addent -password -p $PRINC -k 1 -e $ENC"
if [ $SLEEP -eq 1 ]; then
sleep 1
fi
echo "$PASSWD"
done
echo "wkt $KEYTAB_OUT"
} | ktutil
chmod 600 $KEYTAB_OUT
[2]/etc/krb5.conf中的permitted_enctypes,default_tkt_enctypes,default_tgs_enctypes
参数作用
在Kerberos认证系统中,/etc/krb5.conf文件是Kerberos客户端和服务器的配置文件,它包含了Kerberos运行所需的各种参数和设置。其中,permitted_enctypes、default_tkt_enctypes、default_tgs_enctypes是与加密类型(Encryption Types)相关的三个重要参数。这些参数定义了Kerberos在认证过程中可以使用或偏好的加密类型。下面是对这三个参数的详细解释:
- permitted_enctypes:
- 作用:这个参数定义了客户端和服务器在Kerberos认证过程中允许使用的加密类型列表。这是一个全局设置,用于限制哪些加密类型可以被用于票据(ticket)的加密和会话密钥的生成。
- 值:通常包括如
aes256-cts-hmac-sha1-96、aes128-cts-hmac-sha1-96、arcfour-hmac等加密类型。管理员可以根据安全需求和兼容性来选择合适的加密类型。 - 重要性:通过限制加密类型,可以提高系统的安全性,防止使用较弱的加密算法。
- default_tkt_enctypes:
- 作用:这个参数指定了当客户端请求票据授予票据(Ticket-Granting Ticket, TGT)时,Kerberos客户端默认使用的加密类型列表。TGT是Kerberos认证过程中的一种特殊票据,允许客户端请求对其他服务的访问票据。
- 值:通常与
permitted_enctypes中的值相似,但管理员可能希望根据客户端和服务器的兼容性或安全策略来设置不同的优先级。 - 重要性:通过指定默认的加密类型,可以确保客户端在请求TGT时使用最强的可用加密算法,从而提高安全性。
- default_tgs_enctypes:
- 作用:这个参数指定了当客户端使用TGT请求对其他服务的访问票据(Service Ticket)时,Kerberos服务(如KDC)默认使用的加密类型列表。
- 值:同样,这些值通常与
permitted_enctypes和default_tkt_enctypes中的值相似,但可以根据需要进行调整。 - 重要性:确保服务票据使用强加密算法可以保护客户端和服务之间的通信安全,防止数据泄露或篡改。
【TKT VS TGS】
TKT,即票据授予票据,可以形象地比喻为一把“万能钥匙”。在Kerberos认证系统中,当你(作为客户端)想要访问某个服务(如服务器上的某个文件或数据库)时,你首先需要向Kerberos认证中心(Key Distribution Center, KDC)证明你的身份。一旦你的身份得到验证,KDC就会给你一把“万能钥匙”——TKT。
TGS,即票据授予服务,是Kerberos认证中心(KDC)中的一个组成部分。它负责处理TKT的请求,并生成相应的访问票据(Service Ticket)。
我们可以将TGS想象成一个“钥匙分发中心”。当你(持有TKT的客户端)来到这个中心,并请求访问某个特定服务的权限时,TGS会检查你的TKT是否有效。如果有效,TGS就会为你生成一把具体的“房间钥匙”——访问票据,允许你进入并访问该服务。
[3]Active Directory中的msDS-SupportedEncryptionTypes

参数作用
msDS-SupportedEncryptionTypes是Active Directory(AD)中的一个重要属性,它定义了用户、计算机或信任帐户支持的加密算法。这个属性对于Kerberos认证过程尤为重要,因为它决定了在AD环境中,哪些加密类型可以被用于票据(ticket)的加密和会话密钥的生成。
[4]Active Directory中的网络安全: 配置 Kerberos 允许的加密类型

[5]Kerberos中的一些概念
Kerberos协议用于确保计算机网络中的用户身份验证,特别是在像Active Directory(AD)这样的环境中。以下是一些关键概念的简化解释:
-
Authenticator(认证器)
这是为了避免传输明文密码的一种方法。它是通过将系统时间与密码的派生版本加密生成的。认证器到达域控制器(DC)后,DC会用存储的账户密码解密它并对比时间戳。如果时间戳匹配(通常是5分钟内),就说明密码是正确的,并且防止了重放攻击。 -
Ticket Granting Ticket(TGT,票据授予票证)
一旦认证器验证通过,域控制器就会返回一个TGT。这个TGT包含了账户的SID(安全标识符)、账户所在的组的SID、会话密钥等安全信息。TGT是加密的,只有域控制器可以解密,确保它的隐私性。 -
Session Key(会话密钥)
客户端收到TGT时,还会收到一个会话密钥的副本,这个密钥用于后续的认证。为了确保会话密钥的安全,它会被用账户密码加密。之后,客户机可以在不再需要密码的情况下使用这个会话密钥进行后续的请求。 -
Service Ticket(服务票据)
如果账户想访问某个资源,它需要向域控制器请求一个服务票据。请求时,客户端会提供资源的名称、TGT和一个基于会话密钥生成的认证器。如果认证器有效,域控制器会根据账户的SID和资源的密码(可能是计算机账户的密码)生成一个服务票据,并加密返回给客户端。 -
Referral Ticket(推荐票据)
如果用户要访问其他域中的资源,需要先获取远程域的服务票据。用户通过将TGT和认证器发给本地域的域控制器,并告诉它远程资源的FQDN(完全限定域名),域控制器会创建一个推荐票据。推荐票据用于在目标域中进一步获取服务票据。


2428

被折叠的 条评论
为什么被折叠?



