文章目录
准备
两台Centos7机器:
机器 | 服务 |
---|---|
192.168.44.132 | Kerberos server(服务端) |
192.168.44.133 | Kerberos 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 |
进入kadmin | kadmin.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的principal | addprinc -randkey root/admin@EXAMPLE.COM |
生成指定key的principal | addprinc -pw xxx root/admin@EXAMPLE.COM |
修改root/admin的密码 | cpw -pw xxx root/admin |
添加/删除principal | addprinc/delprinc root/admin |
直接生成到keytab | ktadd -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 |
总结
本章主要内容:
- 安装kerberos 在服务端和客户端的安装和配置介绍
- 例举了一些常见的指令,方便查阅~