惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Martin Fowler
Martin Fowler
Y
Y Combinator Blog
F
Full Disclosure
Help Net Security
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Hacker News
The Hacker News
大猫的无限游戏
大猫的无限游戏
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
Know Your Adversary
Know Your Adversary
U
Unit 42
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
Spread Privacy
Spread Privacy
T
Tor Project blog
Simon Willison's Weblog
Simon Willison's Weblog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
爱范儿
爱范儿
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
N
News and Events Feed by Topic
Microsoft Security Blog
Microsoft Security Blog
人人都是产品经理
人人都是产品经理
C
Check Point Blog
P
Proofpoint News Feed
D
DataBreaches.Net
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
L
LINUX DO - 最新话题
Security Latest
Security Latest
T
Threatpost
博客园 - 【当耐特】
Cloudbric
Cloudbric
P
Privacy International News Feed
博客园 - 聂微东
M
MIT News - Artificial intelligence
S
Security @ Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
S
Secure Thoughts

博客园 - 后厂村思维导图馆

一道小学一年级数学题,国产大模型全军覆没 Java日志框架的依赖设置备查(SLF4J, Log4j, Logback) 简单了解一下国产操作系统 我整理了近五年的开发者报告,看看国内外有什么差异? 简单了解一下国产GPU Docsify on VPS,搭建最简个人博客 简单了解一下国产CPU 向量数据库Pinecone,治疗ChatGPT幻觉的药方? 今天看到博客园的捐款求助,园龄17年6个月的我有些感慨 如何假装你懂机器学习? 如何假装你懂Meta Segment Anything? 如何假装你懂GPU? 如何假装你懂图片生成AI(Midjourney、文心一格)? 如何假装你懂ChatGPT? APP开发,微信第三方登录的介绍 Java Lambda基础——Function, Consumer, Predicate, Supplier, 及FunctionalInterface接口 程序员生存指南——镜像加速 Kerberos ticket lifetime及其它 HBase + Kerberos 配置示例(二) Hadoop-2.6.0 + Zookeeper-3.4.6 + HBase-0.98.9-hadoop2环境搭建示例
HBase + Kerberos 配置示例(一)
后厂村思维导图馆 · 2015-05-14 · via 博客园 - 后厂村思维导图馆

用过hbase的朋友可能都有过这样的疑问,我写一个java client,好像就提供了zookeeper quorum地址就连上hbase了,那么是不是存在安全问题?的确是,如何解决?hbase中引入了kerberos认证。我准备用两篇博文介绍hbase + kerberos的相关内容,本篇主要介绍kerberos的配置。

环境准备

这里我准备了三台server,各自安装上centos 6.5 64bit

  • kb1: kerberos server
  • kbhbase1: kerberos client, 后续也用于安装运行HBase
  • kbjavatest1: kerberos client, 后续将在其上部署java程序访问kbhbase1上的hbase数据库

kerberos简介

kerberos简单来说就是一套完全控制机制,它有一个中心服务器(KDC),KDC中有数据库,你可以往里添加各种“人”以及各种“服务”的“身份证”,当某个人要访问某个服务时,他拿着自己的“身份证”联系KDC并告诉KDC他想要访问的服务,KDC经过一系列验证步骤,最终依据验证结果允许/拒绝这个人访问此服务。关于kerberos具体的工作流程,参见文章《Explain like I’m 5: Kerberos》

kerberos server配置

安装

#yum install krb5-libs krb5-server krb5-workstation

配置

1)#vim /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 = MH.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true 

[realms]
 MH.COM = {
  kdc = kb1.mh.com:88
  admin_server = kb1.mh.com:749
 } 

[domain_realm]
 .mh.com = MH.COM
 mh.com = MH.COM

View Code

2)#vim /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 MH.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 des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
 }

View Code

kerberos中的realm,即kerberos的域,类似于计算机网络中"domain"的概念。

3)#vim /var/kerberos/krb5kdc/kadm5.acl

