Kerberos搭建

本文详细介绍了如何搭建Kerberos Server和客户端,包括安装规划、配置Kerberos相关文件、初始化数据库、创建管理员账户、启动服务器、同步客户端配置及执行常见操作。通过kadmin.local进行权限管理,使用kinit、klist等工具验证认证和授权。
摘要由CSDN通过智能技术生成

1. 安装规划

组件版本
操作系统Centos 7.6
操作用户root
KDC,AS,TGSnode135
Kerberos Agentnode135 node136…

2. 搭建Kerberos Server

2.1 使用yum安装Kerberos Server的套件

yum install -y krb5-libs krb5-server krb5-workstation

2.2 配置 /etc/krb5.conf

  • vim /etc/krb5.conf

注意: default_ccache_name 一定要注释掉!!! 否者hadoop指令会报错:

# 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 = 2h
 renew_lifetime = 1d
 forwardable = true
 rdns = false
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
 default_realm = HC.CN
 #default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 HC.CN = {
  kdc = node135:88
  admin_server = node135:789
}

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

[libdefaults]:
   Kerberos使用的默认值,当进行身份验证而未指定Kerberos域时,则使用default_realm参数指定的Kerberos域。即每种连接的默认配置,需要注意以下几个关键的配置:
    ticket_lifetime                 :凭证生效的时限,设置为1天。
    default_realm = EXAMPLE.COM :设置 Kerberos 应用程序的默认领域。如果您有多个领域,只需向 [realms] 节添加其他的语句。其中EXAMPLE.COM可以为任意名字,推荐为大写。必须跟要配置的realm的名称一致。
    default_ccache_name:           : 默认的缓存名称,[  一定要注释掉!!!!     ] 。
   renew_lifetime                  :凭证最长可以被延期的时限,一般为7天。当凭证过期之后,对安全认证的服务的后续访问则会失败。
   forwardable                     :如果此参数被设置为true,则可以转发票据,这意味着如果具有TGT的用户登陆到远程系统,则KDC可以颁发新的TGT,而不需要用户再次进行身份验证。
   renewable                       :是否允许票据延迟

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

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

2.3 配置 /var/kerberos/krb5kdc/kdc.conf

  • vim /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 HC.CN = {
  kadmind_port = 749
  #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
 }
  • 参数说明

注:这里需要分发krb5.conf至所有client主机

[kdcdefaults]  该部分包含在此文件中列出的所有通用的配置。
   kdc_ports               :指定KDC的默认端口。
   kdc_tcp_ports            :指定KDC的TCP协议默认端口。

[realms]  该部分列出每个领域的配置。
   EXAMPLE.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         : 该参数指向包含潜在可猜测或可破解密码的文件。

2.4 配置 /var/kerberos/krb5kdc/kadm5.acl

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

2.5 初始化Kerberos的数据库

kdb5_util create -s -r HC.CN
  • 其中EXAMPLE.COM 是对应的域,如果你的不同请修改

  • 然后命令要求设置数据库master的密码,要求输入两次,输入 krb5kdc(自行定义) 即可 .

  • 这样得到 数据库master账户: K/M@EXAMPLE.COM* , 密码: krb5kdc(自行定义)

  • 重新初始化数据库异常: 清理掉 /var/kerberos/krb5kdc 目录下的principal * 文件即可.

异常信息: kdb5_util: Cannot open DB2 database '/var/kerberos/krb5kdc/principal': File exists while creating database '/var/kerberos/krb5kdc/principal'

2.6 创建HC.CN 域内的管理员

  • 执行:kadmin.local 进入 kerberos 的 admin 命令行界面
# 输入如下内容,添加一个用户
addprinc root/admin@EXAMPLE.COM
# 要求输入密码,输入root作为密码(可自行设置)
# 上面的账户就作为EXAMPLE.COM的管理员账户存在 (满足 */admin@EXAMPLE.COM 的规则 拥有全部权限)
# 再创建一个 测试的管理员用户
addprinc krbtest/admin@EXAMPLE.COM # 同样满足 */admin@EXAMPLE.COM 密码设置为krbtest
# 查看当前拥有的所有用户
listprincs
# 退出操作
quit
  • 名词解释: principal

