如何在 fedora 26 中获取 NFS + Kerberos

如何在 fedora 26 中获取 NFS + Kerberos

我在 Fedora 26 上尝试设置nfs+时遇到了困难。kerberos

我已经按照这个教程进行操作:

RHEL7:使用 Kerberos 控制对 NFS 网络共享的访问 |证书库

目前,纯 NFS 工作正常,kinit单独工作也很好,但我在尝试挂​​载时仍然没有获得许可,并且在/var/log/krb5kdc.log.

krb5kdc[12560](info): AS_REQ (8 etypes {18 17 16 23 25 26 20 19}) 192.168.0.13: NEEDED_PREAUTH: nfs/rbenedettin.local@LOCAL for krbtgt/LOCAL@LOCAL, Additional pre-authentication required                        
krb5kdc[12560](info): preauth (encrypted_timestamp) verify failure: Preauthentication failed                                                                                                                      
krb5kdc[12560](info): AS_REQ (8 etypes {18 17 16 23 25 26 20 19}) 192.168.0.13: PREAUTH_FAILED: nfs/rbenedettin.local@LOCAL for krbtgt/LOCAL@LOCAL, Preauthentication failed

我想使用zero-config,我尝试不使用它(编辑/etc/hosts),但问题仍然存在,其他一些教程指向authconfig-guiauthconfig-tui,但 Fedora 26 不再有它。网络上几乎没有关于最近的 Fedora 版本和 nfs + kerberos 的信息,所以我真的很感激任何有关它的信息。

答案1

问题出在哪里

事实上,本教程完全忽略了许多必需的元素(sssdpam等),可能这不是重点,因为重点似乎是 RHEL 考试。我对这项任务涉及的所有工具仍然有点迷失,因为我不是系统管理员(一会儿还有很多问题),但我已经设法让它工作了。感谢freeIPA大多数。

我会尝试把我所做的放在这里。我希望它能够帮助您了解如何在 Fedora 26 甚至 25 以上版本中获得基于 Kerberos 的 NFS 环境。如有发现程序不当的地方,请指正。它只触及零配置,没有 SELinux 环境,因此欢迎任何可以弥补差距的人来纠正它。

如果你已经搞砸了

如果您有足够的勇气尝试很多事情,甚至在没有结果的情况下建立一个 OpenLDAP 服务器,将其全部删除,删除 和Kerberos,删除和OpenLDAP中的配置文件和缓存,如果您已经让 NFS 服务器正常工作,则可以维护它克伯罗斯。如果您尝试删除 /etc/sssd 并重新安装软件包。/etc/var/lib/sssd


如何在 fedora 26 中获取 NFS + Kerberos

