Fedora 26 NFS + Kerberos “Preauthentication failed”(掛載導致無權限)
我很難在 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 的資訊,所以我非常感謝任何關於它的資訊。
似乎是什麼問題
該教程實際上完全忽略了許多需要的元素(
sssd
、pam
等),這可能不是重點,因為重點似乎是 RHEL 考試。由於我不是系統管理員(稍後會提出很多問題),因此我對這項任務所涉及的所有工具仍然有些迷茫,但我已經設法讓它工作了。感謝freeIPA
大多數。我會嘗試把我所做的放在這裡。我希望它對如何在 Fedora 26 甚至 25 plus 中獲得一個 kerberized NFS 環境有所了解。**拜託,任何發現任何不適當程序的人,請糾正它。**它只涉及沒有 SELinux 環境的零配置,因此歡迎任何可以彌補差距的人糾正它。
如果你已經做了很多亂七八糟的事
如果您有足夠的勇氣嘗試很多事情,甚至在沒有結果的情況下安裝 OpenLDAP 伺服器,將其全部刪除,同時刪除
Kerberos
andOpenLDAP
,刪除配置文件和記憶體 in/etc
and/var/lib/
,如果您已經讓 NFS 伺服器正常工作,您可以維護它克伯羅斯。如果你玩過sssd
delete /etc/sssd 並重新安裝包。如何在 Fedora 26 中獲取 NFS + Kerberos
在簡短的描述中,您需要:
- 主機名(閱讀意見)
- NFS 伺服器工作。
- 安裝免費IPA
- 配置 IPA + Kerberos + NFS
- 觀察
主機名
在繼續之前,請閱讀答案末尾與主機名相關的觀察。
如前所述,我想要一個
zero-conf
設置。我命名了我的機器並啟用/未屏蔽avahi
服務。如果你有一個普通的 Fedora 安裝 Avahi 應該打開。您可以使用 獲取或更改主機名
hostnamectl
。$ hostnamectl set-hostname "myhostname"
多虧了
avahi
,您的所有本地網路都將在本地域上,您將獲得像yourhostname.local這樣的電腦地址。我們將繼續使用兩台機器進行設置:server.local -> 伺服器
client.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
安裝 FreeIPA
伺服器端
安裝
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 admin@SERVER.LOCAL: ******
配置 IPA + Kerberos + NFS
此時您將擁有一個可操作的 kerberos 伺服器和客戶端,我將假設您在伺服器和客戶端只有一個名為user的使用者。
伺服器端
我們必須以管理員身份進行身份驗證:
$ kinit admin Password for admin@SERVER.LOCAL: *****
您可以確認您已通過以下方式進行身份驗證
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=user@yourmail.com --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 admin@SERVER.LOCAL 的密碼:*****
$ ipa-getkeytab -s server.local -p host/client.local -k /etc/krb5.keytab 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