上一节 介绍了kerberos的认证原理与步骤。这节会安装并配置一个kerberos KDC和client,来帮助更好地理解kerberos,熟悉kerberos的基本命令。
基本环境
一台虚拟机作为KDC 服务器, 一台虚拟机作为需要被KDC认证的 client。
KDC 的安装与配置
- 安装Kerberos:
yum install krb5-server krb5-libs krb5-auth-dialog
- 配置kdc.conf
默认路径:/var/kerberos/krb5kdc/kdc.conf ,示例:
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
EXAMPLE.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 = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
- EXAMPLE.COM是一个realm。大小写敏感。
- 由于aes256-cts验证方式需要安装额外的jar包,这里先把它去掉。
- 其它配置解释可参考官网
- 配置krb5.conf
默认路径:/etc/krb5.conf。包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。示例:
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 = kerberos.example.com
admin_server = kerberos.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
- [realms]:列举使用的realm
- kdc = kerberos.example.com,是kdc所在服务器的hostname (需要在/etc/hosts里配置)
- 其它配置解释可参考官网
- 初始化Kerberos database
/usr/sbin/kdb5_util create -s -r EXAMPLE.COM
- [-s]表示生成stash file,并在其中存储KDC database master key;还可以用[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。
- 运行过程中会让输入KDC database master key
- 当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下多生成了几个文件:
principal #db file
principal.kadm5 #administrative db file
principal.kadm5.lock #administrative db lock file
principal.ok #db file
.k5.EXAMPLE.COM #stash file
- 添加database admin用户
[root@192 dev]# kadmin.local
kadmin.local: addprinc admin/admin@EXAMPLE.COM
- 启动服务
systemctl start krb5kdc
systemctl start kadmin
- 为用户创建一条principle
[root@192 dev]# kadmin
Authenticating as principal admin/admin@EXAMPLE.COM with password.
Password for admin/admin@EXAMPLE.COM:
kadmin: add_principal test/test@EXAMPLE.COM #增加一个principle
WARNING: no policy specified for test/test@EXAMPLE.COM; defaulting to no policy
Enter password for principal "test/test@EXAMPLE.COM": #输入该principal的master key
Re-enter password for principal "test/test@EXAMPLE.COM":
Principal "test/test@EXAMPLE.COM" created.
kadmin: list_principals #列出所有的principle
K/M@EXAMPLE.COM
admin/admin@EXAMPLE.COM
kadmin/192.168.182.130@EXAMPLE.COM
kadmin/admin@EXAMPLE.COM
kadmin/changepw@EXAMPLE.COM
kiprop/192.168.182.130@EXAMPLE.COM
krbtgt/EXAMPLE.COM@EXAMPLE.COM
test/test@EXAMPLE.COM
Client的安装与配置
- 安装Kerberos:
yum install krb5-workstation krb5-libs krb5-auth-dialog -y
-
/etc/krb5.conf与KDB server一致
-
通过AS(Authentication Service)认证
1)一种方式是输入密码
[root@193 dev]# kinit test/test
Password for test/test@EXAMPLE.COM:
- 输入的password就是上节所说的Client Master Key
2)第二种方式是通过Keytab文件
在KDC server 的/root/test.keytab路径下生成Keytab文件:
kadmin.local -q "xst -k /root/test.keytab test/test@EXAMPLE.COM"
复制该keytab文件到client该路径中
Client通过Keytab通过AS认证:
kinit -kt /root/test.keytab test/test
- 通过klist命令查看登录状态
[root@193 dev]# klist
Ticket cache: KEYRING:persistent:0:krb_ccache_Y6dC1G6
Default principal: test/test@EXAMPLE.COM
Valid starting Expires Service principal
2020-06-10T22:57:00 2020-06-11T22:57:00 krbtgt/EXAMPLE.COM@EXAMPLE.COM
网友评论