掘金 人工智能 01月15日
Centos7.9安装kerberos
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文详细介绍了在CentOS 7.9环境下,如何安装和配置Kerberos服务,并强调了安装顺序的重要性。文章首先阐述了项目背景,即为了支持LDAP协议认证登录,需要在现有HTTP+Shiro+MySQL认证体系中集成Kerberos。随后,详细讲解了Kerberos服务端和客户端的安装步骤,包括必要的软件安装、配置文件修改、数据库初始化、服务启动以及管理员principal的创建。此外,还提供了Kerberos功能验证的方法,并强调了配置文件的同步。文章旨在帮助读者避免因配置顺序错误而导致的问题,并为后续OpenLDAP集成Kerberos奠定基础。

🔑 **Kerberos安装部署**:在CentOS 7.9上安装Kerberos服务端,包括`krb5-server`和`openldap-clients`,并详细说明了`krb5.conf`和`kdc.conf`两个关键配置文件的修改,强调了域名替换和重要参数的意义,如`default_realm`、`ticket_lifetime`和`max_renewable_life`。

🛡️ **配置详解**:深入解析了`kdc.conf`中的`acl_file`、`admin_keytab`和`supported_enctypes`等参数,并指出`aes256-cts`可能导致的Java兼容性问题,建议移除。同时,详细说明了`kadm5.acl`文件的配置,用于允许管理员远程登录。

🗄️ **数据库初始化与服务启动**:介绍了如何初始化Kerberos数据库,并强调了数据库密码的重要性。文章还提供了启动Kerberos服务(`krb5kdc`和`kadmin`)的命令,并设置了开机自启动。此外,还讲解了如何创建Kerberos管理员principal(`root/admin`),并使用`kinit`和`klist`进行验证。

💻 **客户端配置与验证**: 阐述了Kerberos客户端的安装步骤,包括安装`krb5-devel`和`krb5-workstation`,并强调了客户端和服务端`krb5.conf`文件同步的重要性,最后通过`kinit`命令验证Kerberos安装是否成功。

