资讯专栏INFORMATION COLUMN

大数据开发系列三:kerberos认证实践

IT那活儿 / 2059人阅读
大数据开发系列三:kerberos认证实践

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

我们平常会基于大数据组件来实现客户业务场景,而所使用大数据组件时(hadoop/flink/kafka等),会被安全厂商扫描出安全访问漏洞,业界推荐用kerberos来解决此类安全访问问题。

Kerberos介绍

Kerberos是一种网络认证协议,在互不信任的网络中,Kerberos提供了一种可靠的中心化认证协议,以便网络中的各个机器之间能够相互访问。

安装规划

类型
主机
主机hostname
安装组件

服务端

192.168.199.102

bigdata-03

krb5-server

krb5-workstation

krb5-libs

krb5-devel

客户端

192.168.199.104

bigdata-05

krb5-workstation

krb5-devel

服务端与客户端主机网络互通,并且配置对应相互hostname映射关系。

服务端安装和配置Kerberos软件

1. 软件安装
1)在线安装:yum install -y krb5-server krb5-workstation krb5-libs
2)离线rpm 安装:
rpm 下载位置http://mirror.centos.org/centos/7/os/x86_64/Packages/

rpm -qa|grep krb  查看当前服务器安装的包,安装如下对应的的安装包:

  • rpm -ivh libkadm5-1.15.1-50.el7.x86_64.rpm
  • rpm -ivh krb5-libs-1.15.1-50.el7.x86_64.rpm
  • rpm -ivh  krb5-workstation-1.15.1-50.el7.x86_64.rpm
  • rpm -ivh krb5-server-1.15.1-50.el7.x86_64.rpm
  • rpm -ivh krb5-devel-1.15.1-50.el7.x86_64.rpm
2. 修改kdc配置文件
软件包安装后,修改/var/kerberos/krb5kdc/kdc.conf文件红色部份,指定域名,kdc 端口默认为88 ,可以根据实际情况进行修改。
[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
}
3. 修改krb配置文件
修改/etc/krb5.conf文件:
# 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]
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 #默认领域,跟kdc.conf里面realms保持一致
#default_ccache_name = KEYRING:persistent:%{uid}


[realms]
HADOOP.COM = {
kdc = bigdata-03       #主节点hostname
admin_server = bigdata-03  #主节点hostname

}

[domain_realm]
.hadoop.com = HADOOP.COM #DNS域名,跟kdc.conf里面realms保持一致
hadoop.com = HADOOP.COM #DNS域名,跟kdc.conf里面realms保持一致
说明:
default_ccache_name:默认的缓存名称,需要注释掉,否侧hadoop指令会报错。
org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
4. 修改kadm5配置文件
修改/var/kerberos/krb5kdc/kadm5.acl文件,内容如下
*/admin@HADOOP.COM *
5. 初始化Kerberos的数据库
[root@bigdata-03 ~]# kdb5_util create -s -r HADOOP.COM
Loading random data
Initializing database /var/kerberos/krb5kdc/principal for realm HADOOP.COM,
master key name K/M@HADOOP.COM
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
这是需要输入密码:xxxxx
数据库master账户:K/M@HADOOP.COM*
#如果提示不能创建,删除后重试:
kdb5_util: Cannot open DB2 database /var/kerberos/krb5kdc/principal: File exists while creating database /var/kerberos/krb5kdc/principal
[root@bigdata-03 ~]# rm -f /var/kerberos/krb5kdc/principal*
初始化成功后,会自动生成认证文件:
ls  -a   /var/kerberos/krb5kdc/
  • principal和principal.ok是Kerberos数据库文件。
  • principal.kadm5和principal.kadm5.lock是Kerberos系统管理数据库。
  • .K5.MYTRAIN.COM是由-s参数创建的隐藏文件。
6. 测试Kerberos数据库
使用kadmin.local程序可以访问刚刚建立的Kerberos数据库,Kadmin是Kerberos数据库的管理接口,Kadmin里面的kerberos管理员可以添加,修改和删除principal(主体),修改密码和执行其他管理任务。
1)进入Kadmin接口
kadmin.local
2)列举当前KDC中主体
listprincs
7. 创建Kerberos管理员用户
在KDC所在主机,执行以下命令,并按照提示输入password。
kadmin.local -q "addprinc admin/admin@HADOOP.COM"
或者在kadmin.local里面:
addprinc admin/admin@HADOOP.COM

标准:account/instance@realm  

例子admin/admin@HADOOP.COM

  • account :表示账户名 或者服务类型
  • instance表示实例,一般为主机名表示 属于这个主机名下的某个账户
  • realm 表示域名 如 HADOOP.COM

客户端安装和配置Kerberos软件

1. 安装
  • rpm -ivh  libkadm5-1.15.1-50.el7.x86_64.rpm
  • rpm -ivh   krb5-workstation-1.15.1-50.el7.x86_64.rpm
  • rpm -ivh   krb5-devel-1.15.1-50.el7.x86_64.rpm
同步krb5.conf ,从管理端/etc/krb5.conf 复制到各个客户端同样的位置。
2. 验证
客户端机器验证:
kinit admin/admin@HADOOP.COM   密码为前面初始化密码。
正确的结果就是没有任何反应。
klist  列出当前系统用户的 Kerberos认证情况:

常用问题

1. 错误一
org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
需注释/etc/krb5.conf文件 #default_ccache_name = KEYRING:persistent:%{uid} 配置项。
2. 错误二
libgssapi_krb5.so.2: cannot open shared object file: No such file or directory
卸载Kerberos时,用rpm 删除krb5-libs包,加了--nodeps参数会把相关联的uyiglibgssapi_krb5.so.2依赖包也删除掉了,从而导致在主机上输入命令时都会报该报错信息。
解决办法:在这台主机上用Java编写Socket服务程序,从另外一台已有krb5-libs的机器上编写Socket客户端程序,上传krb5-libs文件至Socket服务端,重新安装krb5-libs包,主机服务恢复正常。



本文作者:长研架构小组(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129204.html

相关文章

  • 数据开发系列五:kafka& zookeeper 配置kerberos认证

    大数据开发系列五:kafka& zookeeper 配置kerberos认证 img{ display:block; margin:0 auto !important; width:100%; } body{ ...

    不知名网友 评论0 收藏2694
  • 魅族数据运维平台实践

    摘要:一大数据平台介绍大数据平台架构演变如图所示魅族大数据平台架构演变历程年底,我们开始实践大数据,并部署了测试集群。因此,大数据运维的目标是以解决运维复杂度的自动化为首要目标。大数据运维存在的问题大数据运维存在的问题包括部署及运维复杂。 一、大数据平台介绍 1.1大数据平台架构演变  showImg(https://segmentfault.com/img/bVWDPj?w=1024&h=...

    appetizerio 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<