kerboros安装
尽管前面尝试了hadoop的simple认证方式,这种方法不是特别安全,在介绍一下hadoop的kerberos方式之前,下面我们尝试一下kerberos。
首先介绍一下Kerboros安装
OS 版本: Centos6.4
Kerberos版本: krb5-1.10.3
环境配置
|
机器名 |
Ip地址 |
功能 |
安装模块 |
|
custom.lllcloud.com |
192.168.124.133 |
Kerberos server |
krb5-libs krb5-server krb5-workstation krb5-devel |
|
client.lllcloud.com |
192.168.124.141 |
client |
krb5-libs krb5-workstation krb5-appl-clients |
|
server.lllcloud.com |
192.168.124.142 |
server |
Krb5-libs Krb5-workstation krb5-appl-servers |
在custom.lllcloud.com上安装kerberos server
yum install krb5-libs
yum install krb5-server
yum install krb5-workstation
yum install krb5-devel
在client.lllcloud.com上安装client
yum install krb5-libs
yum install krb5-workstation
yum install krb5-appl-clients
在server.lllcloud.com上安装server
yum install krb5-libs
yum install krb5-workstation
yum install krb5-appl-servers
关闭防火墙
chkconfig iptables off
service iptables stop
在所有的机器上配置/etc/hosts文件,相当于DNS解析
Vi /etc/hosts
192.168.124.133 custom.lllcloud.com custom
192.168.124.142 server.lllcloud.com server
192.168.124.141 client.lllcloud.com client
配置kerberos server
vi /etc/krb5.conf 主要修改realm
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = LLLCLOUD.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
LLLCLOUD.COM = {
kdc = custom.lllcloud.com
admin_server = custom.lllcloud.com
default_domain = lllcloud.com
}
[domain_realm]
.lllcloud.com = LLLCLOUD.COM
lllcloud.com = LLLCLOUD.COM
vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
LLLCLOUD.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
}
vi /var/kerberos/krb5kdc/kadm5.acl
*/admin@LLLCLOUD.COM *
在配置完kerberos的配置文件后,创建kerberos数据库
kdb5_util create -r LLLCLOUD.COM –s
kerberos提供了两个管理工具:kadmin.local, kadmin
kadmin.local 必须运行在kerberos server上
kadmin可以运行在任何机器上,但是必须在kerberos server上启动kadmin服务
这两个管理工具可以创建principal, policy, keytab
|
对象 |
创建 |
删除 |
修改 |
查找 |
列举 |
|
principal |
addprinc |
delprinc |
modprinc |
getprinc |
listprincs |
|
policy |
addpol |
delpol |
modpol |
getpol |
listpols |
|
keytab |
ktadd |
ktremove |
创建管理员
kadmin.local
addprinc admin/admin@LLLCLOUD.COM
getprinc admin/admin@LLLCLOUD.COM

配置kerberos服务随着系统的启动而启动
chkconfig krb5kdc on
chkconfig kadmin on
service krb5kdc start
service kadmin start
kerberos认证通常需要两步
第一步获取tgt票据,通常需要用户提供principle和密码
第二步通过该tgt票据来获取某一服务的票据,这个票据用来与服务交互。
在这里,principal都拥有名字和密码,需要通过KDC来认证身份,它和KDC之间共享密钥稍微讲解一下最长使用到的两种principle,一类是普通用户,需要通过KDC认证身份并获取tgt票据,另一类是服务提供者,它需要通过对KDC提供给用户的票据进行确认以信任用户并为用户提供服务。第一类principal在登录系统手动输入密码。第二类principal解密KDC发的票据时需要用到自己的密钥,这个密钥存放在某个.keytab文件里。Keytab文件是通过KDC上的一个工具ktadd来生成的。
Kerberos提供了两个工具来查看票据信息。Kinit和 klist
Kinit 向kdc获取tgt票据
Klist 列出当前获取的所有票据
举一个例子:获取票据 kinit admin/admin

我们将在后面的例子中,看到这两个工具的用法
测试kerberos功能
1. 使用kadmin.local创建三个principle
Kadmin.local
Addprinc sample/custom.lllcloud.com@LLLCLOUD.COM
Addprinc test1/custom.lllcloud.com@LLLCLOUD.COM
Addprinc test2/custom.lllcloud.com@LLLCLOUD.COM
ktadd -k /etc/krb5.keytab sample/custom.lllcloud.com@LLLCLOUD.COM
2. 测试ssserver和sclient
启动ssserver: sserver -p 8899 -s sample -S /etc/krb5.keytab
kinit test1/custom.lllcloud.com@LLLCLOUD.COM
klist

运行sclient : sclient custom.lllcloud.com 8899 sample

再运行klist

我们将发现多了一条记录,显然它是sample/custom.lllcloud.com@LLLCLOUD.COM的票据
3. 测试sim_client和sim_server程序
可以使用前面2中的票据来访问sim_server服务
启动sim_server程序:sim_server -p 8899 -s sample -S /etc/krb5.keytab
启动sim_client程序:sim_client -p 8899 -h custome.lllcloud.com -m hello

而server 端也得到了响应

4. 测试uuserver和uuclient程序
启动uuserver: uuserver 8899
启动uuclient: uuclient custom "good" 8899

server同样也作出响应

