web-dev-qa-db-ja.com

NFS + Kerberos:マウント中にサーバーによってアクセスが拒否されました

ここで説明するようにNFS&Kerberosを構成しました: Red Hat Enterprise Linux 7でKerberos NFSサーバーを構成する方法

すべての診断操作はうまくいきますが、クライアント側に共有をマウントしようとすると、次のメッセージが表示されます。

mount.nfs4: access denied by server while mounting kdc.example.com:/var/backup

サーバーとクライアントの両方のIPは、IPの後の最初の場所である、両方の/ etc/hosts(サーバーとクライアントマシン)にあります。私の設定は:

/etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 EXAMPLE.COM = {
  kdc = kdc.example.com
  admin_server = kdc.example.com
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM

/ etc/exports:

/var/backup client.example.com(rw,sync,no_wdelay,nohide,no_subtree_check,no_root_squash,sec=krb5)
/mnt/storage client.example.com(rw,sync,no_wdelay,nohide,no_subtree_check,no_root_squash,sec=krb5)

/ var/kerberos/krb5kdc:

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 EXAMPLE.COM = {
    kdc_ports = 88
    admin_keytab = /etc/kadm5.keytab
    database_name = /var/kerberos/krb5kdc/principal
    acl_file = /var/kerberos/krb5kdc/kadm5.acl
    key_stash_file = /var/kerberos/krb5kdc/stash
    max_life = 10h 0m 0s
    max_renewable_life = 7d 0h 0m 0s
    master_key_type = des3-hmac-sha1
    supported_enctypes = arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
    default_principal_flags = +preauth
}

サーバーでkrb5kdcおよびkadminサービスが稼働しています。

クライアントの/ etc/fstab:

#NFS area
kdc.example.com:/var/backup                              /mnt/backup                   nfs4     rsize=65536,wsize=65536,nolock,hard,sec=krb5
kdc.example.com:/mnt/storage                             /mnt/storage                  nfs4     rsize=65536,wsize=65536,nolock,hard,sec=krb5

私がする時:

mount -vv -t nfs4 -o sec=krb5 kdc.example.com:/var/backup backup

私はメッセージを受け取っています:

mount.nfs4: timeout set for Mon May 22 23:32:59 2017
mount.nfs4: trying text-based options 'sec=krb5,addr=95.85.33.75,clientaddr=192.168.0.2'
mount.nfs4: mount(2): Permission denied
mount.nfs4: access denied by server while mounting kdc.example.com:/var/backup

最初の注意-clientaddrが192.168.0.2であるのに、両方の/ etc/hostsで設定されているclient.example.comではないのはなぜですか?とにかく、mountの-oオプションにclientaddr = client.example.comを追加すると、同じメッセージが表示されます。

2番目のメッセージは、サーバーの/var/log/krb5kdc.logにあります。

CLIENT_NOT_FOUND: [email protected] for krbtgt/[email protected], Client not found in Kerberos database

サーバー上のklist -k:

Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   3 Host/[email protected]
   3 Host/[email protected]
   3 Host/[email protected]
   3 nfs/[email protected]
   3 nfs/[email protected]
   3 nfs/[email protected]

クライアントのklist -k:

Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   2 Host/[email protected]
   2 Host/[email protected]
   2 Host/[email protected]
   2 nfs/[email protected]
   2 nfs/[email protected]
   2 nfs/[email protected]

kadmin -p root/admin:

kadmin:  listprincs
K/[email protected]
[email protected]
Host/[email protected]
Host/[email protected]
kadmin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
krbtgt/[email protected]
nfs/[email protected]
nfs/[email protected]
root/[email protected]

それで、問題は何ですか? NFS共有をマウントできないのはなぜですか?

5
Green Root

同じ問題が発生しました。この小さなチュートリアルによると https://www.certdepot.net/rhel7-use-kerberos-control-access-nfs-network-shares/ サーバー側でnfs-secure-serverサービスを有効にする必要がありますクライアント側のnfs-secureサービス。これで問題が解決するはずです。

1
aniskh

私はそれが多少古いことを知っていますが、これをまだ探している場合、私は同様の問題に直面して自分で解決策を得ました、私の問題に対する私の答えでこれを得ることができます "Fedora 26 NFS + Kerberos“事前認証に失敗しました」(マウントにより権限がなくなります) " 、RHELがこれらの設定を実行できると確信しています

0

昨日同じ問題に遭遇しましたが、これはKDCでプリンシパルが欠落していて、クライアントでrpc-gssd.serviceが停止しているために発生しているようです。

KDCサーバーでは、クライアントからNFS共有のマウントを試みたときにログにプリンシパルが表示される場合、tail -f /var/log/krb5kdc.logが起動され、プリンシパルが欠落しているはずです。

[vagrant@desktop1 ~]$ Sudo mount -o sec=krb5 server1:/knfs /knfs -v
mount.nfs: timeout set for Sun Feb 24 09:44:35 2019
mount.nfs: trying text-based options 'sec=krb5,vers=4.1,addr=192.168.121.163,clientaddr=192.168.121.26'
mount.nfs: mount(2): Permission denied
mount.nfs: trying text-based options 'sec=krb5,vers=4.0,addr=192.168.121.163,clientaddr=192.168.121.26'
mount.nfs: mount(2): Permission denied
mount.nfs: trying text-based options 'sec=krb5,addr=192.168.121.163'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query failed: RPC: Remote system error - No route to Host
^C
[vagrant@desktop1 ~]$ 

ログ出力では、欠落しているプリンシパルが識別されています。

[vagrant@server1 ~]$ Sudo tail -f /var/log/krb5kdc.log 
Feb 24 09:42:35 server1 krb5kdc[2870](info): TGS_REQ (8 etypes {18 17 20 19 16 23 25 26}) 192.168.121.26: LOOKING_UP_SERVER: authtime 0,  nfs/[email protected] for nfs/[email protected], Server not found in Kerberos database
Feb 24 09:42:35 server1 krb5kdc[2870](info): TGS_REQ (4 etypes {18 17 16 23}) 192.168.121.26: LOOKING_UP_SERVER: authtime 0,  nfs/[email protected] for nfs/[email protected], Server not found in Kerberos database
Feb 24 09:42:35 server1 krb5kdc[2870](info): TGS_REQ (8 etypes {18 17 20 19 16 23 25 26}) 192.168.121.26: LOOKING_UP_SERVER: authtime 0,  nfs/[email protected] for nfs/[email protected], Server not found in Kerberos database
Feb 24 09:42:35 server1 krb5kdc[2870](info): TGS_REQ (8 etypes {18 17 20 19 16 23 25 26}) 192.168.121.26: LOOKING_UP_SERVER: authtime 0,  nfs/[email protected] for nfs/[email protected], Server not found in Kerberos database

欠落しているプリンシパルをKDCに追加する必要があり、クライアントの鍵をクライアントにエクスポートする必要があります{/etc/krb5.keytab}。

Sudo kadmin.local -q "ktadd nfs/kerberos.example.com"
Sudo kadmin.local -q "ktadd -k /tmp/krb5.keytab nfs/desktop1.example.com"

クライアント側のキータブ:

[vagrant@desktop1 ~]$ Sudo klist -ek
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   3 nfs/[email protected] (aes256-cts-hmac-sha1-96) 
   3 nfs/[email protected] (aes128-cts-hmac-sha1-96) 
   3 nfs/[email protected] (des3-cbc-sha1) 
   3 nfs/[email protected] (arcfour-hmac) 
   3 nfs/[email protected] (camellia256-cts-cmac) 
   3 nfs/[email protected] (camellia128-cts-cmac) 
   3 nfs/[email protected] (des-hmac-sha1) 
   3 nfs/[email protected] (des-cbc-md5) 
[vagrant@desktop1 ~]$ 

拒否された権限は存在しないはずですが、間違った引数に対して別の警告が表示されます。

[vagrant@desktop1 ~]$ Sudo mount -o sec=krb5 server1:/knfs /knfs -v
mount.nfs: timeout set for Sun Feb 24 09:07:32 2019
mount.nfs: trying text-based options 'sec=krb5,vers=4.1,addr=192.168.121.54,clientaddr=192.168.121.195'
mount.nfs: mount(2): Invalid argument
mount.nfs: trying text-based options 'sec=krb5,vers=4.0,addr=192.168.121.54,clientaddr=192.168.121.195'
mount.nfs: mount(2): Invalid argument
mount.nfs: trying text-based options 'sec=krb5,addr=192.168.121.54'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query failed: RPC: Remote system error - No route to Host
mount.nfs: trying text-based options 'sec=krb5,vers=4.0,addr=192.168.121.54,clientaddr=192.168.121.195'
mount.nfs: mount(2): Invalid argument
mount.nfs: trying text-based options 'sec=krb5,addr=192.168.121.54'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query failed: RPC: Remote system error - No route to Host
mount.nfs: trying text-based options 'sec=krb5,vers=4.0,addr=192.168.121.54,clientaddr=192.168.121.195'
mount.nfs: mount(2): Invalid argument
mount.nfs: trying text-based options 'sec=krb5,addr=192.168.121.54'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query failed: RPC: Remote system error - No route to Host
^C
[vagrant@desktop1 ~]$ 

サービスrpc-gssd.serviceを開始すると、エラーが消え、NFS共有が正しくマウントされました。

[vagrant@desktop1 ~]$ Sudo systemctl start rpc-gssd.service 
[vagrant@desktop1 ~]$ Sudo mount -o sec=krb5 server1:/knfs /knfs -v mount.nfs: 
timeout set for Sun Feb 24 09:07:47 2019 mount.nfs: trying text-based options 'sec=krb5,vers=4.1,addr=192.168.121.54,clientaddr=192.168.121.195' 
[vagrant@desktop1 ~]$

チケットは次のとおりです。

[vagrant@desktop1 ~]$ Sudo klist -e
Ticket cache: KEYRING:persistent:0:krb_ccache_kfAgj83
Default principal: nfs/[email protected]

Valid starting     Expires            Service principal
01/01/70 00:00:00  01/01/70 00:00:00  Encrypted/Credentials/v1@X-GSSPROXY:
[vagrant@desktop1 ~]$ 
0
ttaran7