9.5. NFSのセキュリティ

NFSは、多数の既知のホストが存在する ファイルシステム全体を 透過的に共有するのに適しています。 しかし、その使いやすさから生じる潜在的なセキュリティ問題が存在します。

NFSファイルシステムをサーバーにエクスポートしたり、クライアントにマウントしたりするときは、以下の点について考慮する必要があります。これにより、NFSセキュリティのリスクを最小限に抑え、サーバーのデータ保護を強化することができます。

管理者によるNFSサーバーの保護に関する詳細はRed Hat Enterprise Linux セキュリティガイドの中の サーバーセキュリティの章を参照して下さい。

9.5.1. ホストアクセス

NFS のどのバージョンを実装するかによって、既存のネットワーク環境とセキュリティ要求レベルに影響します。以下のセクションは NFSv2, NFSv3, 及び NFSv4 のセキュリティ対策実装の相違を説明しています。他の NFS バージョンよりも可能な限りNFSv4 の使用が推奨されます。

9.5.1.1. NFSv2 又は NFSv3 の使用

NFSはファイルシステムを実際に使うユーザーではなく、マウント要求を行なうホストを基にして エクスポート対応ファイルシステムをマウントできるユーザーを管理します。ホストはエクスポートファイルシステムをマウントする権利を明示的に与えられていなければいけません。ファイルとディレクトリのアクセス権以外によるアクセス制御は、ユーザーにはできません。言い換えると、ファイルシステムがNFSを介してエクスポートされると、NFSサーバーに接続されているリモートホストのユーザーは共有データにアクセスすることができます。潜在的なリスクを制限するには、管理者が読み取り専用のアクセスだけを許可するか、あるいは、ユーザーを一般的なユーザーidと グループidに「押し下げ」ます。ただし、この解決法は、本来の目的であるNFS共有の使用を阻止することになります。

さらに、NFSファイルシステムをエクスポートしているシステムが使用するDNSサーバーが侵入者によって制御されると、ある特定のホスト名や完全修飾ドメイン名に関連付けられているシステムは無許可マシンへとポイントされる可能性があります。ここで、NFSマウントへ追加セキュリティを提供するユーザー名やパスワード情報が交換されないため、この無許可マシンがNFS共有のマウントを許可されたシステムそのものになります。

NFSにてディレクトリをエクスポートする時、ワイルドカードは控えめに使用してください。 ワイルドカードが目的以上にシステムを網羅する可能性があります。

TCPラッパーでのportmapサービスへのアクセスを制限することもできます。 iptablesにてファイアウォール ルールの作成することによりportmaprpc.mountdrpc.nfsd によって使用されるポートへのアクセスも制限することができます。

NFSの保護やportmapに関する詳細は Red Hat Enterprise Linux セキュリティガイドの章、サーバーセキュリティを参照ください。ファイアウォールの詳細については 章18章参照ください。

9.5.1.2. NFSv4 の使用

NFSv4 のリリースは NFS のエクスポートに認証とセキュリティの革命をもたらしました。NFSv4 は、RPCSEC_GSS カーネルモジュール、Kerberos バージョン 5 GSS-API のメカニズム、SPKM-3、及び LIPKEY の実装を管理します。NFSv4 により必須セキュリティメカニズムは個別ユーザーの認証に向けられており、NFSv2 や NFSv3 のようなクライアントマシン向けではありません。

注記注記
 

NFSv4 サーバーの設定の前に KDC (Kerberos チケット収集サーバー)がインストール済で正しく設定されていることが想定されています。

NFSv4 には、POSIX モデルの代わりにそれらの機能と広範囲な利用の為、MicrosoftWindows NT モデルをベースにした ACL サポートが含まれています。NFSv2 と NFSv3 はネイティブな ACL 属性用のサポートをしません。

NFSv4 のもう一つの重要なセキュリティ特徴は、rpc.mountdデーモンの廃止です。rpc.mountdデーモンは、ファイル処理を扱う方法にセキュリティホールの可能性を提示したことが理由です。

rpc.svcgssdrpc.gssdの協調動作を含むRPCSEC_GSS フレームワークの詳細情報については、http://www.citi.umich.edu/projects/nfsv4/gssd/を参照して下さい。

9.5.2. ファイルアクセス権

NFSファイルシステムがリモートホストによって読み書きモードでいったんマウントされると、各共有ファイルが持つ唯一の保護は権利のみとなります。仮に同じユーザーIDの値を持つ2人のユーザーが、同じNFSファイルシステムをマウントした場合、互いに相手のデータを変更することができます。さらにはクライアントシステムでrootとしてログインする人は誰でもsu -コマンドを使用して、NFS共有を介して特定のファイルにアクセスできるユーザーになることができます。NFSとユーザーIDの不一致に関する詳細は、Red Hat Enterprise Linux システム管理入門ガイドの章、ユーザーアカウントとリソースアクセスの管理を参照して下さい。

デフォルトではNFSがアクセス制御リスト(ACL)をサポートします。 この機能を無効にすることはお推めできません。 この機能に関する詳細はRed Hat Enterprise Linux システム管理ガイドの章、ネットワーク ファイル システム(NFS) を参照ください。

NFSによりファイルシステムをエクスポートする時、root squashingの使用がデフォルト動作となります。この結果、ローカルマシンのrootユーザーとして NFS共有を利用するユーザーのユーザーIDは、サーバーのnfsnobodyアカウント値に設定されます。絶対にroot squashing は停止しないでください。

NFS 共有を読み取り専用でエクスポートする場合、all_squashオプションの使用を検討して下さい。このオプションはエクスポート対象ファイルシステムにアクセスするすべてのユーザーに nfsnobodyユーザーのユーザーID を取得させます。