Kerberos安装使用

193 阅读3分钟

安装

  • 服务端(只在一个节点上)
sudo yum install -y krb5-server
#安装完成后,配置文件默认在/var/kerberos/krb5kdc/kdc.conf
  • 客户端(每个节点上)
sudo yum install -y krb5-workstation krb5-libs
#安装完成后,配置文件在/etc/krb5.conf

配置

vim /var/kerberos/krb5kdc/kdc.conf
  • 修改配置(可以不修改)
[kdcdefaults]
# KDC服务监听的端口
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
# EXAMPLE.COM 领域名称,一般大写
 EXAMPLE.COM = {
 #指定kerberos主密钥加密算法类型,默认aes256-cts
  #master_key_type = aes256-cts
  #acl文件路径,kerberos通过该文件来确定哪些principal具有哪些权限
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  #存放一个由多行字符串构成的文本文件,该文件中的字符串禁止作为密码使用
  dict_file = /usr/share/dict/words
  # kdc进行校验的keytab,该keytab用于认证管理员的密钥
  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
 }
#客户端相关配置
vim /etc/krb5.conf
  • 修改配置
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

#默认配置即可,KDC和Kadmin服务的log文件路径
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log[表情]dmind.log

[libdefaults]
# 使用主机域名到kerberos doadmin的映射定位KDC
 dns_lookup_realm = false
 # ticket过期时间,超过这个时间ticket需要重新申请或renew
 ticket_lifetime = 24h
 #ticket可进行renew的时间限制
 renew_lifetime = 7d
 # 如果配置为true,在KDC允许的情况下,出事ticket可以被转发
 forwardable = true
 # 是否可使用逆向DNS
 rdns = false
 # 签署KDC证书的根证书
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
 # 指定默认的realm,需要设置,否则后续kerberos不能正确启动
 default_realm = EXAMPLE.COM
# 默认凭证缓存的命名规则,这里需要注释掉,否则后续hdfs客户端不能认证操作hdfs
# default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 EXAMPLE.COM = {
  kdc = hadoop102
  admin_server = hadoop102
 }

[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
  • 将修改的客户端文件分配给其他客户端
  • 服务端配置kadm5.acl文件,用于控制kadmin数据库的访问权限
vim /var/kerberos/krb5kdc/kadm5.acl

#表示名称匹配*/admin@EXAMPLE.COM的Principal都认为是admin管理员角色,拥有全部权限,暂不需要修改
*/admin@EXAMPLE.COM  *

  • 初始化kadmin数据库,在服务端上
sudo kdb5_utl create -s -r EXAMPLE.COM
# 输入两次密码
  • 启动kerberos服务
#启动kerberos服务命令,两个服务也分开启动
systemctl start krb5kdc
systemctl start kadmin
#设置开机自启动
systemctl enable krb5kdc
systemctl enable kadmin
#查看两个服务的状态
systemctl status krb5kdc kadmin

使用

  • kerberos数据库操作
# 服务端使用 
kadmin.local
# 客户端使用
kadmin -p aaa/admin
# 客户端可以通过次方法登陆特定主体
kinit test/admin
# 客户端使用keytab登陆
kinit -t test.keytab
# ? 查看帮助
#添加主体
addprinc admin/admin
#查看主体
listprinc
  • kerberos认证操作
#主体认证
kinit test
#查看认证凭证
klist
#生成keytab文件
xst -norandkey -k /root/test.keytab test@EXAMPLE.COM
#使用keytab进行认证
kinit -kt /root/test.keytab test
#注销
kdestory