NIS/NFSv4

NFSv4 kreberos

NFSサーバに対する認証。
UID/GIDのマッチングによるファイル/フォルダへのアクセス許可判定以外に、
kerberos認証によるチケットでファイル/フォルダへのアクセス可否を判断することができる。

NFSサーバ

NFSサーバの/etc/exportsは、擬似ファイルシステム形式で作り、gss/krb5を公開ホスト名代わりに使用する
*kerberos認証形式は擬似ファイルシステム形式でないとだめ?

[root@nfs ~]# cat /etc/exports
#
/nfs        gss/krb5(rw,fsid=0)
/nfs/home   gss/krb5(rw,nohide)
/nfs/export gss/krb5(rw,nohide)
/nfs/src    gss/krb5(rw,nohide)
#
[root@nfs ~]#

として /etc/sysconfig/nfs の SECURE_NFS="yes" を有効にする

[root@nfs ~]# grep -v "#" /etc/sysconfig/nfs
SECURE_NFS="yes"
[root@nfs ~]#

/etc/krb5.confを定義する

[root@nfs ~]# vi /etc/krb5.conf
[libdefaults]
 default_realm = CHAPERONE.JP
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 
[realms]
 CHAPERONE.JP = {
  kdc = kdc.chaperone.jp
  admin_server = kdc.chaperone.jp
 }
 
[domain_realm]
 .chaperone.jp = CHAPERONE.JP
 chaperone.jp = CHAPERONE.JP
[root@nfs ~]#

NFSサーバ(nfs.chaperone.jp)に NFSv4向けのサービスプリンシパルを用意して、keytabファイルとしてNFSサーバに置く

[root@nfs ~]# yum install krb5-workstation
 
[root@nfs ~]# kadmin -p root/admin
Authenticating as principal root/admin with password.
Password for root/admin@CHAPERONE.JP:                    *管理者パスワードでkdc.chaperone.jpにアクセス
kadmin:
kadmin:  add_principal  -randkey  nfs/nfs.chaperone.jp@CHAPERONE.JP
kadmin:  add_principal  -randkey  nfs/nfs@CHAPERONE.JP
kadmin:
kadmin:  ktadd -k /etc/krb5.keytab nfs/nfs.chaperone.jp@CHAPERONE.JP
kadmin:  ktadd -k /etc/krb5.keytab nfs/nfs@CHAPERONE.JP
kadmin:
kadmin: quit
[root@nfs ~]#
[root@nfs ~]#
[root@nfs ~]# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   2 nfs/nfs.chaperone.jp@CHAPERONE.JP (aes256-cts-hmac-sha1-96)
   2 nfs/nfs.chaperone.jp@CHAPERONE.JP (aes128-cts-hmac-sha1-96)
   2 nfs/nfs.chaperone.jp@CHAPERONE.JP (des3-cbc-sha1)
   2 nfs/nfs.chaperone.jp@CHAPERONE.JP (arcfour-hmac)
   2 nfs/nfs@CHAPERONE.JP (aes256-cts-hmac-sha1-96)
   2 nfs/nfs@CHAPERONE.JP (aes128-cts-hmac-sha1-96)
   2 nfs/nfs@CHAPERONE.JP (des3-cbc-sha1)
   2 nfs/nfs@CHAPERONE.JP (arcfour-hmac)
[root@nfs ~]#

必要なデーモンを定義して再起動か、もしくは手動で各デーモンを再起動する

[root@nfs ~]# chkconfig nfs on && chkconfig nfslock on && chkconfig rpcbind on && chkconfig rpcgssd on && \
reboot
 
[root@nfs ~]# /etc/init.d/rpcbind restart && /etc/init.d/nfslock restart && /etc/init.d/rpcgssd restart && \
/etc/init.d/nfs restart

各デーモンとの連携は下記になる

S13rpcbind   /sbin/rpcbind
S14nfslock   /sbin/rpc.statd    (NFSv3,v2を使うなら必要)
S19rpcgssd   /usr/sbin/rpc.gssd (/etc/sysconfig/nfsでSECURE_NFS="yes"なら)
S30nfs       /etc/init.d/nfs
                            +----- /sbin/service rpcsvcgssd start (/etc/sysconfig/nfsでSECURE_NFS="yes"なら)
                            +----- rpc.rquotad (/etc/sysconfig/nfsでRQUOTADが有効なら)
                            +----- rpc.mountd
                            +----- rpc.nfsd
                            +----- /sbin/service rpcidmapd start

NFSクライアント

/etc/sysconfig/nfs の SECURE_NFS="yes" を有効にして、/etc/krb5.confもNFSサーバと同じように調整する。

そしてNFSクライアント(client.chaperone.jp)の NFSv4向けのサービスプリンシパルを用意する。

[root@client ~]# yum install krb5-workstation
 