@[toc]一、背景亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。项目背景:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。举例说明:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。需要安装openldap+kerberos,且ldap和kerberos安装在同一台服务器上,当前版本如下:centos 7.9openldap 2.4.44phpldapadmin 1.2.5服务器IP:10.110.38.162Kerberos :Kerberos 5 release 1.15.1本博客参考的博客是:注意:这个文章是真实可行的,但是有执行顺序,一定要先安装“Openldap安装部署”+“Kerberos基本原理、安装部署及用法”之后,确保安装无误后再去安装“Openldap集成Kerberos”。我当时犯的毛病就是前两个没完全照着文档安装完成就直接安装的第三个,然后出现各种问题,我还不知道为点啥。人家博客都说了要先安装前两个,再看这个“Kerberos基本原理、安装部署及用法”。所以一定要注意安装顺序,遇到不懂得配置也没事先照着安。二、Kerberos安装部署2.1kerberos服务端必要软件安装# yum -y install krb5-server openldap-clients在安装完上述的软件之后,会在KDC主机上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf。2.2配置krb5.conf/etc/krb5.conf:包含Kerberos的配置。例如,KDC的位置,Kerberos的admin realms等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。(具体配置请参考附件文件)请替换DOMAIN.COM为自定义域名:(本文档使用的是NODE3.COM)# Configuration snippets may be placed in this directory as wellincludedir /etc/krb5.conf.d/[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log[libdefaults] dns_lookup_realm = false ticket_lifetime = 24h #renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt default_realm = NODE3.COM# default_ccache_name = KEYRING:persistent:%{uid}[realms] NODE3.COM = { # kdc = kdc.node.com # admin_server = kdc.node.com kdc = 127.0.0.1 admin_server = 127.0.0.1 ldap_servers = ldap: # kdc = node3.com:88 # admin_server = node3.com:749 # default_domain = NODE3.COM }[domain_realm] .node3.com = NODE3.COM node3.com = NODE3.COM说明:[logging]:表示server端的日志的打印位置[libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置default_realm = NODE3.COM 默认的realm,必须跟要配置的realm的名称一致。udp_preference_limit = 1 禁止使用udp,可以防止一个Hadoop中的错误ticket_lifetime表明凭证生效的时限,一般为24小时renew_lifetime表明凭证最长可以被延期的时限,一般为一周。当凭证过期之后,对安全认证的服务的后续访问则会失败。  [realms]:列举使用的realm。kdc:代表kdc的位置,格式是:机器hostname或ip地址admin_server:代表admin的位置,格式是:机器hostname或ip地址default_domain:代表默认的域名[appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。  注:这里需要分发krb5.conf至所有client主机2.3配置kdc.conf默认放在/var/kerberos/krb5kdc/kdc.conf[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88[realms] NODE3.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal max_life = 25h max_renewable_life = 8d}说明:NODE3.COM:是设定的realms,名字随意。Kerberos可以支持多个realms,会增加复杂度。一般为大写。max_renewable_life = 8d 涉及到是否能进行ticket的renew必须配置。master_key_type:和supported_enctyps默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,推荐不使用。acl_file:标注了admin的用户权限。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。admin_keytab:KDC进行校验的keytab。supported_enctypes:支持的校验方式。注意把aes256-cts去掉。2.4配置kadm5.acl修改服务端上的配置文件/var/kerberos/krb5kdc/kadm5.acl,以允许具备匹配条件的admin用户进行远程登录权限/admin@NODE3.COM 说明:标注了admin的用户权限,需要用户自己创建。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。最简单的写法是/admin@NODE3.COM 代表名称匹配/admin@NODE3.COM都认为是admin,权限是代表全部权限。2.5创建Kerberos数据库在服务器上对数据库进行初始化,默认的数据库路径为/var/kerberos/krb5kdc,如果需要重建数据库,将该目录下的principal相关的文件删除即可,请牢记数据库密码(为了好记建议密码统一用123456)。kdb5_util create -r NODE3.COM -s说明:[-s] 表示生成stash file,并在其中存储master server key(krb5kdc)[-r] 来指定一个realm name,当krb5.conf中定义了多个realm时使用当Kerberos database创建好了之后,在/var/kerberos/中可以看到生成的principal相关文件2.6启动Kerberos服务# 启动服务命令systemctl start krb5kdcsystemctl start kadmin# 加入开机启动项systemctl enable krb5kdcsystemctl enable kadmin2.7创建Kerberos管理员principal# 需要设置两次密码kadmin.local -q "addprinc root/admin"pincipal的名字的第二部分是admin,那么根据之前配置的kadm5.acl文件,该principal就拥有administrative privileges,这个账号将会被CDH用来生成其他用户/服务的principal。 注意:需要先kinit保证已经有principal缓存。[root@master ~]# kinit root/adminPassword for root/admin@NODE3.COM: [root@master ~]# klist Ticket cache: KEYRING:persistent:0:0Default principal: root/admin@NODE3.COMValid starting Expires Service principal07/14/2020 11:51:17 07/15/2020 11:51:16 krbtgt/NODE3.COM@NODE3.COM renew until 07/21/2020 11:51:16Kerberos客户端支持两种,一是使用principal + Password,二是使用principal + keytab。前者适合用户进行交互式应用,例如hadoop fs -ls 这种,后者适合服务,例如yarn的rm、nm等。principal + keytab就类似于ssh免密码登录,登录时不需要密码了。2.8客户端安装kerberos# yum -y install krb5-devel krb5-workstation在安装完上述的软件之后,在kerberos客户端主机上生成配置文件/etc/krb5.conf。 把服务端的/etc/krb5.conf文件拷贝到其他各节点客户端同路径/etc/krb5.conf中,此操作只适用于集群部署,单机部署可略仅供了解。2.9Kerberos功能验证当出现以上内容证明kerberos安装成功,具体kerberos的其它命令操作可自行查询验证,在此不具体阐述。本人其他相关文章链接1.Centos7.9安装openldap2.Centos7.9安装kerberos3.Openldap集成Kerberos4.Centos7.9安装phpldapadmin5.java连接ldap实现用户查询功能6.java连接kerberos用户认证7.javax.security.auth.login.LoginException: Unable to obtain password from user8.javax.security.auth.login.LoginException: null (68)9.javax.security.auth.login.LoginException: Message stream modified (41)10.javax.security.auth.login.LoginException: Checksum failed11.javax.security.auth.login.LoginException: No CallbackHandler available to garner authentication info12.javax.security.auth.login.LoginException: Cannot locate KDC13.javax.security.auth.login.LoginException: Receive timed out14.java: 无法访问org.springframework.context.ConfigurableApplicationContext15.LDAP: error code 34 - invalid DN16.LDAP: error code 32 - No Such Object17.java: 无法访问org.springframework.ldap.core.LdapTemplate18.windows server2016搭建AD域服务器19.java连接AD(Microsoft Active Directory)模拟用户登录认证@[toc]一、背景亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。项目背景:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。举例说明:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。需要安装openldap+kerberos,且ldap和kerberos安装在同一台服务器上,当前版本如下:centos 7.9openldap 2.4.44phpldapadmin 1.2.5服务器IP:10.110.38.162Kerberos :Kerberos 5 release 1.15.1本博客参考的博客是:注意:这个文章是真实可行的,但是有执行顺序,一定要先安装“Openldap安装部署”+“Kerberos基本原理、安装部署及用法”之后,确保安装无误后再去安装“Openldap集成Kerberos”。我当时犯的毛病就是前两个没完全照着文档安装完成就直接安装的第三个,然后出现各种问题,我还不知道为点啥。人家博客都说了要先安装前两个,再看这个“Kerberos基本原理、安装部署及用法”。所以一定要注意安装顺序,遇到不懂得配置也没事先照着安。二、Kerberos安装部署2.1kerberos服务端必要软件安装# yum -y install krb5-server openldap-clients在安装完上述的软件之后,会在KDC主机上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf。2.2配置krb5.conf/etc/krb5.conf:包含Kerberos的配置。例如,KDC的位置,Kerberos的admin realms等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。(具体配置请参考附件文件)请替换DOMAIN.COM为自定义域名:(本文档使用的是NODE3.COM)# Configuration snippets may be placed in this directory as wellincludedir /etc/krb5.conf.d/[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log[libdefaults] dns_lookup_realm = false ticket_lifetime = 24h #renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt default_realm = NODE3.COM# default_ccache_name = KEYRING:persistent:%{uid}[realms] NODE3.COM = { # kdc = kdc.node.com # admin_server = kdc.node.com kdc = 127.0.0.1 admin_server = 127.0.0.1 ldap_servers = ldap: # kdc = node3.com:88 # admin_server = node3.com:749 # default_domain = NODE3.COM }[domain_realm] .node3.com = NODE3.COM node3.com = NODE3.COM说明:[logging]:表示server端的日志的打印位置[libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置default_realm = NODE3.COM 默认的realm,必须跟要配置的realm的名称一致。udp_preference_limit = 1 禁止使用udp,可以防止一个Hadoop中的错误ticket_lifetime表明凭证生效的时限,一般为24小时renew_lifetime表明凭证最长可以被延期的时限,一般为一周。当凭证过期之后,对安全认证的服务的后续访问则会失败。  [realms]:列举使用的realm。kdc:代表kdc的位置,格式是:机器hostname或ip地址admin_server:代表admin的位置,格式是:机器hostname或ip地址default_domain:代表默认的域名[appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。  注:这里需要分发krb5.conf至所有client主机2.3配置kdc.conf默认放在/var/kerberos/krb5kdc/kdc.conf[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88[realms] NODE3.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal max_life = 25h max_renewable_life = 8d}说明:NODE3.COM:是设定的realms,名字随意。Kerberos可以支持多个realms,会增加复杂度。一般为大写。max_renewable_life = 8d 涉及到是否能进行ticket的renew必须配置。master_key_type:和supported_enctyps默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,推荐不使用。acl_file:标注了admin的用户权限。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。admin_keytab:KDC进行校验的keytab。supported_enctypes:支持的校验方式。注意把aes256-cts去掉。2.4配置kadm5.acl修改服务端上的配置文件/var/kerberos/krb5kdc/kadm5.acl,以允许具备匹配条件的admin用户进行远程登录权限/admin@NODE3.COM 说明:标注了admin的用户权限,需要用户自己创建。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。最简单的写法是/admin@NODE3.COM 代表名称匹配/admin@NODE3.COM都认为是admin,权限是代表全部权限。2.5创建Kerberos数据库在服务器上对数据库进行初始化,默认的数据库路径为/var/kerberos/krb5kdc,如果需要重建数据库,将该目录下的principal相关的文件删除即可,请牢记数据库密码(为了好记建议密码统一用123456)。kdb5_util create -r NODE3.COM -s说明:[-s] 表示生成stash file,并在其中存储master server key(krb5kdc)[-r] 来指定一个realm name,当krb5.conf中定义了多个realm时使用当Kerberos database创建好了之后,在/var/kerberos/中可以看到生成的principal相关文件2.6启动Kerberos服务# 启动服务命令systemctl start krb5kdcsystemctl start kadmin# 加入开机启动项systemctl enable krb5kdcsystemctl enable kadmin2.7创建Kerberos管理员principal# 需要设置两次密码kadmin.local -q "addprinc root/admin"pincipal的名字的第二部分是admin,那么根据之前配置的kadm5.acl文件,该principal就拥有administrative privileges,这个账号将会被CDH用来生成其他用户/服务的principal。 注意:需要先kinit保证已经有principal缓存。[root@master ~]# kinit root/adminPassword for root/admin@NODE3.COM: [root@master ~]# klist Ticket cache: KEYRING:persistent:0:0Default principal: root/admin@NODE3.COMValid starting Expires Service principal07/14/2020 11:51:17 07/15/2020 11:51:16 krbtgt/NODE3.COM@NODE3.COM renew until 07/21/2020 11:51:16Kerberos客户端支持两种,一是使用principal + Password,二是使用principal + keytab。前者适合用户进行交互式应用,例如hadoop fs -ls 这种,后者适合服务,例如yarn的rm、nm等。principal + keytab就类似于ssh免密码登录,登录时不需要密码了。2.8客户端安装kerberos# yum -y install krb5-devel krb5-workstation在安装完上述的软件之后,在kerberos客户端主机上生成配置文件/etc/krb5.conf。 把服务端的/etc/krb5.conf文件拷贝到其他各节点客户端同路径/etc/krb5.conf中,此操作只适用于集群部署,单机部署可略仅供了解。2.9Kerberos功能验证当出现以上内容证明kerberos安装成功,具体kerberos的其它命令操作可自行查询验证,在此不具体阐述。本人其他相关文章链接1.Centos7.9安装openldap2.Centos7.9安装kerberos3.Openldap集成Kerberos4.Centos7.9安装phpldapadmin5.java连接ldap实现用户查询功能6.java连接kerberos用户认证7.javax.security.auth.login.LoginException: Unable to obtain password from user8.javax.security.auth.login.LoginException: null (68)9.javax.security.auth.login.LoginException: Message stream modified (41)10.javax.security.auth.login.LoginException: Checksum failed11.javax.security.auth.login.LoginException: No CallbackHandler available to garner authentication info12.javax.security.auth.login.LoginException: Cannot locate KDC13.javax.security.auth.login.LoginException: Receive timed out14.java: 无法访问org.springframework.context.ConfigurableApplicationContext15.LDAP: error code 34 - invalid DN16.LDAP: error code 32 - No Such Object17.java: 无法访问org.springframework.ldap.core.LdapTemplate18.windows server2016搭建AD域服务器19.java连接AD(Microsoft Active Directory)模拟用户登录认证重要信息

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Kerberos LDAP CentOS 认证 安全
相关文章