在 Linux 上安装 Kerberos 5 KDC 服务器进行身份验证
Kerberos 是一种网络身份验证协议。
Kerberos 为设备提供强大的加密身份验证,让客户端和服务器以更安全的方式进行通信。它旨在解决网络安全问题。
当防火墙作为解决外部网络入侵的解决方案时,Kerberos 通常用于解决网络内的入侵和其他安全问题。
Kerberos 的当前版本是版本 5,称为 KRB5。
要实现 Kerberos,我们需要在服务器上运行集中式身份验证服务。
该服务称为密钥分发中心 (KDC)。
向 KDC 注册的服务器受到 Kerberos 领域中所有其他计算机的信任。
示例 krb5.conf 文件
这是一个示例 krb5.conf 文件,其中包含所有 REALM 和域到 REALM 的映射信息,
# cat /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 = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com
admin_server = kerberos.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
安装 Kerberos KDC 服务器
出于安全原因,建议在单独的服务器上运行 Kerberos (KDC) 服务器。
下载并安装 krb5 服务器包。
# rpm -ivh krb5-server-1.10.3-10.el6_4.6.x86_64.rpm
Preparing... ########################################### [100%]
1:krb5-server ########################################### [100%]
在配置 KDC 之前验证是否安装了以下 rpm:
# rpm -qa | grep -i krb5
pam_krb5-2.3.11-9.el6.x86_64
krb5-server-1.10.3-10.el6_4.6.x86_64
krb5-workstation-1.10.3-10.el6_4.6.x86_64
krb5-libs-1.10.3-10.el6_4.6.x86_64
修改 /etc/krb5.conf 文件
使用适当的 REALM 和 DOMAIN_REALM 映射更改 /etc/krb5.conf 以反映如下所示。
# cat /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 = MYREALM.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
MYREALM.COM = {
kdc = elserver1.example.com
admin_server = elserver1.example.com
}
[domain_realm]
.myrealm.com = MYREALM.COM
myrealm.com = MYREALM.COM
修改 kdc.conf 文件
还应修改 kdc.conf,如下所示。
# cat /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
MYREALM.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 des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
创建 KDC 数据库
接下来,使用 kdb5_util 命令创建 KDC 数据库,如下所示。在此阶段,为 KDC 数据库主密钥输入适当的密码。
# /usr/sbin/kdb5_util create -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'MYREALM.COM',
master key name 'K/M@MYREALM.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:
分配管理员权限
可以使用文件 /var/kerberos/krb5kdc/kadm5.acl 授予用户对数据库的管理员权限。
# cat /var/kerberos/krb5kdc/kadm5.acl
*/admin@MYREALM.COM *
在上面的示例中,MYREALM 中具有管理员实例的任何主体都具有所有管理员权限。
创建校长
使用以下命令创建主体。在此示例中,我使用用户名“eluser”创建了主体。
# kadmin.local -q "addprinc eluser/admin"
Authenticating as principal root/admin@MYREALM.COM with password.
WARNING: no policy specified for eluser/admin@MYREALM.COM; defaulting to no policy
Enter password for principal "eluser/admin@MYREALM.COM":
Re-enter password for principal "eluser/admin@MYREALM.COM":
Principal "eluser/admin@MYREALM.COM" created.
启动 Kerberos 服务
启动 KDC 和 kadmin 守护程序,如下所示。
# service krb5kdc start
Starting Kerberos 5 KDC: [ OK ]
# service kadmin start
Starting Kerberos 5 Admin Server: [ OK ]
配置 Kerberos 客户端
配置 Kerberos 客户端以针对 KDC 数据库进行身份验证:
现在让我们看看如何配置 krb5 客户端以针对我们在上面创建的 Kerberos KDC 数据库进行身份验证。
第 1 步:在客户端机器上安装 krb5-libs 和 krb5-workstation 软件包。
第 2 步:将 /etc/krb5.conf 从 KDC 服务器复制到客户端计算机。
第 3 步:现在我们需要在 KDC/Kerberos 数据库中为客户端创建主体。
您可以使用以下命令在 KDC 主服务器上为客户端计算机创建主体。在下面的示例中,我正在主 KDC 服务器 elserver1.example.com 上为客户端 elserver3.example.com 创建主机主体
# kadmin.local -q "addprinc host/elserver3.example.com"
Authenticating as principal root/admin@MYREALM.COM with password.
WARNING: no policy specified for host/elserver1.example.com@MYREALM.COM; defaulting to no policy
Enter password for principal "host/elserver1.example.com@MYREALM.COM":
Re-enter password for principal "host/elserver1.example.com@MYREALM.COM":
Principal "host/elserver1.example.com@MYREALM.COM" created.
第 4 步:使用以下命令从 KDC 主服务器中提取客户端的 krb5.keytab:
# kadmin.local -q "ktadd -k /etc/krb5.keytab host/elserver3.example.com"
Authenticating as principal root/admin@MYREALM.COM with password.
Entry for principal host/elserver3.example.com with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/elserver3.example.com with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/elserver3.example.com with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/elserver3.example.com with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/elserver3.example.com with kvno 2, encryption type des-hmac-sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/elserver3.example.com with kvno 2, encryption type des-cbc-md5 added to keytab WRFILE:/etc/krb5.keytab.
这样就完成了配置。在这个阶段你们都完成了。
从现在开始,每次建立 SSH 时,RSH 连接主机都会使用 keytab 文件针对 KDC 数据库验证其身份,并通过 Kerberos 建立安全连接。
Ktadd 用于生成新的密钥表或通过 kadmin 命令将主体添加到现有的密钥表。
Ktremove 用于从现有密钥表中删除主体。删除我们上面创建的主体的命令是,
kadmin.local -q "ktremove -k /etc/krb5.keytab –q all"
删除 KDC 数据库
出于某种原因,如果您必须删除 KDC 数据库,请使用以下命令:
# kdb5_util -r MYREALM.COM destroy
kdb5_util: Deleting KDC database stored in /usr/local/var/krb5kdc/principal, you sure
(type yes to confirm)? <== yes
OK, deleting database '/usr/local/var/krb5kdc/principal'...
上述命令中的 -f 选项强制删除 KDC 数据库。
备份和恢复 KDC 数据库
要将 KDC 数据库备份到文件,请使用 krb5_util_dump。
# kdb5_util dump kdcfile
# ls -l kdcfile
-rw-------. 1 root root 5382 Apr 10 07:25 kdcfile
要从上述步骤中创建的转储文件恢复 KDC 数据库,请执行以下操作:
# kdb5_util load kdcfile
- 点赞
- 收藏
- 关注作者
评论(0)