kerberos 安装

相关资料

安装kerberos server端

直接yum安装

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

配置KDC服务 /etc/krb5.conf

#表示server端的日志的打印位置
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

#每种连接的默认配置
[libdefaults]
 dns_lookup_realm = false
 #表明凭证生效的时限,一般为24小时。
 ticket_lifetime = 24h
 #表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 #默认的realm,必须跟要配置的realm的名称一致。
 default_realm = 9EBANG.COM
 default_ccache_name = KEYRING:persistent:%{uid}
 #禁止使用udp可以防止一个Hadoop中的错误
 udp_preference_limit = 1

#列举使用的realm。
[realms]
9EBANG.COM = {
 #代表要kdc的位置。格式是 机器:端口 默认88?
 kdc = kerberos.9ebang.com
 #代表admin的位置。格式是机器:端口 默认88?
 admin_server = kerberos.9ebang.com
}
#代表默认的域名
[domain_realm]
.9ebang.com = 9EBANG.COM
9ebang.com = 9EBANG.COM

修改/var/kerberos/krb5kdc/kadm5.acl

vi /var/kerberos/krb5kdc/kadm5.acl 改为:

*/admin@9EBANG.COM  *

修改/var/kerberos/krb5kdc/kdc.conf

vi /var/kerberos/krb5kdc/kdc.conf 修改为:

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
#是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
 9EBANG.COM = {
  #默认使用aes256-cts
  #master_key_type = aes256-cts
  #涉及到是否能进行ticket的renwe必须配置。
  max_renewable_life = 7d
  #标注了admin的用户权限。文件格式是 Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  #:KDC进行校验的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
 }

创建/初始化Kerberos database

kdb5_util create -s -r 9EBANG.COM

PS1:其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。
PS2:保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可
PS3:在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。

添加database administrator

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

/usr/sbin/kadmin.local -q "addprinc admin/admin"

master KDC启动Kerberos daemons

service krb5kdc start
service kadmin start
chkconfig krb5kdc on
chkconfig kadmin on

安装kerberos client端

直接yum安装

yum -y install krb5-workstation krb5-libs

配置krb5.conf(与server保持一致)

#表示server端的日志的打印位置
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

#每种连接的默认配置
[libdefaults]
 dns_lookup_realm = false
 #表明凭证生效的时限,一般为24小时。
 ticket_lifetime = 24h
 #表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 #默认的realm,必须跟要配置的realm的名称一致。
 default_realm = 9EBANG.COM
 default_ccache_name = KEYRING:persistent:%{uid}
 #禁止使用udp可以防止一个Hadoop中的错误
 udp_preference_limit = 1

#列举使用的realm。
[realms]
9EBANG.COM = {
 #代表要kdc的位置。格式是 机器:端口 默认88?
 kdc = kerberos.9ebang.com
 #代表admin的位置。格式是机器:端口 默认88?
 admin_server = kerberos.9ebang.com
}
#代表默认的域名
[domain_realm]
.9ebang.com = 9EBANG.COM
9ebang.com = 9EBANG.COM

kerberos的日常操作与常见问题

管理员操作

登录到管理员账户: 如果在本机上,可以通过kadmin.local直接登录。其它机器的,先使用kinit进行验证。

增删改查账户

在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令

kadmin.local: addprinc test
kadmin.local: delprinc test
kadmin.local: listprincs

生成keytab:使用xst命令或者ktadd命令

kadmin:xst -k /xxx/xxx/kerberos.keytab hdfs/hadoop1

查看当前的认证用户

klist

认证用户

kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1

删除当前的认证的缓存

kdestroy