千家信息网

CDH5.X如何安装配置kerberos认证

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,小编给大家分享一下CDH5.X如何安装配置kerberos认证,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 背景在H
千家信息网最后更新 2024年12月13日CDH5.X如何安装配置kerberos认证

小编给大家分享一下CDH5.X如何安装配置kerberos认证,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1. 背景

在Hadoop1.0.0或 者CDH3 版本之前, hadoop并不存在安全认证一说。默认集群内所有的节点都是可靠的,值得信赖的。用户与HDFS或者M/R进行交互时并不需要进行验证。导致存在恶意用 户伪装成真正的用户或者服务器入侵到hadoop集群上,恶意的提交作业,修改JobTracker状态,篡改HDFS上的数据,伪装成NameNode 或者TaskTracker接受任务等。 尽管在版本0.16以后, HDFS增加了文件和目录的权限,但是并没有强认证的保障,这些权限只能对偶然的数据丢失起保护作用。恶意的用户可以轻易的伪装成其他用户来篡改权限,致 使权限设置形同虚设。不能够对Hadoop集群起到安全保障。

在Hadoop1.0.0或 者CDH3版本后,加入了Kerberos认证机制。使得集群中的节点就是它们所宣称的,是信赖的。Kerberos可以将认证的密钥在集群部署时事先放 到可靠的节点上。集群运行时,集群内的节点使用密钥得到认证。只有被认证过节点才能正常使用。企图冒充的节点由于没有事先得到的密钥信息,无法与集群内部 的节点通信。防止了恶意的使用或篡改Hadoop集群的问题,确保了Hadoop集群的可靠安全。

2. 安装过程(需要如下8个步骤)

Configuring a Kerberos 5 Server

When setting up Kerberos, install the KDC first. If it is necessary to set up slave servers, install the master first.

To configure the first Kerberos KDC, follow these steps:

1.确保正常时间同步和 DNS配置Kerberos之前所有的客户机和服务器。特别注意Kerberos服务器和客户之间的时间同步。如果服务器和客户端之间的时间差大于5分钟 (这是可配置Kerberos 5),Kerberos客户端不能到服务器进行身份验证。这个时间同步是必要的,以防止攻击者使用一个古老的Kerberos票据冒充合法用户。

建议建立一个网络时间协议 (NTP)兼容的客户端/服务器网络即使Kerberos是没有被使用。Red Hat Enterprise Linux包括国家结核控制规划方案。指/usr/share/doc/ntp--<版本号> /索引。html(<版本号>是国家结核控制规划的版本号包安装在您的系统)的细节如何设置网络时间协议服务器,和http: //www.ntp.org有关国家结核控制规划的更多信息。

2. 安装krb5-libs,krb5-server和krb5-workstation包在专用的机器上运行KDC。这台机器需要很安全--如果可能的话,它不应该运行KDC以外的任何服务。

3. 编辑/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf配置文件反映了域名和domain-to-realm 映射。一个简单的域可以被取代的实例构造的例子。COM和example.com使用正确的域名,一定保持大写和小写名称正确的格式,通过改变从 kerberos.example.com KDC Kerberos服务器的名称。按照惯例,所有领域名称大写和DNS主机名和域名是小写的。关于这些配置文件格式的完整细节,请参考各自的手册页。

4. Create the database using the kdb5_util utility from a shell prompt:

/usr/kerberos/sbin/kdb5_util create -s

创建命令创建数据库存储Kerberos领域的钥匙。-s强制创建一个隐藏文件的主服务器密钥存储。如果没有存在隐藏文件的阅读的关键,Kerberos服务器(krb5kdc)提示用户的主服务器密码(可用于再生的关键)每次开始。

5. 编辑 /var/kerberos/krb5kdc/kadm5.acl文件,这个文件是用于kadmind使用这个文件来确定哪个最重要的管理者获得Kerberos数据库的访问级别。大多数组织可以靠一行:

*/admin@EXAMPLE.COM *

大多数用户表示在数据库由一个主体(NULL或空的,实例,如joe@EXAMPLE.COM)。在这个配置中,用户与第二个主要管理的实例(例如,乔/ admin@EXAMPLE.COM)能够使用全功率领域的Kerberos数据库。

  kadmind服务器上已经开始后,任何用户都可以访问它的服务的任何客户机或服务器上运行的kadmin领域。然而,只有用户kadm5中列出。acl文件可以以任何方式修改数据库,除了更改自己的密码。

  请注意

  kadmin实用与 kadmind服务器通过网络、通信和使用Kerberos来处理身份验证。因此,首先校长必须已经存在的连接到服务器之前通过网络来管理它。创建第一个 和kadmin本金。本地命令,它是专门设计用于在同一个主机上KDC和不使用Kerberos身份验证。

以下的kadmin类型。本地命令创建第一个主KDC终端:  

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

