我在 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-gui
或authconfig-tui
,但 Fedora 26 不再有它。网络上几乎没有关于最近的 Fedora 版本和 nfs + kerberos 的信息,所以我真的很感激任何有关它的信息。
答案1
问题出在哪里
事实上,本教程完全忽略了许多必需的元素(
sssd
、pam
等),可能这不是重点,因为重点似乎是 RHEL 考试。我对这项任务涉及的所有工具仍然有点迷失,因为我不是系统管理员(一会儿还有很多问题),但我已经设法让它工作了。感谢freeIPA
大多数。我会尝试把我所做的放在这里。我希望它能够帮助您了解如何在 Fedora 26 甚至 25 以上版本中获得基于 Kerberos 的 NFS 环境。如有发现程序不当的地方,请指正。它只触及零配置,没有 SELinux 环境,因此欢迎任何可以弥补差距的人来纠正它。
如果你已经搞砸了
如果您有足够的勇气尝试很多事情,甚至在没有结果的情况下建立一个 OpenLDAP 服务器,将其全部删除,删除 和
Kerberos
,删除和OpenLDAP
中的配置文件和缓存,如果您已经让 NFS 服务器正常工作,则可以维护它克伯罗斯。如果您尝试删除 /etc/sssd 并重新安装软件包。/etc
/var/lib/
sssd
如何在 fedora 26 中获取 NFS + Kerberos
在简短的描述中,您将需要:
- 主机名 (阅读观察结果)
- NFS 服务器工作。
- 安装免费IPA
- 配置 IPA + Kerberos + NFS
- 观察结果
主机名
在继续之前,请阅读答案末尾与主机名相关的观察结果。
如前所述,我想要一个zero-conf
设置。我命名了我的机器并启用/取消屏蔽avahi
服务。如果您有普通的 Fedora 安装 Avahi 应该已打开。
您可以使用 获取或更改主机名hostnamectl
。
$ hostnamectl set-hostname "myhostname"
多亏了avahi
,你所有的本地网络都将结束当地的域,您的机器将得到如下地址你的主机名.local。我们将继续使用两台机器进行设置:
服务器本地-> 服务器
本地客户端-> 客户端
Kerberos
(freeIPA 服务器)可以位于第三台计算机上,但为了简单起见,两者freeIPA
都NFS
将由一台计算机提供服务。
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 似乎强烈依赖BIND
DNS 服务器,遗憾的是它对于家庭使用来说太多了,并且会给低端设备带来性能负担。最简单的解决方案是不使用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
替换chrony
NTP