当前位置: 代码网 > it编程>前端脚本>Python > Kerberos安全认证-连载11-HBase Kerberos安全配置及访问_kerberos hbase(1)

Kerberos安全认证-连载11-HBase Kerberos安全配置及访问_kerberos hbase(1)

2024年07月31日 Python 我要评论
这里需要将该值设置为false,否则Hadoop HA 不能正常启动。跳过Zookeeper 访问控制列表(ACL)验证,允许连接zookeper后进行读取和写入。这里建议跳过,否则配置HBase 启动后不能向Zookeeper中写入数据。这里在node3节点进行zoo.cfg文件的配置,配置完成后,将zoo.cfg文件分发到node4、node5 zookeeper节点上。

这里需要将该值设置为false,否则hadoop ha 不能正常启动。

  • skipacl=yes

跳过zookeeper 访问控制列表(acl)验证,允许连接zookeper后进行读取和写入。这里建议跳过,否则配置hbase 启动后不能向zookeeper中写入数据。

这里在node3节点进行zoo.cfg文件的配置,配置完成后,将zoo.cfg文件分发到node4、node5 zookeeper节点上。

[root@node3 ~]# scp /software/apache-zookeeper-3.6.3-bin/conf/zoo.cfg node4:/software/apache-zookeeper-3.6.3-bin/conf/
[root@node3 ~]# scp /software/apache-zookeeper-3.6.3-bin/conf/zoo.cfg node5:/software/apache-zookeeper-3.6.3-bin/conf/

​​​​​​​​​​​​​​5) 配置jaas.conf文件

在node3~node5各个zookeeper节点中zookeeper_home/conf/目录下创建jaas.conf文件,该文件用于zookeeper服务端与客户端进行认证。配置内容如下:

server {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/zookeeper.service.keytab”
storekey=true
useticketcache=false
principal=“zookeeper/node3@example.com”;
};

client {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/zookeeper.service.keytab”
storekey=true
useticketcache=false
principal=“zookeeper/node3@example.com”;
};

以上配置文件是在node3 zookeeper节点配置,将以上文件分发到node4、node5节点后,需要将principal修改成对应节点的信息。

node4 zookeeper节点jaas.conf配置如下:

server {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/zookeeper.service.keytab”
storekey=true
useticketcache=false
principal=“zookeeper/node4@example.com”;
};

client {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/zookeeper.service.keytab”
storekey=true
useticketcache=false
principal=“zookeeper/node4@example.com”;
};

node5 zookeeper节点jaas.conf配置如下:

server {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/zookeeper.service.keytab”
storekey=true
useticketcache=false
principal=“zookeeper/node5@example.com”;
};

client {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/zookeeper.service.keytab”
storekey=true
useticketcache=false
principal=“zookeeper/node5@example.com”;
};

​​​​​​​6) 配置java.env文件

在zookeeper各个节点zookeeper_home/conf目录下创建java.env文件,写入如下内容,这里在node3~node5各个节点都需配置。

#指定jaas.conf文件路径
export jvmflags=“-djava.security.auth.login.config=/software/apache-zookeeper-3.6.3-bin/conf/jaas.conf”

以上可以先在node3节点进行配置,然后分发到node4~node5节点上。如下:

[root@node3 ~]# scp /software/apache-zookeeper-3.6.3-bin/conf/java.env node4:/software/apache-zookeeper-3.6.3-bin/conf/
[root@node3 ~]# scp /software/apache-zookeeper-3.6.3-bin/conf/java.env node5:/software/apache-zookeeper-3.6.3-bin/conf/

​​​​​​​​​​​​​​7) 启动zookeeper

在node3~node5各个节点执行如下命令,启动zookeeper。

#启动zookeeper
zkserver.sh start

#检查zookeeper状态
zkserver.sh status

​​​​​​​2. hbase配置kerberos

hbase也支持kerberos安全认证,经过测试,hbase2.5.x版本在经过kerberos认证后与hadoop通信认证有异常,具体报错如下:

hdfs.datastreamer: exception in createblockoutputstream java.io.ioexception: invalid token in javax.security.sasl.qop: di

