kerberos安装

2021-07-05  本文已影响0人  专职掏大粪

配置 Kerberos Server

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

sudo yum install krb5-server krb5-libs krb5-auth-dialog

配置kdc.conf, 默认放在 /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
  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
 }

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

配置krb5.conf

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

[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
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
 default_realm = HADOOP.COM
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 HADOOP.COM = {
  kdc = node007233
  admin_server = node007233
 }

[domain_realm]
 .hadoop.com = HADOOP.COM
 hadoop.com = HADOOP.COM

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

创建/初始化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

kadmin.local -q "addprinc -randkey yarn/node007233@HADOOP.COM"

1.在maste KDC上执行:

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

2.并为其设置密码

可以直接运行在master KDC上,而不需要首先通过Kerberos的认证

kadmin.local

给数据库管理员添加ACL权限,修改kadm5.acl文件,*代表全部权限

# cat /var/kerberos/krb5kdc/kadm5.acl
*/admin@EXAMPLE.COM *
*/admin@HADOOP.COM     *

启动服务

service krb5kdc start
service kadmin start
#查看状态
service krb5kdc status
service kadmin status
#设置开机自动启动:
chkconfig krb5kdc on
chkconfig kadmin on

补充:在每个客户端的系统参数/etc/profile中,加上下面参数,确保每次su - user都能使用同一个tgt,而不是创建一个新的,而找不到,最终导致su的用户kinit失败.
调整如下

# workaround for kerberos loging
export KRB5CCNAME=FILE:/tmp/krb5cc_`id -u`

创建principal

kadmin.local -q "addprinc -pw <password> <username>"

addprinc -randkey yarn/node007221@HADOOP.COM

针对hadoop用户,增加主机名,一同创建principal,增加安全性。

注意:hadoop只能通过小写的主机名进行注册。如果主机名有大写字母,手动改成小写。后续kinit的时候,也是使用小写的。hadoop会自动将大写的主机名变成小写。

创建keytab

kadmin.local -q "ktadd -norandkey -k /root/keytab/<username>.keytab <username>"

mkdir -p /tmp/keytab
kadmin.local -q "ktadd -norandkey -k /tmp/keytab/mfw_hadoop.keytab yarn/node007233"

认证用户

kinit -kt /root/keytab/hdfs.keytab <username>

针对hadoop用户,增加主机名,一同创建principal,增加安全性。

kinit -kt /root/keytab/hdfs.keytab hdfs/hostname

kinit -kt /tmp/mfw_hadoop.keytab mfw_hadoop/node007232@HADOOP.COM

查询当前用户的kinit情况

klist

Ticket cache: KEYRING:persistent:0:krb_ccache_SHebLX7
Default principal: mfw_hadoop/node007233@HADOOP.COM

Valid starting       Expires              Service principal
07/05/2021 15:42:20  07/06/2021 15:42:20  krbtgt/HADOOP.COM@HADOOP.COM

查询keytab文件内容

klist -kt /etc/security/keytab/hdfs.keytab 

查询KDC,用户列表

kadmin.local -q "listprincs"

删除用户

kadmin.local -q "delprinc -force HTTP/hdfs3.liang.com@LIANG.COM"

修改密码

kpasswd 用户名

删除当前的认证的缓存

kdestroy

配置 Kerberos Clients

安装kerberos客户端

sudo yum install krb5-workstation krb5-libs krb5-auth-dialog

配置krb5.conf(同步)

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

https://blog.csdn.net/lovebomei/article/details/79807484
https://blog.51cto.com/hsbxxl/2091272
https://blog.csdn.net/weixin_40861707/article/details/81979474
http://www.cppcns.com/os/linux/166490.html

上一篇下一篇

猜你喜欢

热点阅读