Kerberos

Kerberos

1、 几个概念

  • KDC:秘钥分发中心

  • Realm:kerberos管理的领域标识

  • Principal:用户/服务 向kdc注册时候的身份,形式为,主名称/实例名@领域名

     * 主名称:可以是用户名/服务名字
     * 实例名:可以是用户组/主机ip(host)
    

2、KDC

Key Distribute Center。

  • Database(zhangsan/supergroup hdfs/haddop1)

  • AS: Authentication Server(认证服务器)

用于初始化认证,并生成Ticket Granting Ticket (TGT)

  • TGS: Ticket Granting Server(票据授权服务器)

在TGT的基础上生成Service Ticket。一般情况下AS和TGS都在KDC的Server上

3、搭建

//重要的三个配置文件
/etc/krb5.conf
/var/kerberos/krb5kdc/kdc.conf
/var/kerberos/krb5kdc/kadm5.acl

部署

  • 安装KDC

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

  • 每个节点部署客户端(方便其他机器访问KDC)

yum install krb5-libs krb5-workstation -y

修改配置

1、服务端配置
  • 位置:/var/kerberos/krb5kdc/kdc.conf
  • 可以配置多个realms,一般建议配置一个,大写
  • 配置support_enctype去掉aes-2560cts:normal,否则需要下载jar支持这个加密算法。
  • max_life=1d(kinit 后一天内不用认证,超过1d会走的那个认证) max_renewable_life=7d(7d后需要再kinit)
[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 HADOOP.COM = { #是设定的 realms。名字随意。Kerberos 可以支持多个 realms,会增加复杂度。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
  #master_key_type = aes256-cts
  #和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包(后面再做说明)。推荐不使用,并且删除aes256-cts。
  kadmind_port = 749
  acl_file = /var/kerberos/krb5kdc/kadm5.acl #标注了admin的用户权限,需要用户自己创建。文件格式是:Kerberos_principal permissions [target_principal] [restrictions] 支持通配符等。最简单的写法是*/admin@HADOOP.COM *,代表名称匹配*/admin@HADOOP.COM 都认为是admin,权限是 *。代表全部权限。
  dict_file = /usr/share/dict/words
  database_name = /var/kerberos/krb5kdc/principal
  key_stash_file =  /var/kerberos/krb5kdc/.k5.HADOOP.COM
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab #KDC 进行校验的 keytab
  max_life = 24h
  max_renewable_life = 10d #涉及到是否能进行ticket的renwe必须配置
  default_principal_flags = +renewable, +forwardable
  supported_enctypes = 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 #支持的校验方式.注意把aes256-cts去掉
 }
2、客户端配置

每个客户端都需要配置

  • 位置:/etc/krb5.conf
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging] #[logging]:表示 server 端的日志的打印位置
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults] #[libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
 default_realm = HADOOP.COM #设置Kerberos应用程序的默认领域。如果您有多个领域,只需向[realms]节添加其他的语句
 dns_lookup_realm = false
 #clockskew = 120 #时钟偏差是不完全符合主机系统时钟的票据时戳的容差,超过此容差将不接受此票据。通常,将时钟扭斜设置为 300 秒(5 分钟)。这意味着从服务器的角度看,票证的时间戳与它的偏差可以是在前后 5 分钟内。~~
 ticket_lifetime = 24h #表明凭证生效的时限,一般为24小时
 renew_lifetime = 7d #表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败
 forwardable = true #允许转发解析请求  
 rdns = false
 udp_preference_limit = 1 #禁止使用udp可以防止一个Hadoop中的错误

[realms] #列举使用的realm
HADOOP.COM = {
  kdc = node1:88 #代表要kdc的位置。格式是机器:端口。测试过程中也可不加端口。
  admin_server = node1:749 #代表admin的位置。格式是机器:端口。测试过程中也可不加端口。
  default_domain = HADOOP.COM #代表默认的域名。
 }
[kdc]
 profile=/var/kerberos/krb5kdc/kdc.conf
 // 指定哪个域名数据哪个realm,单个realm不需要设置这个映射
[domain_realm]
#.example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM

3、创建Kerberos数据库

在 kdc安装的机器上运行kdb5_util create [-r HADOOP.COM] -s,会需要输入密码。生成的文件在/var/kerberos/krb5kdc路径下。里面默认生成了kerberos的主体(principals)

4、启动
  • 开启kdc:systemctl start krb5kdc
  • 开启可远程登陆:systemctl start kadmin
  • 开机自启动 systemctl enable krb5kdcsystemctl enable kadmin
  • 检查是否开启自启动:systemctl is-enabled krb5kdcsystemctl is-enabled kadmin
5、数据库登陆方式(类似mysql登陆)
  • kdc本地登陆(用户名&密码):kadmin.local
  • 远程登陆()
6、kdc 账号操作
  • 新增(默认的域可以省略) :addprinc hf/hfgrioup[@HADOOP.COM]
  • 删除:delprinc hf

7、kerberos 主体认证 (互斥)

  • 用户名+密码: kinit hf
  • 秘钥
// 生成秘钥
xst -k /home/username/user.keytab user/ugroup
// 认证
kinit -kt /home/username/user.keytab user/ugroup
  • 退出 : quit

CDH 启用kerberos准备

  • 为CDH创建管理员主体
kadmin.local -q "addprinc cloudrea-scm/admin"

输入密码

  • 给管理员实例的所有主体授权
vim /var/kerberos/krb5kdc/kadm5.acl

*/admin@HADOOP.COM      *

  • 在CDH的管控台开启Kerberos。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值