这里建议使用hbase2.5.x以下版本与kerberos进行整合,但hbase版本的选择也需要参考hadoop的版本,可以在hbase官网找到hadoop版本匹配的hbase版本,地址为:https://hbase.apache.org/book.html#hadoop

我们这里使用的hadoop版本为3.3.4,hbase版本选择2.2.6版本。hbase kerberos安全认证配置步骤如下:

1) 创建hbase服务用户并两两节点进行免密

在hadoop体系中操作hbase时通常使用hbase用户,这里在集群各个节点创建hbase用户并设置在hbase用户下,节点之间的免密。

在node1~node5节点创建hbase用户,所属hadoop组。

#这里设置用户密码为123456
useradd hbase -g hadoop
passwd hbase

各个节点切换到hbase用户,并设置各个节点两两免密。

#所有节点切换成hbase用户
su hbase
cd ~

#node1~node5所有节点生成ssh密钥
ssh-keygen -t rsa -p ‘’ -f ~/.ssh/id_rsa

#node1~node5所有节点公钥复制到node1节点上,这个过程需要输入yes和密码
ssh-copy-id node1

#将node1 authorized_keys文件分发到node1~node5各节点,这个过程需要输入密码
[hbase@node1 ~]$ cd ~/.ssh/
[hbase@node1 .ssh]$ scp authorized_keys node2:pwd
[hbase@node1 .ssh]$ scp authorized_keys node3:pwd
[hbase@node1 .ssh]$ scp authorized_keys node4:pwd
[hbase@node1 .ssh]$ scp authorized_keys node5:pwd

#两两节点进行ssh测试,这一步骤必须做,然后node1~node5节点退出当前hbase用户
exit

​​​​​​​2) 创建hbase服务princial主体并写入到keytab文件

在kerberos服务端node1节点执行如下命令创建hbase服务主体:

[root@node1 ~]# kadmin.local -q “addprinc -pw 123456 hbase/node3”
[root@node1 ~]# kadmin.local -q “addprinc -pw 123456 hbase/node4”
[root@node1 ~]# kadmin.local -q “addprinc -pw 123456 hbase/node5”

在kerberos服务端node1节点执行如下命令将hbase主体写入到keytab文件:

#node1节点执行命令,将主体写入到keytab
[root@node1 ~]# kadmin.local -q “ktadd -norandkey -kt /home/keytabs/hbase.service.keytab hbase/node3@example.com”
[root@node1 ~]# kadmin.local -q “ktadd -norandkey -kt /home/keytabs/hbase.service.keytab hbase/node4@example.com”
[root@node1 ~]# kadmin.local -q “ktadd -norandkey -kt /home/keytabs/hbase.service.keytab hbase/node5@example.com”

以上命令执行完成后,在node1节点/home/keytabs目录下生成hbase.service.keytab文件,将该文件分发到各个节点并赋权,这里可以只发送到node3~node5 hbase所在节点,为了保证各个大数据集群节点的keytabs一致,这里分发到所有节点。

[root@node1 ~]# scp /home/keytabs/hbase.service.keytab node2:/home/keytabs/
[root@node1 ~]# scp /home/keytabs/hbase.service.keytab node3:/home/keytabs/
[root@node1 ~]# scp /home/keytabs/hbase.service.keytab node4:/home/keytabs/
[root@node1 ~]# scp /home/keytabs/hbase.service.keytab node5:/home/keytabs/

分发完成后,在集群各个节点上执行如下命令,修改hbase.service.keytab密钥文件所属用户和组信息:

chown root:hadoop /home/keytabs/hbase.service.keytab
chmod 770 /home/keytabs/hbase.service.keytab

​​​​​​​3) 修改hbase-site.xml配置文件

在所有hbase节点中修改hbase_home/conf/hbase-site.xml文件内容,配置支持kerberos,向hbase-site.xml文件中追加如下内容:

