web-dev-qa-db-ja.com

Fedora 26 NFS + Kerberos「事前認証に失敗しました」(マウントすると権限がなくなります)

Fedora 26でnfs + kerberosをセットアップするのに苦労しています。

私はこのチュートリアルに従いました:

RHEL7:Kerberosを使用してNFSネットワーク共有へのアクセスを制御する| CertDepot

現時点では、純粋な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に関する情報はWebにほとんどありません。

5

問題と思われるもの

チュートリアルは実際には必要な多くの要素(sssdpamなど)を完全に無視しました。RHEL試験に焦点が当てられているように思われるため、おそらくそれはそのポイントではありません。私はシステム管理者ではないので、このタスクに関連するすべてのツールで少し迷っています(しばらくの間、多くの質問があります)が、なんとか機能させることができました。 freeIPAに感謝します。

ここに私がしたことを入れてみます。私はそれがFedora 26と多分25以上でKerberos化されたNFS環境を得る方法にいくらかの光を与えると期待します。 不適切な手順を見つけた人は是非修正してください。SELinux環境なしでzero-confにのみ触れるため、ギャップを埋めることができる人は誰でもそれを修正することを歓迎します。

あなたがすでに多くの混乱をしたなら

多くのことに挑戦する勇気がある場合は、OpenLDAPサーバーを結果なしで立ち上げ、すべて削除し、KerberosOpenLDAPの両方を削除し、/etc/var/lib/の構成ファイルとキャッシュを削除します、Kerberosなしですでに動作している場合は、NFSサーバーを維持できます。 sssdで遊んだ場合は、/ etc/sssdを削除してパッケージを再インストールします。


Fedora 26でNFS + Kerberosを取得する方法

簡単な説明では、次のことを行う必要があります。

  1. ホスト名(観測値の読み取り
  2. NFSサーバーが機能しています。
  3. FreeIPAをインストールする
  4. IPA + Kerberos + NFSを構成する
  5. 観察

ホスト名

続行する前に、ホスト名に関連する回答の最後の観察を読んでください。

述べたように、私はzero-confのセットアップを望んでいました。私は自分のマシンに名前を付け、avahiサービスを有効化/マスク解除しました。 Vanilla Fedoraをインストールしている場合は、Avahiがオンになっているはずです。

ホスト名はhostnamectlで取得または変更できます。

$ hostnamectl set-hostname "myhostname"

avahiのおかげで、すべてのローカルネットワークはlocalドメインを超え、yourhostname.local。 2台のマシンでセットアップを続行します。

server.local->サーバー

client.local->クライアント

Kerberos(freeIPAサーバー)を3台目のマシンに置くこともできますが、簡単にするために、freeIPANFSの両方を1台のマシンで提供します。

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 [email protected]: ******

IPA + Kerberos + NFSを構成する

この時点で、操作可能なkerberosサーバーとクライアントがあります。サーバーとクライアントには、userという名前のユーザーしかいないと思います。

  • サーバ側

管理者プリンシパルとして認証する必要があります。

$ 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 [email protected]のパスワード:*****

    $ 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はDNSサーバーであるBINDに強く依存しているように見えます。これは家庭で使用するには多すぎるため、ローエンドデバイスにパフォーマンスの負荷をかける可能性があるためです。 simplesソリューションはdhcpを使用せず、すべてのマシンで静的IPを設定し、 `/ etc/hosts´でエイリアスを定義します。

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

ログイン時にKerberos認証を取得するようにpamを構成しないのはなぜですか?

何が見えるか here freeipa、sssdを使用している場合、authconfig --enablekrb5 --updateは不要です。

パーティションのマウントが、ディレクトリへのアクセス中に「アクセス権なし」と空のフォルダーを取得する

/etc/krb5.keytab manページによると、ユーザーはおそらくその主キーへのアクセスが必要です(rootだけが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を使用することもできますが、サーバーから(ユーザーを追加したときの)既存のキーを取得するために追加のコマンドが必要になることはお勧めできません。

ChronyまたはNTP ???

FreeIPAがchronyでうまく機能するかどうかはわかりませんが、新しいバージョンではchronyNTPに置き換えるために--force-ntpdが必要になる場合があります

3