Kerberos认证(一)——简明详细的安装和说明


准备

两台Centos7机器:

机器服务
192.168.44.132Kerberos server(服务端)
192.168.44.133Kerberos client(客户端)

一、安装Kerberos server

安装指令

yum -y install krb5-libs krb5-workstation krb5-server

安装完之后,会在KDC主机上生成配置文件

  • /etc/krb5.conf
  • /var/kerberos/krb5kdc/kdc.conf

修改krb5.conf

[root@server ~]# vi /etc/krb5.conf

# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

#表示server端的日志打印位置
[logging]
 # krb5libs日志存放路径
 default = FILE:/var/log/krb5libs.log
 # krb5kdc日志存放路径
 kdc = FILE:/var/log/krb5kdc.log
 # kadmin服务日志存放路径
 admin_server = FILE:/var/log/kadmind.log

#Kerberos的默认配置
[libdefaults]
 #默认是false,当设置为true时,dns参数才起作用
 dns_lookup_realm = false
 # 凭证的生效时限
 ticket_lifetime = 24h
 # 凭证最长延期时限
 renew_lifetime = 7d
 # 票据是否可以被kdc转发, 默认是true。
 forwardable = true
 # 在进行dns解析的时候,正反向都可以,默认是true,如果dns_canonicalize_hostname参数被设置为false,那么rdns这个参数将无效。
 rdns = false
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
 # 默认的领域
 default_realm = EXAMPLE.COM
 # 默认缓存的凭据名称,不推荐使用,当在客户端配置该参数的时候,会提示缓存错误信息。
 default_ccache_name = KEYRING:persistent:%{uid}

# 配置领域相关的信息,默认只有一个,可以配置多个
[realms]
EXAMPLE.COM = {
 # kdc服务器地址。格式  机器:端口, 默认端口是88
 kdc = 192.168.44.132:88 
 # admin服务地址 格式 机器:端口, 默认端口749
 admin_server = 192.168.44.132:749
 # 指定默认的域名
 default_domain = EXAMPLE.COM
}
#默认的域名 指定DNS域名和Kerberos域名之间映射关系。
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
 # kdc的配置信息,即指定kdc.conf的位置(默认不需要配置)。
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

配置kdc.conf

[root@server ~]# vi /var/kerberos/krb5kdc/kdc.conf 

[kdcdefaults]
 # kdc默认端口 
 kdc_ports = 88
 # kdc默认的tcp端口
 kdc_tcp_ports = 88

[realms]
 # 配置每个域的具体信息 (relam 请用大写)
 EXAMPLE.COM = {
  #和 supported_enctypes 默认使用 aes256-cts。由于,JAVA 使用 aes256-cts 验证方式需要安装额外的 jar 包(后面再做说明)。推荐不使用,并且删除 aes256-cts。(建议注释掉)
  #master_key_type = aes256-cts
  #标注admin的用户权限
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  #KDC进行校验的keytab
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  #支持的校验方式
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
 }

配置kadm5.acl

[root@server ~]# vi /var/kerberos/krb5kdc/kadm5.acl

# 当前用户admin ,* 表示全部权限。可以新增用户和分配权限
# 配置表示以/admin@WXAMPLE.COM结尾的用户拥有*(all 也就是所有)权限,具体配置可根据项目来是否缩小权限。
*/admin@EXAMPLE.COM     *

创建数据库

注意: 此处记住自己的初始化的密码~

[root@server ~]# kdb5_util create -r EXAMPLE.COM -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'EXAMPLE.COM',
master key name 'K/M@EXAMPLE.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key: 
Re-enter KDC database master key to verify: 

说明:

  • [-s] 表示生成stash file,并在其中存储master server key(krb5kdc)
  • [-r] 来指定一个realm name,当krb5.conf中定义了多个realm时使用
  • 当Kerberos database创建好了之后,在/var/kerberos/中可以看到生成的principal相关文件
  • 如果遇到数据库已经存在的提示,可以把 /var/kerberos/krb5kdc/ 目录下的 principal 的相关文件都删除掉。默认的数据库名字都是 principal。可以使用 -d 指定数据库名字。

