web-dev-qa-db-ja.com

CentOS Linuxリリース7.6.1810(コア)を使用して、Active DirectoryKDCからのKerberos認証を利用するNFS4サーバーをどのようにセットアップしますか

Active DirectoryからKerberosを使用してNFS4サーバーをどのようにセットアップしますか?

NFS4サーバーをインストールして構成し、それに接続することはできますが、Active DirectoryがKDCを制御している状況では、Kerberosを機能させることができません。 ActiveDirectoryを自分でセットアップするWindowsServerを新しくインストールした場合でもそうではありません。

会社のActiveDirectoryにセットアップしたサーバーで多くのデバッグを行いましたが、その多くはここに記載されています: setclientidのLinux NFSサーバー実装はどのように機能しますか? 結果はと同じでしたActive Directoryを備えた新しいWindowsサーバーですが、驚くべきことに(おそらくそれほど驚くことではありませんが)、他の種類のKDCをインストールすると機能します。

約8か月前にインストールされた稼働中のサーバー(Active DirectoryのNFS4およびKerberosなど)があり、CentOS 7.6.1810も実行されていますが、実行したすべてのサーバーを複製しても、サーバーを取得できません。働くために。

SSSD、PBIS Open、およびKerberosの手動構成を使用しました。

ほとんどすべてが「許可が拒否されました」という結果になり、RPCのエラーコード-13に起因するようです。私が調べたすべてのKerberosチケットは正しく見えました。

Active DirectoryからKerberosを使用するようにCentOSLinuxリリース7.6.1810(コア)でNFS4サーバーを構成するために実行する必要がある正確な手順は何ですか?

2
Tobias

私はこの方法をLinux(ubuntu)とFreeBSDの両方で使用しているので、UN * Xライクなシステムにかなり一般的であると確信しています。

まず、dnsが正しく機能し、ホスト名が正しいことを確認する必要があります。 hostname.domain.nameへの127.0.1.1へのポインターがないことを確認してください

また、sec = krb5(またはkrb5iまたはkrb5p)でnfs4を使用するようにシステムが設定されていることを確認してください。

Nfsが使用するSPNを設定する必要があります。それを処理できるmsktutilと呼ばれるunixコマンドがあります。おそらくcentosで入手できます。私はそれがubuntuの標準リポジトリで利用可能であることを知っています。 https://github.com/msktutil/msktutil を参照してください

私はそれをすべて処理するスクリプトを持っています。

ドメインに参加し、すべてが正常に機能することを確認してください。 (もちろん、kerberized nfs4を除く。)私は通常、次のことを行います。

kinit Administrator
(enter password)

klistに管理者チケットが表示されます。

スクリプトを実行する前に、/ etc /krb5.keytabのバックアップを作成してください。

その後、このスクリプトを実行します:(ドメインに2回参加して、/ etc/krb5.keytabが適切に更新されるようにします。厳密に必要かどうかはわかりません。)

#!/bin/bash

Host_NAME=`hostname -s`
DOMAIN_NAME=`hostname -d`
FULL_NAME=`hostname -A`
DC=your-dc.your.domain
kinit Administrator;

rm -f /etc/krb5.keytab

msktutil \
--delegation --dont-expire-password --no-pac --computer-name $Host_NAME \
--enctypes 0x1F -b "OU=Services" -k /etc/krb5.keytab \
-h $Host_NAME -s nfs/$FULL_NAME --upn nfs/$FULL_NAME --verbose

net ads join -k

その後、あなたは行く準備ができているはずです! (nfs-serverが正しく設定されていると仮定します。そしてkerberosと他のすべて。たとえば、ubuntu 18.04では/ etc/default/nfs-kernel-serverは私のシステムでは次のようになります。

# Number of servers to start up
RPCNFSDCOUNT=8

# Runtime priority of server (see Nice(1))
RPCNFSDPRIORITY=0

# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
RPCMOUNTDOPTS="--manage-gids"

# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD="yes"

# Options for rpc.svcgssd.
#RPCSVCGSSDOPTS=""

# Options for rpc.nfsd.
RPCNFSDOPTS=""
RPCSVCGSSDOPTS="-k /etc/krb5.keytab"

そして私の/etc/idmapd.confは次のようになります:

[General]   

Verbosity = 1   
Pipefs-Directory = /run/rpc_pipefs   
# set your own domain here, if id differs from FQDN minus hostname.   
# Domain = localdomain    
Domain = my.domain 
Local-Realms = MY.DOMAIN   
[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

[Translation]

Method = nsswitch

そして/ etc/default/nfs-commonは次のようになります:(おそらくcentosにも似たようなものがあります)

# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".


# Options for rpc.statd.
#   Should rpc.statd listen on a specific port? This is especially useful
#   when you have a port-based firewall. To use a fixed port, set this
#   this variable to a statd argument like: "--port 4000 --outgoing-port 4001".    
#   For more information, see rpc.statd(8) 
STATDOPTS=
NEED_IDMAPD=yes
# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=yes
RPCSVCGSSDOPTS="-k /etc/krb5.keytab"

お役に立てれば!

1
Fredrik