Kerberos高可用安装

目录

 

1、Kerberos安装与配置

1.1安装

1.1.1注意事项

1.1.2Yum安装

1.2配置

1.2.1/etc/krb5.conf

1.2.2/var/kerberos/krb5kdc/kdc.conf

1.2.3/var/kerberos/krb5kdc/kadm5.acl

1.2.4创建kpropd.acl

1.2.5创建数据库

1.2.6同步配置

1.2.7备份配置文件(主备都需要)

1.2.8生成principal

2、启动

2.1启动服务

2.2同步数据库(只在主节点)

2.3启动备KDC服务

3、验证

3.1执行# kadmin.local:

3.2在kadmin.local的命令行中添加用户principal:

3.3在kerberos客户端的admin用户里,执行

3.4验证高可用


1、Kerberos安装与配置

1.1安装

1.1.1注意事项

·kerberos涉及到的主机必须时钟同步!

·主机名hostname必须全为小写!

·该安装方案能够解决了Kerberos单点故障问题,提供 KDC的高可用。

1.1.2Yum安装

规划的KDC服务主机为:krb1(主),krb2(备)[1] 

其中在备节点安装之前需要保证主节点已经安装Kerberos,并且正常可用。

 

在规划的KDC服务上,执行:

# yum install -y krb5-server krb5-auth-dialog krb5-workstation krb5-devel krb5-libs

KDC服务上,执行:

#yum install -y krb5-server openldap-clients krb5-workstation krb5-libs

其他主机(不包括备KDC主机)上执行

# yum install -y krb5-workstation krb5-devel[2] 

 

注:若之前使用源码编译安装过,须卸载

 

1.2配置

KDC服务器涉及3个配置文件

/etc/krb5.conf

/var/kerberos/krb5kdc/kdc.conf

/var/kerberos/krb5kdc/kadm5.acl[3] 

1.2.1/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 = TJ_DX.COM

kdc_timeout = 2500

max_retries = 3

dns_lookup_realm = false

dns_lookup_kdc = false

ticket_lifetime = 10d

renew_lifetime = 10d

renewable = false

forwardable = false

 

[realms]

TJ_DX.COM = {

 kdc = krb1

 Kdc = krb2

 admin_server = krb1

 default_domain = TJ_DX.COM

}

 

[domain_realm]

.tj_dx.com = TJ_DX.COM

tj_dx.com = TJ_DX.COM

 

[kdc]

profile = /var/kerberos/krb5kdc/kdc.conf

 

说明:

  1. [logging]:表示 server 端的日志的打印位置
  2. [libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
    1. default_realm = TJ_DX.COM:设置 Kerberos 应用程序的默认领域。如果您有多个领域,只需向 [realms] 节添加其他的语句。其中红色的TJ_DX.COM可以为任意名字,推荐为大写
    2. ticket_lifetime: 凭证生效的时限,设置为7天。
    3. renew_lifetime: 凭证最长可以被延期的时限,一般为7天。当凭证过期之后,对安全认证的服务的后续访问则会失败。
    4. forwardable:是否允许转发
    5. renewable:是否允许票据延迟
  3. [realms]:列举使用的 realm域。
    1. kdc:代表要 kdc 的位置。格式是 机器:端口
    2. admin_server:代表 admin 的位置。格式是 机器:端口

注:配置中蓝色的字体修改为KDC所在主机的hostname

  1. [domain_realm]:realm域和域名的映射。
  2. [kdc]:kdc的配置信息
    1. profile:kdc的配置文件路径,默认值下若无文件则需要创建。

1.2.2/var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]

 kdc_ports = 88

 kdc_tcp_ports = 88

 

[realms]

 TJ_DX.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

  max_life = 10d

  max_renewable_life = 10d

}

 

说明:

  1. TJ_DX.COM : 是设定的 realms。名字随意,推荐为大写!,但须与/etc/krb5.conf保持一致。Kerberos 可以支持多个 realms,会增加复杂度。大小写敏感。
  2. master_key_type:默认使用 aes256-cts。。
  3. acl_file:标注了 admin 的用户权限的文件,若文件不存在,需要用户自己创建。

文件格式是:Kerberos_principal permissions [target_principal] [restrictions]

  1. supported_enctypes:支持的编码类型列表。
  2. admin_keytab:KDC 进行校验的 keytab。

 

JAVA使用aes256-cts,需要将所有Kerberos涉及到的主机的$JAVA_HOME/jre/lib/security的两个jar包进行替换。下面提供了两个zip包,解压后有对应的jar包

 

1.2.3/var/kerberos/krb5kdc/kadm5.acl

即/var/kerberos/krb5kdc/kdc.conf中[realms]的acl_file配置的文件。内容为:

*/admin@ TJ_DX.COM    *

即:

其中TJ_DX.COM与/etc/krb5.conf对应

文件的意义为给数据库管理员添加ACL权限,*代表全部

 

1.2.4创建kpropd.acl

备节点krb2创建kpropd.acl文件并输入内容:

vi /var/kerberos/krb5kdc/kpropd.acl

输入:

host/krb1@ TJ_DX.COM

host/krb2@ TJ_DX.COM

 

1.2.5创建数据库

# kdb5_util create -r TJ_DX.COM -s[4] 