启动服务

启动kdc服务

# 启动kdc服务
systemctl start krb5kdc
# 开启自启
systemctl enable krb5kdc 

启动kadmin服务

# 启动kadmin服务
systemctl start kadmin
#开启自启
systemctl enable kadmin

创建管理员

注意: 记住自己设置的密码

[root@server ~]# kadmin.local -q "addprinc root/admin"
Authenticating as principal root/admin@EXAMPLE.COM with password.
WARNING: no policy specified for root/admin@EXAMPLE.COM; defaulting to no policy
Enter password for principal "root/admin@EXAMPLE.COM": 
Re-enter password for principal "root/admin@EXAMPLE.COM": 
Principal "root/admin@EXAMPLE.COM" created.

二、安装Kerberos client

安装

yum -y install krb5-devel krb5-workstation

修改配置

配置说明请看上面的 kerberos server 的配置

[root@localhost ~]# vi /etc/krb5.conf

# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

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

[libdefaults]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
 default_realm = EXAMPLE.COM
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 EXAMPLE.COM = {
  kdc = 192.168.4.10:88
  admin_server = 192.168.4.10:749
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM

测试kadmin

# 之前服务端创建的用户-使用kadmin认证
[root@client ~]# kinit root/admin
Password for root/admin@EXAMPLE.COM: 
[root@localhost ~]# kadmin
Authenticating as principal root/admin@EXAMPLE.COM with password.
Password for root/admin@EXAMPLE.COM: 
kadmin:  

如果出现权限不足报错,应该使用的非root用户。使用root用户把对应文件赋权后,在执行

三、常见操作指令

Kerberos常用命令

操作命令
启动kdc服务systemctl start krb5kdc
启动kadmin服务systemctl start kadmin
进入kadminkadmin.local / kadmin
创建数据库kdb5_util create -r EXAMPLE.COM -s
修改当前密码kpasswd
测试keytab可用性kinit -k -t /home/xiaobai/xb.keytab xiaobai@EXAMPLE.COM
查看当前票据klist
查看keytab klist -e -k -t /home/xiaobai/xb.keytab
通过keytab文件认证登录kinit -kt /home/xiaobai/xb.keytab xiaobai@EXAMPLE.COM
通过密码认证登录kinit xiaobai@EXAMPLE.COM / kint xiaobai
清除缓存kdestroy

kadmin模式下常用命令

操作命令
查看principal listprincs
生成随机key的principaladdprinc -randkey root/admin@EXAMPLE.COM
生成指定key的principaladdprinc -pw xxx root/admin@EXAMPLE.COM
修改root/admin的密码cpw -pw xxx root/admin
添加/删除principaladdprinc/delprinc root/admin
直接生成到keytabktadd -k /home/xiaobai/xb.keytab xiaobai@EXAMPLE.COM /xst -norandkey -k /home/xiaobai/xb.keytab xiaobai@EXAMPLE.COM注意:在生成keytab文件时需要加参数"-norandkey",否则导致直接使用kinit xiaobai@EXAMPLE.COM初始化时提示密码错误。
设置密码策略(policy)addpol -maxlife “90 days” -minlife “75 days” -minlength 8 -minclasses 3 -maxfailure 10 -history 10 user
修改密码策略modpol -maxlife “90 days” -minlife “75 days” -minlength 8 -minclasses 3 -maxfailure 10 user
添加带有密码策略addprinc -policy user hello/admin@EXAMPLE.COM
修改用户的密码策略modprinc -policy user1 hello/admin@EXAMPLE.COM
删除密码策略delpol [-force] user

总结

本章主要内容:

  1. 安装kerberos 在服务端和客户端的安装和配置介绍
  2. 例举了一些常见的指令,方便查阅~
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值