hbase.security.authorization true hbase.security.authentication kerberos hbase.master.kerberos.principal hbase/_host@example.com hbase.master.keytab.file /home/keytabs/hbase.service.keytab hbase.regionserver.kerberos.principal hbase/_host@example.com hbase.regionserver.keytab.file /home/keytabs/hbase.service.keytab

这里可以先在node3节点进行配置,配置完成后分发到node4、node5节点:

[root@node3 ~]# scp /software/hbase-2.2.6/conf/hbase-site.xml node4:/software/hbase-2.2.6/conf/
[root@node3 ~]# scp /software/hbase-2.2.6/conf/hbase-site.xml node5:/software/hbase-2.2.6/conf/

​​​​​​​4) 准备hdfs-site.xml和core-site.xml文件

hbase底层存储使用hdfs,这里需要将hadoop中hdfs-site.xml和core-site.xml文件发送到hbase各个节点hbase_home/conf/目录中。在node3~node5各个hbase节点中执行如下命令:

#node3~node5各个节点执行
cp /software/hadoop-3.3.4/etc/hadoop/hdfs-site.xml /software/hbase-2.2.6/conf/
cp /software/hadoop-3.3.4/etc/hadoop/core-site.xml /software/hbase-2.2.6/conf/

​​​​​​​​​​​​​​5) 准备zk-jaas.conf文件

hbase中会使用zookeeper管理元数据和选主,这里由于zookeeper中已经开启了kerberos认证,所以需要准备zk-jaas.conf文件连接zookeeper时进行认证。在hbase各个节点hbase_home/conf目录下创建zk-jaas.conf文件,写入如下内容,不同的节点设置的principal是对应hbase主机节点。

node3节点hbase_home/conf/zk-jaas.conf文件内容:

client {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/hbase.service.keytab”
useticketcache=false
principal=“hbase/node3@example.com”;
};

node4节点hbase_home/conf/zk-jaas.conf文件内容:

client {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/hbase.service.keytab”
useticketcache=false
principal=“hbase/node4@example.com”;
};

node5节点hbase_home/conf/zk-jaas.conf文件内容:

client {
com.sun.security.auth.module.krb5loginmodule required
usekeytab=true
keytab=“/home/keytabs/hbase.service.keytab”
useticketcache=false
principal=“hbase/node5@example.com”;
};

​​​​​​​​​​​​​​6) 修改hbase-env.sh配置

在各个hbase节点上配置hbase_home/conf/hbase-env.sh,将hbase_opts选项修改为如下:

#node3~node5各个节点修改hbase-env.sh中的hbase_opts配置
export hbase_opts=“$hbase_opts -xx:+useconcmarksweepgc -djava.security.auth.login.config=/software/hbase-2.2.6/conf/zk-jaas.conf”

​​​​​​​​​​​​​​7) 修改hbase安装目录权限

在hbase各个节点创建hbase_home/logs目录,如果该目录不存在需要提前创建,存在即可忽略,该目录为hbase日志目录,需要将该目录权限修改为root:hadoop、访问权限为770,否则hbase用户在启动hbase集群时没有向该目录写日志权限。

#在node3~node5 hbase节点执行命令创建hbase_home/logs
mkdir -p /software/hbase-2.2.6/logs

将各个节点的hbase安装目录权限修改为root:hadoop,logs目录访问权限为770:

#在node3~node5 hbase节点执行命令
chown -r root:hadoop /software/hbase-2.2.6
chmod -r 770 /software/hbase-2.2.6/logs

​​​​​​​3. hbase启动及访问验证

在启动hbase集群之前,需要将zookeeper和hdfs集群重启,zookeeper和hdfs启动命令如下:

#停止hadoop集群
[root@node1 ~]# stop-all.sh

#node3~node5节点,重启zookeeper
[root@node3 ~]# zkserver.sh restart
[root@node3 ~]# zkserver.sh restart
[root@node3 ~]# zkserver.sh restart

#启动hdfs集群
[root@node1 ~]# start-all.sh

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加vx:vip204888 (备注网络安全获取)
img

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。不论你是正从事it行业的老鸟或是对it行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。不论你是正从事it行业的老鸟或是对it行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-jlcdth9b-1712503363927)]

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com