文章目录

  • 1.Kerberos协议:
  • 2.安装
    • 2.1 安装kerberos前,要确保主机名可以被解析。
    • 2.2 确保环境可用
    • 2.3 KDC的主机
      • 2.3.2 配置`kdc.conf`
      • 2.3.3 kadm5.acl
      • 2.3.4 配置krb5.conf
      • 2.3.5 创建/初始化Kerberos database
      • 2.3.6 添加database administrator
      • 2.3.7 为database administrator设置ACL权限
      • 2.3.8 在master KDC启动Kerberos daemons
      • 2.3.9 测试
    • 2.4 配置 Kerberos Clients
      • 2.4.1 安装
      • 2.4.1 配置krb5.conf
  • 问题集锦
    • 问题1
  • 命令总结

1.Kerberos协议:

Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性
2.1. 环境配置

2.安装

2.1 安装kerberos前,要确保主机名可以被解析。

主机名     内网IP        角色
cdh-server2   192.168.60.19   master KDC
cdh-server1   192.168.60.20   kerberos client
cdh-server3   192.168.60.21   kerberos client

2.2 确保环境可用

确保所有的clients与servers之间的时间同步以及DNS正确解析

2.3 KDC的主机

选择一个主机来运行KDC,并在该主机上安装krb-5libs,krb5-server,已经krb5-workstation:

[root@cdh-server2 /]# $ yum install krb5-server krb5-libs krb5-auth-dialog krb5-workstation krb5-devel    -y

KDC的主机必须非常自身安全,一般该主机只运行KDC程序。本文中我们选择cdh-server2作为运行KDC的主机。

注意krb5-workstation如果没有安装这个使用kinit、klist会找不到命令

在安装完上述的软件之后,会在KDC主机上生成配置文件
/etc/krb5.conf/var/kerberos/krb5kdc/kdc.conf,它们分别反映了realm name 以及 domain-to-realm mappings。

[root@cdh-server2 /]# ll /etc/krb5.conf
-rw-r--r-- 1 root root 709 Jul 21 20:45 /etc/krb5.conf
[root@cdh-server2 /]# ll /var/kerberos/krb5kdc/
total 8
-rw------- 1 root root  22 Apr 11  2018 kadm5.acl
-rw------- 1 root root 451 Apr 11  2018 kdc.conf
[root@cdh-server2 /]#

2.3.2 配置kdc.conf

默认放在 /var/kerberos/krb5kdc/kdc.conf。或者通过覆盖KRB5_KDC_PROFILE环境变量修改配置文件位置。

[root@cdh-server2 /]# vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]kdc_ports = 88kdc_tcp_ports = 88[realms]YONG.COM = {# master_key_type = aes256-ctsacl_file = /var/kerberos/krb5kdc/kadm5.acldict_file = /usr/share/dict/wordsadmin_keytab = /var/kerberos/krb5kdc/kadm5.keytabsupported_enctypes =  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:normalmax_renewable_life = 7d}

说明:

  1. YONG.COM:是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
  2. max_renewable_life = 7d 涉及到是否能进行ticket的renwe必须配置。
  3. master_key_type:和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包。推荐不使用。
  4. acl_file:标注了admin的用户权限。文件格式是
    Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
  5. admin_keytab:KDC进行校验的keytab。后文会提及如何创建。
  6. supported_enctypes:支持的校验方式。注意把aes256-cts去掉。

关于AES-256加密:
对于使用 centos5. 6及以上的系统,默认使用 AES-256 来加密的。这就需要集群中的所有节点上安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。https://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
下载的文件是一个 zip 包,解开后,将里面的两个文件放到下面的目录中:$JAVA_HOME/jre/lib/security

2.3.3 kadm5.acl

[root@cdh-server2 /]# cat /var/kerberos/krb5kdc/kadm5.acl
*/admin@EXAMPLE.COM    *
[root@cdh-server2 /]#

2.3.4 配置krb5.conf

/etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。

配置示例:

[root@cdh-server2 /]# vi /etc/krb5.conf
[logging]
default=FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmind.log
[libdefaults]
default_realm = YONG.COM
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
default_tgs_enctypes = aes256-cts aes128-cts des-hmac-sha1 des-cbc-md5 arcfour-hmac camellia256-cts camellia128-cts des-cbc-crc
default_tkt_enctypes = aes256-cts aes128-cts des-hmac-sha1 des-cbc-md5 arcfour-hmac camellia256-cts camellia128-cts des-cbc-crc
permitted_enctypes = aes256-cts aes128-cts des-hmac-sha1 des-cbc-md5 arcfour-hmac camellia256-cts camellia128-cts des-cbc-crc
# udp_preference_limit = 1
kdc_timeout = 3000
[realms]
YONG.COM = {kdc = cdh-server2
admin_server = cdh-server2
default_domain = YONG.COM
}
[domain_realm]
YONG.COM = YONG.COM