nn/master01@EXAMPLE.COM 就表示
nn 这个账户 只能在master01机器登录 EXAMPLE.COM 这个域

可以当作是用户的意思 一个principal由3个部分组成,如下:
nn/master01@EXAMPLE.COM
也就是 account/instance@realm
其中account 表示账户名 或者服务类型
instance表示实例,一般为主机名表示 属于这个主机名下的某个账户
realm 就是域 如 EXAMPLE.COM

2.7 启动KDC服务器

# 启用krb5kdc
systemctl enable krb5kdc 

# 重启
systemctl restart krb5kdc 

# 启动
systemctl start krb5kdc 

# 停止
systemctl stop krb5kdc 

#查看状态
systemctl status krb5kdc

#设置为开机启动
systemctl enable krb5kdc.service

2.8 启动Kerberos服务器

  • 可能会遇到Permission denied - Cannot bind server sock的问题
  • 临时执行命令设置: setenforce 0
# 启用kadmin
systemctl enable kadmin 

# 重启
systemctl restart kadmin 

# 启动
systemctl start kadmin 

# 停止
systemctl stop kadmin 

#查看状态
systemctl status kadmin


#设置为开机启动
systemctl enable kadmin.service

3. 搭建Kerberos 客户端

3.1 在所有的需要开启kerberos的物理机均执行:

yum -y install krb5-libs krb5-workstation

3.2 同步krb5.conf配置文件

  • 从server机器将 /etc/krb5.conf 复制到各个客户端同样的位置

3.3. 测试登录admin

  • 执行 kinit krbtest/admin@EXAMPLE.COM 输入密码
    正确的结果就是没有任何反应
    然后输入 klist
    正确应该可以得到如下输出:
[root@master01 krb5kdc]# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: krbtest/admin@EXAMPLE.COM

Valid starting       Expires              Service principal
2021-03-26T15:40:57  2021-03-27T15:40:57  krbtgt/EXAMPLE.COM@EXAMPLE.COM

4. KDC常用操作

4.1 指令预览

1) kadmin.local:打开KDC控制台, 需要 root权限 . 输入“?”可以查看命令列表。
2) [ addprinc <principal>]:添加Principal, 在KDC控制台使用, 执行后需要两次输入该Principal的密码。
3) [delprinc <principal>]:删除Principal, 在KDC控制台使用, 执行后需要确认是否删除。
4) [xst -k <keytab file path> <principal>] : 导出指定Principal到指定 Keytab文件, 在KDC控制台使用。 如果指定的Keytab文件已存在, 则会将指定Principal信息合并至 Keytab文件中。
5) [modprinc -<parameter> <parameter value> <principal>]:针对指定的Principal进行某项参数的修改, 在KDC控制台使用。 需要注意的是, 使用 modprinc命令修改的参数,优先级会比kdc.conf中的高。
6) [getprinc <principal>]: 查 看指 定Principal的 信 息, 包括每种密 钥的加 密类型、KVNO标签等, 在KDC控制台使用。
7) [listprincs]:列出所有Principal, 在KDC控制台使用。

4.2 进入本地管理员模式[ kadmin.local]

  • kadmin.local
[root@master01 krb5kdc]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  listprincs
K/M@EXAMPLE.COM
kadmin/admin@EXAMPLE.COM
kadmin/changepw@EXAMPLE.COM
kadmin/master01@EXAMPLE.COM
kiprop/master01@EXAMPLE.COM
krbtest/admin@EXAMPLE.COM
krbtgt/EXAMPLE.COM@EXAMPLE.COM
root/admin@EXAMPLE.COM
kadmin.local:

4.3 查看已存在的凭据[listprincs]

  • listprincs
[root@master01 krb5kdc]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  listprincs
K/M@EXAMPLE.COM
kadmin/admin@EXAMPLE.COM
kadmin/changepw@EXAMPLE.COM
kadmin/master01@EXAMPLE.COM
kiprop/master01@EXAMPLE.COM
krbtest/admin@EXAMPLE.COM
krbtgt/EXAMPLE.COM@EXAMPLE.COM
root/admin@EXAMPLE.COM
kadmin.local:

4.4 创建凭据[addprinc]

  • addprinc -randkey test/node135@HC.CN
[root@master01 krb5kdc]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  listprincs
K/M@EXAMPLE.COM
kadmin/admin@EXAMPLE.COM
kadmin/changepw@EXAMPLE.COM
kadmin/master01@EXAMPLE.COM
kiprop/master01@EXAMPLE.COM
krbtest/admin@EXAMPLE.COM
krbtgt/EXAMPLE.COM@EXAMPLE.COM
root/admin@EXAMPLE.COM
kadmin.local:
kadmin.local:  addprinc -randkey test/master01@EXAMPLE.COM
WARNING: no policy specified for test/master01@EXAMPLE.COM; defaulting to no policy
Principal "test/master01@EXAMPLE.COM" created.
kadmin.local:
kadmin.local:  listprincs
K/M@EXAMPLE.COM
kadmin/admin@EXAMPLE.COM
kadmin/changepw@EXAMPLE.COM
kadmin/master01@EXAMPLE.COM
kiprop/master01@EXAMPLE.COM
krbtest/admin@EXAMPLE.COM
krbtgt/EXAMPLE.COM@EXAMPLE.COM
root/admin@EXAMPLE.COM
test/master01@EXAMPLE.COM
kadmin.local:

4.5 删除凭据 [delprinc]

kadmin.local:  delprinc test/master01@EXAMPLE.COM
Are you sure you want to delete the principal "test/master01@EXAMPLE.COM"? (yes/no): yes
Principal "test/master01@EXAMPLE.COM" deleted.
Make sure that you have removed this principal from all ACLs before reusing.
kadmin.local:  listprincs
K/M@EXAMPLE.COM
kadmin/admin@EXAMPLE.COM
kadmin/changepw@EXAMPLE.COM
kadmin/master01@EXAMPLE.COM
kiprop/master01@EXAMPLE.COM
krbtest/admin@EXAMPLE.COM
krbtgt/EXAMPLE.COM@EXAMPLE.COM
root/admin@EXAMPLE.COM
kadmin.local:

4.6 导出某个用户的keytab证书 [ ktadd / xst]

