samba-ADで提供されているkerberos認証を使ってNFSをよりセキュアにしてみる.

大抵NFSはUIDさえ合っていれば権限が奪えてしまいます. /etc/exportsでNFS公開範囲制限とroot_squashを施せば多少安心?かもしれないが、
動いていない計算機のIPを使いNFSマウントできてしまえばUIDに関わらず読めてしまう.
それを防ぐために NFS にも認証を設ける方法がある.

nfsサービスプリンシパルを設ける

nfsサーバ/クライアント両方に nfsサービスプリンシパル を設けます。

nfsサービスプリンシパルの付け方ですが、一旦adサーバにnfsサーバ/クライアント共に「net ads join」にて参加させて、
その後、adサーバにてnfsサービスプリンシパルを設けます。参加方法はこちら参照samba/Linux参加

nfsサーバでnfsサービスの設定を行う

肝心のnfsサービスを構築します
「nfs-utils」パッケージをインストールして、擬似ファイルシステムベースで「/etc/exports」を作る。/nfsを起点にしてます。

[root@nfs ~]# yum install nfs-utils
[root@nfs ~]# systemctl enable nfs-server && systemctl start nfs-server
 
[root@nfs ~]# mkdir -p /nfs/home
[root@nfs ~]# mount --bind /home /nfs/home
 
[root@nfs ~]# echo "/home /nfs/home none bind 0 0" >> /etc/fstab
 
[root@nfs ~]# vi /etc/exports
/nfs       gss/krb5(rw,sync,fsid=0)
/nfs/home  gss/krb5(rw,sync,nohide)
 
[root@nfs ~]# exportfs -avr

firewallの設定も行う。「/usr/lib/firewalld/services/」に定義可能なサービスがある

[root@nfs ~]# firewall-cmd --add-service={mountd,nfs,rpc-bind} --permanent
[root@nfs ~]# firewall-cmd --reload

krb5でマウント

コマンドベースで

[root@client ~]# yum install nfs-utils && reboot
[root@client ~]# mount -t nfs -o sec=krb5 nfs:/home /home     <-- /etc/hostsにnfsサーバが存在すれば短縮名で行ける

とすれば行ける。確認はmountコマンドとかで

[root@client ~]# mount | grep nfs:/home
nfs:/home on /home type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=10.10.0.2,local_lock=none,addr=10.10.0.3)

っと「sec=krb5」となっています。

nfs通信の整合性チェック、暗号化

nfsサーバ側で/etc/exportsの中身を

/nfs       gss/krb5(rw,sync,fsid=0) gss/krb5i(rw,sync,fsid=0) gss/krb5p(rw,sync,fsid=0)
/nfs/home  gss/krb5(rw,sync,nohide) gss/krb5i(rw,sync,nohide) gss/krb5p(rw,sync,nohide)

として「exportfs -avr」を実行後、
nfsクライアントでsec欄にkrb5iなら、チェックサムで改竄防止機能付き、krb5pでnfsトラフィックの暗号化がなされる

(チェックサム)
[root@client ~]# mount -t nfs4 -o sec=krb5i,vers=4.1 nfs:/home /home
 
(nfsトラフィックの暗号化)
[root@client ~]# mount -t nfs4 -o sec=krb5p,vers=4.1 nfs:/home /home

めも

「gssproxy: gssproxy[1591]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure. Minor code may provide more information, Client 'host/client.biosym.local@BIOSYM.LOCAL' not found in Kerberos database」とかのエラーがでる場合は

/etc/sysconfig/nfsで「GSS_USE_PROXY="no"」として再起動

ADに参加してないのにnfsマウントをすると

[root@client2 ~]# mount -t nfs nfs.biosym.local:/home /home
mount.nfs: access denied by server while mounting nfs.biosym.local:/home
[root@client2 ~]#

と拒否される
nfsサーバ側には

Aug  2 13:53:18 nfs rpc.mountd[922]: refused mount request from 10.10.0.4 for /home (/home): unmatched host

と記録される。

もちろんnfsサーバの/etc/exportsが従来の方式を含んでいるなら

[root@nfs ~]# cat /etc/exports
/nfs       gss/krb5(rw,sync,fsid=0) 10.10.0.0/24(rw,sync,fsid=0)
/nfs/home  gss/krb5(rw,sync,nohide) 10.10.0.0/24(rw,sync,nohide)
 
[root@nfs ~]# exportfs -avr
exporting 10.10.0.0/24:/nfs/home
exporting 10.10.0.0/24:/nfs
exporting gss/krb5:/nfs/home
exporting gss/krb5:/nfs
 
[root@nfs ~]#

ADに参加していないnfsクライアント側でもmountできる

[root@client2 ~]# mount -t nfs -o sec=sys nfs.biosym.local:/home /home
[root@client2 ~]# df -Th /home
Filesystem             Type  Size  Used Avail Use% Mounted on
nfs.biosym.local:/home nfs4   15G  1.5G   14G  11% /home
[root@client2 ~]#
最新の60件
2024-05-21 2024-05-16 2024-04-26 2024-04-19 2024-04-18 2024-04-15 2024-04-11 2024-04-06 2024-04-05 2024-03-30 2024-03-29 2024-03-19 2024-03-17 2024-03-15 2024-03-06 2024-03-05 2024-03-03 2024-02-23 2024-02-22 2024-02-21 2024-02-20 2024-02-19 2024-02-18 2024-02-17 2024-02-13 2024-02-12 2024-02-09 2024-02-04 2024-02-03 2024-01-31 2024-01-30 2024-01-29 2024-01-28 2024-01-22 2024-01-16 2024-01-13 2024-01-09 2024-01-08 2024-01-07 2024-01-03 2023-12-22 2023-12-17

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-08-02 (日) 14:05:10