6.Start Kerberos using the following commands:

/sbin/service krb5kdc start

/sbin/service kadmin start

/sbin/service krb524 start

7. 为用户添加主体使用addprinc命令。在kadmin.kadmin和kaadmin.local KDC的命令行接口。因此,许多命令--例如addprinc--发射后可用kadmin程序。指kadmin手册页获得更多信息。

8. 确认KDC发行彩票。首先,运行kinit获得一张票并将其存储在一个凭证高速缓存文件。接下来,使用列表中查看凭证在缓存中,并使用kdestroy破坏缓存和它所包含的凭证。

请注意

默认情况下,kinit试图使用相同的系统登录验证用户名(不是Kerberos服务器)。如果用户名不对应于主要在Kerberos数据库 中,kinit问题一条错误消息。如果出现这种情况,kinit提供正确的名称主要作为参数的命令行(kinit <主要>)。

1. 安装Kerberos。

⁠3.2. Installing Kerberos

Kerberos packages may be installed by default, but make sure that the appropriate packages are installed for the Kerberos server or client being configured.

To install packages for a Kerberos server:

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

To install packages for a Kerberos client:

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

If the Red Hat Enterprise Linux system will use Kerberos as part of single sign-on with smart cards, then also install the required PKI/OpenSSL package:

# yum install krb5-pkinit-openssl

//下载jce替换 ocal_policy.jar and US_export_policy.jar files on each host by extracting the contents of the downloaded package into the $JAVA_HOME/jre/lib/security/ directory.

http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html //下载完毕后,解压得到的如下.jar拷贝到java_home/jre/lib/security/文件目录下:

[root@master ~]# ll

总用量 16

-rw-rw-r-- 1 root root 3035 12月 21 2013 local_policy.jar

-rw-r--r-- 1 root root 7323 12月 21 2013 README.txt

-rw-rw-r-- 1 root root 3023 12月 21 2013 US_export_policy.jar

[root@master ~]#

[root@master ~]# cp /root/UnlimitedJCEPolicyJDK8/*.jar /usr/java/default/jre/lib/security/

[root@slave1 ~]# yum install krb5-server krb5-libs krb5-auth-dialog //安装server端 由于master服务器上放的服务比较多,现在把其中一个slave作为一个kerberos服务器。

//服务器端安装完毕后,在客户端安装如下对应的客户端。

[root@slave2 ~]# yum install krb5-workstation krb5-libs krb5-auth-dialog

[root@master ~]# yum install krb5-workstation krb5-libs krb5-auth-dialog

//修改/etc/krb5.conf

vim /etc/krb5.conf

[root@master ~]# cat /etc/krb5.conf

[logging]

default = FILE:/var/log/krb5libs.log

kdc = FILE:/var/log/krb5kdc.log

admin_server = FILE:/var/log/kadmind.log

[libdefaults]

default_realm = master

dns_lookup_kdc = false

dns_lookup_realm = false

clockskew = 120

ticket_lifetime = 86400

renew_lifetime = 604800

forwardable = true

renewable = true

#default_tgs_enctypes = rc4-hmac

#default_tkt_enctypes = rc4-hmac

#permitted_enctypes = rc4-hmac

#udp_preference_limit = 1

[realms]

master = {

kdc = 192.168.8.94:88

admin_server = 192.168.8.94:749

}

[domain_realm]

[kdc]

profile=/var/kerberos/krb5kdc/kdc.conf

修改完毕后,拷贝到机器其他机器上。

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

vim /var/kerberos/krb5kdc/kdc.conf

[root@master ~]# cat /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]

kdc_ports = 88

kdc_tcp_ports = 88

[realms]

master = {

master_key_type = aes256-cts

max_life = 25h

max_renewable_life = 4w

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 des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal

max_life = 24h

max_renewable_life = 10d

#default_principal_flags = +renewable, +forwardable

}

//修改/etc/

[root@master ~]# vim /var/kerberos/krb5kdc/kadm5.acl

*/admin@master *

以上三个文件配置完毕后,只需拷贝krb5.conf到集群中其他机器上即可。

[root@master ~]# scp /etc/krb5.conf slave1:/etc/

krb5.conf 100% 422 0.4KB/s 00:00

[root@master ~]# scp /etc/krb5.conf slave2:/etc/

krb5.conf 100% 422 0.4KB/s 00:00

[root@master ~]#

//启动kdc服务器

/sbin/service krb5kdc start

/sbin/service kadmin start

//创建kerberos数据库 密码输入的是:123456

[root@master ~]# /usr/sbin/kdb5_util create -r master -s

[root@master ~]# kadmin.local //创建远程管理的管理员账户

[root@master ~]# kadmin.local

Authenticating as principal test/admin@master with password.

kadmin.local: listprincs //列出所有用户listprincs

K/M@master

hdfs/slave1@master

kadmin/admin@master

kadmin/changepw@master

