CentOS7.6安装Kerberos
1、准备三台服务器kdc 192.168.95.136 Master KDC severk8sclient1 192.168.95.137 Kerberos clientk8sclient2 192.168.95.138 Kerberos client安装服务端yum install -y krb5-server krb5-libs krb5-workstation krb5-devel krb5
1、准备三台服务器
kdc 192.168.95.136 Master KDC sever
k8sclient1 192.168.95.137 Kerberos client
k8sclient2 192.168.95.138 Kerberos client
安装服务端
yum install -y krb5-server krb5-libs krb5-workstation krb5-devel krb5-auth-dialog openldap-clients
配置kdc.conf
默认放在 /var/kerberos/krb5kdc/kdc.conf。或者通过覆盖KRB5_KDC_PROFILE环境变量修改配置文件位置。
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
HADOOP.COM = { #HADOOP.COM必须跟/etc/krb5.conf中的realms保持一致,可支持多个realms
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
max_life = 24h 0m 0s
max_renewable_life = 7d
max_life = 1d
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
}
配置krb5.conf
/etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = HADOOP.COM
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
# default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
HADOOP.COM = {
kdc = kdc
admin_server = kdc
}
[domain_realm]
.hadoop.com = HADOOP.COM
hadoop.com = HADOOP.COM
创建/初始化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相关的文件删除即可
在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。
当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:
kadm5.acl
kdc.conf
principal
principal.kadm5
principal.kadm5.lock
principal.ok
添加database administrator
我们需要为Kerberos database添加administrative principals (即能够管理database的principals) —— 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。
在maste KDC上执行:
/usr/sbin/kadmin.local -q "addprinc admin/admin"
为database administrator设置ACL权限
在KDC上我们需要编辑acl文件来设置权限,该acl文件的默认路径是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberos的kadmind daemon会使用该文件来管理对Kerberos database的访问权限。对于那些可能会对pincipal产生影响的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。
我们现在为administrator设置权限:将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为
*/admin@HADOOP.COM
代表名称匹配*/admin@HADOOP.COM 都认为是admin,权限是 *。代表全部权限。
在master KDC启动Kerberos daemons
手动启动:
service krb5kdc start
service kadmin start
设置开机自动启动:
chkconfig krb5kdc on
chkconfig kadmin on
关于AES-256加密
对于使用 centos5. 6及以上的系统,默认使用 AES-256 来加密的。这就需要集群中的所有节点上安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。
Java Cryptography Extension (JCE8) Unlimited Strength Jurisdiction Policy File
下载的文件是一个 zip 包,解开后,将里面的两个jar文件放到下面的目录中:$JAVA_HOME/jre/lib/security
Configuring Kerberos Clients
Installing Kerberos Client(CentOS7可以省略此步骤)
在另外两台主机(vmw202,vmw203)上安装kerberos客户端。
yum install krb5-workstation krb5-libs krb5-auth-dialog
配置krb5.conf
配置这些主机上的/etc/krb5.conf,这个文件的内容与KDC中的文件保持一致即可
kerberos的日常操作与常见问题
3.1 管理员操作
3.1.1 登录
登录到管理员账户: 如果在本机上,可以通过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
用户操作
查看当前的认证用户
认证用户
kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1
删除当前的认证的缓存
kdestroy
3.3 常见问题
3.3.1 查看ticket是否是renewable
通过klist命令来查看
如果Valid starting的值与renew until的值相同,则表示该principal的ticket 不是 renwable。
3.3.2 ticket无法更新
如果过了Expires,可以通过命令kinit –R来更新ticket
但如果ticket无法更新
kinit -R
kinit: Ticket expired while renewing credentials
这是因为krbtgt/HADOOP.COM@ HADOOP.COM的[renewlife]被设置成了0,这一点可以通过[kadmin.local => getprinc krbtgt/ HADOOP.COM @ HADOOP.COM]看出来。
将krbtgt/HADOOP.COM@HADOOP.COM的[renewlife]修改为7days即可,方法
kadmin.local: modprinc -maxrenewlife 1week krbtgt/HADOOP.COM@HADOOP.COM
参考博客:
Kerberos安装及使用
centos 7 安装Kerberos并和CDH集成
centos7搭建kerberos
Centos7安装大数据安全认证组件Kerberos
更多推荐
所有评论(0)