Kerberos安装及使用

2. 安装 Kerberos
2.1. 环境配置
  安装kerberos前,要确保主机名可以被解析。

  主机名 内网IP 角色

Vmw201    172.16.18.201    Master KDC
Vmw202    172.16.18.202    Kerberos client
Vmw203    172.16.18.203    Kerberos client

2.2 Configuring a Kerberos Server
2.2.1 确保环境可用
  确保所有的clients与servers之间的时间同步以及DNS正确解析
2.2.2 选择一个主机来运行KDC,并在该主机上安装krb-5libs,krb5-server,已经krb5-workstation:

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

  KDC的主机必须非常自身安全,一般该主机只运行KDC程序。本文中我们选择vmw201作为运行KDC的主机。
在安装完上述的软件之后,会在KDC主机上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf,它们分别反映了realm name 以及 domain-to-realm mappings。
2.2.3 配置kdc.conf
默认放在 /var/kerberos/krb5kdc/kdc.conf。或者通过覆盖KRB5_KDC_PROFILE环境变量修改配置文件位置。
配置示例:

[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88

[realms]
HADOOP.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
max_renewable_life = 7d
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}

说明:
HADOOP.COM:是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
max_renewable_life = 7d 涉及到是否能进行ticket的renwe必须配置。
master_key_type:和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,更多参考2.2.9关于AES-256加密:。推荐不使用。
acl_file:标注了admin的用户权限。文件格式是
Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
admin_keytab:KDC进行校验的keytab。后文会提及如何创建。
supported_enctypes:支持的校验方式。注意把aes256-cts去掉。
2.2.4 配置krb5.conf
/etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。
配置示例:

[logging]
default=FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = HADOOP.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
# udp_preference_limit = 1

[realms]
HADOOP.COM = {
kdc = vmw201
admin_server = vmw201
}

[domain_realm]
.hadoop.com = HADOOP.COM
hadoop.com = HADOOP.COM