[root@client ~]# kadmin -p root/admin
Authenticating as principal root/admin with password.
Password for root/admin@CHAPERONE.JP:
kadmin:
kadmin:  add_principal  -randkey  nfs/client.chaperone.jp@CHAPERONE.JP
kadmin:  add_principal  -randkey  nfs/client@CHAPERONE.JP
kadmin:
kadmin:  ktadd -k /etc/krb5.keytab nfs/client.chaperone.jp@CHAPERONE.JP
kadmin:  ktadd -k /etc/krb5.keytab nfs/client@CHAPERONE.JP
kadmin:
kadmin:  quit
[root@client ~]# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   2 nfs/client.chaperone.jp@CHAPERONE.JP (aes256-cts-hmac-sha1-96)
   2 nfs/client.chaperone.jp@CHAPERONE.JP (aes128-cts-hmac-sha1-96)
   2 nfs/client.chaperone.jp@CHAPERONE.JP (des3-cbc-sha1)
   2 nfs/client.chaperone.jp@CHAPERONE.JP (arcfour-hmac)
   2 nfs/client@CHAPERONE.JP (aes256-cts-hmac-sha1-96)
   2 nfs/client@CHAPERONE.JP (aes128-cts-hmac-sha1-96)
   2 nfs/client@CHAPERONE.JP (des3-cbc-sha1)
   2 nfs/client@CHAPERONE.JP (arcfour-hmac)
[root@client ~]#

次にNFSマウントに必要なデーモンを定義してマシンの再起動か、もしくは手動で各デーモンを再起動する

[root@client ~]# chkconfig nfslock on &&  chkconfig rpcbind on && chkconfig rpcgssd on && reboot
 
[root@client ~]# /etc/init.d/nfslock restart && /etc/init.d/rpcbind restart && /etc/init.d/rpcgssd restart

各デーモンとの連携は下記になる

S13rpcbind   /sbin/rpcbind
S14nfslock   /sbin/rpc.statd    (NFSv3,v2を使うなら必要。NFSクライアントにも必要みたい)
S19rpcgssd   /usr/sbin/rpc.gssd (/etc/sysconfig/nfsでSECURE_NFS="yes"なら)

接続テスト

NFSサーバ側で適切にディレクトリが公開されているかを確認する
留意 NFSサーバはNISに加入しなくても構わない

[root@nfs ~]# ls -l /nfs/export/
合計 8
drwxr-xr-x 2 2000 2000 4096  9月  9 21:58 2014 illya
drwxr-xr-x 3 2001 2000 4096  9月 15 13:14 2014 saber
[root@nfs ~]#

client.chaperone.jpはNISに参加していて、autofsの影響を受けている。その影響を排して動作確認をしたいので、一端autofsを停止する

[root@client ~]# ypcat auto.home
-rw,sec=krb5 nfs:/export/saber
-rw,sec=krb5 nfs:/export/illya
[root@client ~]#
[root@client ~]# /etc/init.d/autofs stop

client.chaperone.jpからNFSマウントを試みる

[root@client ~]# ls -l /tmp
合計 0
[root@client ~]# mount -t nfs4 -o sec=krb5 nfs:/export /home
[root@client ~]#
[root@client ~]# ls -l /tmp
合計 4
-rw------- 1 root root 1158  9月 15 13:05 2014 krb5cc_machine_CHAPERONE.JP
[root@client ~]#
[root@client ~]# df -Th /home
Filesystem     Type  Size  Used Avail Use% Mounted on
nfs:/export    nfs4  5.5G  921M  4.3G  18% /home
[root@client ~]#

NFSマウントは成功して /tmp にチケットが置かれる。ほかのマシンからユーザがログインしてみると

[foo@c ~]$ ssh -l saber client
saber@client's password:
Last login: Mon Sep 15 12:37:27 2014 from c.chaperone.jp
[saber@client ~]$ pwd
/home/saber
[saber@client ~]$ df -Th /home
Filesystem     Type  Size  Used Avail Use% Mounted on
nfs:/export    nfs4  5.5G  921M  4.3G  18% /home
[saber@client ~]$ ls -l /tmp
合計 8
-rw------- 1 saber fate  539  9月 15 13:10 2014 krb5cc_2001_8ua7HK
-rw------- 1 root  root 1158  9月 15 13:05 2014 krb5cc_machine_CHAPERONE.JP
[saber@client ~]$

とログインに成功して、/tmp にそのuidを持ったチケットが作られる

接続テスト autofs

未完成
成功しない....
静的NFSは問題なかったのだが動的NFSではそのようなファイルやディレクトリはないと言われる。
ログとして

automount[1097]: st_expire: state 1 path /home
automount[1097]: expire_proc: exp_proc = 140035732772608 path /home
automount[1097]: expire_cleanup: got thid 140035732772608 path /home stat 0
automount[1097]: expire_cleanup: sigchld: exp 140035732772608 finished, switching from 2 to 1
automount[1097]: st_ready: st_ready(): state = 2 path /home

が15秒おきに記録される。automountの設定問題かも...

最新の60件
2026-05-16 2026-05-13 2026-05-12 2026-05-11 2026-05-08 2026-05-06 2026-05-05 2026-05-04 2026-05-03 2026-04-30 2026-04-29 2026-04-28 2026-04-27 2026-04-25 2026-04-24 2026-04-22 2026-04-21 2026-04-12 2026-04-08 2026-04-06 2026-04-05 2026-04-02 2026-03-26 2026-03-23 2026-03-21 2026-03-19 2026-03-15 2026-03-14 2026-03-13 2026-03-07 2026-03-06 2026-03-04 2026-03-02 2026-02-26 2026-02-24 2026-02-21 2026-02-18 2026-02-17 2026-02-16 2026-02-11

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-09-15 (月) 15:06:12