R04(2022)/09m/30d
R04(2022)/10m/01d(「追記」を追記。)
VMware Fusion 12.2.4
Client:macOS Catalina 10.15.7
KDC:Ubuntu 20.4.4 LTS
NFS Server:Ubuntu 20.4.4 LTS
NFS Server をmacOS Client から利用するのにKerberos 認証を使用して行って見ました。ネットを探すとNFS Server とKDC and AS 等が同一のPC というのは有ったのですが、諸般の事情でKerberos とNFS Server を分けてみました。つまりMac を含め3PC 体制です。3PC ともVMware Fusion を使用しての仮想環境です。ただし仮想環境ではありますが、1 仮想環境は1PC or Mac で動かしています。つまり仮想環境であっても3 台のPC or Mac が投入されています。
また、Kerberos は各PC の時間設定がそれっている必要が有るそうです。NTP を使用して各PC の時刻を合わせてください。
追記01
お世話になったSite を記載するのを忘れておりました。下記、他多数です。
https://www.rootusers.com/how-to-use-kerberos-to-control-access-to-nfs-network-shares/
これから、その手順を記載します。当然ですが3 台のPC の設定がすべて終わらないと使えないです。お試しになる場合は設定の順番にご注意ください。
まずはssh の設定を行って見ます。
A. Kerberos の設定。
krb5.conf の設定内容。下記のような感じです。私はKDC を設定した後、NFS Server やmacOS にCopy しました。
krb5.conf のアクセス権は(何故か)下記のように設定しないといけないようです。
sudo chmod 735 /private/etc/krb5.conf
or
sudo chmod 777 /private/etc/krb5.conf
[libdefaults]
default_realm = NIKI.PR
[realms]
NIKI.PR = {
kdc = krb5.niki.pr
admin_server = krb5.niki.pr
}
#Ubuntu 20.04.4 LTS
#をKerberos Server にします。
#IP アドレスやName は各自お使いのものに変更してください。
#hosts ファイルに下記を追加。3 つの仮想環境に最初に設定した方が良いようです。
10.0.1.50 krb5.niki.pr krb5
10.0.1.20 appleMacVM.local applemac
10.0.1.59 nfsu2.local nfsu2
#KDC の名前を変更します。
hostnamectl set-hostname krb5.niki.pr
#名前変更したので一旦、ターミナルからLogout します。
exit
ssh apple@10.0.1.50
#NFS Client or NFS Server とNetwake 接続できているか確認。
ping -c 2 appleMacVM.local
ping -c 2 nfsu2.local
#Kerberos のInstall 及び設定です。
sudo apt install krb5-kdc krb5-admin-server krb5-config -y
「Default Kerberos version 5 realm:」に
NIKI.PR
を入力。
「Kerberos server for your realm:」に
krb5.niki.pr
を入力。
「Administrative server for your kerberos realm:」に
krb5.niki.pr
を入力。
#Kerberos の設定です。
sudo krb5_newrealm
sudo kadmin.local
addprinc root/admin
addprinc -randkey host/krb5.niki.pr
ktadd host/krb5.niki.pr
quit
sudo cp /etc/krb5kdc/kadm5.acl '/home/apple/Documents'
sudo chmod a=rwx '/home/apple/Documents/kadm5.acl'
「*/admin *」と「root/admin *」
に変更。変更後、下記Command。
sudo cp '/home/apple/Documents/kadm5.acl' /etc/krb5kdc
sudo systemctl restart krb5-admin-server.service
sudo useradd -m -s /bin/bash orange
sudo kadmin.local
addprinc orange
quit
sudo cp '/etc/ssh/sshd_config' '/home/apple/Documents'
sudo chmod a=rwx '/home/apple/Documents/sshd_config'
sshd_config に下記を追記。
#LogLevel DEBUG3
PasswordAuthentication no
#KerberosOrLocalPasswd yes
KerberosAuthentication yes
KerberosTicketCleanup yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
sudo cp '/home/apple/Documents/sshd_config' '/etc/ssh'
systemctl restart sshd
#macOS からLogin できるか確認。
#Kerberos のチケットを取得します。
kinit orange
#取得できたか確認。
klist
#取得できていたらssh でLogin.
ssh -K krb5.niki.pr
------------------------------------------------------
以下、NFS テスト。上記は済みの前提です。
sudo kadmin.local
#addprinc -randkey host/krb5.niki.pr
addprinc -randkey host/appleMacVM.local
addprinc -randkey host/nfsu2.local
addprinc -randkey nfs/krb5.niki.pr
addprinc -randkey nfs/appleMacVM.local
addprinc -randkey nfs/nfsu2.local
addprinc -randkey nfs/NIKI.PR
ktadd nfs/krb5.niki.pr
ktadd host/krb5.niki.pr
ktadd nfs/NIKI.PR
ktadd -k /home/apple/client.keytab host/appleMacVM.local
ktadd -k /home/apple/client.keytab nfs/appleMacVM.local
ktadd -k /home/apple/client.keytab host/nfsu2.local
ktadd -k /home/apple/client.keytab nfs/nfsu2.local
quit
#exports の内容は私は下記にしました。
/home/apple 10.0.1.20/24(rw,sync,all_squash,no_subtree_check,anonuid=1000,sec=krb5p)
sec=krb5p
がNFS でKerberos を使用する設定です。これを「sec=sys」にすると通常の認証方式になります。
#ktadd で作成した「client.keytab」をNFS Server の/etc にCopy して下さい。私は下記のようなCommand 等でCopy しました。
scp /home/apple/client.keytab apple@10.0.1.20:/Users/apple/Desktop/krb5.keytab
#このkrb5.keytab のアクセス権にも注意が必要です。例えば下記が確実です。(ただしこのアクセス権設定はセキュリティ上は問題があります。)
sudo chmod 777 /private/etc/krb5.keytab
#NFS Server の設定
#hosts ファイルのCopy や名前の設定は下記などで行いました。
sudo cp /home/apple/Documents/hosts /etc
hostnamectl set-hostname nfsu2.local
#接続の確認。下記で行いました。
ping -c 2 appleMacVM.local
ping -c 2 krb5.niki.pr
#exportsKrb5 には下記が追記されています。
/home/apple 10.0.1.20/24(rw,sync,all_squash,no_subtree_check,anonuid=1000,sec=krb5p)
# NFS Server Install & Setting
sudo apt install nfs-kernel-server -y
sudo exportfs -v
sudo cp '/home/apple/Documents/exportsKrb5' /etc/exports
sudo exportfs -r
sudo exportfs -v
#NFS Server Shutdown とmacOS Shutdown してReboot してください。
# Kerberos Client Install & Setting
sudo apt install krb5-user -y
NIKI.PR
krb5.niki.pr
krb5.niki.pr
#krb5.keytab ファイルのCopy. 前の段階でscp 等でCopy したkeytab を/etc にCopy します。またkeytab ファイルにアクセス権を設定します。
sudo cp '/home/apple/Documents/krb5.keytab' /etc
sudo chmod 777 /etc/krb5.keytab
#NFS Server を再起動
sudo exportfs -r
sudo exportfs -v
sudo systemctl restart nfs-kernel-server
#Kerbeos のチケットを取得。NFS Server and macOS 双方でチケットの取得
kinit orange
#下記でチケットが表示されれば成功です。
klist
# macOS 側で。
kinit orange
mount -t nfs -o vers=3.0 nfsu2.local:/home/apple /Users/orange/nfs
追記02
#NFS Server にはkrb5-user をInstall しなくてもNFS のmount はできます。
その際には「krb5.keytab」ファイルのコピー(/etc)は必要です。
NFS Server にkrb5-user をInstall した場合は、kinit を使用する必要が有ります。Log を見ると「NFS Server にkrb5-user 」がInstall されている場合はNFS Server もKerberos の認証を受けているようです。Log に記録が残っていました。
これがどのような動作なのか私には分かりません。