kadmin/master@master

krbtgt/master@master

test@master

kadmin.local: addprinc hadoop/admin@master //创建测试用户hadoop

WARNING: no policy specified for wwn@master; defaulting to no policy

Enter password for principal "hadoop@master":

Re-enter password for principal "hadoop@master":

Principal "hadoop@master" created.

kadmin.local: listprincs //查看,最后一个wwn@master用户创建成功。

K/M@master

hdfs/slave1@master

kadmin/admin@master

kadmin/changepw@master

kadmin/master@master

krbtgt/master@master

test@master

hadoop/admin@master

[root@master ~]# kinit hadoop //测试:使用之前创建的wwn用户,输入密码后,没有报错即可。

Password for wwn@master:

[root@master ~]# klist -e //查看缓存的票据认购:可以看到,已经以hadoop@master登陆成功。

Ticket cache: FILE:/tmp/krb5cc_0

Default principal: hadoop@master

Valid starting Expires Service principal

12/26/14 08:24:48 12/27/14 08:24:48 krbtgt/master@master

renew until 12/26/14 08:24:52, Etype (skey, tkt): arcfour-hmac, arcfour-hmac

[root@master krb5kdc]# kinit hadoop

kinit: Client not found in Kerberos database while getting initial credentials

[root@master krb5kdc]# kinit hadoop/admin@master

Password for hadoop/admin@master:

[root@master krb5kdc]# klist -e

Ticket cache: FILE:/tmp/krb5cc_0

Default principal: hadoop/admin@master

Valid starting Expires Service principal

01/05/15 11:16:56 01/06/15 11:16:56 krbtgt/master@master

renew until 01/05/15 11:17:00, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96

四、配置KDC

1.创建票据账号

[root@master ~]# kadmin.local

addprinc -randkey hdfs/master@master

addprinc -randkey hdfs/slave1@master

addprinc -randkey hdfs/slave2@master

addprinc -randkey mapred/master@master

addprinc -randkey mapred/slave1@master

addprinc -randkey mapred/slave2@master

addprinc -randkey host/master@master

addprinc -randkey host/slave1@master

addprinc -randkey host/slave2@master

2.创建keytab 文件,该文件是包括票据账号+票据账号密码加密的密钥

[root@master ~]# kadmin.local

xst -norandkey -k hdfs.keytab hdfs/master host/master

xst -norandkey -k hdfs.keytab hdfs/slave1 host/slave1

xst -norandkey -k hdfs.keytab hdfs/slave2 host/slave2

xst -norandkey -k mapred.keytab mapred/master host/master

xst -norandkey -k mapred.keytab mapred/slave1 host/slave1

xst -norandkey -k mapred.keytab mapred/slave2 host/slave2

3.验证

[root@master ~]# kinit -k -t /root/hdfs.keytab hdfs/master@master

没报错即可。

4. 将hdfs.keytab 和mapred.keytab 拷贝到集群的/usr/lib/hadoop-0.20/conf/

[root@master ~]# cp hdfs.keytab /etc/hadoop/conf/

[root@master ~]# cp mapred.keytab /etc/hadoop/conf/

[root@master conf]# chown hdfs:hadoop hdfs.keytab

[root@master conf]# chown mapred:hadoop mapred.keytab

[root@master conf]# chmod 400 ./*.keytab

五、配置hadoop (手动配置比较复杂,需要修改如下文件。)

停止hadoop 集群

vim /etc/hadoop/conf/core-site.xml //修改simple为:kerberos,把第二项的false更改为true

hadoop.security.authentication

kerberos

hadoop.security.authorization

true

[root@master conf]# vim /etc/hadoop/conf/hdfs-site.xml

最后配置完成后查看生成的用户为:

[root@master ~]# kadmin.local

Authenticating as principal root/admin@master with password.

kadmin.local: listprincs

HTTP/master@master

HTTP/slave1@master

HTTP/slave2@master

K/M@master

hadoop/admin@master

hbase/master@master

hbase/slave1@master

hbase/slave2@master

hdfs/master@master

hdfs/slave1@master

hdfs/slave2@master

hive/master@master

host/master@master

host/slave1@master

host/slave2@master

httpfs/master@master

hue/master@master

impala/master@master

impala/slave1@master

impala/slave2@master

kadmin/admin@master

kadmin/changepw@master

kadmin/master@master

krbtgt/master@master

mapred/master@master

mapred/slave1@master

mapred/slave2@master

oozie/master@master

solr/master@master

solr/slave1@master

solr/slave2@master

spark/master@master

test@master

yarn/master@master

yarn/slave1@master

yarn/slave2@master

zookeeper/master@master

zookeeper/slave1@master

zookeeper/slave2@master

CDH配置步骤比较简单:需要如下8个步骤:分别截图如下:








以上是"CDH5.X如何安装配置kerberos认证"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0