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

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

RHCE系列:使用Kerberos身份验证设置NFS服务器 - 第7部分

在这篇文章中,我们将带领您使用基于Kerberos的身份验证NFS共享的过程。 假设您已经设置了NFS服务器和客户端。 如果没有,请参阅安装和配置NFS服务器 -这将列出需要安装,并解释如何,然后再继续执行服务器上的初始配置必需的包。

此外,你将要同时配置了SELinuxfirewalld进行文件通过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.创建一个名为NFSnfsnobody用户添加到它,然后更改/ NFS目录的权限,以0770和组所有者到NFS。 因此,nfsnobody(它被映射到客户端的请求)将对共享写权限),你将不再需要在/ etc / exports文件使用no_root_squash会

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

2.修改出口文件(/ etc /出口 )如下只使用Kerberos安全性(SEC = KRB5)允许从BOX1访问。

注意 :anongid的值已被设置为,我们先前创建的nfs的组的GID:

exports - 添加NFS共享
/nfs box1(rw,sec=krb5,anongid=1004)

3.再出口(-r)所有(-a)NFS共享。 添加冗长的输出(-v)是一个不错的主意,因为如果出现问题,将提供有用的信息来解决服务器:

# exportfs -arv

4.重新启动并启用NFS服务器和相关服务。 请注意,您不必启用NFS锁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文件在客户端和服务器上的文件:

主机文件 - 为域添加DNS
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

将服务器时间与Chrony同步

安装和配置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数据库(请注意,因为它需要在你的系统中的一些熵的水平,这可能需要一段时间才能加快速度,我打开了另一端跑为30-45秒-f为localhost):

# kdb5_util create -s

创建Kerberos数据库

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

重要提示 :NFS的安全必须启动并在客户端上启用,以及:

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

接下来,使用kadmin.local工具,创建一个根admin主体:

# kadmin.local
# addprinc root/admin

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

# addprinc -randkey host/box2.mydomain.com

同样的,NFS服务为客户端(BOX1)和服务器(BOX2)。 请注意,在下面的截图中我忘了退出前做了BOX1:

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

并通过键入退出并按下回车键退出

将Kerberos添加到NFS服务器

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

# kinit root/admin
# klist

缓存Kerberos

实际使用Kerberos被存储到一个密钥表文件(在服务器)被授权使用Kerberos身份验证校长之前的最后一步:

# kdadmin.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 youcl.com" > /mnt/greeting.txt

挂载NFS共享

现在,让我们卸下份额,在客户端重命名密钥表文件(模拟它不存在),并再次尝试上的共享:

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

挂载卸载Kerberos NFS共享

现在你可以使用基于Kerberos的身份验证NFS共享。

概要

在这篇文章中,我们已经解释了如何设置Kerberos身份验证NFS。 由于有更多的话题比我们可以在一个导流罩,可随时查看在线Kerberos文档 ,自Kerberos是有点棘手,至少可以说,不要犹豫,使用下面的表格给我们留言如果您遇到任何问题或需要帮助您的测试或实施。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