这个文件是用来控制哪些人可以使用kadmin工具来管理kerberos数据库,我这里就配了一行:

*/admin@MH.COM *

其中前一个*号是通配符,表示像名为“abc/admin”或“xxx/admin”的人都可以使用此工具(远程或本地)管理kerberos数据库,后一个*跟权限有关,*表示所有权限,还可以进行更细的控制,参见ACL

4)#kdb5_util create -s
初始化一个kerberos数据库。

5)现在数据库是空的,想要使用kadmin添加一个人到数据库中,这是需要权限的,那么最开始的那一个人是怎么加到数据库中的?这就需要kadmin.local这个工具,这个工具只能在kerberos server上执行(类似于oracle中的sys用户无密码登录)。
#kadmin.local -q "addprinc admin/admin"
我这里把管理员叫“admin/admin”,你可以叫任何名字,但是因为此前我们在kadm5.acl中的配置,名字必须以/admin结尾。过程中会提示你输入两次密码,记住这个密码,当你在别的机器连接kadmin时,需要这个密码。

启动

  • #service krb5kdc start
  • #service kadmin start
  • #chkconfig krb5kdc on
  • #chkconfig kadmin on

验证

  • #kinit admin/admin

如果kinit不带参数,则会默认以当前操作系统用户名,比如root,作为名称。因为root在kerberos的数据库中并没有,所以会提示失败

  • #klist

正常应该显示:

Ticket cache: FILE:/tmp/krb5cc_0

Default principal: admin/admin@MH.COM

Valid starting     Expires            Service principal

04/10/15 13:03:36  04/11/15 13:03:36  krbtgt/MH.COM@MH.COM

        renew until 04/10/15 13:03:36

以下这两个应该不是必须的,与兼容性有关,ktadd命令会把“身份证”写入到文件(.keytab后缀),可以指定keytab文件,如不指定,默认写入/etc/krb5.keytab

  • kadmin.local: ktadd kadmin/admin
  • kadmin.local: ktadd kadmin/changepw

其它一些命令

  • #kdestroy,退出当前kerberos用户,即你最后使用kinit过的那个用户
  • kadmin.local>listprincs 列出所有存在数据库中的人或服务
  • kadmin.local>delprinc zookeeper/kbhbase1.mh.com@MH.COM 删除人或服务
  • kadmin.local>addprinc admin/admin 添加人或服务
  • kadmin.local>q 退出kadmin
  • kadmin:  addprinc -randkey root/kbhbase1.mh@MH.COM
  • kadmin:  xst -k root.keytab root/kbhbase1.mh.com
  • # klist -kt root.keytab 列出这个keytab中保存的所有人或服务

一般在实例使用中通过kinit的方式较少,因为每次都要输入密码,所以更经常使用的是keytab文件,相当于为某个人或服务生成一个密码,并放在文件中,程序中则指向这个keytab,不用每次都输入密码。

kerberos client配置

现在,我们到kbhbase1这台机器上,即我们的kerberos 客户端上。kerberos对服务器跟客户端之间的时间有要求,所以一般需要安装ntp来作时间同步,我这里直接手工同步了一下,就不再介绍ntp了。 #yum install krb5-libs krb5-workstation 注意与kerberos server上的yum命令对比。安装完成后把server上的krb5.conf文件拷贝过来覆盖一下即可。注意:

  • kb1和kbhbase1的/etc/hosts文件都要把各自以及对方添加上去
  • 关闭这两个server上的防火墙
    • #service iptables stop
    • #chkconfig iptables off

与在server上类似,使用kinit和klist查看一下。也可以尝试执行kadmin,按提示使用admin/admin并输入密码(你之前创建管理员时输入的密码),正常应该能够连接上服务器,并对数据库进行操作(比如添加或删除人、服务)。


送书了,送书了,关注公众号“后厂村思维导图馆”,送出O'Reilly《Spark快速大数据分析》纸质书(亦有一批PDF分享)! —— 2018年12月