9.5. NFSのセキュリティ

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

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

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

9.5.1. ホストアクセス

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

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

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

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

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

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を取得させます。