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にほとんどありません。
問題と思われるもの
チュートリアルは実際には必要な多くの要素(
sssd
、pam
など)を完全に無視しました。RHEL試験に焦点が当てられているように思われるため、おそらくそれはそのポイントではありません。私はシステム管理者ではないので、このタスクに関連するすべてのツールで少し迷っています(しばらくの間、多くの質問があります)が、なんとか機能させることができました。freeIPA
に感謝します。ここに私がしたことを入れてみます。私はそれがFedora 26と多分25以上でKerberos化されたNFS環境を得る方法にいくらかの光を与えると期待します。 不適切な手順を見つけた人は是非修正してください。SELinux環境なしでzero-confにのみ触れるため、ギャップを埋めることができる人は誰でもそれを修正することを歓迎します。
あなたがすでに多くの混乱をしたなら
多くのことに挑戦する勇気がある場合は、OpenLDAPサーバーを結果なしで立ち上げ、すべて削除し、
Kerberos
とOpenLDAP
の両方を削除し、/etc
と/var/lib/
の構成ファイルとキャッシュを削除します、Kerberosなしですでに動作している場合は、NFSサーバーを維持できます。sssd
で遊んだ場合は、/ etc/sssdを削除してパッケージを再インストールします。
簡単な説明では、次のことを行う必要があります。
続行する前に、ホスト名に関連する回答の最後の観察を読んでください。
述べたように、私はzero-conf
のセットアップを望んでいました。私は自分のマシンに名前を付け、avahi
サービスを有効化/マスク解除しました。 Vanilla Fedoraをインストールしている場合は、Avahiがオンになっているはずです。
ホスト名はhostnamectl
で取得または変更できます。
$ hostnamectl set-hostname "myhostname"
avahi
のおかげで、すべてのローカルネットワークはlocalドメインを超え、yourhostname.local。 2台のマシンでセットアップを続行します。
server.local->サーバー
client.local->クライアント
Kerberos
(freeIPAサーバー)を3台目のマシンに置くこともできますが、簡単にするために、freeIPA
とNFS
の両方を1台のマシンで提供します。
私は、あなたが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-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]: ******
この時点で、操作可能な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
何が見えるか 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を使用することもできますが、サーバーから(ユーザーを追加したときの)既存のキーを取得するために追加のコマンドが必要になることはお勧めできません。
FreeIPAがchrony
でうまく機能するかどうかはわかりませんが、新しいバージョンではchrony
をNTP
に置き換えるために--force-ntpd
が必要になる場合があります