Kerberos如何配置弱口令字典
1 弱口令字典
FusionInsight Manager提供统一的弱口令校验功能和弱口令字典维护功能,在用户设置密码时进行弱口令校验,禁止使用弱口令字典中的字符串。
当使用了弱口令密码,系统会提示如下图所示的错误。
2 Kerberos配置
关于kerberos弱口令字典如何配置,需要先了解kerberos配置文件kdc.conf和krb5.conf。
kerberos服务端配置主要在 kdc.conf 文件中。该文件在 Red Hat/CentOS 系统中的默认位置/var/kerberos/krb5kdc/。默认的kerberos客户端配置文件通常被命名为krb5.conf,在UNIX/Linux系统的 /etc/ 目录下,也可以通过设置环境变量KRB5_CONFIG修改krb5.conf默认路径。客户端应用(包括 kinit 工具)需要使用 Kerberos 时,随时读取krb5.conf。
当前华为云未使用开源kerberos,所以,kerberos组件未存放于默认路径,且初始krb5.conf和kdc.conf共用模板。在此文中重点介绍krb.conf。
krb5.conf文件包含kerberos配置信息,包括KDC和admin服务器位置,当前领域和kerberos应用的默认值,以及主机名到kerberos领域的映射。
华为云当前krb5.conf配置文件如下:
该例中有几个不同的节。第一节是kdcdefaults,包含的配置适用于下面列出的所有域,除非某个域的配置包含同样配置项的值。配置项 kdc_ports和kdc_tcp_ports 分别指定了 KDC 监听的 UDP 和 TCP 端口;第二节是libdefaults,包括通用的默认配置信息。第三节是realms,包含了使用该KDC作为服务器的所有域。一个 KDC 可以支持多个域;第四节是 logging,其含义不言而喻。它定义了会产生日志的各种 Kerberos 组件的日志文件存放位置。
[libdefaults]
default_realm
该字段定义了没有提供任何域的情况下应该使用什么Kerberos域。若是没有设置该值,在调用程序,比如kint时,必须为每个kerberos对象都指定一个域。
udp_preference_limit
该项指定了UDP包的最大值,超过该值后将切换为TCP。要想强制使用 TCP,应将该值设为 1。
dns_lookup_kdc
可以用DNS寻找KDC的位置。
dns_lookup_realm
可以用DNS指定使用哪个Kerberos域。
[realms]
kdc
为该领域运行KDC的主机的名称或地址。可以包括一个可选的端口号,与主机名用冒号分隔。如果名称或地址包含冒号(例如,如果它是IPv6地址),请将其括在方括号中,以将冒号与端口分隔符区分开来。要使您的计算机能够与每个域的KDC通信,必须在配置文件的每个领域子节中指定此标记的值,或者必须有DNS SRV记录指定KDC。
admin_server
标识正在运行管理服务器的主机。通常,这是主Kerberos服务器。必须为此标记指定一个值,才能与领域的kadmind服务器通信。
kpasswd_server
指向执行所有密码更改的服务器。如果没有这样的条目,将查询DNS(除非dns_lookup_kdc禁止)。最后,将尝试admin_server主机上的端口464。
kpasswd_port
指定kadmind守护程序侦听此领域的密码更改请求的端口。kpasswd_listen条目中指定的端口号将覆盖此端口号。密码更改请求默认分配的端口为464。
database_module
此关系指示在[dbmodules]下可加载数据库使用的数据库特定参数的配置节的名称。默认值为域名。如果此配置节不存在,则所有数据库参数都将使用默认值。
kadmind_port
指定kadmind守护程序要侦听此领域的端口。kadmind_listen条目中指定的端口号将覆盖此端口号。kadmind默认分配的端口为749。
kadmind_listen
指定kadmind程序的kadmin RPC监听地址或者端口。每个条目可以是接口地址、端口号或由冒号分隔的地址和端口号。如果地址包含冒号,请将其括在方括号中。如果未指定地址,则使用通配符地址。如果kadmind无法绑定到任何指定的地址,它将无法启动。默认值是绑定到kadmind_port中指定的端口或标准kadmin端口(749)。
supported_enctypes
该项指定了 KDC 支持的所有加密类型。与 KDC 交互时,客户端必须支持该项列出的加密类型中的至少一种。谨慎使用 DES 等弱加密类型,因为这种加密很容易被攻破。
acl_file
该项指定了管理服务用于进行访问控制的文件位置。acl_file所在位置(通常是 kadm5.acl 文件)用于控制哪些用户具有管理kerberos数据库的权限。kerberos数据库管理员由两条不同但相关的组件控制:kadmin.local和kadmin。前者是允许KDC服务器的root用户修改kerberos数据库的实用工具,顾名思义,它只能够由Kerberos 数据库所在机器的root用户执行。想要远程管理kerberos数据库的管理员必须使用kadmin服务器。kadmin服务器是一个允许远程连接并管理kerberos数据库的守护进程,这也是 kadm5.acl 文件发挥作用的地方。kadmin工具使用kerberos认证,而kadm5.acl文件则指定了哪些UPN被允许执行特权功能。
dict_file
该项指定了包含不允许用作密码的单词的文件,这些密码是容易被破解/猜解的。文件要求每一行只有一个字符串,无额外空格。若principal没有指定密码策略,则不会执行密码字典校验。
key_stash_file
指定主密钥存储的位置(通过kdb5_util stash)。默认值为LOCALSTATEDIR/krb5kdc/.k5.REALM,其中REALM是Kerberos领域。
3 弱口令字典配置
kdc.conf和krb5.conf文件中指定dict_file路径,并将易破解密码按照文件要求存放于dict_file中,修改密码时就会校验,是否是常用密码。
Password quality interface (pwqual)接口允许模块控制用户更改密码时允许的密码。有关pwqual接口的详细说明,请参见头文件<krb5/pwqual_plugin.h>。主要的pwqual方法是check,它接收密码作为输入,并返回成功(0)或KADM5_PASS_Q_失败代码,具体取决于是否满足密码策略。常见的错误码有:KADM5_PASS_Q_TOOSHORT(密码长度太短),KADM5_PASS_REUSE(密码重复使用次数校验),KADM5_PASS_Q_CLASS(密码组成字符类型校验),KADM5_PASS_Q_DICT(弱口令字典密码),KADM5_PASS_TOOSOON
- 点赞
- 收藏
- 关注作者
评论(0)