说明:
[logging]:表示server端的日志的打印位置
[libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
default_realm = HADOOP.COM 默认的realm,必须跟要配置的realm的名称一致。
udp_preference_limit = 1 禁止使用udp可以防止一个Hadoop中的错误
oticket_lifetime表明凭证生效的时限,一般为24小时。
orenew_lifetime表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,
对安全认证的服务的后续访问则会失败。
[realms]:列举使用的realm。
kdc:代表要kdc的位置。格式是 机器:端口
admin_server:代表admin的位置。格式是机器:端口
default_domain:代表默认的域名
[appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。
2.2.5 创建/初始化Kerberos database
初始化并启动:完成上面两个配置文件后,就可以进行初始化并启动了。

[[email protected] ~]# /usr/sbin/kdb5_util create -s -r HADOOP.COM

其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。

# 保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可

在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。

当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:

kadm5.acl
kdc.conf
principal
principal.kadm5
principal.kadm5.lock
principal.ok

2.2.6 添加database administrator
我们需要为Kerberos database添加administrative principals (即能够管理database的principals) —— 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。

在maste KDC上执行:

[[email protected] /]# /usr/sbin/kadmin.local -q "addprinc admin/admin"

并为其设置密码

kadmin.local

可以直接运行在master KDC上,而不需要首先通过Kerberos的认证,实际上它只需要对本
地文件的读写权限。
2.2.7 为database administrator设置ACL权限
在KDC上我们需要编辑acl文件来设置权限,该acl文件的默认路径是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberos的kadmind daemon会使用该文件来管理对Kerberos database的访问权限。对于那些可能会对pincipal产生影响的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。

我们现在为administrator设置权限:将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为

*/[email protected]

代表名称匹配*/[email protected] 都认为是admin,权限是 *。代表全部权限。
2.2.8 在master KDC启动Kerberos daemons
手动启动:

[[email protected] /]# service krb5kdc start
[[email protected] /]# service kadmin start

设置开机自动启动:

[[email protected] /]# chkconfig krb5kdc on
[[email protected] /]# chkconfig kadmin on

现在KDC已经在工作了。这两个daemons将会在后台运行,可以查看它们的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。
可以通过命令kinit来检查这两个daemons是否正常工作。
2.2.9关于AES-256加密
对于使用 centos5. 6及以上的系统,默认使用 AES-256 来加密的。这就需要集群中的所有节点上安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。
下载的文件是一个 zip 包,解开后,将里面的两个文件放到下面的目录中:$JAVA_HOME/jre/lib/security
2.3 Configuring Kerberos Clients
2.3.1 Installing Kerberos Client(CentOS7可以省略此步骤)
在另外两台主机(vmw202,vmw203)上安装kerberos客户端。

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

2.3.2 配置krb5.conf
配置这些主机上的/etc/krb5.conf,这个文件的内容与KDC中的文件保持一致即可。
3. kerberos的日常操作与常见问题
3.1 管理员操作
3.1.1 登录
登录到管理员账户: 如果在本机上,可以通过kadmin.local直接登录。其它机器的,先使用kinit进行验证。


3.1.2增删改查账户
在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。

kadmin.local: addprinc test
kadmin.local: delprinc test
kadmin.local: listprincs

3.1.3生成keytab:使用xst命令或者ktadd命令

kadmin:xst -k /xxx/xxx/kerberos.keytab hdfs/hadoop1

3.2 用户操作
3.2.1 查看当前的认证用户

3.2.3 认证用户

kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1

3.2.4 删除当前的认证的缓存

kdestroy

3.3 常见问题
3.3.1 查看ticket是否是renewable

通过klist命令来查看


如果Valid starting的值与renew until的值相同,则表示该principal的ticket 不是 renwable。
3.3.2 ticket无法更新
如果过了Expires,可以通过命令kinit –R来更新ticket
但如果ticket无法更新

[[email protected] ~]$ kinit -R
kinit: Ticket expired while renewing credentials

这是因为krbtgt/[email protected] HADOOP.COM的[renewlife]被设置成了0,这一点可以通过[kadmin.local => getprinc krbtgt/ HADOOP.COM @ HADOOP.COM]看出来。

将krbtgt/[email protected]的[renewlife]修改为7days即可,方法

kadmin.local: modprinc -maxrenewlife 1week krbtgt/[email protected]
时间: 2024-10-14 16:17:37

Kerberos安装及使用的相关文章

Centos中,Kerberos安装

1.安装软件包 安装必须的工具 bison, make, binutils 下载压缩包至/usr/local目录下,并解压 [[email protected] local]# ls krb5-1.14.tar.gz krb5-1.14.tar.gz 2.编译Kerberos 切换目录至/krb5-1.14/src 在/krb5-1.14/src文件夹下, 运行configure命令 [[email protected] src]# ./configure --prefix=/usr/local

kerberos安装

配置KDC主服务器 安装需要的包 #yum install krb5-serverkrb5-libs krb5-workstationpam_krb5 -y 修改主机名,如果有DNS服务器,不需要配置 #vim /etc/hosts 10.22.225.212   gamekerberos.opi.com      kerberos1 10.30.33.60       gamekerberos2.opi.com    kerberos2 Master服务器配置 #vim /etc/krb5.c

Kerberos安装&使用

Hadoop自身是没有安全认证的,所以需要引入第三方的安全认证机制.kerberos是hadoop比较受欢迎的一种认证方式.kerberos配置比较简单.但是实际使用的时候,如果不严格遵守游戏规则.你会经常遇到"奇怪"的问题. 1. 安装kerberos的软件包 yum install krb5* vi /etc/krb5.conf 2. 修改kerberos的配置文件 # more /etc/krb5.conf  [logging]  default = FILE:/var/log/

[转] kerberos安装配置与使用

[From] https://blog.csdn.net/lovebomei/article/details/79807484 1.Kerberos协议: Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On).由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性 2.1.

【大数据安全】Kerberos集群安装配置

1. 概述 Kerberos是一种计算机网络认证协议,它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份.它也指由麻省理工实现此协议,并发布的一套免费软件.它的设计主要针对客户-服务器模型,并提供了一系列交互认证--用户和服务器都能验证对方的身份.Kerberos协议可以保护网络实体免受窃听和重复攻击. Kerberos协议基于对称密码学,并需要一个值得信赖的第三方.Kerberos协议的扩展可以为认证的某些阶段提供公钥密码学支持. 2. 环境说明: CDH版本:5.

GitLab安装说明

http://blog.csdn.net/huangzhijie3918/article/details/51330425 GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用. gitlab是基于Ruby on Rails的,安装和配置非常麻烦,不过有傻瓜安装包,https://about.gitlab.com/downloads/,或者,https://bitnami.com/stack/gitl

Linux 编译安装之基础参数篇

此文转载:感谢zjt289198457的专栏 ./configure 该脚本将运行一些测试来猜测一些系统相关的变量并检测你的操作   系统的特殊设置,并且最后在制做树中创建一些文件以记录它找到了什么.         缺省设置将制作服务器和应用程序,还有所有只需要C编译器的客户端程序和接口. 缺省时所有文件都将安装到   /usr/local/pgsql.         你可以通过给出下面   configure   命令行选项中的一个或更多的选项来客户化   制作和安装过程:        

CentOS 自定义安装GitLab

准备工作和说明 说明: 本文主要参考官方文档而来 gitlab 安装路径为/data/git 基于CentOS minimal 系统,系统安装时没有安装依赖包,可以安装开发包,也可依报错信息安装缺少依赖. 主要涉及以下组件安装与配置 依赖包 Ruby Go System Users Database Redis GitLab Nginx 1. 依赖包安装 更新系统及软件包 #以 root 用户运行 yum update -y yum upgrade -y 安装 vim wget yum inst

CentOS源码安装GitLab汉化版第2版

软件版本: CentOS 7.2 Git 2.12.0 Ruby 2.3.3 Node.js 6.10.1 Redis 3.2.8 MariaDB 10.1.20 GitLab 8.8.5汉化版 GitLab Shell 2.7.2 Nginx 1.10.3 Go 1.8 GitLab-Workhorse 0.7.1 一.安装依赖 yum -y install libicu-devel patch gcc-c++ readline-devel zlib-devel libffi-devel op