4.6.1 使用ktadd 导出
kadmin.local: ktadd -k /opt/keytab/root.keytab root/admin@EXAMPLE.COM
Entry for principal root/admin@EXAMPLE.COM with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 2, encryption type camellia256-cts-cmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 2, encryption type camellia128-cts-cmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 2, encryption type des-hmac-sha1 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 2, encryption type des-cbc-md5 added to keytab WRFILE:/opt/keytab/root.keytab.
kadmin.local:
kadmin.local:
4.6.2 使用xst 导出
kadmin.local:  xst -k  /opt/keytab/root.keytab root/admin@EXAMPLE.COM
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type des3-cbc-sha1 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type arcfour-hmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type camellia256-cts-cmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type camellia128-cts-cmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type des-hmac-sha1 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type des-cbc-md5 added to keytab WRFILE:/opt/keytab/root.keytab.
kadmin.local:
4.6.3 验证
[root@master01 keytab]# klist -k -e -t /opt/keytab/root.keytab
Keytab name: FILE:root.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des3-cbc-sha1)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (arcfour-hmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (camellia256-cts-cmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (camellia128-cts-cmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des-hmac-sha1)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des-cbc-md5)

4.7 导出多个用户的keytab文件

kadmin.local:
kadmin.local:  xst -norandkey -k /opt/keytab/root.keytab root/admin@EXAMPLE.COM krbtest/admin@EXAMPLE.COM
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type des3-cbc-sha1 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type arcfour-hmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type camellia256-cts-cmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type camellia128-cts-cmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type des-hmac-sha1 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal root/admin@EXAMPLE.COM with kvno 4, encryption type des-cbc-md5 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal krbtest/admin@EXAMPLE.COM with kvno 1, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal krbtest/admin@EXAMPLE.COM with kvno 1, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal krbtest/admin@EXAMPLE.COM with kvno 1, encryption type des3-cbc-sha1 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal krbtest/admin@EXAMPLE.COM with kvno 1, encryption type arcfour-hmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal krbtest/admin@EXAMPLE.COM with kvno 1, encryption type camellia256-cts-cmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal krbtest/admin@EXAMPLE.COM with kvno 1, encryption type camellia128-cts-cmac added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal krbtest/admin@EXAMPLE.COM with kvno 1, encryption type des-hmac-sha1 added to keytab WRFILE:/opt/keytab/root.keytab.
Entry for principal krbtest/admin@EXAMPLE.COM with kvno 1, encryption type des-cbc-md5 added to keytab WRFILE:/opt/keytab/root.keytab.
kadmin.local:
  • 查看
[root@master01 keytab]# klist -k -e -t /opt/keytab/root.keytab
Keytab name: FILE:root.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des3-cbc-sha1)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (arcfour-hmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (camellia256-cts-cmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (camellia128-cts-cmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des-hmac-sha1)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des-cbc-md5)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (des3-cbc-sha1)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (arcfour-hmac)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (camellia256-cts-cmac)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (camellia128-cts-cmac)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (des-hmac-sha1)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (des-cbc-md5)

4.8 获取凭据信息[getprinc]

[root@master01 krb5kdc]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:   getprinc  root/admin@EXAMPLE.COM
Principal: root/admin@EXAMPLE.COM
Expiration date: [never]
Last password change: 五 3月 26 18:00:07 CST 2021
Password expiration date: [never]
Maximum ticket life: 1 day 00:00:00
Maximum renewable life: 0 days 00:00:00
Last modified: 五 3月 26 18:00:07 CST 2021 (root/admin@EXAMPLE.COM)
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 8
Key: vno 4, aes256-cts-hmac-sha1-96
Key: vno 4, aes128-cts-hmac-sha1-96
Key: vno 4, des3-cbc-sha1
Key: vno 4, arcfour-hmac
Key: vno 4, camellia256-cts-cmac
Key: vno 4, camellia128-cts-cmac
Key: vno 4, des-hmac-sha1
Key: vno 4, des-cbc-md5
MKey: vno 1
Attributes:
Policy: [none]
kadmin.local:

4.9 退出 [quit]

[root@master01 krb5kdc]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  listprincs
K/M@EXAMPLE.COM
kadmin/admin@EXAMPLE.COM
kadmin/changepw@EXAMPLE.COM
kadmin/master01@EXAMPLE.COM
kiprop/master01@EXAMPLE.COM
krbtest/admin@EXAMPLE.COM
krbtgt/EXAMPLE.COM@EXAMPLE.COM
root/admin@EXAMPLE.COM
kadmin.local:  quit
[root@master01 krb5kdc]#

5. Client常用操作

5.1 指令预览

1) klist:列出当前系统用户的 Kerberos认证情况。
2) klist -kt <keytab file path>:列出指定 keytab文件中包含的Principal信息, 需要该文件的读权限。
3) kinit <principal>:使用输入密码的方式认证指定的Principal。
4) kinit -kt <keytab file path> <principal>:使用指定 keytab中的指定Principal进行认证, 需要该文件的读权限。
5) kdestory:注销当前已经认证的Principal。
6) ktutil:进入 keytab工具控制台。
7) [list] [1]:列出当前 ktutil中的密钥表。
8) [clear] [clear_list]:清除当前密钥表。
9) [rkt \<keytab file path>]:读取一个keytab中的所有Principal信息到密钥表, 需要有该文件的读权限 , 在ktutil中使用。
10) [wkt \<keytab file path>]:将密钥表中的所有Principal信息写入指定文件中。 如果文件已存在, 则需要该文件的写权限, 信息会附加至文件末, 在ktutil中使用。
11) [addent -password -p \<principal> -k <KVNO> -e <enctype>] : 手 动 添 加一条Principal信息到密钥表 , 执行后需要输入指定Principal的密码。 由于手动添加的信息 ktutil不会进行验证, 因此不推荐使用。
12) [delent \<entity number>]:从密钥表中删除指定行号的Principal信息, 行号可使用list或l命令查看, 在ktutil中使用。
13) [Ir] [Iist_request]:列出所有 ktutil中可用的命令, 在ktutiJ中使用。
14) [quit] [q] [exit]:退出ktutil控制台。