其中TJ_DX.COM与/etc/krb5.conf对应,且需要设置管理员密码。[5] 

该命令会在/var/kerberos/krb5kdc/创建principal 数据库

如果遇到数据库已经存在的提示,且需要重建数据库时,可以把 /var/kerberos/krb5kdc/ 目录下的 principal 的相关文件都删除掉。

1.2.6同步配置

将/etc/krb5.conf拷贝到集群其他服务器(备KDC单独同步)

例:

# scp /etc/krb5.conf e3basexx:/etc/

其中e3basexx为hadoop集群需要部署Kerberos的主机。

 

拷贝主KDC节点配置文件至备KDC节点:

scp /etc/krb5.conf krb2:/etc/;

#注意,/etc/krb5.conf需要同步到所有的kerberos主机上

scp /etc/krb5.keytab krb2:/etc/krb5.keytab

scp /var/kerberos/krb5kdc/kdc.conf /var/kerberos/krb5kdc/kadm5.acl /var/kerberos/krb5kdc/.k5.TJ_DX.COM krb2:/var/kerberos/krb5kdc/;

1.2.7备份配置文件(主备都需要)

因/var/kerberos/krb5kdc目录下为kerberos的数据库以及各个服务的principal等重要文件,若不慎丢失,会造成严重的后果,所以需要使用cron定时任务备份krb5kdc目录下的文件。

 

在/var/kerberos/目录下新建backup目录用来存放备份的文件。

mkdir /var/kerberos/backup   

在/var/kerberos/目录下新建backup_sh目录用来存放执行备份脚本和备份日志。

mkdri /var/kerberos/backup_sh

 

创建定时任务,执行:

crontab -e

输入:

00 00 * * * sh /var/kerberos/backup_sh/backup.sh >> /var/kerberos/backup_sh/backup.log[韦6] 

将备份文件产生的日志重定向到backup.log文件。

 

1.2.8生成principal

生成需要用到的principal

格式为:

host/[主KDC主机名]@[域名]

host/[备KDC主机名]@[域名]

 

在主KDC主机上执行:

kadmin.local -q "ank -randkey host/krb1@ TJ_DX.COM "

kadmin.local -q "ank -randkey host/krb2@ TJ_DX.COM"

kadmin.local -q "xst host/krb1@ TJ_DX.COM "

kadmin.local -q "xst host/krb2@ TJ_DX.COM "

2、启动

2.1启动服务

主KDC节点执行:

# service krb5kdc start

# service kadmin start

 

备KDC节点执行:

         #service kprop start[7] 

2.2同步数据库(只在主节点)

在主节点同步数据库

kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans[8] 

kprop -f /var/kerberos/krb5kdc/slave_datatrans krb2[9] 

执行成功就会打印SUCCEEDED

 

#注意:kdc的数据库没有自动同步的命令,需要手动同步

 

设置一个cron作业,定时同步数据库。

在/var/kerberos/下新建dump目录,用来存放备份的数据库。

mkdir /var/kerberos/dump

在/var/kerberos/下新建dump_sh目录,用来存放执行备份的脚本和日志。

mkdir /var/kerberos/dump_sh

 

创建定时任务,执行:

crontab -e

输入:

00 00 * * * sh /var/kerberos/dump_sh/dump.sh >> /var/kerberos/dump_sh/dump.log

将执行备份的日志重定向到dump.log文件。

 

2.3启动备KDC服务

在备KDC节点执行:

#service krb5kdc start

3、验证

root使用kadmin.local命令,kadmin.local可以直接进入并管理Kerberos数据库,无需通过Kerberos认证。

 

3.1执行# kadmin.local:

输入listprincs查看已有用户(principal):

kadmin.local:  listprincs

 

3.2在kadmin.local的命令行中添加用户principal

  1. 输入addprinc admin来添加principal,并设置密码为111111

注:可以直接使用# kadmin.local 进入kadmin.local命令行,也可以直接使用# kadmin.local -q指定要执行的语句。例如kadmin.local -q "addprinc admin"。因为之前已经有该principal,所以给出了提示。

 

3.3在kerberos客户端的admin用户里,执行

$ kinit admin

输入密码后回车,若无任何提示表示认证成功

再执行# klist -e

此时可以看到,qinrc用户已经进行了认证,其中:

Tichet cache:ticket缓存存到了/tmp/krb5cc_0

Default principal:认证的用户

valid starting:认证开始时间

Expires:ticket生命节日日期

Service principal:服务对应的principal

renew until:ticket可以通过kinit -R进行延期的截止日期。

Etype:session key的编码类型

 

此时可以验证为Kerberos安装成功。

 

3.4验证高可用

在krb1、krb2中执行

service krb5kdc status

看到如下则说明KDC服务正常。

 

正常情况下kinit成功:

 

kill 掉主KDC

 

再次验证,若能正常执行kinit 和klist 命令,则高可用验证成功。

 


 [1]主机名可换

 [2]批量操作

需要root权限。

 [4]加上 –s存储文件,同步数据库用

 [5]记录备份

 [6]定时时间可调大

 [7]默认端口754,默认不以独立模式运行

 [8]转储至该文件

 [9]将转储文件传播到从kdc

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值