5. 测试krsh和krlogin
使用admin.local创建一个新的principle
addprinc host/server.lllcloud.com@LLLCLOUD.COM
生成krb5.keytab文件 ktadd /root/krb5.keytab host/server.lllcloud.com@LLLCLOUD.COM
scp /root/ krb5.keytab root@server:/etc/ krb5.keytab
再生成一个winston的principle
addprinc krb5/192.168.124.142@LLLCLOUD.COM
在server上新建一个用户
groupadd krb5
useradd –g krb5 krb5
passwd krb5
Vi /home/krb5/.k5login 增加登录principle
krb5/192.168.124.142@LLLCLOUD.COM
启动klogin, kshell,krb5-telnet服务
chkconfig klogin on
chkconfig kshell on
chkconfig krb5-telnet
service xinetd restart
在客户端上先运行 kinit krb5/192.168.124.142@LLLCLOUD.COM
klist查看一下票据

运行 krsh 命令: krsh -l krb5 server.lllcloud.com ls –al
结果如下

运行krlogin: krlogin -l krb5 server.lllcloud.com
结果如下:成功登录到server上

最后我们来看一下klist结果

如果一步步的做到这一步,应该对kerberos系统大致有一个了解,在文档的最后,我们来介绍一下Kerberos工作原理
erberos协议主要用于计算机网络的身份鉴别,其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据访问多个服务
Kerberos系统存在三种角色:
KDC:密钥分配中心(起到分发密钥的作用)
Client:客户端(被服务的对象)
Service:服务端(提供服务的主机)
验证步骤
步骤一:获取原始票据
客户端向密钥分配中心发送自己的身份信息,密钥分配中心从授予票据服务(Ticket Granting Service)得到可用的票据(ticket-granting ticket),并用协议开始前客户端与密钥分配中心之间的密钥将票据加密回复给客户端,客户端收到密钥分配中心回复的加密票据后利用与密钥分配中心先前协议的密钥将票据解密,从而获得票据,此步骤主要是允许客户端进行Kerberos的验证,是进行访问服务的先决条件
步骤二:获取服务票据以及访问服务
客户端利用之前获得的票据向密钥分配中心请求其他服务的票据,从而通过其他服务的身份验证
获取其他服务票据以及访问服务总共有如下四步:

1. 客户端将之前获得的票据和请求的服务信息发送给KDC,KDC中的授予票据服务将客户端和服务端之间生成一个会话密钥(Session Key)用于服务器与客户端的身份验证。然后KDC将这个会话密钥和用户名,用户地址(IP),服务名,有效期,时间戳一起包装成一个票据(这张票据用于服务端对客户端的身份验证)发送给服务端,Kerberos协议并没有直接将票据发送给服务端,而是通过客户端转发给服务端
2. KDC将刚才的票据转发给客户端。由于这个票据是要给服务端的,不能让客户端看到,所以KDC用服务端的密钥将票据加密后再发给客户端,同时为了让客户端与服务端之间共享那个会话密钥,KDC用客户端的密钥将会话密钥加密返回给客户端
3. 为了完成票据的传递,客户端将刚才收到的票据转发到服务端,由于客户端不知道密钥分配中心与服务端的密钥,所以它无法修改票据的信息,同时客户端将收到的会话密钥解压出来,然后将自己的用户名,用户地址(IP)打包成验证包用会话密钥加密也发给服务端
4. 服务端收到票据后利用的密钥将票据中的信息解密出来,从而获得会话密钥和用户名,用户地址(IP),服务名,有效期。然后再用会话密钥将验证包解密从而获得用户名,用户地址(IP)将其与之前票据中解密出来的用户名,用户地址(IP)做比较从而验证客户端的身份,如果服务端有返回结果,将其返回给客户端
举一个例子来说明一下上述的流程

kerboros安装的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法
如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...
- Sublime Text3安装JsHint
介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- gentoo 安装
加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...
- 【原】nodejs全局安装和本地安装的区别
来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...
- tLinux 2.2下安装Mono 4.8
Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...
随机推荐
- SQLite的介绍 操作Sqlite 具体实例
1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能 ...
- Django自定义模型(model)中的字段标签
方法一: 在编辑页面中,每个字段的标签都是从模块的字段名称生成的. 规则很简单: 用空格替换下划线:首字母大写.例如:Book模块中publication_date的标签是Publication da ...
- [原]携程预选赛A题-聪明的猴子-GCD+DP
题目: 聪明的猴子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- POJ 1568 Find the Winning Move(极大极小搜索)
题目链接:http://poj.org/problem?id=1568 题意:给出一个4*4的棋盘,x和o两人轮流放.先放够连续四个的赢.给定一个局面,下一个轮到x放.问x是否有必胜策略?若有,输出能 ...
- 第六篇 ORACLE EBS用户界面通用元素或功能背后的道理解析
本篇打算介绍一下ORACLE EBS用户界面(User Interface)中通用的元素或功能背后蕴含的一些道理.这些通用元素或功能包括: List of Values (LOV),值列表 Flexf ...
- 导出到Excel并且取消默认的科学计算法
导出Excel的代码很多,其中这种最简单: protected void btnDCAll_Click(object sender, EventArgs e) { ...
- Remember that ordinal parameters are 1-based!
问题发生的原因是:hql语句里不需要参数,却添加了一个参数,删掉添加参数的语句就可以了!
- file类型允许的文件格式设置问题,“选择文件”打开缓慢
1,file类型的input对于打开的选择框的属性是由以下两个属性控制的: ①multiple="multiple" :一次可以选择多个文件 ②accept="image ...
- HDU 4998 (点的旋转) Rotate
为了寻找等效旋转操作,我们任选两个点P0和Q0,分别绕这n个点旋转一定的角度后最终得到Pn和Qn 然后已知:P0和Pn共圆,Q0和Qn共圆.所以要找的等效旋转点就是这两个线段的垂直平分线交点O. 等效 ...
- linux下编译软件通用方法(memcached为例)
1)到软件的官网或其他网站下载软件的源码包 2)解压源码包,并切换到源码目录中 3)使用./configure --help查询配置帮助,里面可能会有安装指南(Installation directo ...