如何在 Ubuntu 18.04 LTS 上设置 Kerberos 服务器和客户端
在此页
- 第 1 步 - 设置 FQDN
- 第 2 步 - 安装 KDC Kerberos 服务器
- 第 3 步 - 配置 KDC Kerberos 服务器
- 第 4 步 - 安装和配置 Kerberos 客户端
- 第 5 步 - 测试
- 参考资料
Kerberos 是一种使用对称密钥加密的网络身份验证协议,需要来自受信任的第三方的授权才能对客户端-服务器应用程序进行身份验证。它最初由麻省理工学院 (MIT) 开发,用于保护 Athena 项目提供的网络服务。
在现代世界中,Kerberos 通常用作第三方身份验证服务。这意味着所有客户端都信任 Kerberos 对另一个客户端身份的判断。
在本教程中,我们将向您展示如何在两个 Ubuntu 18.04 服务器之间设置 Kerberos 身份验证。我们将在 Ubuntu 服务器上安装和配置 Kerberos 服务器,然后在另一台服务器上安装 Kerberos 客户端。最后,我们将使用 Kerberos 服务器测试 SSH 服务的身份验证。
先决条件
- Ubuntu 服务器 18.04
- 10.10.10.15 krb5.ahmad.io krb5
- 10.10.10.16 client1.ahmad.io client1
我们将要做什么:
- 设置 FQDN 文件
- 安装 KDC Kerberos 服务器
- 配置 KDC Kerberos 服务器
- 安装和配置 Kerberos 客户端
- 测试
第 1 步 - 设置 FQDN
首先,我们必须在 Kerberos 服务器上配置 FQDN,然后编辑服务器的 /etc/hosts 文件。
使用以下命令更改 Kerberos 服务器的 FQDN。
hostnamectl set-hostname krb5.ahmad.io
之后,使用 vim 编辑器编辑 /etc/hosts 文件。
vim /etc/hosts
用您自己的 IP 地址和 FQDN 更改并粘贴到其中。
10.10.10.15 krb5.ahmad.io krb5
保存并关闭。
现在使用下面的 ping 命令进行测试,确保 FQDN 解析为正确的 IP 地址。
ping -c 3 $(hostname -f)
第 2 步 - 安装 KDC Kerberos 服务器
现在要在 IP 地址为 10.10.10.15 且 FQDN 为 krb5.ahmad.io 的 krb5 服务器上安装 Kerberos 服务器。
使用以下 apt 命令安装 Kerberos 服务器。
sudo apt install krb5-kdc krb5-admin-server krb5-config -y
在安装过程中,系统会询问您有关 Kerberos Realm、Realm 的 Kerberos 服务器和 Admin 服务器的信息。
默认情况下,Kerberos 将使用 Kerberos 服务器域名作为 REALM,AHMAD.IO。
Kerberos 服务器是 krb5.ahmad.io。
管理服务器与 Kerberos 服务器 krb5.ahmad.io 相同。
安装完成后,您将看到 Kerberos 服务无法运行。没关系,因为我们将在下一阶段进行配置。
第 3 步 - 配置 KDC Kerberos 服务器
现在使用以下命令为 Kerberos REALM 生成一个新的强主密码。
sudo krb5_newrealm
输入您的强密码,REALM 密码将在 /etc/krb5kdc/stash 文件中生成。
之后,我们需要为 KDC Kerberos 服务器创建管理员用户(管理员主体),将 Kerberos 服务器主机名添加到数据库,然后为 Kerberos 服务器创建密钥表。
为下面的 Kerberos 管理命令运行 kadmin.local 命令行界面。
sudo kadmin.local
创建一个名为 root 的新管理员用户主体。
addprinc root/admin
键入根管理员主体的强密码。
将 KDC Kerberos 服务器添加到数据库并为 KDC 主机创建密钥表文件。
addprinc -randkey host/krb5.ahmad.io
ktadd host/krb5.ahmad.io然后关闭 kadmin.local 实用程序。
quit
接下来,我们需要通过编辑 /etc/krb5kdc/kadm5.acl 文件将 root admin 原则添加到访问控制列表中。
vim /etc/krb5kdc/kadm5.acl
添加以下配置。
root/admin *
保存并关闭配置,然后重新启动 Kerberos 服务。
sudo systemctl restart krb5-admin-server.service
KDC Kerberos 服务器的配置已经完成。
第 4 步 - 安装和配置 Kerberos 客户端
在此步骤中,我们将在 IP 地址为 10.10.10.16 且主机名为 client1 的 Ubuntu 服务器上安装 Kerberos 客户端。
- 配置 FQDN
使用以下命令在客户端计算机上配置 FQDN。
hostnamectl set-hostname client1.ahmad.io
之后,使用 vim 编辑器编辑 /etc/hosts 文件。
vim /etc/hosts
如下所示粘贴 KDC Kerberos 服务器和客户端。
10.10.10.15 krb5.ahmad.io krb5
10.10.10.16 client1.ahmad.io client1保存并关闭。
- 安装 Kerberos 客户端
通过运行以下 apt 命令安装 Kerberos 客户端包。
sudo apt install -y krb5-user libpam-krb5 libpam-ccreds auth-client-config
在安装过程中,系统会询问您有关 Kerberos Realm、Realm 的 Kerberos 服务器和 Admin 服务器的信息。
默认情况下,Kerberos 将使用 Kerberos 服务器域名作为 REALM,AHMAD.IO。
Kerberos 服务器是 krb5.ahmad.io。
管理服务器与 Kerberos 服务器 krb5.ahmad.io 相同。
Kerberos 客户端安装完成。
- 配置 Kerberos 客户端
在客户端机器上,使用 kadmin 命令连接到 KDC Kerberos 服务器。
kadmin
并且会要求你输入 root/admin principle 的密码。输入密码,您将登录到 KDC Kerberos 管理系统。
现在将客户端 FQDN client1.ahmad.io 添加到 Kerberos 数据库并为客户端添加密钥表文件。
addprinc -randkey host/client1.ahmad.io
ktadd host/client1.ahmad.io然后关闭 kadmin Kerberos 管理界面。
quit
Kerberos 客户端配置完成。
第 5 步 - 测试
出于此测试目的,我们将使用 Kerberos 配置 SSH 身份验证。客户端机器 client1.ahmad.io 将使用 Kerberos 身份验证通过 SSH 连接到服务器 krb5.ahmad.io。
- 设置 krb5.ahmad.io 服务器
创建一个名为 ammar 的新系统用户。
useradd -m -s /bin/bash ammar
登录到 KDC Kerberos 管理并添加一个名为 ammar 的新主体用户。
kadmin.local
addprinc ammar关闭 Kerberos 管理界面并编辑 ssh 配置 /etc/ssh/sshd_config。
vim /etc/ssh/sshd_config
取消注释 GSSAPIAuthentication 并通过将值更改为 来启用它。
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes保存并关闭配置,然后重启ssh服务。
systemctl restart sshd
- 安装 client1.ahmad.io 机器
在客户端机器上添加新的系统用户 ammar 并登录。
useradd -m -s /bin/bash ammar
su - ammar之后,初始化 Kerberos 用户主体 ammar。
kinit ammar
输入用户密码,然后使用以下命令检查可用的票证。
klist
您将看到以下结果。
现在您可以使用 SSH Kerberos 身份验证连接 krb5.ahmad.io 服务器。
ssh krb5.ahmad.io
您将通过 SSH 使用 Kerberos 身份验证连接到 krb5.ahmad.io 服务器。
下面是登录到服务器后的 SSH 日志。
至此,Ubuntu 18.04 上Kerberos 服务端和客户端的安装配置已经顺利完成。
参考