为 Linux 客户端设置基于 Kerberos 的身份验证的 NFS 服务器 - 第 7 部分为 Linux 客户端设置基于 Kerberos 的身份验证的 NFS 服务器 - 第 7 部分为 Linux 客户端设置基于 Kerberos 的身份验证的 NFS 服务器 - 第 7 部分为 Linux 客户端设置基于 Kerberos 的身份验证的 NFS 服务器 - 第 7 部分
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

为 Linux 客户端设置基于 Kerberos 的身份验证的 NFS 服务器 - 第 7 部分

在本系列的最后一篇文章中,我们回顾了如何通过可能包含多种类型操作系统的网络设置 Samba 共享。现在,如果您需要为一组类 Unix 客户端设置文件共享,您会自然而然地想到网络文件系统,简称为NFS。

在本文中,我们将引导您完成对 NFS 共享使用基于 Kerberos 身份验证的过程。假设您已经设置了 NFS 服务器和客户端。如果没有,请参阅安装和配置 NFS 服务器 - 它将列出需要安装的必要软件包,并解释如何在继续操作之前在服务器上执行初始配置。

此外,您还需要配置 SELinux 和 firewalld 以允许通过 NFS 进行文件共享。

以下示例假设您的 NFS 共享位于 box2 中的 /nfs:

semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"
restorecon -R /nfs
setsebool -P nfs_export_all_rw on
setsebool -P nfs_export_all_ro on

(其中 -P 标志表示重新启动后仍保持不变)。

最后,不要忘记:

创建 NFS 组并配置 NFS 共享目录

1. 创建一个名为nfs的组并向其中添加nfsnobody用户,然后更改/nfs的权限> 目录到 0770 及其组所有者到 nfs。因此,nfsnobody(映射到客户端请求)将具有共享的写入权限),并且您不需要在 /etc 中使用 no_root_squash /exports 文件。

groupadd nfs
usermod -a -G nfs nfsnobody
chmod 0770 /nfs
chgrp nfs /nfs

2. 按如下方式修改导出文件 (/etc/exports),以仅允许使用 Kerberos 从 box1 进行访问安全性(sec=krb5)。

注意:anongid的值已设置为nfs的GID我们之前创建的strong>组:

/nfs box1(rw,sec=krb5,anongid=1004)

3. 重新导出(-r)所有(-a) NFS 共享。在输出中添加详细信息 (-v) 是一个好主意,因为如果出现问题,它将提供有用的信息来排除服务器故障:

exportfs -arv

4.重新启动并启用NFS服务器及相关服务。请注意,您不必启用 nfs-lock 和 nfs-idmapd,因为它们将在启动时由其他服务自动启动:

systemctl restart rpcbind nfs-server nfs-lock nfs-idmap
systemctl enable rpcbind nfs-server

测试环境和其他先决条件

在本指南中,我们将使用以下测试环境:

  1. 客户端计算机 [box1: 192.168.0.18]
  2. NFS/Kerberos 服务器[box2: 192.168.0.20](也称为密钥分发中心,简称KDC)。

注意:Kerberos 服务对于身份验证方案至关重要。

如您所见,为简单起见,NFS 服务器和 KDC 托管在同一台计算机中,但如果您有更多可用计算机,也可以将它们设置在不同的计算机中。两台计算机都是 mydomain.com 域的成员。

最后但并非最不重要的一点是,Kerberos 至少需要在客户端和服务器中存在名称解析和网络时间协议服务的基本模式,因为 Kerberos 身份验证的安全性部分基于以下时间戳:门票。

要设置名称解析,我们将在客户端和服务器中使用 /etc/hosts 文件:

192.168.0.18    box1.mydomain.com    box1
192.168.0.20    box2.mydomain.com    box2

在RHEL 7中,chrony是用于NTP同步的默认软件:

yum install chrony
systemctl start chronyd
systemctl enable chronyd

为了确保 chrony 实际上将系统时间与时间服务器同步,您可能需要发出以下命令两到三次,并确保偏移量接近零:

chronyc tracking

安装和配置 Kerberos

要设置KDC,请在服务器和客户端上安装以下软件包(忽略客户端中的服务器软件包):

yum update && yum install krb5-server krb5-workstation pam_krb5

安装后,编辑配置文件(/etc/krb5.conf 和 /var/kerberos/krb5kdc/kadm5.acl)并替换 的所有实例example.com(小写和大写)与 mydomain.com 如下。

现在创建 Kerberos 数据库(请注意,这可能需要一段时间,因为它需要系统中有一定程度的熵。为了加快速度,我打开了另一个终端并运行 ping -f本地主机 30-45 秒):

kdb5_util create -s

接下来,通过防火墙启用Kerberos并启动/启用相关服务。

重要:nfs-secure 也必须在客户端上启动并启用:

firewall-cmd --permanent --add-service=kerberos
systemctl start krb5kdc kadmin nfs-secure   
systemctl enable krb5kdc kadmin nfs-secure       

接下来,使用 kadmin.local 工具,为 root 创建一个管理主体:

kadmin.local
addprinc root/admin

并将 Kerberos 服务器添加到数据库中:

addprinc -randkey host/box2.mydomain.com

与客户端 (box1) 和服务器 (box2) 的 NFS 服务相同。请注意,在下面的屏幕截图中,我在退出之前忘记对 box1 执行此操作:

addprinc -randkey nfs/box2.mydomain.com
addprinc -randkey nfs/box1.mydomain.com

然后输入 quit 并按 Enter 键退出:

然后获取并缓存 root/admin 的 Kerberos 票证授予票证:

kinit root/admin
klist

实际使用 Kerberos 之前的最后一步是将被授权使用 Kerberos 身份验证的主体存储到 keytab 文件(在服务器中)中:

kadmin.local
ktadd host/box2.mydomain.com
ktadd nfs/box2.mydomain.com
ktadd nfs/box1.mydomain.com

最后挂载共享并进行写入测试:

mount -t nfs4 -o sec=krb5 box2:/nfs /mnt
echo "Hello from linux教程" > /mnt/greeting.txt

现在让我们卸载共享,重命名客户端中的keytab文件(以模拟它不存在)并尝试再次挂载共享:

umount /mnt
mv /etc/krb5.keytab /etc/krb5.keytab.orig

现在,您可以将NFS共享与基于Kerberos的身份验证结合使用。

概括

在本文中,我们解释了如何使用 Kerberos 身份验证设置 NFS。由于该主题的内容比我们在一个指南中所能涵盖的内容要多得多,因此请随时查看在线 Kerberos 文档,并且由于 Kerberos 至少可以说有点棘手,因此请不要犹豫,使用下面的表格给我们留言如果您遇到任何问题或需要测试或实施方面的帮助。

©2015-2025 艾丽卡 support@alaica.com