说明:

  1. [logging]:表示server端的日志的打印位置
  2. [libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
  3. default_realm = YONG.COM 默认的realm,必须跟要配置的realm的名称一致。
  4. udp_preference_limit = 1 禁止使用udp可以防止一个YONG中的错误
  5. oticket_lifetime表明凭证生效的时限,一般为24小时。
  6. orenew_lifetime表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,
    对安全认证的服务的后续访问则会失败。
  7. kdc:代表要kdc的位置。格式是 机器:端口
  8. admin_server:代表admin的位置。格式是机器:端口
  9. default_domain:代表默认的域名

2.3.5 创建/初始化Kerberos database

初始化并启动:完成上面两个配置文件后,就可以进行初始化并启动了。

[root@cdh-server2 /]# mkdir /var/log/kerberos
[root@cdh-server2 /]# /usr/sbin/kdb5_util create -s -r YONG.COM
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'YONG.COM',
master key name 'K/M@YONG.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:admin
Re-enter KDC database master key to verify:admin
[root@cdh-server2 /]#

其中:
[-s]表示生成stash file,并在其中存储master server key(krb5kdc);
[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。

保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可

在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。

Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:

[root@cdh-server2 /]# ll /var/kerberos/krb5kdc/
total 24
-rw------- 1 root root   19 Nov  1 19:08 kadm5.acl
-rw------- 1 root root  458 Nov  1 19:03 kdc.conf
-rw------- 1 root root 8192 Nov  1 19:23 principal
-rw------- 1 root root 8192 Nov  1 19:23 principal.kadm5
-rw------- 1 root root    0 Nov  1 19:23 principal.kadm5.lock
-rw------- 1 root root    0 Nov  1 19:23 principal.ok
[root@cdh-server2 /]#

2.3.6 添加database administrator

我们需要为Kerberos database添加administrative principals (即能够管理databaseprincipals) —— 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。

在maste KDC上执行:这一步是添加一个principle,注意下面要用

[root@cdh-server2 /]# /usr/sbin/kadmin.local -q "addprinc admin/admin"
Authenticating as principal root/admin@YONG.COM with password.
WARNING: no policy specified for admin/admin@YONG.COM; defaulting to no policy
Enter password for principal "admin/admin@YONG.COM": admin
Re-enter password for principal "admin/admin@YONG.COM":admin
Principal "admin/admin@YONG.COM" created.
[root@cdh-server2 /]#

并为其设置密码。

[root@cdh-server2 /]# kadmin.local
Authenticating as principal root/admin@YONG.COM with password.
kadmin.local:  listprincs
K/M@YONG.COM
admin/admin@YONG.COM
kadmin/admin@YONG.COM
kadmin/cdh-server2@YONG.COM
kadmin/changepw@YONG.COM
kiprop/cdh-server2@YONG.COM
krbtgt/YONG.COM@YONG.COM
kadmin.local:

可以直接运行在master KDC上,而不需要首先通过Kerberos的认证,实际上它只需要对本
地文件的读写权限。

2.3.7 为database administrator设置ACL权限

在KDC上我们需要编辑acl文件来设置权限,该acl文件的默认路径是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberoskadmind daemon会使用该文件来管理对Kerberos database的访问权限。对于那些可能会对pincipal产生影响的操作,acl文件也能控制哪些principal能操作哪些其他pricipals

我们现在为administrator设置权限:将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为

[root@cdh-server2 /]# cat /var/kerberos/krb5kdc/kadm5.acl
*/admin@YONG.COM   *
[root@cdh-server2 /]#

代表名称匹配*/admin@YONG.COM 都认为是admin,权限是*代表全部权限。

2.3.8 在master KDC启动Kerberos daemons

手动启动:

[root@cdh-server2 /]# service krb5kdc start
Redirecting to /bin/systemctl start krb5kdc.service
[root@cdh-server2 /]# service kadmin start
Redirecting to /bin/systemctl start kadmin.service
[root@cdh-server2 /]# service krb5kdc status
Redirecting to /bin/systemctl status krb5kdc.service
● krb5kdc.service - Kerberos 5 KDCLoaded: loaded (/usr/lib/systemd/system/krb5kdc.service; disabled; vendor preset: disabled)Active: active (running) since Thu 2018-11-01 19:33:07 CST; 18s agoProcess: 5643 ExecStart=/usr/sbin/krb5kdc -P /var/run/krb5kdc.pid $KRB5KDC_ARGS (code=exited, status=0/SUCCESS)Main PID: 5644 (krb5kdc)CGroup: /system.slice/krb5kdc.service└─5644 /usr/sbin/krb5kdc -P /var/run/krb5kdc.pidNov 01 19:33:07 cdh-server2 systemd[1]: Starting Kerberos 5 KDC...
Nov 01 19:33:07 cdh-server2 systemd[1]: Started Kerberos 5 KDC.
[root@cdh-server2 /]# service kadmin status
Redirecting to /bin/systemctl status kadmin.service
● kadmin.service - Kerberos 5 Password-changing and AdministrationLoaded: loaded (/usr/lib/systemd/system/kadmin.service; disabled; vendor preset: disabled)Active: active (running) since Thu 2018-11-01 19:33:17 CST; 15s agoProcess: 5665 ExecStart=/usr/sbin/_kadmind -P /var/run/kadmind.pid $KADMIND_ARGS (code=exited, status=0/SUCCESS)Main PID: 5666 (kadmind)CGroup: /system.slice/kadmin.service└─5666 /usr/sbin/kadmind -P /var/run/kadmind.pidNov 01 19:33:17 cdh-server2 systemd[1]: Starting Kerberos 5 Password-changing and Administration...
Nov 01 19:33:17 cdh-server2 systemd[1]: Started Kerberos 5 Password-changing and Administration.
[root@cdh-server2 /]#

设置开机自动启动:

[root@cdh-server2 /]# chkconfig krb5kdc on
[root@cdh-server2 /]# chkconfig kadmin on

现在KDC已经在工作了。这两个daemons将会在后台运行,可以查看它们的日志文件,上面配置的有。

2.3.9 测试

可以通过命令kinit来检查这两个daemons是否正常工作。

登录
[root@cdh-server2 /]# kinit admin/admin
Password for admin/admin@YONG.COM:admin查询登录状态
[root@cdh-server2 /]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@YONG.COMValid starting     Expires            Service principal
11/01/18 20:34:45  11/02/18 20:34:45  krbtgt/YONG.COM@YONG.COMrenew until 11/08/18 20:34:45退出
[root@cdh-server2 /]# kdestroy
[root@cdh-server2 /]# klist
klist: No credentials cache found (filename: /tmp/krb5cc_0)
[root@cdh-server2 /]#

可以看到服务器是成功的。

2.4 配置 Kerberos Clients

2.4.1 安装

Installing Kerberos Client(CentOS7可以省略此步骤)

在另外两台主机上安装kerberos客户端。

yum install krb5-workstation krb5-libs krb5-auth-dialog  krb5-devel
[root@cdh-server1 ~]# yum install krb5-devel krb5-workstation  krb5-devel  -y
[root@cdh-server2 ~]# yum install krb5-devel krb5-workstation   krb5-devel -y
[root@cdh-server3 ~]# yum install krb5-devel krb5-workstation  -y krb5-devel [root@cdh-server2 ~]# scp /etc/krb5.conf cdh-server1:/etc/krb5.conf
krb5.conf                                                                                                                                                                                                                              100%  872     1.9MB/s   00:00
[root@cdh-server2 ~]# scp /etc/krb5.conf cdh-server3:/etc/krb5.conf
krb5.conf                                                                                                                                                                                                                              100%  872     1.3MB/s   00:00
[root@cdh-server2 ~]#

2.4.1 配置krb5.conf

配置这些主机上的/etc/krb5.conf,这个文件的内容与KDC中的文件保持一致即可

问题集锦

问题1

[root@cdh-server2 ~]# kinit admin/admin
kinit: Cannot contact any KDC for realm 'YONG.COM' while getting initial credentials

解决
vi /etc/krb5.conf文件大小写敏感这里大写
原本

[domain_realm]
.yong.com = YONG.COM
YONG.COM = YONG.COM

修改为

[domain_realm]
.YONG.COM = YONG.COM
YONG.COM = YONG.COM

命令总结

/ 代表或者

命令 格式 案例
进入kadmin kadmin.local/kadmin
创建数据库 kdb5_util create -r JENKIN.COM -s
启动kdc服务 service krb5kdc start
启动kadmin服务 service kadmin start
修改当前密码 kpasswd
测试keytab可用性 kinit -k -t /var/kerberos/krb5kdc/keytab/root.keytab root/master1@JENKIN.COM
查看keytab klist -e -k -t /etc/krb5.keytab
清除缓存 kdestroy
通过keytab文件认证登录 kinit -kt /var/run/cloudera-scm-agent/process/***-HIVESERVER2/hive.keytab hive/node2

kadmin模式下:

命令 格式 案例
生成随机key的principal addprinc -randkey root/master1@JENKIN.COM
生成指定key的principal Addprinc -pw **** admin/admin@JENKIN.COM
查看principal listprincs
修改admin/admin的密码 cpw -pw xxxx admin/admin
添加/删除principle addprinc/delprinc admin/admin
直接生成到keytab ktadd -k /etc/krb5.keytab host/master1@JENKIN.COM
设置密码策略(policy) addpol -maxlife “90 days” -minlife “75 days” -minlength 8 -minclasses 3 -maxfailure 10 -history 10 user
添加带有密码策略的用户 addprinc -policy user hello/admin@HADOOP.COM
修改用户的密码策略 modprinc -policy user1 hello/admin@HADOOP.COM
删除密码策略 delpol [-force] user
修改密码策略 modpol -maxlife “90 days” -minlife “75 days” -minlength 8 -minclasses 3 -maxfailure 10 user

kerberos安装配置与使用相关推荐

  1. kerberos安装配置、配置kerberos server、client、日常操作与常见问题、卸载kerberos、hive整合kerberos

    3.3.安装配置 安装kerberos前,要确保主机名可以被解析. 主机名 内网IP 角色 bigdata1 192.168.106.134 master KDC ,kerberos client b ...

  2. kerberos mysql配置_CDH安装之篇四:启用Kerberos认证

    启用Kerberos认证 •          安装Kerberos •          安装配置master KDC/Kerberos Server 注:Kerberos Server可以是任意一 ...

  3. CentOS6.3 Samba安装配置、多用户、加域

    CentOS6.3 Samba安装配置.多用户.加域 2013-09-09 20:24:27 标签:Samba AD samba 域 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  4. 在RedHat Enterprise Linux 上Oracle 9i的安装配置与调优

    1 安装配置Oracle 9i数据库 本章描述内容如下所示: 1.1 安装前的准备工作 介绍在安装Oracle之前所需的准备工作. 1.2安装前的系统设置 介绍在安装Oracle之前所必须的系统设置. ...

  5. 0005-Windows Kerberos客户端配置并访问CDH

    2019独角兽企业重金招聘Python工程师标准>>> 1.概述 本文档描述Windows Server2008 R2(windows的内核版本是6.1,与windows 7相同)下 ...

  6. Kerberos安装

    Kerberos安装 0. 环境 1 台Centos7主机 部署 master KDC 2 台 Centos7主机 部署 Kerberos Client 1. Master主机安装Kerberos y ...

  7. 服务器搭建hue_Hue安装配置实践

    Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的.通过使用 ...

  8. CDH 的Kerberos认证配置

    2019独角兽企业重金招聘Python工程师标准>>> 最近因为项目需要,需要对用户权限做限制,最终选择了kerberos+sentry+hue模式来管理用户,但是这个kerbero ...

  9. ZooKeeper基础知识笔记(含3节点伪分布式安装配置流程)

    本笔记涉及代码:https://github.com/hackeryang/Hadoop-Exercises/tree/master/src/main/java/ZooKeeper 一.ZooKeep ...

最新文章

  1. Nat. Commun.速递:合群者有着相似的大脑活动
  2. python怎么导入时间-python初步学习-import和datetime模块
  3. 项目开发过程中遇到的一些问题和解决办法(逐渐添加)
  4. ML之xgboost:利用xgboost算法(sklearn+3Split)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
  5. 免费下载精美网站模板的25个网站推荐
  6. docker迁移与备份
  7. IIS请求筛选模块被配置为拒绝超过请求内容长度的请求
  8. 计算机二级web题目(7.3)--简单应用题1
  9. poj 3728(LCA + dp)
  10. lisp正负调换_lisp中如何把符号转换为字符串
  11. Mybatis-plus 将字段更新为null
  12. Android学习笔记之SQLite
  13. Android中ImageSwitcher结合Gallery展示SD卡中的资源图片
  14. Exchange server 2007启用 设置pop3
  15. vue 使用 vue-wechat-title 动态设置title
  16. 安装教程_Mac Adobe CC 2020 安装教程
  17. 单细胞测序之scater包数据分析教程复现
  18. PHP的优势是什么?
  19. mysql一对多查询_MySQL 一对多查询
  20. JWT授权为啥要在 Authorization标头里加个Bearer 呢

热门文章

  1. 京东公布3.8“她的节”消费数据:奢品服饰成交额同比增长170%
  2. 首发天玑1200!Redmi电竞旗舰首曝:电池容量或超4500mAh
  3. 王国权辞任中国电信股份有限公司执行副总裁
  4. 微信在朋友圈强行置顶视频号直播分享,引网友疯狂吐槽:又丑又烦!
  5. 腾讯微博正式关闭:目前无法登陆 用户可申请个人内容备份
  6. 华为手机明年全面升级鸿蒙OS:其实两年前就能用
  7. iPhone 12 Max电池容量曝光:老扎心了
  8. 疑似Redmi K40新机获得3C认证:搭载联发科天玑1000+ 支持33W快充
  9. Redmi 10X Pro样张首曝:搭载流光相机技术 一键成创意大片
  10. 入驻商户卖隐形眼镜护理液 饿了么遭监管警告