5.2 查看当前客户端认证用户 [klist]

[root@master01 krb5kdc]#
[root@master01 krb5kdc]# klist
Ticket cache: KEYRING:persistent:0:krb_ccache_MkHX3zi
Default principal: root/admin@EXAMPLE.COM

Valid starting       Expires              Service principal
2021-03-26T17:36:05  2021-03-27T17:36:05  krbtgt/EXAMPLE.COM@EXAMPLE.COM
[root@master01 krb5kdc]#

5.3 删除当前的认证的缓存 [ kdestroy]

[root@master01 krb5kdc]# klist
Ticket cache: KEYRING:persistent:0:krb_ccache_MkHX3zi
Default principal: root/admin@EXAMPLE.COM

Valid starting       Expires              Service principal
2021-03-26T17:36:05  2021-03-27T17:36:05  krbtgt/EXAMPLE.COM@EXAMPLE.COM
[root@master01 krb5kdc]# kdestroy
Other credential caches present, use -A to destroy all
[root@master01 krb5kdc]# klist
klist: Credentials cache keyring 'persistent:0:krb_ccache_MkHX3zi' not found
[root@master01 krb5kdc]#

5.4 导出keytab文件 [ktutil ]

[root@master01]# ktutil
ktutil:  add_entry -password -p root/admin@EXAMPLE.COM -k 1 -e aes128-cts-hmac-sha1-96
Password for root/admin@EXAMPLE.COM:
ktutil:  wkt /opt/keytab/root.keytab
ktutil:  q
[root@master01]#

5.5 根据keytab认证用户 [kinit]

[root@master01 krb5kdc]# kinit -kt /opt/keytab/root.keytab  root/admin@EXAMPLE.COM
[root@master01 krb5kdc]# klist
Ticket cache: KEYRING:persistent:0:krb_ccache_MkHX3zi
Default principal: root/admin@EXAMPLE.COM

Valid starting       Expires              Service principal
2021-03-26T18:14:28  2021-03-27T18:14:28  krbtgt/EXAMPLE.COM@EXAMPLE.COM
[root@master01 krb5kdc]#
  • kinit root/admin@EXAMPLE.COM 无法用密码登录.
    遇到上述问题的解决方案(原因:每次生成秘钥文件时,密码可能会进行随机改变,添加"-norandkey"即可解决问题!)
kadmin.local: ktadd -k /opt/keytab/root.keytab -norandkey root/admin@EXAMPLE.COM

5.6 修改Kerberos用户的密码 [kpasswd]

kpasswd root/admin@EXAMPLE.COM

5.7 查看keytab文件中的帐号列表 [klist]

  • klist -ket /opt/keytab/root.keytab
[root@master01 keytab]# klist -ket /opt/keytab/root.keytab
Keytab name: FILE:/opt/keytab/root.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des3-cbc-sha1)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (arcfour-hmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (camellia256-cts-cmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (camellia128-cts-cmac)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des-hmac-sha1)
   4 2021-03-26T18:02:53 root/admin@EXAMPLE.COM (des-cbc-md5)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (des3-cbc-sha1)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (arcfour-hmac)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (camellia256-cts-cmac)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (camellia128-cts-cmac)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (des-hmac-sha1)
   1 2021-03-26T18:02:53 krbtest/admin@EXAMPLE.COM (des-cbc-md5)
[root@master01 keytab]#

5.8 生成dump文件

  • kdb5_util dump /opt/keytab/kerberos
[root@master01 keytab]# kdb5_util dump /opt/keytab/kerberos
[root@master01 keytab]# ll
总用量 16
-rw------- 1 root root 7851 3月  26 18:22 kerberos
-rw------- 1 root root    1 3月  26 18:22 kerberos.dump_ok
-rw------- 1 root root 1098 3月  26 18:02 root.keytab
[root@master01 keytab]#

6. 参考文章

  • https://www.cnblogs.com/swordfall/p/12009716.html
  • https://www.cnblogs.com/yinzhengjie/p/10765503.html

7. 创建简单kinit用户名认证

img

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天写代码了没

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值