kerberos安装
配置 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