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续--日常管理
                    
                
                
            
        
浙公网安备 33010602011771号