Fedora

Fedora 26 NFS + Kerberos “Preauthentication failed”(掛載導致無權限)

  • March 3, 2018

我很難在 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 的資訊,所以我非常感謝任何關於它的資訊。

似乎是什麼問題

該教程實際上完全忽略了許多需要的元素(sssdpam等),這可能不是重點,因為重點似乎是 RHEL 考試。由於我不是系統管理員(稍後會提出很多問題),因此我對這項任務所涉及的所有工具仍然有些迷茫,但我已經設法讓它工作了。感謝freeIPA大多數。

我會嘗試把我所做的放在這裡。我希望它對如何在 Fedora 26 甚至 25 plus 中獲得一個 kerberized NFS 環境有所了解。**拜託,任何發現任何不適當程序的人,請糾正它。**它只涉及沒有 SELinux 環境的零配置,因此歡迎任何可以彌補差距的人糾正它。

如果你已經做了很多亂七八糟的事

如果您有足夠的勇氣嘗試很多事情,甚至在沒有結果的情況下安裝 OpenLDAP 伺服器,將其全部刪除,同時刪除Kerberosand OpenLDAP,刪除配置文件和記憶體 in /etcand /var/lib/,如果您已經讓 NFS 伺服器正常工作,您可以維護它克伯羅斯。如果你玩過sssddelete /etc/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,您的所有本地網路都將在地域上,您將獲得像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重新啟動伺服器和客戶端或重新啟動NFSIPA服務。此時,您將能夠在客戶端掛載遠端文件夾。

$ 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``chrony``NTP

引用自:https://unix.stackexchange.com/questions/396943