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

*/[email protected]    *

在配置完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/[email protected]

getprinc admin/[email protected]

配置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/[email protected]

Addprinc test1/[email protected]

Addprinc test2/[email protected]

ktadd -k /etc/krb5.keytab sample/[email protected]

2. 测试ssserver和sclient

启动ssserver: sserver -p 8899 -s sample -S /etc/krb5.keytab

kinit test1/[email protected]

klist

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

再运行klist

我们将发现多了一条记录,显然它是sample/[email protected]的票据

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/[email protected]

生成krb5.keytab文件 ktadd /root/krb5.keytab
host/[email protected]

scp /root/ krb5.keytab [email protected]:/etc/ krb5.keytab

再生成一个winston的principle

addprinc krb5/[email protected]

在server上新建一个用户

groupadd krb5

useradd –g krb5 krb5

passwd krb5

Vi /home/krb5/.k5login 增加登录principle

krb5/[email protected]

启动klogin, kshell,krb5-telnet服务

chkconfig klogin on

chkconfig kshell on

chkconfig krb5-telnet

service xinetd restart

在客户端上先运行 kinit krb5/[email protected]

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)做比较从而验证客户端的身份,如果服务端有返回结果,将其返回给客户端

举一个例子来说明一下上述的流程

时间: 2024-08-11 07:48:55

kerboros安装的相关文章

安装Windows7系统时,提示:缺少所需的CD/DVD驱动器设备驱动程序

      测试机型:HP probook 430 g3       系统:Windows 7 Pro x64 现在笔记本电脑主板集成的USB口大多为3.0版本,而且一些厂商为了追求PC的轻薄,不再集成光驱,所以我们在安装系统时,一般只能通过U盘或U口外接光驱. 而当我们因为需要(安装OEM系统),在通过刻录软件(如UltraISO)将系统写入U盘或光盘的方式安装系统时,此时问题就可能悄悄出现了:因为Win7官方原版系统没有集成USB3.0驱动,所以可能的报错如下: 点击"浏览"或通过

Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机

如题 Windows8.1-KB2999226-x64.msu  双击安装 安装提示 此更新不适用你的计算机 . 解决方案: 放在D:\update\目录下 windows键+X  选择  命令提示符(管理员)  一定要是管理员 打开cmd 分别执行下面两句.红色部分就是自己的更新程序了.其他安装同理 例如Windows8.1-KB2919442-x64.msu 等 1    expand –F:* D:\update\Windows8.1-KB2999226-x64.msu D:\update

pip安装提示PermissionError: [WinError 5]错误问题解决

 问题现象 新安装python3.6版本后使用pip安装第三方模块失败,报错信息如下: C:\Users\linyfeng>pip install lxml Collecting lxml Downloading http://pypi.doubanio.com/packages/fb/41/b8d5c869d01fcb77c72d7d226a847a3946034ef19c244ac12920b71cd036/lxml-3.8.0-cp36-cp36m-win32.whl (2.9MB) 10

windows安装TortoiseGit详细使用教程【基础篇】

环境:win8.1 64bit 安装准备: 首先你得安装windows下的git msysgit1.9.5 安装版本控制器客户端tortoisegit  tortoisegit1.8.12.0 [32和64别下载错,不习惯英文的朋友,也可以下个语言包] 一.安装图解: 先安装GIT[一路默认即可] 安装好git以后,右键,会发现菜单多了几项关于GIT的选项 2.安装tortoisegit[一路默认即可] 安装好以后,右键,会发现菜单多了几项关于tortoisegit的选项 到此,安装算完成了,相

在Win10 Anaconda中安装Tensorflow

有需要的朋友可以参考一下 1.安装Anaconda 下载:https://www.continuum.io/downloads,我用的是Python 3.5 下载完以后,安装. 安装完以后,打开Anaconda Prompt,输入清华的仓库镜像,更新包更快: conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_url

Linux下WebSphereV8.5.5.0 安装详细过程

Linux下WebSphereV8.5.5.0 安装详细过程 自WAS8以后安装包不再区别OS,一份介质可以安装到多个平台.只针对Installation Manager 进行了操作系统的区分 ,Websphere产品介质必须通过专门的工具Install Managere安装.进入IBM的官网http://www.ibm.com/us/en/进行下载.在云盘http://yun.baidu.com/share/linkshareid=2515770728&uk=4252782771 中是Linu

Python学习1-Python和Pycharm的下载与安装

本文主要介绍Python的下载安装和Python编辑器Pycharm的下载与安装. 一.Python的下载与安装 1.下载 到Python官网上下载Python的安装文件,进入网站后显示如下图: 网速访问慢的话可直接在这里下载:python-2.7.11.amd64 在Downloads中有对应的支持的平台,这里我们是在Windows平台下运行,所以点击Windows,出现如下: 在这里显示了Python更新的所有版本,其中最上面两行分别是Python2.X和Python3.X对应的最后更新版本

oracle安装故障:完美解决xhost +报错: unable to open display “”

oracle安装 先切换到root用户,执行xhost + 然后再切换到oracle用户,执行export DISPLAY=:0.0 出现乱码执行export LANG=US_en 在这里给大家介绍下两种情况的常见问题: 一种是本地运行的命令,另一种则是远程ssh命令安装. DISPLAY科普 DISPLAY变量是用来设置将图形显示到何处.比如CENTOS,你用图形界面登录进去,DISPLAY自动设置为DISPLAY=:0.0表示显式到本地监视器,那么通过终端工具(例如:xshell)进去,运行

centos7下使用yum安装mysql

CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2. 安装mysql-community-release-el7-5.noarch.rpm包 $ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm 安装这个