在简短的描述中,您将需要:

  1. 主机名 (阅读观察结果
  2. NFS 服务器工作。
  3. 安装免费IPA
  4. 配置 IPA + Kerberos + NFS
  5. 观察结果

主机名

在继续之前,请阅读答案末尾与主机名相关的观察结果。

如前所述,我想要一个zero-conf设置。我命名了我的机器并启用/取消屏蔽avahi服务。如果您有普通的 Fedora 安装 Avahi 应该已打开。

您可以使用 获取或更改主机名hostnamectl

$ hostnamectl set-hostname "myhostname"

多亏了avahi,你所有的本地网络都将结束当地的域,您的机器将得到如下地址你的主机名.local。我们将继续使用两台机器进行设置:

服务器本地-> 服务器

本地客户端-> 客户端

Kerberos(freeIPA 服务器)可以位于第三台计算机上,但为了简单起见,两者freeIPANFS将由一台计算机提供服务。

NFS服务器

  • 服务器端

我会认为你假装使用 NFSv4,所以它只需要这个:

$ dnf install  nfs-utils

$ systemctl enable nfs-server
$ systemctl start nfs-server

$ firewall-cmd --permanent --add-service=nfs
$ firewall-cmd --reload

编辑导出/etc/exports

# if using "sec=krb5p" your will need Kerberos, remove it for tests
/path/to/exported/dir client.local(rw,sync,sec=krb5p)

导出目录:

$ exportfs -avr
$ systemctl restart nfs-server
  • 客户端

安装需要的包:

$ dnf install nfs-utils

您可以使用以下方法进行测试:

$ mount -t nfs server.local:/path/to/exported/dir /path/to/local/dir

安装免费IPA

  • 服务器端

安装freeipa-server并给出明确的答案:

$ dnf install freeipa-server
$ ipa-server-install
...
Do you want to configure integrated DNS (BIND)? [no]: **no**
...
Server host name [server.local]: **press enter**    
...
Please confirm the domain name [local]: **press enter**
...
Please provide a realm name [LOCAL]: **press enter**
...
Directory Manager password: *******
Password (confirm): *******
...
IPA admin password: *******
Password (confirm): *******
...
Continue to configure the system with these values? [no]: **yes**

打开所需的防火墙端口:

$ firewall-cmd --add-service={freeipa-ldap,freeipa-ldaps} --permanent 
$ firewall-cmd --reload 
  • 客户端

安装freeipa-client并给出明确的答案:

$ dnf install freeipa-client
$ ipa-client-install --server=serve.local --domain LOCAL
... 
Proceed with fixed values and no DNS discovery? [no]: **yes**
...
Continue to configure the system with these values? [no]: **yes**
...
User authorized to enroll computers: **admin**
...
Password for [email protected]: ******

配置 IPA + Kerberos + NFS

此时,您将拥有一个可操作的 kerberos 服务器和客户端,我将假装您只有一个名为用户在服务器和客户端。

  • 服务器端

我们必须以管理员身份进行身份验证:

$ kinit admin
Password for [email protected]: *****

您可以通过以下方式确认您已通过身份验证klist

$ klist
Ticket cache: KEYRING:persistent:1000:krb_ccache_######       
Default principal: admin@LOCAL                            

Valid starting       Expires              Service principal    
17-10-2017 20:41:20  18-10-2017 20:41:17  krbtgt/LOCAL@LOCAL       

现在我们可以添加用户主体,我建议您使用与您的 Unix 用户相同的名称和密码:

$ ipa user-add user [email protected] --first=User --last="Foo" --password
password: ******

添加服务主体NFS

# --force is needed otherwise will complain about DNS record missing
$ ipa service-add nfs/server.local --force

获取主机和服务密钥:

$ ipa-getkeytab -s server.local -p host/server.local -k /etc/krb5.keytab
Keytab successfully retrieved and stored in: /etc/krb5.keytab

$ ipa-getkeytab -s server.local -p nfs/server.local -k /etc/krb5.keytab
Keytab successfully retrieved and stored in: /etc/krb5.keytab
  • 客户端

    与服务器端一样,以管理员身份进行身份验证并添加客户端主机:

    $ kinit admin 密码[电子邮件受保护]: *****

    $ ipa-getkeytab -s server.local -p host/client.local -k /etc/krb5.keytab 密钥表已成功检索并存储在:/etc/krb5.keytab

配置 freeIPA 和其他所有内容后,不要忘记在服务器上sec=krb5p添加。/etc/export重新启动服务器和客户端或重新启动NFS服务IPA。此时,您将能够在客户端挂载远程文件夹。

$ mount -v -t nfs -o sec=krb5p server.local:/path/to/exported/dir /path/to/local/dir

观察结果

零配置设置效果不佳...

不幸的是,FreeIPA 似乎强烈依赖BINDDNS 服务器,遗憾的是它对于家庭使用来说太多了,并且会给低端设备带来性能负担。最简单的解决方案是不使用dhcp,在所有机器上设置静态IP并在“/etc/hosts”中定义别名:

x.x.x.x server.local server      
y.y.y.y client.local client 

为什么不配置 pam,以便我在登录时获得 Kerberos 身份验证?

据我们所见这里freeipa,如果使用则sssd不需要authconfig --enablekrb5 --update

分区挂载但访问目录时获得“无权限”和空文件夹

您的用户可能需要访问其主密钥(只有 root 有权访问/etc/krb5.keytab),根据krb5.conf手册页,sssd用户的默认位置keytab/var/kerberos/krb5/user/%{UID}/client.keytab%{UID} 是用户的用户 ID。

$ ipa-getkeytab -s server.local -p user -k /var/kerberos/krb5/user/%{UID}/client.keytab --password
password: ******
Keytab successfully retrieved and stored in: /var/kerberos/krb5/user/%{UID}/client.keytab 

使用与 unix 用户相同的密码,我们可以使用 -r,但不建议这样做,实际上需要额外的命令才能从服务器检索现有密钥(从我们添加用户时开始)。

计时还是NTP???

我不确定 freeIPA 是否可以很好地工作chrony,新版本可能需要--force-ntpd替换chronyNTP

相关内容