Menu Close
Settings Close

Language and Page Formatting Options

6.3. NFS サービスの保護

Kerberos を使用してすべてのファイルシステム操作を認証および暗号化して、ネットワークファイルシステムバージョン 4 (NFSv4) のセキュリティーを保護できます。ネットワークアドレス変換 (NAT) またはファイアウォールで NFSv4 を使用する場合に、/etc/default/nfs ファイルを変更することで委譲をオフにできます。委譲は、サーバーがファイルの管理をクライアントに委譲する手法です。

対照的に、NFSv3 ではファイルのロックとマウントに Kerberos は使用されません。

NFS サービスは、すべてのバージョンの NFS で TCP を使用してトラフィックを送信します。このサービスは、RPCSEC_GSS カーネルモジュールの一部として Kerberos ユーザーおよびグループ認証をサポートします。

NFS を利用すると、リモートのホストがネットワーク経由でファイルシステムをマウントし、そのファイルシステムを、ローカルにマウントしているファイルシステムのように操作できるようになります。集約サーバーのリソースを統合して、ファイルシステムを共有するときに /etc/nfsmount.conf ファイルの NFS マウントオプションをさらにカスタマイズできます。

6.3.1. NFS サーバーのセキュリティーを保護するエクスポートオプション

NFS サーバーは、/etc/exports ファイル内のどのファイルシステムにどのファイルシステムをエクスポートするかなど、ディレクトリーとホストのリスト構造を決定します。

警告

エクスポートファイルの構文に余分なスペースがあると、設定が大幅に変更される可能性があります。

以下の例では、/tmp/nfs/ ディレクトリーは bob.example.com ホストと共有され、読み取りおよび書き込みのパーミッションを持ちます。

/tmp/nfs/     bob.example.com(rw)

以下の例は上記と同じになりますが、同じディレクトリーを読み取り専用パーミッションで bob.example.com ホストに共有し、ホスト名の後の 1 つのスペース文字が原因で読み取りと書き込み権限で すべてのユーザー に共有します。

/tmp/nfs/     bob.example.com (rw)

showmount -e <hostname> コマンドを入力すると、システム上の共有ディレクトリーを確認できます。

/etc/exports ファイルで次のエクスポートオプションを使用します。

警告

ファイルシステムのサブディレクトリーのエクスポートは安全ではないため、ファイルシステム全体をエクスポートします。攻撃者は、部分的にエクスポートされたファイルシステムで、エクスポートされていない部分にアクセスする可能性があります。

ro
ro オプションを使用して、NFS ボリュームを読み取り専用としてエクスポートします。
rw

rw オプションを使用して、NFS ボリュームに対する読み取りおよび書き込み要求の両方を許可します。書き込みアクセスが許可されると攻撃のリスクが高まるため、このオプションは注意して使用してください。

注記

シナリオとして rw オプションを使用してディレクトリーをマウントする必要がある場合は、起こりうるリスクを軽減するために、すべてのユーザーがディレクトリーを書き込み可能にしないようにしてください。

root_squash
root_squash オプションを使用して、uid/gid 0 からの要求を匿名の uid/gid にマッピングします。これは、bin ユーザーや staff グループなど、同様に機密である可能性の高い他の uid または gid には適用されません。
no_root_squash
root squashing をオフにするには、no_root_squash オプションを使用します。デフォルトでは、NFS 共有は root ユーザーを、非特権ユーザーである nobody ユーザーに変更します。これにより、rootが作成したすべてのファイルの所有者が nobody に変更され、setuid ビットが設定されたプログラムのアップロードができなくなります。no_root_squash オプションを使用すると、リモートの root ユーザーは共有ファイルシステムの任意のファイルを変更し、他のユーザーに対してアプリケーションが Trojans に感染した状態のままにします。
secure
secure オプションを使用して、エクスポートを予約ポートに制限します。デフォルトでは、サーバーは予約済みポートからのクライアント通信のみを許可します。ただし、多くのネットワークで、クライアント上で root ユーザーになるのは簡単です。そのため、サーバーで予約されたポートからの通信が特権であると仮定することは安全ではありません。そのため、予約ポートの制限は効果が限定的です。Kerberos、ファイアウォール、および特定クライアントへのエクスポートを制限することに依存すると良いでしょう。

また、NFS サーバーをエクスポートする際に、以下のベストプラクティスを考慮してください。

  • 一部のアプリケーションでは、パスワードをプレーンテキストまたは弱い暗号化形式で保存するため、ホームディレクトリーをエクスポートすることはリスクがあります。アプリケーションコードを確認して改善することで、リスクを軽減できます。
  • 一部のユーザーは SSH キーにパスワードを設定していないため、この場合もホームディレクトリーによるリスクが発生します。パスワードの使用を強制するか、Kerberos を使用することで、これらのリスクを軽減できます。
  • NFS エクスポートを必要なクライアントのみに制限します。NFS サーバーで showmount -e コマンドを使用して、サーバーのエクスポート内容を確認します。特に必要のないものはエクスポートしないでください。
  • 攻撃のリスクを減らすために、不要なユーザーがサーバーにログインできないようにしてください。サーバーにアクセスできるユーザーを定期的に確認してください。

関連情報