kerberos

参考:

官网:

https://web.mit.edu/kerberos

部署:

https://blog.csdn.net/weixin_38655836/article/details/91587323   GG

https://www.cnblogs.com/yinzhengjie/p/10765503.html      (上)

https://www.cnblogs.com/yinzhengjie/articles/10483362.html  (下)

高可用:

https://www.cnblogs.com/yinzhengjie/articles/10484790.html

Kerberos的发布页面:https://kerberos.org/dist/index.html

Kerberos的官方文档:http://web.mit.edu/kerberos/krb5-1.17/doc/index.html
Oracle相关的Kerberos文档:https://docs.oracle.com/cd/E26926_01/html/E25889/intro-1.html#scrolltoc

CDH中kerberos概述:

https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/sg_auth_overview.html

 

为CDH启用Kerberos身份验证:

https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/cm_sg_intro_kerb.html

 https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/cm_sg_using_cm_sec_config.html#integrate-kerberos-auth-manually

ldap和kerberos整合:
https://blog.csdn.net/ZhouyuanLinli/article/details/78323331

 


kerberos:

安装:
yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
修改KDC的配置文件:
vim /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88

[realms]
OPAYTEST.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 des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
以上参数说明:
[kdcdefaults]
  该部分包含在此文件中列出的所有通用的配置。
kdc_ports           :指定KDC的默认端口。
kdc_tcp_ports          :指定KDC的TCP协议默认端口。

[realms]
  该部分列出每个领域的配置。
YINZHENGJIE.COM    : 是设定的 realms。名字随意,推荐为大写!,但须与/etc/krb5.conf保持一致。Kerberos 可以支持多个 realms,会增加复杂度。大小写敏感。
master_key_type    : 默认为禁用,但如果需要256为加密,则可以下载Java加密扩展(JCE)并安装。禁用此参数时,默认使用128位加密。
  acl_file        : 标注了 admin 的用户权限的文件,若文件不存在,需要用户自己创建。即该参数允许为具有对Kerberos数据库的管理访问权限的UPN指定ACL。
supported_enctypes   : 指定此KDC支持的各种加密类型。
 admin_keytab      : KDC 进行校验的 keytab。
max_life         : 该参数指定如果指定为2天。这是票据的最长存活时间。
  max_renewable_life   : 该参数指定在多长时间内可重获取票据。
dict_file         : 该参数指向包含潜在可猜测或可破解密码的文件。

配置KDC服务的权限管理文件:
#我们指定*/admin@OPAYTEST.COM用户为管理员用户!拥有全部权限,注意这个通配符“*”,你懂的。
vim /var/kerberos/krb5kdc/kadm5.acl     
*/admin@OPAYTEST.COM *


以上参数说明:
上述参数只有两列,第一列为用户名,第二列为权限分配。
文件格式是:Kerberos_principal permissions [target_principal] [restrictions],下面是对上面的文件编写参数说明。
*/admin@OPAYTEST.COM :表示以"/admin@OPAYTEST.COM"结尾的用户。
*            :表示UNP可以执行任何操作,因为权限为所有权限

修改Kerberos的配置文件信息(包含KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。)
vim /etc/krb5.conf
# Configuration snippets may be placed in this directory as well
includedir /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 = /etc/pki/tls/certs/ca-bundle.crt
default_realm = OPAYTEST.COM
#default_ccache_name = KEYRING:persistent:%{uid}

[realms]
OPAYTEST.COM = {
kdc = zhep-opay-temp-1.novalocal:88
admin_server = zhep-opay-temp-1.novalocal:749
default_domain = OPAYTEST.COM
}

[domain_realm]
.opaytest.com = OPAYTEST.COM
opaytest.com = OPAYTEST.COM

