基于Ambari的Kerberos安装和命令使用

前段时间折腾了点大数据安全(Security)方面的东西,主要应用是大数据集群中安全方面的配置和使用。本文简单介绍下Kerberos认证方面的知识,记录一下通过Ambari搭建的Hadoop集群,Kerberos安装过程中涉及到Kerberos KDC的安装和配置,以及一些常用的命令介绍。

Kerberos简介

Kerberos这个名字来源于希腊神话,是冥界守护神兽的名字。Kerberos是一个三头怪兽,之所以用它来命名一种认证协议,是因为在整个认证过程涉及到三方:客户端、服务端和KDC(Key Distribution Center),在Windows域环境中,KDC的角色由DC(Domain Controller)来担当。
Kerberos实际上是一种基于票据(Ticket)的认证方式。客户端要访问服务器的资源,需要首先购买服务端认可的票据。也就是说,客户端在访问服务器之前需要预先买好票,等待服务验票之后才能入场。在这之前,客户端需要先买票,但是这张票不能直接购买,需要一张认购权证。客户端在买票之前需要预先获得一张认购权证。这张认购权证和进入服务器的入场券均由KDC发售。如图所示:

Ambari Kerberos安装

基于操作系统是Centos6.7版本,Ambari版本2.2.2+,KDC安装节点主机名:server.bigdata

KDC安装

1.安装KDC Server

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

2.修改配置文件:/etc/krb5.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[libdefaults]
renew_lifetime = 7d
forwardable = true
default_realm = BIGDATA
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
#default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
#default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
forwardable = true
[logging]
default = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
kdc = FILE:/var/log/krb5kdc.log
[realms]
BIGDATA = {
admin_server = server.bigdata
kdc = server.bigdata
}

3.修改文件:/var/kerberos/krb5kdc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
BIGDATA = {
#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 des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
max_renewable_life = 7d
default_principal_flags = +renewable, +forwardable
}

4.创建KDC数据库

1
$ db5_util create -r BIGDATA -s

5.启动KDC数据库并设置开机启动

1
2
3
4
$ /etc/rc.d/init.d/krb5kdc start
$ /etc/rc.d/init.d/kadmin start
$ chkconfig krb5kdc on
$ chkconfig kadmin on

6.创建远程管理员

1
2
$ kadmin.local -q "addprinc admin/admin@BIGDATA"
$ kadmin.local -q "xst -norandkey admin/admin@BIGDATA"

7.修改其它配置文件
如果以上设置的票据是:admin/admin@BIGDATA 把/var/kerberos/krb5kdc/kadm5.acl文件内容就应该改为:

1
*/admin@BIGDATA *

8.重启后KDC安装完成

1
$ /etc/rc.d/init.d/kadmin restart

安装JCE

Ambari搭建集群过程中,如说是手动指定的JDK路径,一般需要在JDK中安装JCE,默认使用Ambari提供的JDK自带JCE。

JDK1.7-JCE 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK1.8-JCE 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
解压安装到${JAVA_HOME}/jre/lib/security目录下

1
$ unzip -o -j -q /opt/jce_policy-8.zip -d /usr/jdk64/jdk1.8.0_60/jre/lib/security/

Kerberos Client安装

在Ambari菜单【Admin】-【Kerberos】-【Enable Kerberos】安装Kerberos Client,如下图:

常用命令

1.关于kadmin.local和kadmin

kadmin.local和kadmin至于用哪个,取决于账户和访问权限:
kadmin.local(on the KDC machine)or kadmin (on others machine)
如果有访问kdc服务器的root权限,但是没有kerberos admin账户,使用kadmin.local
如果没有访问kdc服务器的root权限,但是有kerberos admin账户,使用kadmin

2.添加票据

1
2
3
$ kadmin.local
addprinc -randkey test/server.bigdata@BIGDATA
xst -norandkey -k /etc/security/keytabs/test.service.keytab test/server.bigdata@BIGDATA

3.获取票据信息

1
2
$ kadmin.local
getprinc test/server.bigdata@BIGDATA

4.列出KDC中所有票据

1
2
$ kadmin.local
listprincs

5.删除票据

1
2
$ kadmin.local
delprinc test/server.bigdata@BIGDATA

6.修改principal属性

1
2
$kadmin.local
modprinc -maxrenewlife 30days test/server.bigdata@BIGDATA

7.缓存票据

1
2
3
$ klist -k -t /etc/security/keytabs/test.service.keytab
$ kinit -k -t /etc/security/keytabs/test.service.keytab test/server.bigdata@BIGDATA
$ kinit -k -t /etc/security/keytabs/test.service.keytab -c /tmp/testkeytab test/server.bigdata@BIGDATA

8.更新票据

1
$ kinit -R

9.查看或删除用户缓存的票据

1
2
$ klist
$ kdestroy

10.合并票据

1
2
3
4
$ ktutil
$ ktutil: rkt test.service.keytab
$ ktutil: rkt test1.service.keytab
$ ktutil: wkt test-test1.service.keytab

参考链接:
http://gost.isi.edu/publications/kerberos-neuman-tso.html
http://www.cnblogs.com/artech/archive/2011/01/24/kerberos.html


Kyle Joe wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!