物联网的企业级身份验证和访问控制(第二部分)。






4.73/5 (7投票s)
在 Raspberry Pi IoT 上部署 Kerberos,为 IoT 提供强大且可扩展的企业级身份验证(第二部分)。
引言
本文介绍了在嵌入式 Linux 物联网设备(树莓派 B2)上设置 Kerberos 密钥分发中心和 Kerberos 管理服务器。它使用 OpenLDAP 服务器存储凭证、密钥和用于操作 Kerberos 服务的持久数据。
背景
这是我之前发布的 第一部分文章 的续篇。本文将描述以下任务,这些任务将完成 Kerberos 的安装:
- 安装 Kerberos 服务
- 配置和部署 Kerberos KDC
- 在 Kerberos 上设置用户主体和物联网设备主体
- 配置并检查所有设备的 Kerberos 身份验证
Kerberos 概述
Kerberos 服务提供一个受信任的第三方身份验证服务,其中每个实体或主体(服务器或客户端)都是 Kerberos 服务的用户,并信任 Kerberos 对其对等方身份的判断。
Kerberos 使用共享密钥对称加密。对于用户,密钥是用户的密码应用于单向函数。Kerberos 使用传播模式 CBC(密文块链接)加密,如果单个比特发生更改或篡改,该错误将传播到整个消息。
Kerberos 维护一个用户及其密钥的数据库。密钥在注册时协商。它还生成仅用于一次会话的临时会话密钥。Kerberos 可以配置为仅使用身份验证功能,或仅使用完整性保护,或同时使用两者。生成抗碰撞哈希并用于保护消息的完整性。Kerberos 利用库提供加密、数据库管理、身份验证、管理、数据库复制以及用户/应用程序程序。可以根据需要混合搭配以适应软件堆栈。
在 Kerberos 数据库中,每个主体都有一条记录,其中包含名称、密钥、到期日期和其他管理数据。名称的格式为 name.instance@realm,其中:
- 主名称是用户或服务的名称
- 实例是运行服务器的机器的名称
- 领域是维护身份验证数据的管理域
主数据库/服务器有一个副本,可以在上面进行用户管理,但可以设置多个从属服务器,它们提供一个只读数据库用于身份验证。数据库可以在这些只读从属机器上复制,这些机器会定期从主机器接收更新。
Kerberos 使用两种凭证:
- 票证 - 用于在身份验证服务器和应用程序之间安全地传递用户的身份
- 验证器 - 额外的用户信息,用于证明客户端的身份
票证使用服务器的密钥进行保护,用户可以在会话期间多次使用,其描述为:
Ticket = Encrypt serverKey (serverid, clientid, client network address, timestamp, ticket lifetime, client-server sessionKey)
验证器在身份验证期间只能使用一次,其格式为:
Ticket = Encrypt sessionKey (clientid, client network address, timestamp)
主体需要执行以下步骤才能使用 Kerberos 身份验证(在此,服务器指物联网设备):
- 客户端通过发送客户端名称和 TGS 名称,向 Kerberos 服务器发送一个票证授予服务 (TGS) 票证的请求。
- Kerberos 服务器对客户端进行身份验证,并为 TGS-客户端交换颁发会话密钥,TGS 票证使用 TGS-Kerberos 服务器密钥进行加密;所有这些都使用客户端密钥进行加密。
- 通过发送服务名称、TGS 票证和客户端验证器,从 TGS 请求服务票证,两者都使用 TGS-客户端会话密钥进行加密。
- TGS 服务器检查客户端的访问控制,并颁发一个客户端-服务器会话票证,该票证使用服务器密钥和客户端-服务器会话密钥进行加密,两者都使用 TGS-客户端会话密钥进行加密。这用于客户端对同一服务器的所有服务器访问。
- 可以选择进行可选的相互身份验证,其中服务器将 timestamp+1 值使用服务器-客户端会话密钥加密后发送给客户端。
此过程在下图中有说明。
Kerberos 执行的其他功能包括:
- 管理功能:密码更改、添加/删除主体等。
- 定期将 Kerberos 数据库复制到从属机器
- 与其他 Kerberos 域进行交互以进行跨域信任传播
安装
软件包安装
发出以下命令以安装任何待定的软件包更新:
sudo apt-get update
sudo apt-get upgrade
安装 Kerberos 服务,用于 ldap-kdc 后端、分发中心和管理服务器。
sudo apt-get install krb5-kdc-ldap krb5-kdc krb5-admin-server
安装过程附带一个配置脚本 `krb5_newrealm`,用于设置 Kerberos 域,该脚本应该能够生成 Kerberos 配置文件 _/etc/krb5.conf_,其中包含该域所需的设置。但是,在本例中,我们将手动配置 kerberos 文件。
为 Kerberos 准备 LDAP 数据存储
更新访问控制列表 (ACL),以限制对 Kerberos 主体密钥属性的访问。
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -D cn=schema,cn=config -W -c
Enter LDAP Password:
dn: olcDatabase={1}mdb,cn=config
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn="cn=admin,
dc=examplefirm,dc=com" write by anonymous auth by self write by * none
modifying entry "olcDatabase={1}mdb,cn=config"
[ctrl+D]
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -D cn=schema,cn=config -W -c
Enter LDAP Password:
dn: olcDatabase={1}mdb,cn=config
add: olcAccess
olcAccess: to dn.base="" by * read
modifying entry "olcDatabase={1}mdb,cn=config"
dn: olcDatabase={1}mdb,cn=config
add: olcAccess
olcAccess: to * by dn="cn=admin,dc=examplefirm,dc=com" write by * read
modifying entry "olcDatabase={1}mdb,cn=config"
[Ctrl+D]
现在 _OpenLDAP_ 目录已准备好作为 Kerberos 主体数据库。
Kerberos 配置
通过编辑主配置文件 _/etc/krb5.conf_ 来配置域 `EXAMPLEFIRM.COM` 的密钥分发中心 (KDC) 服务器和管理服务器,并在适当的节下添加以下选项:
[libdefaults]
default_realm = EXAMPLEFIRM.COM
# any other configuration items
...
[realms]
EXAMPLEFIRM.COM = {
kdc = iot01.examplefirm.com
admin_server = iot01.examplefirm.com
default_domain = examplefirm.com
database_module = openldap_ldapconf
}
[domain_realm]
.examplefirm.com = EXAMPLEFIRM.COM
[dbdefaults]
ldap_kerberos_container_dn = dc=examplefirm,dc=com
[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_kdc_dn = "cn=admin,dc=examplefirm,dc=com"
# this object needs to have read rights on
# the realm container, principal container and realm sub-trees
ldap_kadmind_dn = "cn=admin,dc=examplefirm,dc=com"
# this object needs to have read and write rights on
# the realm container, principal container and realm sub-trees
ldap_service_password_file = /etc/krb5kdc/service.keyfile
ldap_servers = ldapi:/// ldaps://iot01.examplefirm.com
ldap_conns_per_server = 5
}
[dbdefaults]
ldap_kerberos_container_dn = cn=krbContainer,dc=examplefirm,dc=com
创建 Kerberos 域
我们需要在域的子树中包含以下 OU,以便我们可以将代表物联网设备的主体存储在“计算机”下,将代表用户的主体存储在“人员”下。
- 计算机
- 人员
使用此命令创建同时包含这两个子树的域:
sudo kdb5_ldap_util -D cn=admin,dc=examplefirm,dc=com create -subtrees ou=People,
dc=examplefirm,dc=com:ou=Computers,dc=examplefirm,dc=com -r EXAMPLEFIRM.COM -s -H ldapi:///
Password for "cn=admin,dc=examplefirm,dc=com":
Initializing database for realm 'EXAMPLEFIRM.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
通过查询此 LDAP 服务器上设置的主体子树来验证是否已设置:
kdb5_ldap_util -D cn=admin,dc=examplefirm,dc=com -H ldapi:/// view -r EXAMPLEFIRM.COM
Password for "cn=admin,dc=examplefirm,dc=com":
Realm Name: EXAMPLEFIRM.COM
Subtree: ou=People,dc=examplefirm,dc=com
Subtree: ou=Computers,dc=examplefirm,dc=com
使用此命令查看域列表:
kdb5_ldap_util -D cn=admin,dc=examplefirm,dc=com -H ldapi:/// list
Password for "cn=admin,dc=examplefirm,dc=com":
EXAMPLEFIRM.COM
创建用于绑定到 LDAP 服务器的密码的暂存文件。此密码由 _/etc/krb5.conf_ 中设置的 `ldap_kdc_dn` 和 `ldap_kadmin_dn` LDAP 用户 DN 使用。
sudo kdb5_ldap_util -D cn=admin,dc=examplefirm,dc=com stashsrvpw
-f /etc/krb5kdc/service.keyfile cn=admin,dc=examplefirm,dc=com
Password for "cn=admin,dc=examplefirm,dc=com":
Password for "cn=admin,dc=examplefirm,dc=com":
Re-enter password for "cn=admin,dc=examplefirm,dc=com":
检查以确保此文件只能由 root 访问:
sudo ls -al /etc/krb5kdc/service.keyfile
-rw------- 1 root root 77 Sep 9 00:50 /etc/krb5kdc/service.keyfile
创建和部署策略
Kerberos 使我们能够配置和强制执行密码和安全配置策略,例如票证的最大年龄、最小密码长度、密码复杂度等。我们现在将配置其中一些。
使用以下命令为该域创建 Kerberos 默认票证策略:
sudo kdb5_ldap_util -D cn=admin,dc=examplefirm,
dc=com -H ldapi:/// create_policy -r EXAMPLEFIRM.COM -maxtktlife "8 day"
-maxrenewlife "1 week" -allow_postdated +needchange -allow_forwardable tktpolicy
要验证是否已添加此策略,请列出该域的所有策略并查询此策略:
kdb5_ldap_util -D cn=admin,dc=examplefirm,dc=com -H ldapi:/// -r EXAMPLEFIRM.COM list_policy
Password for "cn=admin,dc=examplefirm,dc=com":
tktpolicy
kdb5_ldap_util -D cn=admin,dc=examplefirm,dc=com -H ldapi:/// -r EXAMPLEFIRM.COM view_policy tktpolicy
Password for "cn=admin,dc=examplefirm,dc=com":
Ticket policy: tktpolicy
Maximum ticket life: 8 days 00:00:00
Maximum renewable life: 7 days 00:00:00
Ticket flags: DISALLOW_POSTDATED DISALLOW_FORWARDABLE REQUIRES_PWCHANGE
使用此命令配置密码策略:
sudo kadmin.local
Authenticating as principal root/admin@EXAMPLEFIRM.COM with password.
kadmin.local: add_policy -maxlife "30 days" -minlength 8 -minclasses 4
-maxfailure 5 -failurecountinterval "6 hours" default
此命令添加一个名为“`default`”的密码策略,在设置或更改密码时施加以下限制:
- 最小密码长度 = 8 个字符
- 密码至少包含 4 种字符类:小写字母、大写字母、数字和标点符号。
- 帐户锁定前可容忍的最大失败次数 = 5 次
- 密码最大有效期 = 30 天
- 身份验证失败次数重置为一次失败之前的时间间隔设置为“6 小时”。
通过使用此命令列出参数来验证配置是否正确:
kadmin.local: get_policy default
Policy: default
Maximum password life: 3888000
Minimum password life: 0
Minimum password length: 8
Minimum number of password character classes: 4
Number of old keys kept: 1
Reference count: 0
Maximum password failures before lockout: 5
Password failure count reset interval: 0 days 06:00:00
Password lockout duration: 0 days 00:00:00
用户管理
向 Kerberos 添加新用户
在配置了 kerberos 服务后,我们现在可以开始将 Kerberos 主体添加到 LDAP 数据库。要添加主体,请通过输入以下命令启动 `kadmin.local` 实用程序:
sudo kadmin.local
Authenticating as principal root/admin@examplefirm.COM with password.
kadmin.local:
输入以下命令来创建用户 `user01`:
kadmin.local: addprinc -x dn="uid=user01,ou=People,dc=examplefirm,dc=com" user01
NOTICE: no policy specified for user01@EXAMPLEFIRM.COM; assigning "default"
Enter password for principal "user01@EXAMPLEFIRM.COM":
Re-enter password for principal "user01@EXAMPLEFIRM.COM":
Principal "user01@EXAMPLEFIRM.COM" created.
对创建 `user02` 重复相同的操作。
kadmin.local: addprinc -x dn="uid=user02,ou=People,dc=examplefirm,dc=com" user02
NOTICE: no policy specified for user02@EXAMPLEFIRM.COM; assigning "default"
Enter password for principal "user02@EXAMPLEFIRM.COM":
Re-enter password for principal "user02@EXAMPLEFIRM.COM":
Principal "user02@EXAMPLEFIRM.COM" created.
完成此步骤后,需要重新启动 Kerberos 服务以确保设置已生效。
sudo service krb5-kdc restart
sudo service krb5-admin-server restart
测试用户初始化
使用 Kerberos KDC 和 kadmin 初始化一个主体。
sudo kinit -V user01
Using default cache: /tmp/krb5cc_0
Using principal: user01@EXAMPLEFIRM.COM
Password for user01@EXAMPLEFIRM.COM:
Authenticated to Kerberos v5
使用 klist 查看生成的票证。
sudo klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: user01@EXAMPLEFIRM.COM
Valid starting Expires Service principal
09/09/2016 23:51 10/09/2016 09:51 krbtgt/EXAMPLEFIRM.COM@EXAMPLEFIRM.COM
renew until 10/09/2016 23:51
这证实用户能够获得有效的 Kerberos 票证并成功进行身份验证。
使用 Kerberos 进行设备身份验证
在需要使用 Kerberos 的每台设备上,安装以下软件包以通过 kerberos 进行身份验证:
sudo apt-get install libpam-krb5 krb5-user
使用此命令更新 PAM:
sudo pam-auth-update
在屏幕上选择并启用 Kerberos 身份验证。
为了使用 Kerberos 进行身份验证,本地系统需要首先知道正在尝试的用户登录是一个有效用户 - 这可以通过添加一个与 kerberos 用户同名的本地用户来实现,或者,引用 LDAP 目录来验证用户 ID。
如果选择本地用户选项,请在物联网设备上创建本地帐户,但不要设置密码 - 在用户创建过程中跳过此步骤。这将使所有用户在本地 passwd 文件中可用,供系统验证用户 ID,然后用户就可以使用其 Kerberos 密码登录到设备。
sudo adduser user01 Adding user `user01' ... Adding new group `user01' (1001) ... Adding new user `user01' (1001) with group `user01' ... Creating home directory `/home/user01' ... Copying files from `/etc/skel' ... Current Kerberos password: Current Kerberos password: passwd: Authentication token manipulation error passwd: password unchanged Try again? [y/N] N Changing the user information for user01 Enter the new value, or press ENTER for the default Full Name []: user01 Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
此选项更好,因为它更容易对该设置下的登录问题进行故障排除。
要配置系统以针对 LDAP 目录检查和检索用户 ID,请完成以下配置:
sudo apt-get install sssd
将以下内容添加到配置文件中:/etc/sssd/sssd.conf :
[sssd] config_file_version = 2 services = nss,pam domains = EXAMPLEFIRM.COM [nss] #debug_level = 0xFFF0 filter_users = root filter_groups = root [pam] [domain/EXAMPLEFIRM.COM] #debug_level = 0xFFF0 auth_provider = krb5 krb5_server = iot01.examplefirm.com krb5_realm = EXAMPLEFIRM.COM cache_credentials = true # credential caching (above) is optional access_provider = simple chpass_provider = krb5 id_provider = ldap ldap_uri = ldap://iot01.examplefirm.com ldap_search_base = dc=examplefirm,dc=com ldap_id_use_start_tls = false # set the above to true after installing TLS certificates for LDAP ldap_sasl_mech = GSSAPI sudo_provider = none
然后,修复文件权限,以便配置文件只能由 root 访问。
重新启动 sssd 守护进程。
sudo service sssd restart
创建设备主体
“host”服务是 telnet 或 SSH 等远程访问服务提供的服务名称。为了支持 Kerberized 远程登录,请使用 `kadmin.local` 登录到 kadmin 提示符,并创建一个服务主体,名称为 **host/iot01.examplefirm.lan@EXAMPLEFIRM.COM**。
虽然用户主体能够在 Kerberos 身份验证期间提供充当其密钥的密码,但应用程序(物联网设备)无法进行交互式操作。因此,其密钥在 KDC 上创建,并通过“*keytab*”文件安全地传输到物联网设备。
为此,首先我们将使用 **kadmin** 实用程序在 Kerberos 中添加服务器主体(代表使用 Kerberos 的物联网设备):
sudo kadmin.local
kadmin.local: addprinc -randkey -x dn=cn=host,cn=iot01.examplefirm.com,ou=Computers,dc=examplefirm,dc=com host/iot01.examplefirm.com@EXAMPLEFIRM.COM
NOTICE: no policy specified for host/iot01.examplefirm.com@EXAMPLEFIRM.COM; assigning "default"
Principal "host/iot01.examplefirm.com@EXAMPLEFIRM.COM" created.
将这些密钥转储到 *keytab* 文件中,并将其存储在物联网设备的 _/etc_ 目录中,将物联网主体的凭证保存在 keytab 文件 _/etc/krb5.keytab_ 中。
kadmin.local: ktadd -k krb5-iot01.keytab host/iot01.examplefirm.com@EXAMPLEFIRM.COM Entry for principal host/iot01.examplefirm.com@EXAMPLEFIRM.COM with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:krb5-iot01.keytab. Entry for principal host/iot01.examplefirm.com@EXAMPLEFIRM.COM with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:krb5-iot01.keytab. Entry for principal host/iot01.examplefirm.com@EXAMPLEFIRM.COM with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:krb5-iot01.keytab. Entry for principal host/iot01.examplefirm.com@EXAMPLEFIRM.COM with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:krb5-iot01.keytab
正如您所见,使用了许多不同的加密+哈希函数组合来将密钥存储在 keytab 文件中。这是为了确保与旧的 Kerberos 安装向后兼容。如果您没有此类向后兼容性,则应更改默认加密策略,仅保留最安全的算法和密钥长度。
将此文件安全地传输到设备 **iot01**,并设置严格的文件权限为 0700,使其只能由 root 访问,以保护文件。
scp krb5-iot01.keytab anotheruser@iot01.examplefirm.com:/etc/krb5.keytab
sudo chown root:root /etc/krb5.keytab
sudo chmod 0700 /etc/krb5.keytab
通过使用 **kinit** 测试初始化此主体的票证来验证此主体是否已正确创建。
sudo kinit -k -t /etc/krb5.keytab -p host/iot01.examplefirm.com@EXAMPLEFIRM.COM
使用 `klist` 查看颁发给此主体的 Kerberos 票证。
sudo klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: host/iot01.examplefirm.com@EXAMPLEFIRM.COM
Valid starting Expires Service principal
17/09/2016 08:39 18/09/2016 08:39 krbtgt/EXAMPLEFIRM.COM@EXAMPLEFIRM.COM
同样,为其他物联网服务也创建 Kerberos 主体。
Kerberize SSH 登录
在物联网设备上,编辑 SSH 守护进程配置文件(通常是 _/etc/ssh/sshd_config_)以验证以下选项是否已启用:
KerberosAuthentication yes
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
然后,重新启动 SSH 服务。
sudo service sshd restart
编辑配置文件 _/etc/krb5.conf_ 以添加以下内容:
[libdefaults]
default_realm = EXAMPLEFIRM.COM
[realms]
EXAMPLEFIRM.COM = {
kdc = iot01.examplefirm.com
admin_server = iot01.examplefirm.com
default_domain = examplefirm.com
}
[domain_realm]
.examplefirm.com = EXAMPLEFIRM.COM
在某些情况下,登录可能会由于多种原因产生错误,其中一些常见原因包括:
- Keytab 不是此主体的正确 keytab,因此设备无法与 Kerberos 通信。
- 为设备主体生成的密钥已过时,因此需要重新生成。
- 设备和 Kerberos 服务器之间存在较大的时钟差异。
通过查看日志文件 **/var/log/syslog** 中的事件来调查和排除登录问题。成功登录的日志事件示例如下:
Sep 4 21:06:36 iot01 krb5kdc[4041]: AS_REQ (6 etypes {18 17 16 23 25 26}) 127.0.0.1: ISSUE: authtime 1039591196, etypes {rep=18 tkt=18 ses=18}, user01@EXAMPLEFIRM.COM for krbtgt/EXAMPLEFIRM.COM@EXAMPLEFIRM.COM Sep 4 21:06:37 iot01 sshd[4239]: pam_unix(sshd:session): session opened for user user01 by (uid=0) Sep 4 21:06:37 iot01 systemd-logind[386]: New session c5 of user user01. Sep 4 21:06:37 iot01 systemd: pam_unix(systemd-user:session): session opened for user user01 by (uid=0)
在排除登录问题的根本原因时,最快的方法是检查以下几点:
- KDC 和管理服务器可从设备访问,并且它们的系统时间差异不超过 30 秒(保守估计)。
- 设备和用户主体可以在 Kerberos 服务器本身成功颁发票证(如文章所示,使用 kinit)。
- 其他用户可以毫无问题地使用其 Kerberos ID 登录到同一设备。
- 用户 ID 和密码有效,并且密码未过期。
除了 SSH,许多其他网络服务也支持 Kerberization,例如:NFS、HTTP/HTTPS 和 RDBMS 数据库(如 Oracle 数据库、PostgreSQL 等)。要为每个服务部署 Kerberos,需要在设备的 LDAP 对象下创建一个 `ipservice` 对象,然后为此服务创建一个 Kerberos 主体。
结论
至此,在物联网设备上为其他物联网设备配置和部署一个工作的 Kerberos 身份验证服务的工作已完成。
对于生产部署,建议进行以下额外的配置任务和环境设置:
- 设置基于 TLS (StartTLS) 的 LDAP 以强制执行安全通信,更改 Kerberos 以使用 ldaps 而不是纯文本未加密的 ldap。
- 设置 LDAP 服务器的复制到另一台设备,以实现冗余和业务连续性。
- 在其他设备上设置次要或更多 Kerberos 服务器,并将其配置为故障转移。
- 使用 Jxplorer 或 Apache DS studio 等图形工具来管理 LDAP 目录,这使得管理大型部署更加方便。
- 通过企业的人员变动(离职/入职)触发的脚本自动化用户管理。
- 使用 NTP 服务同步所有设备上的时钟;这是必需的,因为时间戳在 Kerberos 协议各方之间交换的安全消息中扮演着重要角色。该协议仅能容忍设备与 Kerberos 服务器之间存在很小的时差。
- 托管 kerberos 和 ldap 服务器的每个设备的操作系统都必须进行加固,以确保其安全,并移除 X-windows 等不必要的服务。
- 使用高质量、可靠的电源(高功率容量,以便运行时保持低温)和高质量的存储卡来运行所有物联网设备,以避免媒体损坏问题。
附录 1 - 管理用户主体
在 `kadmin.local` 提示符下,使用以下命令更改用户的密码:
cpw user01
使用此命令更改主体的详细信息,例如标记帐户不活动、更改姓名/电子邮件/等。
modprinc user01
查看与用户相关的 Kerberos 详细信息。
getprinc user02 Principal: user02@EXAMPLEFIRM.COM Expiration date: [never] Last password change: Sun Sep 04 01:07:56 IST 2016 Password expiration date: [none] Maximum ticket life: 1 day 00:00:00 Maximum renewable life: 0 days 00:00:00 Last modified: Sun Sep 04 01:07:56 IST 2016 (root/admin@EXAMPLEFIRM.COM) Last successful authentication: [never] Last failed authentication: [never] Failed password attempts: 0 Number of keys: 4 Key: vno 1, aes256-cts-hmac-sha1-96, no salt Key: vno 1, aes128-cts-hmac-sha1-96, no salt Key: vno 1, des3-cbc-sha1, no salt Key: vno 1, arcfour-hmac, no salt MKey: vno 1 Attributes: Policy: default
用户可以使用 `kpasswd` 实用程序随时重置其 kerberos 密码。由于密码策略强制执行 30 天后密码到期,并且用户不会在临近密码截止日期前的几天内收到自动提醒来重置密码,因此建议设置其他机制来监控用户的密码到期情况并提前通知他们。
关注点
Kerberos 服务可以配置为使用许多不同的后端作为数据存储。在本文中,LDAP 已被用作 Kerberos 密钥和数据的持久存储。
历史
- 原始版本(2016 年 9 月 30 日)
- 更新了拼写错误和语法错误(2016 年 10 月 3 日)
- 更新以修复丢失的图表并提供更多有关故障排除的详细信息(2016 年 10 月 4 日)