[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

以上相关配置参数说明:
[logging]:
  Kerberos守护进程的日志记录方式。换句话说,表示 server 端的日志的打印位置
default :默认的krb5libs.log日志文件存放路径
kdc :默认的krb5kdc.log日志文件存放路径
admin_server :默认的kadmind.log日志文件存放路径

[libdefaults]:
  Kerberos使用的默认值,当进行身份验证而未指定Kerberos域时,则使用default_realm参数指定的Kerberos域。即每种连接的默认配置,需要注意以下几个关键的配置:
dns_lookup_realm :DNS查找域名,我们可以理解为DNS的正向解析,该功能我没有去验证过,默认禁用。(我猜测该功能和domain_realm配置有关)
ticket_lifetime :凭证生效的时限,设置为7天。
rdns :我理解是和dns_lookup_realm相反,即反向解析技术,该功能我也没有去验证过,默认禁用即可。(我猜测该功能和domain_realm配置有关)
pkinit_anchors :在KDC中配置pkinit的位置,该参数的具体功能我没有做进一步验证。
default_realm = YINZHENGJIE.COM :设置 Kerberos 应用程序的默认领域。如果您有多个领域,只需向 [realms] 节添加其他的语句。其中YINZHENGJIE.COM可以为任意名字,推荐为大写。必须跟要配置的realm的名称一致。
default_ccache_name: :顾名思义,默认的缓存名称,不推荐使用该参数。
  
   renew_lifetime :凭证最长可以被延期的时限,一般为7天。当凭证过期之后,对安全认证的服务的后续访问则会失败。
   forwardable :如果此参数被设置为true,则可以转发票据,这意味着如果具有TGT的用户登陆到远程系统,则KDC可以颁发新的TGT,而不需要用户再次进行身份验证。
   renewable :是否允许票据延迟

[realms]:
  域特定的信息,例如域的Kerberos服务器的位置。可能有几个,每个域一个。可以为KDC和管理服务器指定一个端口。如果没有配置,则KDC使用端口88,管理服务器使用749。即列举使用的 realm域。
  kdc :代表要KDC的位置。格式是 机器:端口
  admin_server :代表admin的位置。格式是 机器:端口
default_domain :顾名思义,指定默认的域名。

[domain_realm]:
  指定DNS域名和Kerberos域名之间映射关系。指定服务器的FQDN,对应的domain_realm值决定了主机所属的域。
  
[kdc]:
  kdc的配置信息。即指定kdc.conf的位置。
  profile :kdc的配置文件路径,默认值下若无文件则需要创建。

初始化KDC数据库:
kdb5_util create -r OPAYTEST.COM -s     
#注意,-s选项指定将数据库的主节点密钥存储在文件中,从而可以在每次启动KDC时自动重新生成主节点密钥。记住主密钥,稍后会使用。
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'OPAYTEST.COM',
master key name 'K/M@OPAY.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:    opaytest99                   
#这里需要输入一个管理KDC服务器的密码!千万别忘记了,忘记的话你就只能重新初始化KDC数据库啦!(如果遇到数据库已经存在的提示,可以把/var/kerberos/krb5kdc/目录下的principal的相关文件都删除掉。默认的数据库名字都是principal。可以使用-d指定数据库名字。)
Re-enter KDC database master key to verify:

ll -a /var/kerberos/krb5kdc/        #当我们创建Kerberos数据库成功后,默认会在该目录下创建以下5个文件
total 36
drwxr-xr-x 2 root root 4096 May 30 16:26 .
drwxr-xr-x. 4 root root 4096 May 30 16:20 ..
-rw------- 1 root root 80 May 30 16:26 .k5.OPAYTEST.COM #存储文件k5.YINZHENGJIE.COM,它默认是隐藏文件
-rw------- 1 root root 26 May 30 16:25 kadm5.acl                 #定义管理员权限的配置文件
-rw------- 1 root root 422 May 30 16:25 kdc.conf                 #KDC的主配置文件
-rw------- 1 root root 8192 May 30 16:26 principal                 #Kerberos数据库文件
-rw------- 1 root root 8192 May 30 16:26 principal.kadm5              #Kerberos数据库管理文件
-rw------- 1 root root 0 May 30 16:26 principal.kadm5.lock           #数据库锁管理文件
-rw------- 1 root root 0 May 30 16:26 principal.ok               #Kerberos数据库文件

启动KDC服务器:
systemctl enable krb5kdc
systemctl start krb5kdc
systemctl status krb5kdc
启动Kerberos服务器
systemctl start kadmin

KDC 服务器上创建超级管理员账户
kadmin.local
Authenticating as principal root/admin@OPAYTEST.COM with password.
kadmin.local:
kadmin.local: addprinc root/admin        
#我们为KDC添加一个管理员用户,关于管理员规则我们以及在"/var/kerberos/krb5kdc/kadm5.acl"中定义的。细心的小伙伴发现,我们写的是"root/admin",但是创建用户却显示的是"root@admin@OPAYTEST.COM"
WARNING: no policy specified for root/admin@OPAYTEST.COM; defaulting to no policy
Enter password for principal "root/admin@OPAYTEST.COM": opaytest99
Re-enter password for principal "root/admin@OPAYTEST.COM": opaytest99
Principal "root/admin@OPAYTEST.COM" created.
kadmin.local:
kadmin.local: listprincs
K/M@OPAYTEST.COM
kadmin/admin@OPAYTEST.COM
kadmin/changepw@OPAYTEST.COM
kadmin/zhep-opay-temp-1.novalocal@OPAYTEST.COM
kiprop/zhep-opay-temp-1.novalocal@OPAYTEST.COM
krbtgt/OPAYTEST.COM@OPAYTEST.COM
root/admin@OPAYTEST.COM
kadmin.local:
kadmin.local: quit


#为所有节点,包括manager节点安装客户端
yum install -y krb5-libs krb5-workstation
#将服务器端的krb5.conf配置文件拷贝到所有节点的/etc目录下:
/etc/krb5.conf /etc/

客户端配置文件和服务段同步后,进行登陆,验证是否可以成功登陆
klist
klist: No credentials cache found (filename: /tmp/krb5cc_0)

kinit root/admin      #我们在当前终端使用root/admin@OPAYTEST.COM用户登陆成功啦!
Password for root/admin@OPAYTEST.COM:
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: root/admin@OPAYTEST.COM

Valid starting Expires Service principal
04/30/2019 18:29:43 05/01/2019 18:29:43 krbtgt/OPAYTEST.COM@OPAYTEST.COM

在KDC中给Cloudera Manager添加管理员账号
kadmin.local
addprinc cloudera-scm/admin@OPAYTEST.COM


三.Kerberos 一些基本操作命令
参考:https://www.cnblogs.com/yinzhengjie/p/10765503.html
使用kadmin.local命令进入本地管理员模式
kadmin.local
Authenticating as principal root/admin@OPAYTEST.COM with password.
kadmin.local:
kadmin.local: ?      #输入“?”可以查看命令列表,如下所示所示。
Available kadmin.local requests:
查看已经存在的凭据
listprincs
创建凭据
addprinc -randkey hdfs/zhep-opay-temp-1.novalocal
删除凭据
delprinc hdfs/zhep-opay-temp-1.novalocal
导出某个用户的keytab证书(使用xst命令或者ktadd命令)
ktadd -k /root/node103.keytab hdfs/node103.yinzhengjie.org.cn
xst -k /root/node103.keytab-v2 hdfs/node103.yinzhengjie.org.cn
linux系统下查看当前客户端认证用户
klist
删除当前的认证的缓存
kdestroy

addprinc -randkey hdfs/zhep-opay-temp-1.novalocal
addprinc -randkey hive/zhep-opay-temp-1.novalocal
addprinc -randkey oozie/zhep-opay-temp-1.novalocal
addprinc -randkey hue/zhep-opay-temp-1.novalocal
addprinc -randkey sentry/zhep-opay-temp-1.novalocal

 

在CM中启用kerberros服务:

 https://blog.csdn.net/weixin_38655836/article/details/91587323


启用前后凭据的对比:
kadmin.local: listprincs
HTTP/zhep-opay-temp-3.novalocal@OPAYTEST.COM
HTTP/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
K/M@OPAYTEST.COM
cloudera-scm/admin@OPAYTEST.COM
kadmin/admin@OPAYTEST.COM
kadmin/changepw@OPAYTEST.COM
krbtgt/OPAYTEST.COM@OPAYTEST.COM
root/admin@OPAYTEST.COM
kadmin.local: listprincs
HTTP/zhep-opay-temp-1.novalocal@OPAYTEST.COM
HTTP/zhep-opay-temp-2.novalocal@OPAYTEST.COM
HTTP/zhep-opay-temp-3.novalocal@OPAYTEST.COM
HTTP/zhep-opay-temp-4.novalocal@OPAYTEST.COM
HTTP/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
K/M@OPAYTEST.COM
cloudera-scm/admin@OPAYTEST.COM
hdfs/zhep-opay-temp-1.novalocal@OPAYTEST.COM
hdfs/zhep-opay-temp-2.novalocal@OPAYTEST.COM
hdfs/zhep-opay-temp-3.novalocal@OPAYTEST.COM
hdfs/zhep-opay-temp-4.novalocal@OPAYTEST.COM
hdfs/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
hive/zhep-opay-temp-1.novalocal@OPAYTEST.COM
hive/zhep-opay-temp-2.novalocal@OPAYTEST.COM
hive/zhep-opay-temp-3.novalocal@OPAYTEST.COM
hive/zhep-opay-temp-4.novalocal@OPAYTEST.COM
hive/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
httpfs/zhep-opay-temp-1.novalocal@OPAYTEST.COM
hue/zhep-opay-temp-1.novalocal@OPAYTEST.COM
hue/zhep-opay-temp-2.novalocal@OPAYTEST.COM
kadmin/admin@OPAYTEST.COM
kadmin/changepw@OPAYTEST.COM
krbtgt/OPAYTEST.COM@OPAYTEST.COM
mapred/zhep-opay-temp-1.novalocal@OPAYTEST.COM
oozie/zhep-opay-temp-1.novalocal@OPAYTEST.COM
root/admin@OPAYTEST.COM
sentry/zhep-opay-temp-1.novalocal@OPAYTEST.COM
yarn/zhep-opay-temp-1.novalocal@OPAYTEST.COM
yarn/zhep-opay-temp-2.novalocal@OPAYTEST.COM
yarn/zhep-opay-temp-3.novalocal@OPAYTEST.COM
yarn/zhep-opay-temp-4.novalocal@OPAYTEST.COM
yarn/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
zookeeper/zhep-opay-temp-2.novalocal@OPAYTEST.COM
zookeeper/zhep-opay-temp-3.novalocal@OPAYTEST.COM
zookeeper/zhep-opay-temp-4.novalocal@OPAYTEST.COM

踏过的坑:

见笔记--CDH续--日常管理

 

posted on 2019-09-22 17:51  锋锋2019  阅读(736)  评论(0编辑  收藏  举报

导航