Kerberos 协议
Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性。
Kerberos安装
1 使用的节点
10.10.106.156
edu-bigdata-01.novalocal
10.10.106.157
edu-bigdata-02.novalocal
10.10.106.158
edu-bigdata-03.novalocal
2 配置Kerberos Server
2.1 配置DNS。局域网即 /etc/hosts 配置
echo '10.10.106.156
edu-bigdata-01.novalocal' > /etc/hosts
echo '10.10.106.157
edu-bigdata-02.novalocal' >> /etc/hosts
echo '10.10.106.158
edu-bigdata-03.novalocal' >> /etc/hosts
echo '127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4' >> /etc/hosts
echo '::1 localhost localhost.localdomain localhost6 localhost6.localdomain6' >> /etc/hosts
|
2.2 在156上安装 KDC。即Kerberos Server服务。
yum install krb5-server krb5-libs krb5-auth-dialog |
KDC的主机必须非常自身安全,一般该主机只运行KDC程序。
安装成功后会生成配置文件 /etc/krb5.conf /var/kerberos/krb5kdc/kdc.conf /var/kerberos/krb5kdc/kadmin.conf等。
2.3 配置kdc.conf
默认放在 /var/kerberos/krb5kdc/kdc.conf,或者通过配置修改。
# vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
HADOOP.COM = {
#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
max_renewable_life = 7d
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
|
HADOOP.COM:是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
2.4 配置krb5.conf
/etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。
# vi /var/kerberos/krb5kdc/kdc.conf
[libdefaults]
default_realm = HADOOP.COM
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 86400
renew_lifetime = 604800
forwardable = true
default_tgs_enctypes = aes128-cts
default_tkt_enctypes = aes128-cts
permitted_enctypes = aes128-cts
udp_preference_limit = 1
kdc_timeout = 3000
[realms]
HADOOP.COM = {
kdc =
edu-bigdata-01.novalocal
admin_server =
edu-bigdata-01.novalocal
}
|
default_realm = HADOOP.COM 默认的realm,必须跟要配置的realm的名称一致。
[realms]:列举使用的realm。
kdc:代表要kdc的位置。格式是 机器:端口 因为配置了hosts 可以使用
edu-bigdata-01.novalocal
admin_server:代表admin的位置。格式是机器:端口
default_domain:代表默认的域名
2.5 创建/初始化Kerberos database
# /usr/sbin/kdb5_util create -s -r HADOOP.COM
其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);
还可以用[-r]来指定一个realm name ―― 当krb5.conf中定义了多个realm时才是必要的。
# 保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可
当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:
kadm5.acl
kdc.conf
principal
principal.kadm5
principal.kadm5.lock
principal.ok
2.6 添加database administrator
我们需要为Kerberos database添加administrative principals (即能够管理database的principals) ―― 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。
在master KDC上执行
# /usr/sbin/kadmin.local -q "addprinc admin/admin" |
并设置密码
raysdata
2.7 为database administrator设置ACL权限
在KDC上我们需要编辑acl文件来设置权限,该acl文件的默认路径是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberos的kadmind daemon会使用该文件来管理对Kerberos database的访问权限。对于那些可能会对pincipal产生影响的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。
将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为
这里注意 HADOOP.COM * M与*中间使用一个空格。否则没法识别配置。导致没有权限的异常。
2.8 在master KDC启动Kerberos daemons
# service krb5kdc start
# service kadmin start
|
设置开机自动启动:
# chkconfig krb5kdc on
# chkconfig kadmin on
|
现在KDC已经在工作了。这两个daemons将会在后台运行,可以查看它们的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。
可以通过命令kinit来检查这两个daemons是否正常工作。
2.9关于AES-256加密
使用 centos5. 6及以上的系统,默认使用 AES-256 来加密的。这就需要集群中的所有节点上安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。
下载的文件是一个 zip 包,解开后,将里面的两个文件放到下面的目录中:$JAVA_HOME/jre/lib/security
下载地址:
jdk 1.6 http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
jdk 1.7 http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/jce-7-download-432124.html
idk 1.8
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
3 配置Kerberos Client
3.1 在client机器上安装
yum install krb5-workstation krb5-libs krb5-auth-dialog |
3.2 配置krb5.conf
配置 /etc/krb5.conf
与KDC 上的/etc/krb5.conf 内容一样。
Kerberos操作
登陆
在KDC使用 kadmin.local
在其他client是用 kadmin
账户增删改查
查询: list_principal
删除认证缓存 :kdestory
查看当前认证:klist